)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"eb742d58ef79e05b89ecf85c0d6191541963eb90","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     8557cd9e (Updated from global requirements)"},{"line_number":2,"context_line":"Author:     Vikram Choudhary \u003cvikschw@gmail.com\u003e"},{"line_number":3,"context_line":"AuthorDate: 2015-06-29 01:23:46 +0530"},{"line_number":4,"context_line":"Commit:     vikram.choudhary \u003cvikram.choudhary@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-28 20:11:45 +0000"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba3cc151_c05cfeef","line":2,"updated":"2015-06-28 20:20:32.000000000","message":"Author name should be \"vikram.choudhary \u003cvikram.choudhary@huawei.com\u003e\". Please correct in the next patch set.","commit_id":"a94a1df42dc86d342ca5c974746e52e7724ab821"}],"neutronclient/neutron/v2_0/subnetpool.py":[{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"262d6205fd291619921bf02e86ec1f62680caac1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        action\u003d\u0027append\u0027, dest\u003d\u0027prefixes\u0027,"},{"line_number":34,"context_line":"        help\u003d_(\u0027Subnetpool prefixes (This option can be repeated).\u0027))"},{"line_number":35,"context_line":"    parser.add_argument("},{"line_number":36,"context_line":"        \u0027--address-scope\u0027, metavar\u003d\u0027ADDRSCOPE\u0027,"},{"line_number":37,"context_line":"        help\u003d_(\u0027ID or name of the address scope with which the subnetpool is \u0027"},{"line_number":38,"context_line":"               \u0027associated. Prefixes must be unique across address scopes\u0027))"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_f15d477a","line":36,"updated":"2015-07-05 06:06:54.000000000","message":"How about implementing \"no-address-scope\" for disassociating address-scope and subnetpool in the update call? I feel this might be required.","commit_id":"a94a1df42dc86d342ca5c974746e52e7724ab821"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ec098737f36b8225cbf55d96d5d3c846b94d044a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        action\u003d\u0027append\u0027, dest\u003d\u0027prefixes\u0027,"},{"line_number":34,"context_line":"        help\u003d_(\u0027Subnetpool prefixes (This option can be repeated).\u0027))"},{"line_number":35,"context_line":"    parser.add_argument("},{"line_number":36,"context_line":"        \u0027--address-scope\u0027, metavar\u003d\u0027ADDRSCOPE\u0027,"},{"line_number":37,"context_line":"        help\u003d_(\u0027ID or name of the address scope with which the subnetpool is \u0027"},{"line_number":38,"context_line":"               \u0027associated. Prefixes must be unique across address scopes\u0027))"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_28481687","line":36,"in_reply_to":"ba3cc151_e68108c5","updated":"2015-07-06 09:03:59.000000000","message":"+1 for no-address-scope.\n\nIt is better to make --address-scope and --no-address-scope  mutual-exclusive. The example is \nhttps://github.com/openstack/python-neutronclient/blob/master/neutronclient/neutron/v2_0/subnet.py#L55-L62","commit_id":"a94a1df42dc86d342ca5c974746e52e7724ab821"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"c8c7139a75602c5c999b45b08a3057fd59814262","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        action\u003d\u0027append\u0027, dest\u003d\u0027prefixes\u0027,"},{"line_number":34,"context_line":"        help\u003d_(\u0027Subnetpool prefixes (This option can be repeated).\u0027))"},{"line_number":35,"context_line":"    parser.add_argument("},{"line_number":36,"context_line":"        \u0027--address-scope\u0027, metavar\u003d\u0027ADDRSCOPE\u0027,"},{"line_number":37,"context_line":"        help\u003d_(\u0027ID or name of the address scope with which the subnetpool is \u0027"},{"line_number":38,"context_line":"               \u0027associated. Prefixes must be unique across address scopes\u0027))"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_e68108c5","line":36,"in_reply_to":"ba3cc151_f15d477a","updated":"2015-07-05 22:05:17.000000000","message":"+1 to this idea","commit_id":"a94a1df42dc86d342ca5c974746e52e7724ab821"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ad2691a21e1510883a8cff32813cb441ff3380e6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               \u0027associated. Prefixes must be unique across address scopes\u0027))"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def updatable_args2body(self, parsed_args, body, for_create\u003dTrue):"},{"line_number":42,"context_line":"    neutronV20.update_dict(parsed_args, body[\u0027subnetpool\u0027],"},{"line_number":43,"context_line":"                           [\u0027name\u0027, \u0027prefixes\u0027, \u0027default_prefixlen\u0027,"},{"line_number":44,"context_line":"                            \u0027min_prefixlen\u0027, \u0027max_prefixlen\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ca8094fa","line":41,"updated":"2015-07-04 07:37:20.000000000","message":"Isn\u0027t it time to use Mixin class?\n\n  class UpdatableMixin(object):\n    def add_updatable_argument(self, parser):\n       ..\n    def updatable_args2body(self, parsed_args, body, ....)\n       ..\n\nOr you can pass a client object instead of passing \"self\" directly.\n\n  def updatable_args2body(parsed_args, body, client, for_create\u003dTrue)","commit_id":"a94a1df42dc86d342ca5c974746e52e7724ab821"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"71292d81c2c9facbc2725fa176479495613d9bec","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               \u0027associated. Prefixes must be unique across address scopes\u0027))"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def updatable_args2body(self, parsed_args, body, for_create\u003dTrue):"},{"line_number":42,"context_line":"    neutronV20.update_dict(parsed_args, body[\u0027subnetpool\u0027],"},{"line_number":43,"context_line":"                           [\u0027name\u0027, \u0027prefixes\u0027, \u0027default_prefixlen\u0027,"},{"line_number":44,"context_line":"                            \u0027min_prefixlen\u0027, \u0027max_prefixlen\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_916cfb37","line":41,"in_reply_to":"ba3cc151_ca8094fa","updated":"2015-07-05 05:57:26.000000000","message":"Will pass client object instead of self.","commit_id":"a94a1df42dc86d342ca5c974746e52e7724ab821"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"13896a09906261c9ab0e62c9a56c615dd862c9d6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                           [\u0027name\u0027, \u0027prefixes\u0027, \u0027default_prefixlen\u0027,"},{"line_number":44,"context_line":"                            \u0027min_prefixlen\u0027, \u0027max_prefixlen\u0027])"},{"line_number":45,"context_line":"    if parsed_args.address_scope:"},{"line_number":46,"context_line":"            if parsed_args.address_scope \u003d\u003d \u0027None\u0027:"},{"line_number":47,"context_line":"                _addrscope_id \u003d None"},{"line_number":48,"context_line":"            else:"},{"line_number":49,"context_line":"                _addrscope_id \u003d neutronV20.find_resourceid_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_bc7dfce8","line":46,"updated":"2015-07-14 03:49:18.000000000","message":"nit:  Too much indentation here.  Should be 4 spaces.","commit_id":"e092fe99fe6302f91e2d51fdcb983a1dccf8773e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"99fe8c67fd6016246fae173f270b6fee845cfbee","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                           [\u0027name\u0027, \u0027prefixes\u0027, \u0027default_prefixlen\u0027,"},{"line_number":44,"context_line":"                            \u0027min_prefixlen\u0027, \u0027max_prefixlen\u0027])"},{"line_number":45,"context_line":"    if parsed_args.address_scope:"},{"line_number":46,"context_line":"            if parsed_args.address_scope \u003d\u003d \u0027None\u0027:"},{"line_number":47,"context_line":"                _addrscope_id \u003d None"},{"line_number":48,"context_line":"            else:"},{"line_number":49,"context_line":"                _addrscope_id \u003d neutronV20.find_resourceid_by_name_or_id("}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_68ba4970","line":46,"in_reply_to":"9a41bdd9_bc7dfce8","updated":"2015-07-14 08:58:13.000000000","message":"Will address it the next patch!","commit_id":"e092fe99fe6302f91e2d51fdcb983a1dccf8773e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"faf01e23d3cddf921fe8020eb65b1256ef732b70","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        add_updatable_arguments(parser)"},{"line_number":107,"context_line":"        parser.add_argument(\u0027--name\u0027,"},{"line_number":108,"context_line":"                            help\u003d_(\u0027Name of subnetpool to update.\u0027))"},{"line_number":109,"context_line":"        parser.add_argument(\u0027--no-address-scope\u0027,"},{"line_number":110,"context_line":"                            action\u003d\u0027store_true\u0027,"},{"line_number":111,"context_line":"                            help\u003d_(\u0027Detach subnetpool from the \u0027"},{"line_number":112,"context_line":"                                   \u0027address scope\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_0b229752","line":109,"updated":"2015-07-14 09:10:52.000000000","message":"--no-address-scope and --address-scope are mutually exclusive.\nIt is better to use parser.add_mutually_exclusive_group.","commit_id":"e092fe99fe6302f91e2d51fdcb983a1dccf8773e"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"d05060dae323134d6dab4003a29343dd6ab286db","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        add_updatable_arguments(parser)"},{"line_number":107,"context_line":"        parser.add_argument(\u0027--name\u0027,"},{"line_number":108,"context_line":"                            help\u003d_(\u0027Name of subnetpool to update.\u0027))"},{"line_number":109,"context_line":"        parser.add_argument(\u0027--no-address-scope\u0027,"},{"line_number":110,"context_line":"                            action\u003d\u0027store_true\u0027,"},{"line_number":111,"context_line":"                            help\u003d_(\u0027Detach subnetpool from the \u0027"},{"line_number":112,"context_line":"                                   \u0027address scope\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_74b780d8","line":109,"in_reply_to":"9a41bdd9_0b229752","updated":"2015-07-14 10:27:34.000000000","message":"Done!","commit_id":"e092fe99fe6302f91e2d51fdcb983a1dccf8773e"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"a100f78d75fedb6e805363cecf7cf898144f9958","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        # Parse and update for \"address-scope\" option"},{"line_number":87,"context_line":"        if parsed_args.address_scope:"},{"line_number":88,"context_line":"            _addrscope_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":89,"context_line":"                self.get_client(), \u0027address-scope\u0027,"},{"line_number":90,"context_line":"                parsed_args.address_scope)"},{"line_number":91,"context_line":"            body[\u0027subnetpool\u0027][\u0027address_scope_id\u0027] \u003d _addrscope_id"},{"line_number":92,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_4c06361e","line":89,"updated":"2015-07-22 20:42:44.000000000","message":"Maybe this should have been address_scope?  I posted a review here [1]\n\n [1] https://review.openstack.org/#/c/204751/","commit_id":"0094e51003b858522a8ec4b2922ed9e725aadbc3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"9a87179aa2dd8b3c2bc4cf3ec0e67c59b221d5ad","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        # Parse and update for \"address-scope\" option"},{"line_number":87,"context_line":"        if parsed_args.address_scope:"},{"line_number":88,"context_line":"            _addrscope_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":89,"context_line":"                self.get_client(), \u0027address-scope\u0027,"},{"line_number":90,"context_line":"                parsed_args.address_scope)"},{"line_number":91,"context_line":"            body[\u0027subnetpool\u0027][\u0027address_scope_id\u0027] \u003d _addrscope_id"},{"line_number":92,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_1546db4e","line":89,"in_reply_to":"3a50d1a3_4c06361e","updated":"2015-07-23 04:43:36.000000000","message":"@Carl: You are correct as the API path is defined as\n\n \"address_scope_path \u003d \"/address-scopes/%s\" in https://review.openstack.org/#/c/194635. \n\nMoreover, I believe it would be better to define a separate function called \"get_address_scope_id\" inside https://review.openstack.org/#/c/194635/5/neutronclient/neutron/v2_0/address_scope.py and call the same from this file. This will ensure we don\u0027t repeat the mistakes.","commit_id":"0094e51003b858522a8ec4b2922ed9e725aadbc3"},{"author":{"_account_id":14605,"name":"vikram.choudhary","email":"vikschw@gmail.com","username":"vikram.choudhary"},"change_message_id":"9a87179aa2dd8b3c2bc4cf3ec0e67c59b221d5ad","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            body[\u0027subnetpool\u0027][\u0027address_scope_id\u0027] \u003d None"},{"line_number":129,"context_line":"        elif parsed_args.address_scope:"},{"line_number":130,"context_line":"            _addrscope_id \u003d neutronV20.find_resourceid_by_name_or_id("},{"line_number":131,"context_line":"                self.get_client(), \u0027address-scope\u0027,"},{"line_number":132,"context_line":"                parsed_args.address_scope)"},{"line_number":133,"context_line":"            body[\u0027subnetpool\u0027][\u0027address_scope_id\u0027] \u003d _addrscope_id"},{"line_number":134,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a50d1a3_158b3b69","line":131,"updated":"2015-07-23 04:43:36.000000000","message":"ditto!","commit_id":"0094e51003b858522a8ec4b2922ed9e725aadbc3"}],"neutronclient/tests/unit/test_cli20_subnetpool.py":[{"author":{"_account_id":9911,"name":"Wei Wang","email":"wangwei@unitedstack.com","username":"DamonWang"},"change_message_id":"04b82eeffc2b956a0c02b93fce9afe3841d75192","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                   [\u0027myid\u0027, \u0027--no-address-scope\u0027],"},{"line_number":153,"context_line":"                                   {\u0027address_scope_id\u0027: None}"},{"line_number":154,"context_line":"                                   )"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_show_subnetpool(self):"},{"line_number":157,"context_line":"        \"\"\"Show subnetpool: --fields id --fields name myid.\"\"\""},{"line_number":158,"context_line":"        resource \u003d \u0027subnetpool\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_33026570","line":155,"updated":"2015-07-14 13:38:46.000000000","message":"Add test for update with name provided instead of id?","commit_id":"0094e51003b858522a8ec4b2922ed9e725aadbc3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e83f5dd4a7a3e1bb1a8b3d16df196b58e5bb5427","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                   [\u0027myid\u0027, \u0027--no-address-scope\u0027],"},{"line_number":153,"context_line":"                                   {\u0027address_scope_id\u0027: None}"},{"line_number":154,"context_line":"                                   )"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_show_subnetpool(self):"},{"line_number":157,"context_line":"        \"\"\"Show subnetpool: --fields id --fields name myid.\"\"\""},{"line_number":158,"context_line":"        resource \u003d \u0027subnetpool\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_6f7b218d","line":155,"in_reply_to":"9a41bdd9_33026570","updated":"2015-07-14 13:47:21.000000000","message":"@Wei,\nHow can we test it even if we passed \"name\" instead of \"id\"?\nget_resourceid_by_name_or_id is mocked out in unit tests and there is no meaning we have such test at now.\nYou can try to improve our common test framework neutron.tests.unit.test_cli20 :-)","commit_id":"0094e51003b858522a8ec4b2922ed9e725aadbc3"},{"author":{"_account_id":9911,"name":"Wei Wang","email":"wangwei@unitedstack.com","username":"DamonWang"},"change_message_id":"0e27b50c8d479c5d34a3373f7c1bc81735bfecb5","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                                   [\u0027myid\u0027, \u0027--no-address-scope\u0027],"},{"line_number":153,"context_line":"                                   {\u0027address_scope_id\u0027: None}"},{"line_number":154,"context_line":"                                   )"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_show_subnetpool(self):"},{"line_number":157,"context_line":"        \"\"\"Show subnetpool: --fields id --fields name myid.\"\"\""},{"line_number":158,"context_line":"        resource \u003d \u0027subnetpool\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_ef1f3106","line":155,"in_reply_to":"9a41bdd9_6f7b218d","updated":"2015-07-14 13:51:51.000000000","message":"got it, thank you for your explain :-D","commit_id":"0094e51003b858522a8ec4b2922ed9e725aadbc3"}]}
