[ https://issues.apache.org/jira/browse/JCLOUDS-569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14012211#comment-14012211 ]
rahul ruikar commented on JCLOUDS-569: -------------------------------------- Link to pull request https://github.com/jclouds/jclouds-labs/pull/67 > 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 > > 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)