)]}'
{"troveclient/v1/shell.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"77118899d3687264d6947972786acd70b2ef12ed","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                    instance_info[\"volume\"] \u003d {\"size\": v}"},{"line_number":333,"context_line":"                else:"},{"line_number":334,"context_line":"                    instance_info[k] \u003d v"},{"line_number":335,"context_line":"        if not instance_info.get(\u0027flavorRef\u0027):"},{"line_number":336,"context_line":"            raise exceptions.CommandError("},{"line_number":337,"context_line":"                \u0027flavor is required. \u0027"},{"line_number":338,"context_line":"                \u0027Instance arguments must be of the form \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_8b9645ee","side":"PARENT","line":335,"updated":"2016-05-09 14:34:55.000000000","message":"Just a note for other reviewers. The error below is raised by `_get_flavor`. The `_strip_option` function will raise a MissingArg instead of CommandError but I think it\u0027s fine.","commit_id":"260bb64c70ba67468b9297c8a34d69e6f38c8adf"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"77118899d3687264d6947972786acd70b2ef12ed","unresolved":false,"context_lines":[{"line_number":23,"context_line":"INSTANCE_METAVAR \u003d \u0027\"opt\u003d\u003cvalue\u003e[,opt\u003d\u003cvalue\u003e ...] \"\u0027"},{"line_number":24,"context_line":"INSTANCE_ERROR \u003d (\"Instance argument(s) must be of the form --instance \""},{"line_number":25,"context_line":"                  + INSTANCE_METAVAR + \" - see help for details.\")"},{"line_number":26,"context_line":"INSTANCE_HELP \u003d (\"Add an instance to the cluster.  Specify multiple \""},{"line_number":27,"context_line":"                 \"times to create multiple instances.  \""},{"line_number":28,"context_line":"                 \"Valid options are: flavor\u003d\u003cflavor_name_or_id\u003e, \""},{"line_number":29,"context_line":"                 \"volume\u003d\u003cdisk_size_in_GB\u003e, volume_type\u003d\u003ctype\u003e, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_4bfe1d38","line":26,"updated":"2016-05-09 14:34:55.000000000","message":"It\u0027d be better to have these constants marked as private. Not a blocker for this patch, though.","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"ae5ed73a3641740acea6b79f6fcde70c165bb4fd","unresolved":false,"context_lines":[{"line_number":23,"context_line":"INSTANCE_METAVAR \u003d \u0027\"opt\u003d\u003cvalue\u003e[,opt\u003d\u003cvalue\u003e ...] \"\u0027"},{"line_number":24,"context_line":"INSTANCE_ERROR \u003d (\"Instance argument(s) must be of the form --instance \""},{"line_number":25,"context_line":"                  + INSTANCE_METAVAR + \" - see help for details.\")"},{"line_number":26,"context_line":"INSTANCE_HELP \u003d (\"Add an instance to the cluster.  Specify multiple \""},{"line_number":27,"context_line":"                 \"times to create multiple instances.  \""},{"line_number":28,"context_line":"                 \"Valid options are: flavor\u003d\u003cflavor_name_or_id\u003e, \""},{"line_number":29,"context_line":"                 \"volume\u003d\u003cdisk_size_in_GB\u003e, volume_type\u003d\u003ctype\u003e, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_b9a9e3e1","line":26,"in_reply_to":"dab17558_4bfe1d38","updated":"2016-05-09 14:59:24.000000000","message":"Marked as private? Not sure what you mean. Python has no private variables (or constants, either for that matter)","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"1a863dd3a7e9f2033eb3d79788ca7b836874332e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"INSTANCE_METAVAR \u003d \u0027\"opt\u003d\u003cvalue\u003e[,opt\u003d\u003cvalue\u003e ...] \"\u0027"},{"line_number":24,"context_line":"INSTANCE_ERROR \u003d (\"Instance argument(s) must be of the form --instance \""},{"line_number":25,"context_line":"                  + INSTANCE_METAVAR + \" - see help for details.\")"},{"line_number":26,"context_line":"INSTANCE_HELP \u003d (\"Add an instance to the cluster.  Specify multiple \""},{"line_number":27,"context_line":"                 \"times to create multiple instances.  \""},{"line_number":28,"context_line":"                 \"Valid options are: flavor\u003d\u003cflavor_name_or_id\u003e, \""},{"line_number":29,"context_line":"                 \"volume\u003d\u003cdisk_size_in_GB\u003e, volume_type\u003d\u003ctype\u003e, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_7a93e94f","line":26,"in_reply_to":"dab17558_5a6425e3","updated":"2016-05-09 15:52:14.000000000","message":"The standard is to use uppercase for CONST-like vars but prefixing `_` is still the standard to mark them as \"private\", even outside a class.\n\nIt\u0027s fine to have global variables considered \"constants\" that are usable from outside the module they are defined in.\n\nI can\u0027t think of why someone would use `INSTANCE_HELP`, which is why I think this is not really relevant for this change but thought I would drop this here anyway.\n\nJust to be clear, no changes required here.","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"cb965ecc66c2ec566cb3643f5a15b9e5bb99272a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"INSTANCE_METAVAR \u003d \u0027\"opt\u003d\u003cvalue\u003e[,opt\u003d\u003cvalue\u003e ...] \"\u0027"},{"line_number":24,"context_line":"INSTANCE_ERROR \u003d (\"Instance argument(s) must be of the form --instance \""},{"line_number":25,"context_line":"                  + INSTANCE_METAVAR + \" - see help for details.\")"},{"line_number":26,"context_line":"INSTANCE_HELP \u003d (\"Add an instance to the cluster.  Specify multiple \""},{"line_number":27,"context_line":"                 \"times to create multiple instances.  \""},{"line_number":28,"context_line":"                 \"Valid options are: flavor\u003d\u003cflavor_name_or_id\u003e, \""},{"line_number":29,"context_line":"                 \"volume\u003d\u003cdisk_size_in_GB\u003e, volume_type\u003d\u003ctype\u003e, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_5a6425e3","line":26,"in_reply_to":"dab17558_942786b5","updated":"2016-05-09 15:44:46.000000000","message":"Inside a class, yes, the \u0027_\u0027 prefix is typically used to indicate \u0027internal use only.\u0027  Outside the class, or for java-style CONST (final) vars, I think the standard is to just use uppercase - see the answer to  http://stackoverflow.com/questions/2682745/creating-constant-in-python for an example.","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"270f8bf80196f5af33116eafb30e2ec6a2b35cea","unresolved":false,"context_lines":[{"line_number":23,"context_line":"INSTANCE_METAVAR \u003d \u0027\"opt\u003d\u003cvalue\u003e[,opt\u003d\u003cvalue\u003e ...] \"\u0027"},{"line_number":24,"context_line":"INSTANCE_ERROR \u003d (\"Instance argument(s) must be of the form --instance \""},{"line_number":25,"context_line":"                  + INSTANCE_METAVAR + \" - see help for details.\")"},{"line_number":26,"context_line":"INSTANCE_HELP \u003d (\"Add an instance to the cluster.  Specify multiple \""},{"line_number":27,"context_line":"                 \"times to create multiple instances.  \""},{"line_number":28,"context_line":"                 \"Valid options are: flavor\u003d\u003cflavor_name_or_id\u003e, \""},{"line_number":29,"context_line":"                 \"volume\u003d\u003cdisk_size_in_GB\u003e, volume_type\u003d\u003ctype\u003e, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_942786b5","line":26,"in_reply_to":"dab17558_b9a9e3e1","updated":"2016-05-09 15:14:33.000000000","message":"LOL, sure, no private or constants in Python. However, when one says \"private\" in the python world, one actually means \"prefix it with _\". No need to change this in this patch, though. Just a general thought since these constants (or global variables, if you will) could be used by other folks.\n\nJust a general practice, not big deal.","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"32f0b2e110f61efa08fae79f8153a696c8f6918e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"                 \"times to create multiple instances.  \""},{"line_number":28,"context_line":"                 \"Valid options are: flavor\u003d\u003cflavor_name_or_id\u003e, \""},{"line_number":29,"context_line":"                 \"volume\u003d\u003cdisk_size_in_GB\u003e, volume_type\u003d\u003ctype\u003e, \""},{"line_number":30,"context_line":"                 \"nic\u003d\u0027\u003cnet-id\u003d\u003cnet-uuid\u003e, v4-fixed-ip\u003d\u003cip-addr\u003e, \""},{"line_number":31,"context_line":"                 \"port-id\u003d\u003cport-uuid\u003e\u003e\u0027 \""},{"line_number":32,"context_line":"                 \"(where net-id\u003dnetwork_id, v4-fixed-ip\u003dIPv4r_fixed_address, \""},{"line_number":33,"context_line":"                 \"port-id\u003dport_id), availability_zone\u003d\u003cAZ_hint_for_Nova\u003e, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_19a0f842","line":30,"updated":"2016-05-09 11:50:45.000000000","message":"May be short of a \u0027\u003e\u0027 on nic\u003d\u0027\u003cnet-id\u003d\u003cnet-uuid\u003e\u003e","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"058369ec93ed9269e9946ebec0e107bbdcd81f6f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"                 \"times to create multiple instances.  \""},{"line_number":28,"context_line":"                 \"Valid options are: flavor\u003d\u003cflavor_name_or_id\u003e, \""},{"line_number":29,"context_line":"                 \"volume\u003d\u003cdisk_size_in_GB\u003e, volume_type\u003d\u003ctype\u003e, \""},{"line_number":30,"context_line":"                 \"nic\u003d\u0027\u003cnet-id\u003d\u003cnet-uuid\u003e, v4-fixed-ip\u003d\u003cip-addr\u003e, \""},{"line_number":31,"context_line":"                 \"port-id\u003d\u003cport-uuid\u003e\u003e\u0027 \""},{"line_number":32,"context_line":"                 \"(where net-id\u003dnetwork_id, v4-fixed-ip\u003dIPv4r_fixed_address, \""},{"line_number":33,"context_line":"                 \"port-id\u003dport_id), availability_zone\u003d\u003cAZ_hint_for_Nova\u003e, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_f4a89bdd","line":30,"in_reply_to":"dab17558_19a0f842","updated":"2016-05-09 11:57:30.000000000","message":"continues on next line","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"64bb080e48748b94c96777c431bd792bda54fa05","unresolved":false,"context_lines":[{"line_number":27,"context_line":"                 \"times to create multiple instances.  \""},{"line_number":28,"context_line":"                 \"Valid options are: flavor\u003d\u003cflavor_name_or_id\u003e, \""},{"line_number":29,"context_line":"                 \"volume\u003d\u003cdisk_size_in_GB\u003e, volume_type\u003d\u003ctype\u003e, \""},{"line_number":30,"context_line":"                 \"nic\u003d\u0027\u003cnet-id\u003d\u003cnet-uuid\u003e, v4-fixed-ip\u003d\u003cip-addr\u003e, \""},{"line_number":31,"context_line":"                 \"port-id\u003d\u003cport-uuid\u003e\u003e\u0027 \""},{"line_number":32,"context_line":"                 \"(where net-id\u003dnetwork_id, v4-fixed-ip\u003dIPv4r_fixed_address, \""},{"line_number":33,"context_line":"                 \"port-id\u003dport_id), availability_zone\u003d\u003cAZ_hint_for_Nova\u003e, \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_2fabead7","line":30,"in_reply_to":"dab17558_f4a89bdd","updated":"2016-05-09 12:26:01.000000000","message":"got it.","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"77118899d3687264d6947972786acd70b2ef12ed","unresolved":false,"context_lines":[{"line_number":326,"context_line":"    cluster \u003d _find_cluster(cs, args.cluster)"},{"line_number":327,"context_line":"    instances \u003d _parse_instance_options(cs, args.instances)"},{"line_number":328,"context_line":"    if len(instances) \u003d\u003d 0:"},{"line_number":329,"context_line":"        raise exceptions.MissingArgs([\u0027instance\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    cs.clusters.grow(cluster, instances\u003dinstances)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_2bf9194e","line":329,"updated":"2016-05-09 14:34:55.000000000","message":"AFAICT, this will change the API. The current version of this function doesn\u0027t raise an exception while this new version does. This means the instance argument would now be required. That said, not passing the instance makes this call useless.","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"cb965ecc66c2ec566cb3643f5a15b9e5bb99272a","unresolved":false,"context_lines":[{"line_number":326,"context_line":"    cluster \u003d _find_cluster(cs, args.cluster)"},{"line_number":327,"context_line":"    instances \u003d _parse_instance_options(cs, args.instances)"},{"line_number":328,"context_line":"    if len(instances) \u003d\u003d 0:"},{"line_number":329,"context_line":"        raise exceptions.MissingArgs([\u0027instance\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    cs.clusters.grow(cluster, instances\u003dinstances)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_7a03e90d","line":329,"in_reply_to":"dab17558_14b1d647","updated":"2016-05-09 15:44:46.000000000","message":"Sure, that makes sense.  I\u0027ll add it to the release note.","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"270f8bf80196f5af33116eafb30e2ec6a2b35cea","unresolved":false,"context_lines":[{"line_number":326,"context_line":"    cluster \u003d _find_cluster(cs, args.cluster)"},{"line_number":327,"context_line":"    instances \u003d _parse_instance_options(cs, args.instances)"},{"line_number":328,"context_line":"    if len(instances) \u003d\u003d 0:"},{"line_number":329,"context_line":"        raise exceptions.MissingArgs([\u0027instance\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    cs.clusters.grow(cluster, instances\u003dinstances)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_14b1d647","line":329,"in_reply_to":"dab17558_1922af52","updated":"2016-05-09 15:14:33.000000000","message":"No need to change these. Consolidating these two calls makes sense. What about we mention this in the release notes. Should have probably mentioned this in my previous review.","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"ae5ed73a3641740acea6b79f6fcde70c165bb4fd","unresolved":false,"context_lines":[{"line_number":326,"context_line":"    cluster \u003d _find_cluster(cs, args.cluster)"},{"line_number":327,"context_line":"    instances \u003d _parse_instance_options(cs, args.instances)"},{"line_number":328,"context_line":"    if len(instances) \u003d\u003d 0:"},{"line_number":329,"context_line":"        raise exceptions.MissingArgs([\u0027instance\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    cs.clusters.grow(cluster, instances\u003dinstances)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_1922af52","line":329,"in_reply_to":"dab17558_2bf9194e","updated":"2016-05-09 14:59:24.000000000","message":"Are you suggesting removing this? I can do that - it\u0027ll just mean that the server returns an error (any we\u0027ll be inconsistent with do_cluster_create, which is what I\u0027m trying to consolidate to).","commit_id":"dbd09a78ce4a1c87032c85bf5abbb821d9a5535e"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b5ace08f61d308db4f09c37a32f7ed220d5b0a53","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    \"\"\"Adds more instances to a cluster.\"\"\""},{"line_number":326,"context_line":"    cluster \u003d _find_cluster(cs, args.cluster)"},{"line_number":327,"context_line":"    instances \u003d _parse_instance_options(cs, args.instances)"},{"line_number":328,"context_line":"    if len(instances) \u003d\u003d 0:"},{"line_number":329,"context_line":"        raise exceptions.MissingArgs([\u0027instance\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    cs.clusters.grow(cluster, instances\u003dinstances)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_fa3b5936","line":328,"updated":"2016-05-09 15:54:58.000000000","message":"What do you think about moving this `if` into `_parse_instance_options` ?\n\nWe have the same check in both cluster functions using this function here.","commit_id":"cd6d257039d3bbca8d2f60421ae7f2cf1691d9b7"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e145c47251d6795c9159a2ed0f7ef521ebf5d420","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    \"\"\"Adds more instances to a cluster.\"\"\""},{"line_number":326,"context_line":"    cluster \u003d _find_cluster(cs, args.cluster)"},{"line_number":327,"context_line":"    instances \u003d _parse_instance_options(cs, args.instances)"},{"line_number":328,"context_line":"    if len(instances) \u003d\u003d 0:"},{"line_number":329,"context_line":"        raise exceptions.MissingArgs([\u0027instance\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    cs.clusters.grow(cluster, instances\u003dinstances)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_5306cace","line":328,"in_reply_to":"dab17558_44c0c7e0","updated":"2016-05-09 19:41:01.000000000","message":"I\u0027m good with that","commit_id":"cd6d257039d3bbca8d2f60421ae7f2cf1691d9b7"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"0a416d8607309e7ba92dfea57d1a1d4cbca951a9","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    \"\"\"Adds more instances to a cluster.\"\"\""},{"line_number":326,"context_line":"    cluster \u003d _find_cluster(cs, args.cluster)"},{"line_number":327,"context_line":"    instances \u003d _parse_instance_options(cs, args.instances)"},{"line_number":328,"context_line":"    if len(instances) \u003d\u003d 0:"},{"line_number":329,"context_line":"        raise exceptions.MissingArgs([\u0027instance\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    cs.clusters.grow(cluster, instances\u003dinstances)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_44c0c7e0","line":328,"in_reply_to":"dab17558_6eea0a11","updated":"2016-05-09 17:08:00.000000000","message":"Let me try again.\n\nBoth functions, `do_cluster_grow` and `do_cluster_create` check whether the list of returned instances from `_parse_instance_options` is empty or not. \n\nI think we could move these check - `if len(instances) \u003d\u003d 0` - into the `_parse_instance_options` function and avoid duplicating that code.\n\n`_parse_instance_options` is called *just* by these two - `do_cluster_grow` and `do_cluster_create` - functions anyway.","commit_id":"cd6d257039d3bbca8d2f60421ae7f2cf1691d9b7"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"fd0ea1bb29d1b87e94227a23c03c863d307fadf0","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    \"\"\"Adds more instances to a cluster.\"\"\""},{"line_number":326,"context_line":"    cluster \u003d _find_cluster(cs, args.cluster)"},{"line_number":327,"context_line":"    instances \u003d _parse_instance_options(cs, args.instances)"},{"line_number":328,"context_line":"    if len(instances) \u003d\u003d 0:"},{"line_number":329,"context_line":"        raise exceptions.MissingArgs([\u0027instance\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    cs.clusters.grow(cluster, instances\u003dinstances)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_6eea0a11","line":328,"in_reply_to":"dab17558_fa3b5936","updated":"2016-05-09 16:06:54.000000000","message":"i don\u0027t follow","commit_id":"cd6d257039d3bbca8d2f60421ae7f2cf1691d9b7"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"fdfc081593096ea09607505b66821edc950298bf","unresolved":false,"context_lines":[{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        instances.append(instance_info)"},{"line_number":669,"context_line":"    if len(instances) \u003d\u003d 0:"},{"line_number":670,"context_line":"        raise exceptions.MissingArgs([INSTANCE_ARG_NAME])"},{"line_number":671,"context_line":"    return instances"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dab17558_95ef3be8","line":670,"updated":"2016-05-10 17:52:01.000000000","message":"thanks :)","commit_id":"b8c9423afe2f3bf2616605fc24dfeb5d179bba50"}]}
