)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"ab1692dd2f930d2df2f474bf5f65e09f6c79f3e4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mayuri Ganguly \u003cmayuri.ganguly@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-28 16:22:59 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Accepting network and availability zone for instances in cluster"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Standalone instance create call in trove already accepts neutron"},{"line_number":10,"context_line":"networks and availability zone information."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_ff146ae9","line":7,"updated":"2015-05-29 08:33:25.000000000","message":"The title would be needed to be within 50 chars","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"}],"troveclient/tests/test_v1_shell.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"3dd67c369de8bebd26d2e627697ae3a804c0ffe2","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    def test_boot_nic_error(self):"},{"line_number":182,"context_line":"        cmd \u003d (\u0027create test-member-1 1 --size 1 \u0027"},{"line_number":183,"context_line":"               \u0027--nic net-id\u003dsome-id,port-id\u003dsome-id\u0027)"},{"line_number":184,"context_line":"        expected_error_msg \u003d \u0027Invalid NIC argument\u0027"},{"line_number":185,"context_line":"        self.assertRaisesRegexp("},{"line_number":186,"context_line":"            exceptions.CommandError, expected_error_msg,"},{"line_number":187,"context_line":"            self.run_command, cmd)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_47980b78","line":184,"updated":"2015-08-07 17:20:34.000000000","message":"I am not sure about whats the reasoning of replacing this message with a variable","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"2046c8595a826916c95b553539650e1a64a7e242","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    def test_boot_nic_error(self):"},{"line_number":182,"context_line":"        cmd \u003d (\u0027create test-member-1 1 --size 1 \u0027"},{"line_number":183,"context_line":"               \u0027--nic net-id\u003dsome-id,port-id\u003dsome-id\u0027)"},{"line_number":184,"context_line":"        expected_error_msg \u003d \u0027Invalid NIC argument\u0027"},{"line_number":185,"context_line":"        self.assertRaisesRegexp("},{"line_number":186,"context_line":"            exceptions.CommandError, expected_error_msg,"},{"line_number":187,"context_line":"            self.run_command, cmd)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_ca22c1b9","line":184,"in_reply_to":"1a4dcd0f_47980b78","updated":"2015-08-26 22:11:38.000000000","message":"Done","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"f2a094e58786eb73b2b8b243d91ceaef19079bac","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                \u0027datastore\u0027: {\u0027version\u0027: \u00277.1\u0027, \u0027type\u0027: \u0027vertica\u0027},"},{"line_number":289,"context_line":"                \u0027name\u0027: \u0027test-clstr1\u0027}})"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    def test_cluster_create_with_nic_az_error(self):"},{"line_number":292,"context_line":"        cmd \u003d (\u0027cluster-create test-clstr vertica 7.1 \u0027"},{"line_number":293,"context_line":"               \u0027--instance flavor\u003d2,volume\u003d2,nic\u003dnet-id\u003dsome-id,\u0027"},{"line_number":294,"context_line":"               \u0027port-id\u003dsome-port-id,availability-zone\u003d2 \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_62f0a3c9","line":291,"updated":"2015-09-18 12:53:42.000000000","message":"would you add tests that include the v4-fixed-ip that is also referenced in the other code.","commit_id":"0195e6a2e547f12e06b120825a53d2c28d4eabab"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"8494dd63393d48406fc9ca0c3834920f6920fc7b","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                \u0027datastore\u0027: {\u0027version\u0027: \u00277.1\u0027, \u0027type\u0027: \u0027vertica\u0027},"},{"line_number":289,"context_line":"                \u0027name\u0027: \u0027test-clstr1\u0027}})"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    def test_cluster_create_with_nic_az_error(self):"},{"line_number":292,"context_line":"        cmd \u003d (\u0027cluster-create test-clstr vertica 7.1 \u0027"},{"line_number":293,"context_line":"               \u0027--instance flavor\u003d2,volume\u003d2,nic\u003dnet-id\u003dsome-id,\u0027"},{"line_number":294,"context_line":"               \u0027port-id\u003dsome-port-id,availability-zone\u003d2 \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_2326dcba","line":291,"in_reply_to":"ba15a1d1_62f0a3c9","updated":"2015-09-21 20:18:20.000000000","message":"Done","commit_id":"0195e6a2e547f12e06b120825a53d2c28d4eabab"}],"troveclient/v1/shell.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"06857a6b9c0c65962b2d6f72eb868d8a82518287","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                elif k \u003d\u003d \"availability_zone\":"},{"line_number":438,"context_line":"                    instance_info[\"availability_zone\"] \u003d v"},{"line_number":439,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":440,"context_line":"                    print(v)"},{"line_number":441,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":442,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":443,"context_line":"                    nic_info \u003d dict([(key, value) for (key, value) in"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_cf2e35fa","line":440,"updated":"2015-05-25 16:15:53.000000000","message":"Is there a reason we\u0027re printing out \u0027v\u0027 ?","commit_id":"961f4000cef957fdd89082bd53886a3447c649e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"06857a6b9c0c65962b2d6f72eb868d8a82518287","unresolved":false,"context_lines":[{"line_number":440,"context_line":"                    print(v)"},{"line_number":441,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":442,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":443,"context_line":"                    nic_info \u003d dict([(key, value) for (key, value) in"},{"line_number":444,"context_line":"                                     [z.split(\":\", 1)[:2] for z in"},{"line_number":445,"context_line":"                                     v.split(\";\")]])"},{"line_number":446,"context_line":"                    if bool(nic_info.get(\u0027net-id\u0027)) \u003d\u003d bool("},{"line_number":447,"context_line":"                            nic_info.get(\u0027port-id\u0027)):"},{"line_number":448,"context_line":"                        err_msg \u003d (\"Invalid nic argument \u0027%s\u0027. Nic arguments \""},{"line_number":449,"context_line":"                                   \"must be of the form --nic \u003cnet-id\u003dnet-\""},{"line_number":450,"context_line":"                                   \"uuid,v4-fixed-ip\u003dip-addr,port-id\u003dport-\""},{"line_number":451,"context_line":"                                   \"uuid\u003e, with at minimum net-id or port-id \""},{"line_number":452,"context_line":"                                   \"(but not both) specified.\" % v)"},{"line_number":453,"context_line":"                        raise exceptions.CommandError(err_msg)"},{"line_number":454,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":455,"context_line":"                else:"},{"line_number":456,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_0ff8cd48","line":453,"range":{"start_line":443,"start_character":0,"end_line":453,"end_character":62},"updated":"2015-05-25 16:15:53.000000000","message":"This code looks very similar to 379-386 (except for the delimiter characters).  Could we factor this out to avoid the duplication?","commit_id":"961f4000cef957fdd89082bd53886a3447c649e1"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"be4ba6f6e3f73b564cf9f3f9771219d4f36b3519","unresolved":false,"context_lines":[{"line_number":399,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(split_str1, 1)[:2] for z in"},{"line_number":400,"context_line":"                                           nic_str.split(split_str2)]])"},{"line_number":401,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) \u003d\u003d bool(nic_info.get(\u0027port-id\u0027)):"},{"line_number":402,"context_line":"        err_msg \u003d (\"Invalid nic argument \u0027%s\u0027. Nic arguments must be of \""},{"line_number":403,"context_line":"                   \"the form --nic \u003cnet-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,\""},{"line_number":404,"context_line":"                   \"port-id\u003dport-uuid\u003e, with at minimum net-id or port-id \""},{"line_number":405,"context_line":"                   \"(but not both) specified.\" % nic_str)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_4be515a2","line":402,"updated":"2015-05-28 18:46:05.000000000","message":"shouldn\u0027t these messages be i18n\u0027ed as well? I don\u0027t see other messages getting the _ treatment but in .., shell.py does have _\n\nConfused.","commit_id":"6ae2e453e6033c5c7c0027fe2933041dc58851a8"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"4aa5a581d9b5ee9d674a9c38695317d82fd82875","unresolved":false,"context_lines":[{"line_number":399,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(split_str1, 1)[:2] for z in"},{"line_number":400,"context_line":"                                           nic_str.split(split_str2)]])"},{"line_number":401,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) \u003d\u003d bool(nic_info.get(\u0027port-id\u0027)):"},{"line_number":402,"context_line":"        err_msg \u003d (\"Invalid nic argument \u0027%s\u0027. Nic arguments must be of \""},{"line_number":403,"context_line":"                   \"the form --nic \u003cnet-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,\""},{"line_number":404,"context_line":"                   \"port-id\u003dport-uuid\u003e, with at minimum net-id or port-id \""},{"line_number":405,"context_line":"                   \"(but not both) specified.\" % nic_str)"},{"line_number":406,"context_line":"        raise exceptions.CommandError(err_msg)"},{"line_number":407,"context_line":"    return nic_info"},{"line_number":408,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_ffadd89b","line":405,"range":{"start_line":402,"start_character":0,"end_line":405,"end_character":57},"updated":"2015-05-27 15:17:31.000000000","message":"you\u0027ll have to change the error msg too, to reflect the different split strings (or it would get really confusing to an end user ;) )","commit_id":"6ae2e453e6033c5c7c0027fe2933041dc58851a8"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"ab1692dd2f930d2df2f474bf5f65e09f6c79f3e4","unresolved":false,"context_lines":[{"line_number":378,"context_line":"    nics \u003d []"},{"line_number":379,"context_line":"    for nic_str in args.nics:"},{"line_number":380,"context_line":"        err_msg \u003d _(\"Invalid nic argument \u0027%s\u0027. Nic arguments must be of \""},{"line_number":381,"context_line":"                   \"the form --nic \u003cnet-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,\""},{"line_number":382,"context_line":"                   \"port-id\u003dport-uuid\u003e, with at minimum net-id or port-id \""},{"line_number":383,"context_line":"                   \"(but not both) specified.\" % nic_str)"},{"line_number":384,"context_line":"        nic_info \u003d _get_nic_info(nic_str, \"\u003d\", \",\", err_msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_bf66f24e","line":381,"updated":"2015-05-29 08:33:25.000000000","message":"These following lines need to go one space further to match the formatting","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"12c88a4878c596240391bc9f9128af47b0cef0e3","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                   \"the form --nic \u003cnet-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,\""},{"line_number":382,"context_line":"                   \"port-id\u003dport-uuid\u003e, with at minimum net-id or port-id \""},{"line_number":383,"context_line":"                   \"(but not both) specified.\" % nic_str)"},{"line_number":384,"context_line":"        nic_info \u003d _get_nic_info(nic_str, \"\u003d\", \",\", err_msg)"},{"line_number":385,"context_line":"        nics.append(nic_info)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    instance \u003d cs.instances.create(args.name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_57bd8c66","line":384,"updated":"2015-05-29 20:30:48.000000000","message":"Suggestion:\n\n  nic_info \u003d _get_nic_info(nic_str, \"\u003d\", \",\", \"--nic \u003cFORMAT\u003e\")","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"12c88a4878c596240391bc9f9128af47b0cef0e3","unresolved":false,"context_lines":[{"line_number":400,"context_line":"    _print_instance(instance)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"def _get_nic_info(nic_str, split_str1, split_str2, err_msg):"},{"line_number":404,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(split_str1, 1)[:2] for z in"},{"line_number":405,"context_line":"                                           nic_str.split(split_str2)]])"},{"line_number":406,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) \u003d\u003d bool(nic_info.get(\u0027port-id\u0027)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_97a7844f","line":403,"updated":"2015-05-29 20:30:48.000000000","message":"Suggestion:\n\n  def _get_nic_info(nic_str, split_str1, split_str2, msg_format):","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"ca4239db5d1fa752f196da19395e5e45fb803bbf","unresolved":false,"context_lines":[{"line_number":400,"context_line":"    _print_instance(instance)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"def _get_nic_info(nic_str, split_str1, split_str2, err_msg):"},{"line_number":404,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(split_str1, 1)[:2] for z in"},{"line_number":405,"context_line":"                                           nic_str.split(split_str2)]])"},{"line_number":406,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) \u003d\u003d bool(nic_info.get(\u0027port-id\u0027)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_e61d6abe","line":403,"in_reply_to":"7a016987_97a7844f","updated":"2015-06-02 17:32:12.000000000","message":"Strikes me as a whole lot more readable to revert to patch set 2 and stick an _ in front of the err_msg.","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"12c88a4878c596240391bc9f9128af47b0cef0e3","unresolved":false,"context_lines":[{"line_number":403,"context_line":"def _get_nic_info(nic_str, split_str1, split_str2, err_msg):"},{"line_number":404,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(split_str1, 1)[:2] for z in"},{"line_number":405,"context_line":"                                           nic_str.split(split_str2)]])"},{"line_number":406,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) \u003d\u003d bool(nic_info.get(\u0027port-id\u0027)):"},{"line_number":407,"context_line":"        raise exceptions.CommandError(err_msg)"},{"line_number":408,"context_line":"    return nic_info"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_977e64ad","line":407,"range":{"start_line":406,"start_character":0,"end_line":407,"end_character":46},"updated":"2015-05-29 20:30:48.000000000","message":"Suggestion:\n\n        nic_format \u003d (\u0027net-id(split1)net-uuid(split2)v4-fixed-ip(split1)\u0027\n                      \u0027ip-addr(split2)port-id(split1)port-uuid\u0027).replace(\n            \u0027(split1)\u0027, split_str1).replace(\n            \u0027(split2)\u0027, split_str2)\n        msg_format \u003d msg_format.replace(\u0027FORMAT\u0027, nic_format)\n        err_msg \u003d _(\"Invalid nic argument \u0027%(nic)s\u0027. Nic arguments must be of \"\n                    \"the form %(msg)s with at minimum net-id or port-id (but \"\n                    \"not both) specified.\"\n                    ) % {\u0027nic\u0027: nic_str, \u0027msg\u0027: msg_format}","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"c053cfb5042d85eec386f0d6f22110c6a0a199e4","unresolved":false,"context_lines":[{"line_number":403,"context_line":"def _get_nic_info(nic_str, split_str1, split_str2, err_msg):"},{"line_number":404,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(split_str1, 1)[:2] for z in"},{"line_number":405,"context_line":"                                           nic_str.split(split_str2)]])"},{"line_number":406,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) \u003d\u003d bool(nic_info.get(\u0027port-id\u0027)):"},{"line_number":407,"context_line":"        raise exceptions.CommandError(err_msg)"},{"line_number":408,"context_line":"    return nic_info"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_b86fe85e","line":407,"range":{"start_line":406,"start_character":0,"end_line":407,"end_character":46},"in_reply_to":"7a016987_977e64ad","updated":"2015-06-01 14:57:15.000000000","message":"This formatting might be easier to read:\n\n        nic_format \u003d (\u0027net-id(split1)net-uuid(split2)v4-fixed-ip(split1)\u0027\n                      \u0027ip-addr(split2)port-id(split1)port-uuid\u0027\n                      ).replace(\n            \u0027(split1)\u0027, split_str1).replace(\n            \u0027(split2)\u0027, split_str2)\n        nic_msg \u003d msg_format.replace(\u0027FORMAT\u0027, nic_format)\n        err_msg \u003d _(\"Invalid nic argument \u0027%(nic)s\u0027. Nic arguments must be of \"\n                    \"the form %(msg)s with at minimum net-id or port-id (but \"\n                    \"not both) specified.\"\n                    ) % {\u0027nic\u0027: nic_str, \u0027msg\u0027: nic_msg}","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"12c88a4878c596240391bc9f9128af47b0cef0e3","unresolved":false,"context_lines":[{"line_number":423,"context_line":"           help\u003d\"Create an instance for the cluster. Specify multiple \""},{"line_number":424,"context_line":"                \"times to create multiple instances. \""},{"line_number":425,"context_line":"                \"eg.: --instances \u003cflavor_id\u003dflavor_id, volume\u003dvolume,\""},{"line_number":426,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid;v4-fixed-ip\u003dip-addr;port-id\u003dport-uuid\u0027 \""},{"line_number":427,"context_line":"                \"availability_zone\u003davailability_zone\u003e\","},{"line_number":428,"context_line":"           action\u003d\u0027append\u0027,"},{"line_number":429,"context_line":"           dest\u003d\u0027instances\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_022230a3","line":426,"range":{"start_line":426,"start_character":16,"end_line":426,"end_character":78},"updated":"2015-05-29 20:30:48.000000000","message":"In my suggestion, I switched to \u0027:\u0027 since it avoids having to quote the nic\u003d string:\n\n  \"nic\u003dnet-id\u003dnet-uuid:v4-fixed-ip\u003dip-addr:port-id\u003dport-uuid\"","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"12c88a4878c596240391bc9f9128af47b0cef0e3","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                               \"v4-fixed-ip\u003dip-addr;port-id\u003dport-uuid\u0027 \""},{"line_number":451,"context_line":"                               \"with at minimum net-id or port-id \""},{"line_number":452,"context_line":"                               \"(but not both) specified.\" % v)"},{"line_number":453,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\", err_msg)"},{"line_number":454,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":455,"context_line":"                else:"},{"line_number":456,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_77008802","line":453,"updated":"2015-05-29 20:30:48.000000000","message":"In my suggestion, I switched to \u0027:\u0027 since it avoids having to quote the nic\u003d string:\n\n  nic_info \u003d _get_nic_info(v, \"\u003d\", \":\", \"nic\u003dFORMAT\")","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"ab1692dd2f930d2df2f474bf5f65e09f6c79f3e4","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                    instance_info[k] \u003d v"},{"line_number":457,"context_line":"        if not instance_info.get(\u0027flavorRef\u0027):"},{"line_number":458,"context_line":"            err_msg \u003d _(\"flavor_id is required. Instance arguments must be \""},{"line_number":459,"context_line":"                       \"of the form --instance \u003cflavor_id\u003dflavor_id,\""},{"line_number":460,"context_line":"                       \"volume\u003dvolume\u003e.\")"},{"line_number":461,"context_line":"            raise exceptions.CommandError(err_msg)"},{"line_number":462,"context_line":"        instances.append(instance_info)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_9fce962b","line":459,"updated":"2015-05-29 08:33:25.000000000","message":"Same, following lines need to go one space further to match the formatting","commit_id":"65c7b594ebe6cf19f1a326753af68a710fb1393b"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"e5b2157ee8c9a5e93cf0f0c4b2c2cf6a067fa865","unresolved":false,"context_lines":[{"line_number":400,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(split_str1, 1)[:2] for z in"},{"line_number":401,"context_line":"                                           nic_str.split(split_str2)]])"},{"line_number":402,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) \u003d\u003d bool(nic_info.get(\u0027port-id\u0027)):"},{"line_number":403,"context_line":"        err_msg \u003d _(\"Invalid nic argument \u0027%s\u0027. Nic arguments must be in \""},{"line_number":404,"context_line":"                    \"but not both) specified. Please refer to help.\"), nic_str"},{"line_number":405,"context_line":"        raise exceptions.CommandError(err_msg)"},{"line_number":406,"context_line":"    return nic_info"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_6d26dbcf","line":403,"updated":"2015-06-08 11:27:08.000000000","message":"NIC is an abbreviation so it should be either lower case (nic) or upper case (NIC). Capitalized \"Nic\" is not correct, I don\u0027t think.\n\nAlso, this sentence is incomplete or incorrect.\n\nNIC argument must be in but not both) specified. Please refer to help.\n\n(a) must be in what but not both?\n(b) there\u0027s a ) but I can\u0027t find a matching (","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"e57fe8cd3f2068c84e0559ec626fa5ded6935eaf","unresolved":false,"context_lines":[{"line_number":400,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(split_str1, 1)[:2] for z in"},{"line_number":401,"context_line":"                                           nic_str.split(split_str2)]])"},{"line_number":402,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) \u003d\u003d bool(nic_info.get(\u0027port-id\u0027)):"},{"line_number":403,"context_line":"        err_msg \u003d _(\"Invalid nic argument \u0027%s\u0027. Nic arguments must be in \""},{"line_number":404,"context_line":"                    \"but not both) specified. Please refer to help.\"), nic_str"},{"line_number":405,"context_line":"        raise exceptions.CommandError(err_msg)"},{"line_number":406,"context_line":"    return nic_info"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_9b1cca14","line":403,"in_reply_to":"3afb71cf_6d26dbcf","updated":"2015-06-30 19:10:27.000000000","message":"Done","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"a7b8467af7faed7cc8a38def1105fd14d013fb37","unresolved":false,"context_lines":[{"line_number":420,"context_line":"           metavar\u003d\u0027\u003cinstance parameters\u003e\u0027,"},{"line_number":421,"context_line":"           help\u003d\"Create an instance for the cluster. Specify multiple \""},{"line_number":422,"context_line":"                \"times to create multiple instances. \""},{"line_number":423,"context_line":"                \"eg.: --instances \u003cflavor_id\u003dflavor_id, volume\u003dvolume,\""},{"line_number":424,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid;v4-fixed-ip\u003dip-addr;port-id\u003dport-uuid\u0027 \""},{"line_number":425,"context_line":"                \"availability_zone\u003davailability_zone\u003e\","},{"line_number":426,"context_line":"           action\u003d\u0027append\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_2aff9eab","line":423,"updated":"2015-06-08 15:03:07.000000000","message":"thats not correct wording volume\u003dvolume","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"e57fe8cd3f2068c84e0559ec626fa5ded6935eaf","unresolved":false,"context_lines":[{"line_number":420,"context_line":"           metavar\u003d\u0027\u003cinstance parameters\u003e\u0027,"},{"line_number":421,"context_line":"           help\u003d\"Create an instance for the cluster. Specify multiple \""},{"line_number":422,"context_line":"                \"times to create multiple instances. \""},{"line_number":423,"context_line":"                \"eg.: --instances \u003cflavor_id\u003dflavor_id, volume\u003dvolume,\""},{"line_number":424,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid;v4-fixed-ip\u003dip-addr;port-id\u003dport-uuid\u0027 \""},{"line_number":425,"context_line":"                \"availability_zone\u003davailability_zone\u003e\","},{"line_number":426,"context_line":"           action\u003d\u0027append\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_3b1b3e1d","line":423,"in_reply_to":"3afb71cf_2aff9eab","updated":"2015-06-30 19:10:27.000000000","message":"Done","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"a7b8467af7faed7cc8a38def1105fd14d013fb37","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                \"times to create multiple instances. \""},{"line_number":423,"context_line":"                \"eg.: --instances \u003cflavor_id\u003dflavor_id, volume\u003dvolume,\""},{"line_number":424,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid;v4-fixed-ip\u003dip-addr;port-id\u003dport-uuid\u0027 \""},{"line_number":425,"context_line":"                \"availability_zone\u003davailability_zone\u003e\","},{"line_number":426,"context_line":"           action\u003d\u0027append\u0027,"},{"line_number":427,"context_line":"           dest\u003d\u0027instances\u0027,"},{"line_number":428,"context_line":"           default\u003d[])"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_6aca3670","line":425,"updated":"2015-06-08 15:03:07.000000000","message":"same availability_zone\u003davailability_zone\n\nYou can checkout the help from instance creation to use here.","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"e57fe8cd3f2068c84e0559ec626fa5ded6935eaf","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                \"times to create multiple instances. \""},{"line_number":423,"context_line":"                \"eg.: --instances \u003cflavor_id\u003dflavor_id, volume\u003dvolume,\""},{"line_number":424,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid;v4-fixed-ip\u003dip-addr;port-id\u003dport-uuid\u0027 \""},{"line_number":425,"context_line":"                \"availability_zone\u003davailability_zone\u003e\","},{"line_number":426,"context_line":"           action\u003d\u0027append\u0027,"},{"line_number":427,"context_line":"           dest\u003d\u0027instances\u0027,"},{"line_number":428,"context_line":"           default\u003d[])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_fbd39636","line":425,"in_reply_to":"3afb71cf_6aca3670","updated":"2015-06-30 19:10:27.000000000","message":"Done","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":13355,"name":"Edmond Kotowski","email":"ekotowski@gmail.com","username":"ekotowski"},"change_message_id":"56160d7776ae46fa44f815d81581efc3f8b3db76","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":444,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":445,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":446,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\")"},{"line_number":447,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":448,"context_line":"                else:"},{"line_number":449,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_7d258da9","line":446,"updated":"2015-06-05 21:40:43.000000000","message":"Why are we separating by semi colon here and comma in the single instance case? I would think we would want nics to be exactly the same as single instance? If this was the same then _get_nick_info signature could just be _get_nic_info(nic_str) because the string delimiters can be hardcoded because they won\u0027t change.","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"e57fe8cd3f2068c84e0559ec626fa5ded6935eaf","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":444,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":445,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":446,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\")"},{"line_number":447,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":448,"context_line":"                else:"},{"line_number":449,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_fb2cf64b","line":446,"in_reply_to":"3afb71cf_0ac86221","updated":"2015-06-30 19:10:27.000000000","message":"I will agree with consistency, but we cannot use \u0027,\u0027 as separator at both the places, because split function cannot distinguish between the parameters for the main command and for the sub command, it will split everything as parameters for the main command. \n\nIf you have ideas on how to use same separator and how to get split function to use them please suggest here.","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"fade37459a7ead45dbf51d45863976522b7ab46d","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":444,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":445,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":446,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\")"},{"line_number":447,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":448,"context_line":"                else:"},{"line_number":449,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_9dfe096a","line":446,"in_reply_to":"3afb71cf_7d258da9","updated":"2015-06-05 21:57:24.000000000","message":"Here is what I thought: coma in the actual command and semi colon in the sub-command will help in separating out the sub-part easily and will be easy to understand. It would look like this: \n--instances \u003cflavor_id\u003dflavor_id, \n                     volume\u003dvolume,\n                     nic\u003d\u0027net-id\u003dnet-uuid;v4-fixed- ip\u003dip-addr;port-id\u003dport-uuid\u0027,\n                     availability_zone\u003davailability_zone\u003e\n\nThanks.","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":14912,"name":"Ashleigh Farnham","email":"ashleighfarnham@gmail.com"},"change_message_id":"d5042490e54e8fa44ca8ac71973d227da22ddab7","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":444,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":445,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":446,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\")"},{"line_number":447,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":448,"context_line":"                else:"},{"line_number":449,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_a0b07cde","line":446,"in_reply_to":"3afb71cf_9dfe096a","updated":"2015-06-05 22:26:05.000000000","message":"I don\u0027t think it would be confusing to use commas since it is all enclosed in quotes.","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"a7b8467af7faed7cc8a38def1105fd14d013fb37","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":444,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":445,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":446,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\")"},{"line_number":447,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":448,"context_line":"                else:"},{"line_number":449,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_0ac86221","line":446,"in_reply_to":"3afb71cf_a05abc81","updated":"2015-06-08 15:03:07.000000000","message":"+1","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"e5b2157ee8c9a5e93cf0f0c4b2c2cf6a067fa865","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":444,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":445,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":446,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\")"},{"line_number":447,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":448,"context_line":"                else:"},{"line_number":449,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_0d02c70b","line":446,"in_reply_to":"3afb71cf_a05abc81","updated":"2015-06-08 11:27:08.000000000","message":"I agree! consistency ~ good","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":13355,"name":"Edmond Kotowski","email":"ekotowski@gmail.com","username":"ekotowski"},"change_message_id":"18f7a04c511c4dc56c6b351f1f5664d98c182fb1","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":444,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":445,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":446,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\")"},{"line_number":447,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":448,"context_line":"                else:"},{"line_number":449,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afb71cf_a05abc81","line":446,"in_reply_to":"3afb71cf_a0b07cde","updated":"2015-06-05 22:30:28.000000000","message":"We should use comma because it stays consistent with single instance create and nova boot which also has --nic configuration option that uses a comma.","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"b261d34cbd52b70b6a7ac6577dc86b2611289754","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":444,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":445,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":446,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\")"},{"line_number":447,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":448,"context_line":"                else:"},{"line_number":449,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_7a3dcf8d","line":446,"in_reply_to":"ba3cc151_32769570","updated":"2015-07-02 16:52:42.000000000","message":"Thanks Morgan. I have separated the nic options in patch set 6, which is consistent too. Can you please review that too.. thanks","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"50e6c1ce249da71c1c8e706297072b5e9b420543","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":444,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":445,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":446,"context_line":"                    nic_info \u003d _get_nic_info(v, \"\u003d\", \";\")"},{"line_number":447,"context_line":"                    instance_info[\"nics\"].append(nic_info)"},{"line_number":448,"context_line":"                else:"},{"line_number":449,"context_line":"                    instance_info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_32769570","line":446,"in_reply_to":"ba3cc151_fb2cf64b","updated":"2015-07-02 15:07:59.000000000","message":"Two options: one: you should be able to scan components, adding them to the nic option until you find an option with an \u0027\u003d\u0027 in it.  Two:  Tell the user to escape the comma in the nic option: volume\u003d2,flavor_id\u003d7,nic\u003dfoo\\\\,bar\\\\,zoo,name\u003dbob","commit_id":"4f86b34fd347c5e49050e3ac3517cf6a538ed944"},{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"2179cdb6e9f384e8fd1f4fefcf110f214e7b3015","unresolved":false,"context_lines":[{"line_number":446,"context_line":"                    instance_info[\"volume\"] \u003d {\"size\": v}"},{"line_number":447,"context_line":"                elif k \u003d\u003d \"availability_zone\":"},{"line_number":448,"context_line":"                    instance_info[\"availability_zone\"] \u003d v"},{"line_number":449,"context_line":"                elif k \u003d\u003d \"net_id\":"},{"line_number":450,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":451,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":452,"context_line":"                    instance_info[\"nics\"].append(v)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_4fbda7d6","line":449,"updated":"2015-07-02 19:23:26.000000000","message":"I don\u0027t believe it is acceptable to break the options out like this.  The \"nic\" option should be an opaque string that will be passed through to layers below.  After your split(\u0027,\u0027), you should be able to regroup the options by checking for \u0027\u003d\u0027 within them.","commit_id":"65bdf90fba955f0755f0fd13153efab243742b37"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"0b3843e6e3fe9cbe87c101b3d82bb77ece0e3f2b","unresolved":false,"context_lines":[{"line_number":446,"context_line":"                    instance_info[\"volume\"] \u003d {\"size\": v}"},{"line_number":447,"context_line":"                elif k \u003d\u003d \"availability_zone\":"},{"line_number":448,"context_line":"                    instance_info[\"availability_zone\"] \u003d v"},{"line_number":449,"context_line":"                elif k \u003d\u003d \"net_id\":"},{"line_number":450,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":451,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":452,"context_line":"                    instance_info[\"nics\"].append(v)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_1611c1af","line":449,"in_reply_to":"ba3cc151_4fbda7d6","updated":"2015-07-05 00:09:09.000000000","message":"this would certainly be different.","commit_id":"65bdf90fba955f0755f0fd13153efab243742b37"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"3dd67c369de8bebd26d2e627697ae3a804c0ffe2","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            err_msg \u003d (\"Invalid NIC argument %s. %s\" % (nic_str, NIC_ERROR))"},{"line_number":412,"context_line":"            raise exceptions.CommandError(err_msg)"},{"line_number":413,"context_line":"    else:"},{"line_number":414,"context_line":"        err_msg \u003d (\"Invalid NIC argument %s. %s\" % (nic_str, NIC_ERROR))"},{"line_number":415,"context_line":"        raise exceptions.CommandError(err_msg)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    return nic_info"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_47cd6b64","line":414,"updated":"2015-08-07 17:20:34.000000000","message":"I think \"Invalid NIC argument $s. %s\" can also be part of NIC_ERROR and thus wud help u to get rid of err_msg","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"2046c8595a826916c95b553539650e1a64a7e242","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            err_msg \u003d (\"Invalid NIC argument %s. %s\" % (nic_str, NIC_ERROR))"},{"line_number":412,"context_line":"            raise exceptions.CommandError(err_msg)"},{"line_number":413,"context_line":"    else:"},{"line_number":414,"context_line":"        err_msg \u003d (\"Invalid NIC argument %s. %s\" % (nic_str, NIC_ERROR))"},{"line_number":415,"context_line":"        raise exceptions.CommandError(err_msg)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    return nic_info"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_e78260c8","line":414,"in_reply_to":"1a4dcd0f_47cd6b64","updated":"2015-08-26 22:11:38.000000000","message":"Done","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"3dd67c369de8bebd26d2e627697ae3a804c0ffe2","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                \"eg.: --instances \u003cflavor\u003dflavor of the instance, \""},{"line_number":435,"context_line":"                \"volume\u003dsize of the instance disk volume in GB,\""},{"line_number":436,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,port-id\u003dport-uuid\u0027, \""},{"line_number":437,"context_line":"                \"where net-id\u003dattach NIC to network with this ID(either \""},{"line_number":438,"context_line":"                \"port-id or net-id must be specified),v4-fixed-ip\u003dIPv4 fixed \""},{"line_number":439,"context_line":"                \"address for NIC (optional),port-id\u003dattach NIC to port with \""},{"line_number":440,"context_line":"                \"this ID (either port-id or net-id must be specified), \""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_870a9377","line":437,"updated":"2015-08-07 17:20:34.000000000","message":"\"attach NIC to network with this ID\" seems somewhat a wrong sentence as a help.\n\nrather it could be reconsidered something like \"network-id to be attached to NIC\"","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"2046c8595a826916c95b553539650e1a64a7e242","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                \"eg.: --instances \u003cflavor\u003dflavor of the instance, \""},{"line_number":435,"context_line":"                \"volume\u003dsize of the instance disk volume in GB,\""},{"line_number":436,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,port-id\u003dport-uuid\u0027, \""},{"line_number":437,"context_line":"                \"where net-id\u003dattach NIC to network with this ID(either \""},{"line_number":438,"context_line":"                \"port-id or net-id must be specified),v4-fixed-ip\u003dIPv4 fixed \""},{"line_number":439,"context_line":"                \"address for NIC (optional),port-id\u003dattach NIC to port with \""},{"line_number":440,"context_line":"                \"this ID (either port-id or net-id must be specified), \""}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_47654c43","line":437,"in_reply_to":"1a4dcd0f_870a9377","updated":"2015-08-26 22:11:38.000000000","message":"Done","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"3dd67c369de8bebd26d2e627697ae3a804c0ffe2","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                \"port-id or net-id must be specified),v4-fixed-ip\u003dIPv4 fixed \""},{"line_number":439,"context_line":"                \"address for NIC (optional),port-id\u003dattach NIC to port with \""},{"line_number":440,"context_line":"                \"this ID (either port-id or net-id must be specified), \""},{"line_number":441,"context_line":"                \"availability_zone\u003dthe Zone hint to give to nova\u003e\","},{"line_number":442,"context_line":"           action\u003d\u0027append\u0027,"},{"line_number":443,"context_line":"           dest\u003d\u0027instances\u0027,"},{"line_number":444,"context_line":"           default\u003d[])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_c77bbbf3","line":441,"updated":"2015-08-07 17:20:34.000000000","message":"Please end the help text with a \u0027.\u0027","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"2046c8595a826916c95b553539650e1a64a7e242","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                \"port-id or net-id must be specified),v4-fixed-ip\u003dIPv4 fixed \""},{"line_number":439,"context_line":"                \"address for NIC (optional),port-id\u003dattach NIC to port with \""},{"line_number":440,"context_line":"                \"this ID (either port-id or net-id must be specified), \""},{"line_number":441,"context_line":"                \"availability_zone\u003dthe Zone hint to give to nova\u003e\","},{"line_number":442,"context_line":"           action\u003d\u0027append\u0027,"},{"line_number":443,"context_line":"           dest\u003d\u0027instances\u0027,"},{"line_number":444,"context_line":"           default\u003d[])"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_27ee188c","line":441,"in_reply_to":"1a4dcd0f_c77bbbf3","updated":"2015-08-26 22:11:38.000000000","message":"Done","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"272021bfdc28f14717e51fc6b6791f052be91767","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                    instance_info[\"volume\"] \u003d {\"size\": v}"},{"line_number":459,"context_line":"                elif k \u003d\u003d \"availability_zone\":"},{"line_number":460,"context_line":"                    instance_info[\"availability_zone\"] \u003d v"},{"line_number":461,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":462,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":463,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":464,"context_line":"                    nic_info \u003d dict([(key, value) for (key, value) in [v.split("}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_c8443574","line":461,"updated":"2015-08-13 13:08:02.000000000","message":"It\u0027s still not acceptable to explicitly check for neutron options - every time neutron added a new option, we would unknowingly and undetectably break.  Suggest you group all options after \"nic\u003d\" until the next trove option to determine the nic parameters.","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"2046c8595a826916c95b553539650e1a64a7e242","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                    instance_info[\"volume\"] \u003d {\"size\": v}"},{"line_number":459,"context_line":"                elif k \u003d\u003d \"availability_zone\":"},{"line_number":460,"context_line":"                    instance_info[\"availability_zone\"] \u003d v"},{"line_number":461,"context_line":"                elif k \u003d\u003d \"nic\":"},{"line_number":462,"context_line":"                    if \"nics\" not in instance_info:"},{"line_number":463,"context_line":"                        instance_info[\"nics\"] \u003d []"},{"line_number":464,"context_line":"                    nic_info \u003d dict([(key, value) for (key, value) in [v.split("}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_47f30c74","line":461,"in_reply_to":"1a4dcd0f_c8443574","updated":"2015-08-26 22:11:38.000000000","message":"Done","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"3dd67c369de8bebd26d2e627697ae3a804c0ffe2","unresolved":false,"context_lines":[{"line_number":485,"context_line":"                if (bool(nic_info.get(\u0027net-id\u0027)) and"},{"line_number":486,"context_line":"                        bool(nic_info.get(\u0027port-id\u0027))):"},{"line_number":487,"context_line":"                    err_msg \u003d (\"Invalid NIC argument. %s\" % NIC_ERROR)"},{"line_number":488,"context_line":"                    raise exceptions.CommandError(err_msg)"},{"line_number":489,"context_line":"            else:"},{"line_number":490,"context_line":"                err_msg \u003d (\"Invalid NIC argument. %s\" % NIC_ERROR)"},{"line_number":491,"context_line":"                raise exceptions.CommandError(err_msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_27485fb2","line":488,"updated":"2015-08-07 17:20:34.000000000","message":"this does not informs which argument unlike its done in _get_nic_info, not sure if i am asking correct question.","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"2046c8595a826916c95b553539650e1a64a7e242","unresolved":false,"context_lines":[{"line_number":485,"context_line":"                if (bool(nic_info.get(\u0027net-id\u0027)) and"},{"line_number":486,"context_line":"                        bool(nic_info.get(\u0027port-id\u0027))):"},{"line_number":487,"context_line":"                    err_msg \u003d (\"Invalid NIC argument. %s\" % NIC_ERROR)"},{"line_number":488,"context_line":"                    raise exceptions.CommandError(err_msg)"},{"line_number":489,"context_line":"            else:"},{"line_number":490,"context_line":"                err_msg \u003d (\"Invalid NIC argument. %s\" % NIC_ERROR)"},{"line_number":491,"context_line":"                raise exceptions.CommandError(err_msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_877e04ad","line":488,"in_reply_to":"1a4dcd0f_27485fb2","updated":"2015-08-26 22:11:38.000000000","message":"Done","commit_id":"02d455375fb65f77ff14945bdfeb4de34f52acb3"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"f2a094e58786eb73b2b8b243d91ceaef19079bac","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"INSTANCE_ERROR \u003d (\"Instance argument(s) must be of the form --instance \""},{"line_number":24,"context_line":"                  \"\u003cflavor\u003dflavor_name_or_id, volume\u003dvolume\u003e\")"},{"line_number":25,"context_line":"NIC_ERROR \u003d (\"Invalid NIC argument %s. NIC arguments must be in correct form,\""},{"line_number":26,"context_line":"             \" with at minimum net-id or port-id (but not both) specified.\""},{"line_number":27,"context_line":"             \" Please refer to help.\")"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_42647fb7","line":25,"updated":"2015-09-18 12:53:42.000000000","message":"This error could use some cleanup.\n\nInvalid NIC argument %s. Specify either net-id or port-id but not both.\n\nIt is also inconsistent with the code below. See next comment.","commit_id":"0195e6a2e547f12e06b120825a53d2c28d4eabab"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"8494dd63393d48406fc9ca0c3834920f6920fc7b","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"INSTANCE_ERROR \u003d (\"Instance argument(s) must be of the form --instance \""},{"line_number":24,"context_line":"                  \"\u003cflavor\u003dflavor_name_or_id, volume\u003dvolume\u003e\")"},{"line_number":25,"context_line":"NIC_ERROR \u003d (\"Invalid NIC argument %s. NIC arguments must be in correct form,\""},{"line_number":26,"context_line":"             \" with at minimum net-id or port-id (but not both) specified.\""},{"line_number":27,"context_line":"             \" Please refer to help.\")"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_389ba974","line":25,"in_reply_to":"ba15a1d1_42647fb7","updated":"2015-09-21 20:18:20.000000000","message":"Done","commit_id":"0195e6a2e547f12e06b120825a53d2c28d4eabab"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"f2a094e58786eb73b2b8b243d91ceaef19079bac","unresolved":false,"context_lines":[{"line_number":473,"context_line":"def _get_nic_info(nic_str):"},{"line_number":474,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(\"\u003d\", 1)[:2] for z in"},{"line_number":475,"context_line":"                                           nic_str.split(\",\")]])"},{"line_number":476,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) or bool(nic_info.get(\u0027port-id\u0027)) or bool("},{"line_number":477,"context_line":"            nic_info.get(\u0027v4-fixed-ip\u0027)):"},{"line_number":478,"context_line":"        if bool(nic_info.get(\u0027net-id\u0027)) and bool(nic_info.get(\u0027port-id\u0027)):"},{"line_number":479,"context_line":"            raise exceptions.ValidationError(NIC_ERROR % nic_str)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_c21e4f0b","line":476,"updated":"2015-09-18 12:53:42.000000000","message":"This code does not, I don\u0027t believe, match the error message which requires either --nic to provide either net-id or port-id.\n\nConsider that I provide just v4-fixed-ip. The check at 476 will pass and the condition at 478 won\u0027t. In other words, I could just provide v4-fixed-ip and these checks would succeed.\n\nI don\u0027t know whether this is correct or not, I\u0027m merely observing that it is inconsistent with the error message printed above.","commit_id":"0195e6a2e547f12e06b120825a53d2c28d4eabab"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"8494dd63393d48406fc9ca0c3834920f6920fc7b","unresolved":false,"context_lines":[{"line_number":473,"context_line":"def _get_nic_info(nic_str):"},{"line_number":474,"context_line":"    nic_info \u003d dict([(k, v) for (k, v) in [z.split(\"\u003d\", 1)[:2] for z in"},{"line_number":475,"context_line":"                                           nic_str.split(\",\")]])"},{"line_number":476,"context_line":"    if bool(nic_info.get(\u0027net-id\u0027)) or bool(nic_info.get(\u0027port-id\u0027)) or bool("},{"line_number":477,"context_line":"            nic_info.get(\u0027v4-fixed-ip\u0027)):"},{"line_number":478,"context_line":"        if bool(nic_info.get(\u0027net-id\u0027)) and bool(nic_info.get(\u0027port-id\u0027)):"},{"line_number":479,"context_line":"            raise exceptions.ValidationError(NIC_ERROR % nic_str)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_f8bd31d8","line":476,"in_reply_to":"ba15a1d1_c21e4f0b","updated":"2015-09-21 20:18:20.000000000","message":"That is true, it shouldn\u0027t happen.","commit_id":"0195e6a2e547f12e06b120825a53d2c28d4eabab"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"7e7c490c70bb9e49871132862476d7e8612b6664","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                \"times to create multiple instances. \""},{"line_number":499,"context_line":"                \"eg.: --instances \u003cflavor\u003dflavor of the instance, \""},{"line_number":500,"context_line":"                \"volume\u003dsize of the instance disk volume in GB,\""},{"line_number":501,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,port-id\u003dport-uuid\u0027, \""},{"line_number":502,"context_line":"                \"where net-id\u003dnetwork-id to be attached to NIC(either \""},{"line_number":503,"context_line":"                \"port-id or net-id must be specified),v4-fixed-ip\u003dIPv4 fixed \""},{"line_number":504,"context_line":"                \"address for NIC (optional),port-id\u003dattach NIC to port with \""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_0221204d","line":501,"updated":"2015-09-22 19:00:44.000000000","message":"nit: does the nic value need to be single quoted or does it matter? I see in the tests you do not quote them. Just want to make sure if we add this help info it is what we expect and is what we are testing for. Btw this help info is GREATLY appreciated! :)","commit_id":"4f325f48d2acf10c1d7879ba5d6b1303bd6a6298"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"9bbf68eeb1a2cd9c524a1f4e51562e83b2e50f9b","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                \"times to create multiple instances. \""},{"line_number":499,"context_line":"                \"eg.: --instances \u003cflavor\u003dflavor of the instance, \""},{"line_number":500,"context_line":"                \"volume\u003dsize of the instance disk volume in GB,\""},{"line_number":501,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,port-id\u003dport-uuid\u0027, \""},{"line_number":502,"context_line":"                \"where net-id\u003dnetwork-id to be attached to NIC(either \""},{"line_number":503,"context_line":"                \"port-id or net-id must be specified),v4-fixed-ip\u003dIPv4 fixed \""},{"line_number":504,"context_line":"                \"address for NIC (optional),port-id\u003dattach NIC to port with \""}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_eece5282","line":501,"in_reply_to":"ba15a1d1_0221204d","updated":"2015-09-22 22:36:11.000000000","message":"it will work either ways with or without single quotes... i can update the tests to keep it consistent with help. And it also will work with double quotes.","commit_id":"4f325f48d2acf10c1d7879ba5d6b1303bd6a6298"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"7e7c490c70bb9e49871132862476d7e8612b6664","unresolved":false,"context_lines":[{"line_number":579,"context_line":"                        nic_info.get(\u0027port-id\u0027))):"},{"line_number":580,"context_line":"                    raise exceptions.ValidationError(NIC_ERROR % nic_str)"},{"line_number":581,"context_line":"            else:"},{"line_number":582,"context_line":"                raise exceptions.ValidationError(NIC_ERROR % nic_str)"},{"line_number":583,"context_line":"        instances.append(instance_info)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    if len(instances) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_e21bccc8","line":582,"updated":"2015-09-22 19:00:44.000000000","message":"(-1 unless i\u0027m missing something) This code seems duplicated after it was made a function from the create.","commit_id":"4f325f48d2acf10c1d7879ba5d6b1303bd6a6298"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"9bbf68eeb1a2cd9c524a1f4e51562e83b2e50f9b","unresolved":false,"context_lines":[{"line_number":579,"context_line":"                        nic_info.get(\u0027port-id\u0027))):"},{"line_number":580,"context_line":"                    raise exceptions.ValidationError(NIC_ERROR % nic_str)"},{"line_number":581,"context_line":"            else:"},{"line_number":582,"context_line":"                raise exceptions.ValidationError(NIC_ERROR % nic_str)"},{"line_number":583,"context_line":"        instances.append(instance_info)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    if len(instances) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_abfccc3e","line":582,"in_reply_to":"ba15a1d1_e21bccc8","updated":"2015-09-22 22:36:11.000000000","message":"Done","commit_id":"4f325f48d2acf10c1d7879ba5d6b1303bd6a6298"},{"author":{"_account_id":13355,"name":"Edmond Kotowski","email":"ekotowski@gmail.com","username":"ekotowski"},"change_message_id":"cb756768eacd5da207b694b0878485f2fa2d29fa","unresolved":false,"context_lines":[{"line_number":506,"context_line":"           default\u003d[])"},{"line_number":507,"context_line":"@utils.service_type(\u0027database\u0027)"},{"line_number":508,"context_line":"def do_cluster_create(cs, args):"},{"line_number":509,"context_line":"    \"\"\"Creates a new cluster.\"\"\""},{"line_number":510,"context_line":"    instances \u003d []"},{"line_number":511,"context_line":"    instance_args \u003d [\"flavor\", \"volume\", \"nic\", \"availability_zone\"]"},{"line_number":512,"context_line":"    for instance_str in args.instances:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a1a9d01_43a0dcf4","line":509,"updated":"2015-09-24 21:31:14.000000000","message":"We should have sub methods per type of value extraction. That way it\u0027s very obvious how each value of instance_info is getting populated. It will also be obvious on why we are raising particular messages. Then functions like _validate_nic_info can be moved into get_networks which makes each sub method more cohesive. The if not instance_info.get(\u0027flavorRef\u0027) can also move into get_flavors().\n\nIt could look something like this:\n\ndo_cluster_create(cs, args):\n   instance_args \u003d get_instance_args(args)\n   instance_info[\"flavorRef\"] \u003d get_flavors(instance_args)\n   instance_info[\"nics\"] \u003d get_networks(instance_args)\n   instance_info[\"volume\"] \u003d get_volumes(instance_args)\n   instance_info[\"availability-zone\"] \u003d get_availability_zones(instance_args)","commit_id":"fa4f69de9ac2e64acdc1c756edb7fbb69865c4f2"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"77b238baeaa50fe717093e7ea5b471414301a3d9","unresolved":false,"context_lines":[{"line_number":506,"context_line":"           default\u003d[])"},{"line_number":507,"context_line":"@utils.service_type(\u0027database\u0027)"},{"line_number":508,"context_line":"def do_cluster_create(cs, args):"},{"line_number":509,"context_line":"    \"\"\"Creates a new cluster.\"\"\""},{"line_number":510,"context_line":"    instances \u003d []"},{"line_number":511,"context_line":"    instance_args \u003d [\"flavor\", \"volume\", \"nic\", \"availability_zone\"]"},{"line_number":512,"context_line":"    for instance_str in args.instances:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a1a9d01_824a44ab","line":509,"in_reply_to":"9a1a9d01_43a0dcf4","updated":"2015-09-25 21:25:29.000000000","message":"Done","commit_id":"fa4f69de9ac2e64acdc1c756edb7fbb69865c4f2"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"8fe8d3ca9e0f93bfe744309b0315d796e002190e","unresolved":false,"context_lines":[{"line_number":506,"context_line":"           default\u003d[])"},{"line_number":507,"context_line":"@utils.service_type(\u0027database\u0027)"},{"line_number":508,"context_line":"def do_cluster_create(cs, args):"},{"line_number":509,"context_line":"    \"\"\"Creates a new cluster.\"\"\""},{"line_number":510,"context_line":"    instances \u003d []"},{"line_number":511,"context_line":"    instance_args \u003d [\"flavor\", \"volume\", \"nic\", \"availability_zone\"]"},{"line_number":512,"context_line":"    for instance_str in args.instances:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a1a9d01_c3cb8c71","line":509,"in_reply_to":"9a1a9d01_43a0dcf4","updated":"2015-09-24 21:34:24.000000000","message":"okay i see how this looks cleaner... it can be done :)","commit_id":"fa4f69de9ac2e64acdc1c756edb7fbb69865c4f2"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"f70ec1f5adec0b0233bf2ae8065eea85edf08fac","unresolved":false,"context_lines":[{"line_number":506,"context_line":"           default\u003d[])"},{"line_number":507,"context_line":"@utils.service_type(\u0027database\u0027)"},{"line_number":508,"context_line":"def do_cluster_create(cs, args):"},{"line_number":509,"context_line":"    \"\"\"Creates a new cluster.\"\"\""},{"line_number":510,"context_line":"    instances \u003d []"},{"line_number":511,"context_line":"    instance_args \u003d [\"flavor\", \"volume\", \"nic\", \"availability_zone\"]"},{"line_number":512,"context_line":"    for instance_str in args.instances:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a1a9d01_469b05ca","line":509,"in_reply_to":"9a1a9d01_c3cb8c71","updated":"2015-09-25 01:45:02.000000000","message":"i think this would make this much more organized. I\u0027d add a \u0027_\u0027 to the beginning of the helper methods eddie mentioned for clarity as well. ie. instance_args \u003d _get_instance_args(args)","commit_id":"fa4f69de9ac2e64acdc1c756edb7fbb69865c4f2"},{"author":{"_account_id":13355,"name":"Edmond Kotowski","email":"ekotowski@gmail.com","username":"ekotowski"},"change_message_id":"cb756768eacd5da207b694b0878485f2fa2d29fa","unresolved":false,"context_lines":[{"line_number":512,"context_line":"    for instance_str in args.instances:"},{"line_number":513,"context_line":"        instance_info \u003d {}"},{"line_number":514,"context_line":"        nic_info \u003d {}"},{"line_number":515,"context_line":"        re_pattern \u003d \u0027(\u0027"},{"line_number":516,"context_line":"        for x in instance_args:"},{"line_number":517,"context_line":"            re_pattern \u003d re_pattern + x + \u0027|\u0027"},{"line_number":518,"context_line":"        re_pattern \u003d re_pattern[:-1]"},{"line_number":519,"context_line":"        re_pattern +\u003d \u0027)\u0027"},{"line_number":520,"context_line":"        instance_arguments \u003d re.compile(re_pattern)"},{"line_number":521,"context_line":"        inst_args \u003d instance_arguments.split(instance_str)"},{"line_number":522,"context_line":"        if \u0027\u0027 in inst_args:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a1a9d01_838d947d","line":519,"range":{"start_line":515,"start_character":0,"end_line":519,"end_character":25},"updated":"2015-09-24 21:31:14.000000000","message":"Why are we manually building a regular expression pattern?","commit_id":"fa4f69de9ac2e64acdc1c756edb7fbb69865c4f2"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"9ae619e337e53c4ea11db21503e65236387860b3","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        for x in instance_args:"},{"line_number":517,"context_line":"            re_pattern \u003d re_pattern + x + \u0027|\u0027"},{"line_number":518,"context_line":"        re_pattern \u003d re_pattern[:-1]"},{"line_number":519,"context_line":"        re_pattern +\u003d \u0027)\u0027"},{"line_number":520,"context_line":"        instance_arguments \u003d re.compile(re_pattern)"},{"line_number":521,"context_line":"        inst_args \u003d instance_arguments.split(instance_str)"},{"line_number":522,"context_line":"        if \u0027\u0027 in inst_args:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a1a9d01_141e7cba","line":519,"in_reply_to":"9a1a9d01_5cc192e3","updated":"2015-09-25 16:18:10.000000000","message":"yeah","commit_id":"fa4f69de9ac2e64acdc1c756edb7fbb69865c4f2"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"ad54a825847a8f8c7c9c82375177381cf0eea260","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        for x in instance_args:"},{"line_number":517,"context_line":"            re_pattern \u003d re_pattern + x + \u0027|\u0027"},{"line_number":518,"context_line":"        re_pattern \u003d re_pattern[:-1]"},{"line_number":519,"context_line":"        re_pattern +\u003d \u0027)\u0027"},{"line_number":520,"context_line":"        instance_arguments \u003d re.compile(re_pattern)"},{"line_number":521,"context_line":"        inst_args \u003d instance_arguments.split(instance_str)"},{"line_number":522,"context_line":"        if \u0027\u0027 in inst_args:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a1a9d01_5cc192e3","line":519,"in_reply_to":"9a1a9d01_66ee4924","updated":"2015-09-25 05:02:54.000000000","message":"so if i keep the reggae pattern here then theres no need to add sub-methods here right?","commit_id":"fa4f69de9ac2e64acdc1c756edb7fbb69865c4f2"},{"author":{"_account_id":16132,"name":"Sharika Pongubala","email":"sharika.pongubala@hp.com","username":"sharika"},"change_message_id":"8fe8d3ca9e0f93bfe744309b0315d796e002190e","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        for x in instance_args:"},{"line_number":517,"context_line":"            re_pattern \u003d re_pattern + x + \u0027|\u0027"},{"line_number":518,"context_line":"        re_pattern \u003d re_pattern[:-1]"},{"line_number":519,"context_line":"        re_pattern +\u003d \u0027)\u0027"},{"line_number":520,"context_line":"        instance_arguments \u003d re.compile(re_pattern)"},{"line_number":521,"context_line":"        inst_args \u003d instance_arguments.split(instance_str)"},{"line_number":522,"context_line":"        if \u0027\u0027 in inst_args:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a1a9d01_a3ce9881","line":519,"in_reply_to":"9a1a9d01_838d947d","updated":"2015-09-24 21:34:24.000000000","message":"I was splitting by trove --instance args so thought it\u0027d b better to make a list of all the args and build a reggae pattern that way so other args can be added easily later","commit_id":"fa4f69de9ac2e64acdc1c756edb7fbb69865c4f2"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"f70ec1f5adec0b0233bf2ae8065eea85edf08fac","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        for x in instance_args:"},{"line_number":517,"context_line":"            re_pattern \u003d re_pattern + x + \u0027|\u0027"},{"line_number":518,"context_line":"        re_pattern \u003d re_pattern[:-1]"},{"line_number":519,"context_line":"        re_pattern +\u003d \u0027)\u0027"},{"line_number":520,"context_line":"        instance_arguments \u003d re.compile(re_pattern)"},{"line_number":521,"context_line":"        inst_args \u003d instance_arguments.split(instance_str)"},{"line_number":522,"context_line":"        if \u0027\u0027 in inst_args:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a1a9d01_66ee4924","line":519,"in_reply_to":"9a1a9d01_a3ce9881","updated":"2015-09-25 01:45:02.000000000","message":"i was thinking about this one for a while now and i think it would be fine to just have the reggae pattern here.\n\n    re_pattern \u003d \u0027(flavor|volume|nic|availability_zone)\u0027\n\notherwise the alternative would be to make this a helper function as well. \n\n    re_pattern \u003d _build_reggae_pattern(instance_args)\n\ni like the first option better so that the client is straight forward.","commit_id":"fa4f69de9ac2e64acdc1c756edb7fbb69865c4f2"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"9fe614ea57f765d96c8e4fa0649399e2d05602bb","unresolved":false,"context_lines":[{"line_number":560,"context_line":""},{"line_number":561,"context_line":"        return str(az_num)"},{"line_number":562,"context_line":"    else:"},{"line_number":563,"context_line":"        return None"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"@utils.arg(\u0027name\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a1a9d01_572cdf49","line":563,"updated":"2015-10-02 22:42:58.000000000","message":"Do we really need this else section.","commit_id":"ab3e719e5ba1b1eb8392a4e33eb47d49d55a19fe"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"617c32cfd941aa6bd496a446e55170796f6b1cd3","unresolved":false,"context_lines":[{"line_number":560,"context_line":""},{"line_number":561,"context_line":"        return str(az_num)"},{"line_number":562,"context_line":"    else:"},{"line_number":563,"context_line":"        return None"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"@utils.arg(\u0027name\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a2fa921_1978f2c3","line":563,"in_reply_to":"7a2fa921_e8dbe219","updated":"2015-10-06 17:47:05.000000000","message":"I\u0027m not a huge fan of that style, but as Craig says, it\u0027s not technically \u0027wrong,\u0027 just unnecessary.","commit_id":"ab3e719e5ba1b1eb8392a4e33eb47d49d55a19fe"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"6565bb3469e122b619b7e4d18a6c8759c1650bb3","unresolved":false,"context_lines":[{"line_number":560,"context_line":""},{"line_number":561,"context_line":"        return str(az_num)"},{"line_number":562,"context_line":"    else:"},{"line_number":563,"context_line":"        return None"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"@utils.arg(\u0027name\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a2fa921_e8dbe219","line":563,"in_reply_to":"9a1a9d01_572cdf49","updated":"2015-10-06 16:46:18.000000000","message":"technically no because a method returns None by default. but it doesnt hurt.","commit_id":"ab3e719e5ba1b1eb8392a4e33eb47d49d55a19fe"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"0aeacff0f8a5a459885a8c190c6b787b798703a1","unresolved":false,"context_lines":[{"line_number":574,"context_line":"           metavar\u003d\u0027\u003cdatastore_version\u003e\u0027,"},{"line_number":575,"context_line":"           help\u003d\u0027A datastore version name or UUID.\u0027)"},{"line_number":576,"context_line":"@utils.arg(\u0027--instance\u0027,"},{"line_number":577,"context_line":"           metavar\u003d\"\u003cflavor\u003dflavor_name_or_id,volume\u003dvolume\u003e\","},{"line_number":578,"context_line":"           help\u003d\"Create an instance for the cluster. Specify multiple \""},{"line_number":579,"context_line":"                \"times to create multiple instances. \""},{"line_number":580,"context_line":"                \"eg.: --instances \u003cflavor\u003dflavor of the instance, \""}],"source_content_type":"text/x-python","patch_set":26,"id":"7a2fa921_e720e89d","line":577,"updated":"2015-10-06 19:56:24.000000000","message":"The new options aren\u0027t specified here","commit_id":"ab3e719e5ba1b1eb8392a4e33eb47d49d55a19fe"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"0aeacff0f8a5a459885a8c190c6b787b798703a1","unresolved":false,"context_lines":[{"line_number":575,"context_line":"           help\u003d\u0027A datastore version name or UUID.\u0027)"},{"line_number":576,"context_line":"@utils.arg(\u0027--instance\u0027,"},{"line_number":577,"context_line":"           metavar\u003d\"\u003cflavor\u003dflavor_name_or_id,volume\u003dvolume\u003e\","},{"line_number":578,"context_line":"           help\u003d\"Create an instance for the cluster. Specify multiple \""},{"line_number":579,"context_line":"                \"times to create multiple instances. \""},{"line_number":580,"context_line":"                \"eg.: --instances \u003cflavor\u003dflavor of the instance, \""},{"line_number":581,"context_line":"                \"volume\u003dsize of the instance disk volume in GB,\""},{"line_number":582,"context_line":"                \"nic\u003d\u0027net-id\u003dnet-uuid,v4-fixed-ip\u003dip-addr,port-id\u003dport-uuid\u0027, \""},{"line_number":583,"context_line":"                \"where net-id\u003dnetwork-id to be attached to NIC(either \""},{"line_number":584,"context_line":"                \"port-id or net-id must be specified),v4-fixed-ip\u003dIPv4 fixed \""},{"line_number":585,"context_line":"                \"address for NIC (optional),port-id\u003dattach NIC to port with \""},{"line_number":586,"context_line":"                \"this ID (either port-id or net-id must be specified), \""},{"line_number":587,"context_line":"                \"availability_zone\u003dthe zone hint to give to nova.\","},{"line_number":588,"context_line":"           action\u003d\u0027append\u0027,"},{"line_number":589,"context_line":"           dest\u003d\u0027instances\u0027,"},{"line_number":590,"context_line":"           default\u003d[])"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a2fa921_6735b8d8","line":587,"range":{"start_line":578,"start_character":16,"end_line":587,"end_character":66},"updated":"2015-10-06 19:56:24.000000000","message":"This is really hard to read in the help message, and has formatting issues (no closing \u0027\u003e\u0027 and inconsistent comma handling - sometimes a space and sometimes not)","commit_id":"ab3e719e5ba1b1eb8392a4e33eb47d49d55a19fe"}]}
