[
https://issues.apache.org/jira/browse/JCLOUDS-569?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ignasi Barrera resolved JCLOUDS-569.
------------------------------------
Resolution: Fixed
Fix Version/s: 1.8.0
> Cloudsigma listDrivesInfo() and getDriveInfo () parse error when jobs are
> present
> ---------------------------------------------------------------------------------
>
> Key: JCLOUDS-569
> URL: https://issues.apache.org/jira/browse/JCLOUDS-569
> Project: jclouds
> Issue Type: Bug
> Components: jclouds-labs
> Affects Versions: 1.7.2
> Environment: OSX 10.9
> Oracle Java 1.8 JDK
> Reporter: Cosmin Dumitru
> Labels: cloudsigma
> Fix For: 1.8.0
>
>
> If a job is present in the DriveInfo response then the parser barfs with an
> exception. This is most likely due to the fact that the "jobs" field in the
> DriveInfo POJO is declared as List<String> and while the the response seems
> to ask for List<Map<String,String>>
> In
> clouds-labs/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/domain/DriveInfo.java,
> line 37 reads :
> {code:java}
> protected List<String> jobs;
> {code}
> The jobs field defined in the cloudsigma api:
> https://cloudsigma-docs.readthedocs.org/en/2.10/jobs.html?highlight=jobs
> Response which triggers the exception:
> {code:javascript}
> "{"affinities": [], "allow_multimount": false, "jobs": [{"resource_uri":
> "/api/2.0/jobs/933133a2-4ee2-4310-9a63-c8d5e7052335/", "uuid":
> "933133a2-4ee2-4310-9a63-c8d5e7052335"}], "licenses": [], "media": "cdrom",
> "meta": {"arch": "64", "category": "general", "description": "OpenBSD 5.3 -
> 64bit - CD\r\n\r\n", "favourite": "False", "image_type": "install",
> "install_notes": "1. Attach the CD. \\n\r\nNB: Please be aware that the CD
> needs to be attached to the server using IDE interface. \\n\r\n \\n\r\n2.
> Attach a Drive. \\n\r\nPlease be aware that the drive size required for
> installation of the OS will vary between 1 and 8 GB, depending on your
> configuration preferences For detailed information please open the URL
> below:\r\nhttp://www.openbsd.org/faq/faq3.html#SelectHW\r\n \\n\r\n \\n\r\n3.
> Connecting to your server via VNC. \\n\r\na) Go to the \u201cProperties\u201d
> tab of the server and Turn on the VNC Tunnel by clicking the button right
> next to it \\n\r\nb) In order to use the inbuilt client click on the icon
> right next to the VNC link and choose \u201cOpen in Dialog Window\u201d or
> \u201cOpen in new browser window/tab\u201d \\n\r\nOR \\n\r\nc) Having
> installed a compatible VNC client, open a VNC connection to your server
> through the UI. \\n\r\nd) Enter your VNC url and VNC password as displayed
> on your Server Properties Window. \\n\r\n \\n\r\n4. Minimum Hardware
> Requirements. \\n\r\nThe recommended minimum hardware requirements as
> published by Netbsd.org are 64MB RAM and 200 Hz CPU. We also recommend
> specifying higher values of RAM and CPU for better user experience. \r\n
> \\n", "os": "other", "paid": "False", "url": "http://www.openbsd.org/"},
> "mounted_on": [], "name": "OpenBSD 5.3", "owner": {"resource_uri":
> "/api/2.0/user/cff81a3f-6ddf-438d-b3a5-c094492ac147/", "uuid":
> "cff81a3f-6ddf-438d-b3a5-c094492ac147"}, "resource_uri":
> "/api/2.0/drives/fc9f48d9-200b-4de3-a161-5b1d32ec86c4/", "runtime":
> {"is_snapshotable": true, "snapshots_allocated_size": 0, "storage_type":
> "dssd"}, "size": 1000013824, "snapshots": [], "status": "unmounted",
> "storage_type": "dssd", "tags": [], "uuid":
> "fc9f48d9-200b-4de3-a161-5b1d32ec86c4"}"
> {code}
> And the exception:
> {quote}
> [ERROR]
> 2014:05:15@10:29:11,539:org.jclouds.cloudsigma2.functions.internal.ParseDriveInfos
> - Error parsing input
> com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
> Expected a string but was BEGIN_OBJECT at line 1 column 57
> {quote}
> To reproduce the exception get a LibraryDrive, clone it and then get the
> DriveInfo for the cloned disk.
> {code:java}
> CloudSigma2Api api = ContextBuilder.newBuilder("cloudsigma2-zrh") ...//
> initialization stuff for the api
> // gets the first disk from the library - It's a CD of openbsd
> FluentIterable<LibraryDrive> libraryDrives = api.listLibraryDrives().concat();
> //clone it
> api.cloneLibraryDrive(libraryDrives.first().get().getUuid(), null);
> //list all existing drives
> FluentIterable<Drive> drives = api.listDrives().concat();
> //print the drive infos for all the drives
> for (Drive drive : drives) {
> //this throws an exception when we get to the newly cloned disk
> System.out.println(api.getDriveInfo(drive.getUuid()));
> }
> //altenatvely we can just get all the driveInfos which similarly barfs when
> we get to the newly cloned disk
> FluentIterable<DriveInfo> driveInfos = api.listDrivesInfo().concat();
> {code}
>
--
This message was sent by Atlassian JIRA
(v6.2#6252)