)]}'
{"firstapp/samples/jclouds/GettingStarted.java":[{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3afc51ec_1d390f42","updated":"2016-03-14 05:02:05.000000000","message":"It would seem that this is built against:\n        \u003cjclouds.version\u003e2.0.0-SNAPSHOT\u003c/jclouds.version\u003e\nwhen the rest of the jclouds samples are built against\n        \u003cjclouds.version-\u003e1.9.2\u003c/jclouds.version\u003e \nHence we will either have to bump the rest of the code to the snapshot version, or downgrade this version to the production version of jclouds. Using the snapshot version does appear to make the code simpler, but how stable is it?","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"},{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"public class GettingStarted {"},{"line_number":17,"context_line":"    // step-1"},{"line_number":18,"context_line":"    private static final String AUTHUSERNAME \u003d \"your_project_name_or_id:your_auth_username\";"},{"line_number":19,"context_line":"    private static final String AUTHPASSWORD \u003d \"your_auth_password\";"},{"line_number":20,"context_line":"    private static final String AUTHURL \u003d \"http://controller:5000/v2.0/\";"},{"line_number":21,"context_line":"    private static final String REGION \u003d \"RegionOne\";"}],"source_content_type":"text/x-java","patch_set":3,"id":"3afc51ec_5df557c9","line":18,"updated":"2016-03-14 05:02:05.000000000","message":"I would be tempted to add the comment:\n        // NB: Do not check this file into source control with a password in it!","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"},{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    private static final String AUTHUSERNAME \u003d \"your_project_name_or_id:your_auth_username\";"},{"line_number":19,"context_line":"    private static final String AUTHPASSWORD \u003d \"your_auth_password\";"},{"line_number":20,"context_line":"    private static final String AUTHURL \u003d \"http://controller:5000/v2.0/\";"},{"line_number":21,"context_line":"    private static final String REGION \u003d \"RegionOne\";"},{"line_number":22,"context_line":"    private final NovaApi novaApi;"},{"line_number":23,"context_line":"    private final ServerApi serverApi;"},{"line_number":24,"context_line":"    private final FlavorApi flavorApi;"}],"source_content_type":"text/x-java","patch_set":3,"id":"3afc51ec_7d277312","line":21,"updated":"2016-03-14 05:02:05.000000000","message":"Our cloud doesn\u0027t have this region declared. \nTo get around this issue in the other jclouds code samples we did something along the lines of:\n// use first available region\nString region \u003d novaApi.getConfiguredRegions().iterator().next();\n\nI\u0027m not sure which is preferable...","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"},{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            try {"},{"line_number":143,"context_line":"                reqKeyPair \u003d keyPairApi.createWithPublicKey(keyPairName, new BufferedReader(new FileReader(pubKeyFilePath)).readLine());"},{"line_number":144,"context_line":"            } catch (FileNotFoundException e) {"},{"line_number":145,"context_line":"            }"},{"line_number":146,"context_line":"        } else {"},{"line_number":147,"context_line":"            System.out.format(\"Keypair %s already exists. Skipping import.\\n\", keyPairName);"},{"line_number":148,"context_line":"        }"}],"source_content_type":"text/x-java","patch_set":3,"id":"3afc51ec_7de813e3","line":145,"updated":"2016-03-14 05:02:05.000000000","message":"A catch that buries any problem :(\nThe quick fix is simply to put  \n      throw new RuntimeException(e);\ninto it.","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"},{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    }"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    // step-11"},{"line_number":183,"context_line":"    public String getUserData() {"},{"line_number":184,"context_line":"        String userData \u003d \"#!/usr/bin/env bash\\n\""},{"line_number":185,"context_line":"            + \"curl -L -s http://git.openstack.org/cgit/openstack/faafo/plain/contrib/install.sh | bash -s -- \\\\\\n\""},{"line_number":186,"context_line":"            + \"-i faafo -i messaging -r api -r worker -r demo\\n\";"}],"source_content_type":"text/x-java","patch_set":3,"id":"3afc51ec_9ded1ff2","line":183,"updated":"2016-03-14 05:02:05.000000000","message":"The userData variable could simple be replaced with a return","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"},{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        if (reqServer \u003d\u003d null) {"},{"line_number":203,"context_line":"            CreateServerOptions options \u003d new CreateServerOptions().keyPairName(keyPair.getName()).userData(userData.getBytes()).securityGroupNames(securityGroup.getName());"},{"line_number":204,"context_line":"            ServerCreated serverCreated \u003d serverApi.create(name, image.getId(), flavor.getId(), options);"},{"line_number":205,"context_line":"            reqServer \u003d serverApi.get(serverCreated.getId());"},{"line_number":206,"context_line":"            while(reqServer.getStatus().value().equals(\"ACTIVE\") \u003d\u003d false) {"},{"line_number":207,"context_line":"                reqServer \u003d serverApi.get(serverCreated.getId());"},{"line_number":208,"context_line":"            }"}],"source_content_type":"text/x-java","patch_set":3,"id":"3afc51ec_bdc9fb7a","line":205,"updated":"2016-03-14 05:02:05.000000000","message":"The loop below can be replaced with a:\nServerPredicates.awaitActive(serverApi).apply(reqServer.getId());","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"},{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        if (server.getAddresses().size() \u003e 0) {"},{"line_number":223,"context_line":"            for (Address address : server.getAddresses().values()) {"},{"line_number":224,"context_line":"                if (address.getType().get().equals(\"fixed\")) {"},{"line_number":225,"context_line":"                    reqAddress \u003d address;"},{"line_number":226,"context_line":"                    System.out.format(\"Private IP found: %s\\n\", address.getAddr());"},{"line_number":227,"context_line":"                    break;"}],"source_content_type":"text/x-java","patch_set":3,"id":"3afc51ec_1d874fd8","line":224,"updated":"2016-03-14 05:02:05.000000000","message":"getType() is a jclouds v2 artefact.","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"},{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        if (server.getAddresses().size() \u003e 0) {"},{"line_number":243,"context_line":"            for (Address address : server.getAddresses().values()) {"},{"line_number":244,"context_line":"                if (address.getType().get().equals(\"floating\")) {"},{"line_number":245,"context_line":"                    reqAddress \u003d address;"},{"line_number":246,"context_line":"                    System.out.format(\"Public IP found: %s\\n\", address.getAddr());"},{"line_number":247,"context_line":"                    break;"}],"source_content_type":"text/x-java","patch_set":3,"id":"3afc51ec_5d69d724","line":244,"updated":"2016-03-14 05:02:05.000000000","message":"getType() is a jclouds v2 artefact.","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"},{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        if (reqFloatingIPPool !\u003d null)"},{"line_number":268,"context_line":"            try {"},{"line_number":269,"context_line":"            return floatingIPApi.allocateFromPool(reqFloatingIPPool.getName()).getIp();"},{"line_number":270,"context_line":"            } catch (AuthorizationException e) {"},{"line_number":271,"context_line":"            }"},{"line_number":272,"context_line":"        else"},{"line_number":273,"context_line":"            return null;"}],"source_content_type":"text/x-java","patch_set":3,"id":"3afc51ec_5dc6f749","line":270,"updated":"2016-03-14 05:02:05.000000000","message":"Again: an empty catch: if null is an acceptable return value please, at the very least, show an error message...","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"},{"author":{"_account_id":10088,"name":"Martin Paulo","email":"martin.paulo@gmail.com","username":"KiwiMartin"},"change_message_id":"35732ae4691cae77bcc95ab21c4cb2b1124b5af3","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            } catch (AuthorizationException e) {"},{"line_number":271,"context_line":"            }"},{"line_number":272,"context_line":"        else"},{"line_number":273,"context_line":"            return null;"},{"line_number":274,"context_line":"    }"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    // step-16"}],"source_content_type":"text/x-java","patch_set":3,"id":"3afc51ec_5d9f1750","line":273,"updated":"2016-03-14 05:02:05.000000000","message":"This doesn\u0027t compile. Removing the \u0027else\u0027 will give it an unambiguous return path...","commit_id":"6c1a30f97c28807f8467008c3b4460e0cb4e46c5"}]}
