)]}'
{"neutron/conf/cmd.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ad6c5b170f16a652622a932bc9809949155cbe55","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    cfg.BoolOpt(\u0027allsets\u0027,"},{"line_number":21,"context_line":"                default\u003dFalse,"},{"line_number":22,"context_line":"                help\u003d_(\u0027Destroy all IPsets.\u0027)),"},{"line_number":23,"context_line":"    cfg.BoolOpt(\u0027force\u0027,"},{"line_number":24,"context_line":"                default\u003dFalse,"},{"line_number":25,"context_line":"                help\u003d_(\u0027Destroy IPsets even if there is an iptables \u0027"},{"line_number":26,"context_line":"                       \u0027reference.\u0027)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_04feb636","line":23,"updated":"2016-05-31 05:00:54.000000000","message":"this is where things start to get dodgy and confusing with this refactor - we are defining force a number of times (and each may be consumed independently) - but when someone tries to use these together it may behave differently","commit_id":"052f6c9d84e67cfab4f549ad6d34af0fc2f1045d"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"958eb49f2323e2e7e3cdf316364933a871c3b1ab","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    cfg.BoolOpt(\u0027allsets\u0027,"},{"line_number":21,"context_line":"                default\u003dFalse,"},{"line_number":22,"context_line":"                help\u003d_(\u0027Destroy all IPsets.\u0027)),"},{"line_number":23,"context_line":"    cfg.BoolOpt(\u0027force\u0027,"},{"line_number":24,"context_line":"                default\u003dFalse,"},{"line_number":25,"context_line":"                help\u003d_(\u0027Destroy IPsets even if there is an iptables \u0027"},{"line_number":26,"context_line":"                       \u0027reference.\u0027)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_fd3fa084","line":23,"in_reply_to":"9abb7d3a_04feb636","updated":"2016-05-31 15:06:08.000000000","message":"IMHO , this patch set did not introduce multiple definition of force. It already existed in following files\nhttps://github.com/openstack/neutron/blob/master/neutron/cmd/ipset_cleanup.py#L39\nhttps://github.com/openstack/neutron/blob/master/neutron/cmd/netns_cleanup.py#L64\nThe intent of this patch is to centralize config options into neutron/conf","commit_id":"052f6c9d84e67cfab4f549ad6d34af0fc2f1045d"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"81c66415172a24117ef62334b3e9046f123ecd04","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    cfg.BoolOpt(\u0027allsets\u0027,"},{"line_number":21,"context_line":"                default\u003dFalse,"},{"line_number":22,"context_line":"                help\u003d_(\u0027Destroy all IPsets.\u0027)),"},{"line_number":23,"context_line":"    cfg.BoolOpt(\u0027force\u0027,"},{"line_number":24,"context_line":"                default\u003dFalse,"},{"line_number":25,"context_line":"                help\u003d_(\u0027Destroy IPsets even if there is an iptables \u0027"},{"line_number":26,"context_line":"                       \u0027reference.\u0027)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_4eb94fec","line":23,"in_reply_to":"9abb7d3a_fd3fa084","updated":"2016-06-02 16:23:53.000000000","message":"@garyk, while it might be easier to have a single force option, this does define force twice, just like its defined twice before the refactor.  The only difference is where its defined, and by the name of the variable its clear there is a difference.  Would you prefer to have each cli_opts in its own file?  I, personally, think this fine as is and its no more unclear than before.","commit_id":"052f6c9d84e67cfab4f549ad6d34af0fc2f1045d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ad6c5b170f16a652622a932bc9809949155cbe55","unresolved":false,"context_lines":[{"line_number":30,"context_line":"]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"netns_cli_opts \u003d ["},{"line_number":33,"context_line":"    cfg.BoolOpt(\u0027force\u0027,"},{"line_number":34,"context_line":"                default\u003dFalse,"},{"line_number":35,"context_line":"                help\u003d_(\u0027Delete the namespace by removing all devices.\u0027)),"},{"line_number":36,"context_line":"    cfg.StrOpt(\u0027agent-type\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_e4f8d24b","line":33,"updated":"2016-05-31 05:00:54.000000000","message":"ditto","commit_id":"052f6c9d84e67cfab4f549ad6d34af0fc2f1045d"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"75bbb312edee4790a95a8b2c0a9470b97fac1bc7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d_(\u0027Cleanup resources of a specific agent type only.\u0027)),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"ovs_cli_opts \u003d ["},{"line_number":42,"context_line":"    cfg.BoolOpt(\u0027ovs_all_ports\u0027,"},{"line_number":43,"context_line":"                default\u003dFalse,"},{"line_number":44,"context_line":"                help\u003d_(\u0027True to delete all ports on all the OpenvSwitch \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_0549d831","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":7},"updated":"2016-06-20 18:31:59.000000000","message":"cli wasn\u0027t included in the previous file, it was just called opts. Since this is a cmd file, does that imply all of these are cli opts? If that\u0027s true, we might want to consider removing cli from all the groups here, which is good for lazy programmers :)","commit_id":"4fb31264972bdcbcaeb3053a63d0fe5600f76ce1"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"0dbb95e0cb7792732f9772aec8b3b413fa7dd075","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d_(\u0027Cleanup resources of a specific agent type only.\u0027)),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"ovs_cli_opts \u003d ["},{"line_number":42,"context_line":"    cfg.BoolOpt(\u0027ovs_all_ports\u0027,"},{"line_number":43,"context_line":"                default\u003dFalse,"},{"line_number":44,"context_line":"                help\u003d_(\u0027True to delete all ports on all the OpenvSwitch \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_b206661e","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":7},"in_reply_to":"5a9d85d2_0549d831","updated":"2016-06-21 22:26:28.000000000","message":"not too big of a deal to me, i can understand both sides :)","commit_id":"4fb31264972bdcbcaeb3053a63d0fe5600f76ce1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d91c0cc33b90e9dc28be5cad8b034522d7bfe4e8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_5498751b","line":1,"updated":"2016-06-29 06:55:19.000000000","message":"i think that this should be under a subdirectory agent.\nthat will at least give people a hint of the configuration variables.","commit_id":"7e9051d038adcac9bc43f6de3c40b015a395cf51"}],"neutron/tests/functional/cmd/test_ipset_cleanup.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"4fde1306a3a0dee76391a945eca57c7fc6ce038f","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_ipset_opts_registration(self):"},{"line_number":26,"context_line":"        # default values for ip_opts"},{"line_number":27,"context_line":"        expected_allsets \u003d False"},{"line_number":28,"context_line":"        expected_force \u003d False"},{"line_number":29,"context_line":"        expected_prefix \u003d ipset_manager.NET_PREFIX"},{"line_number":30,"context_line":"        self.assertEqual(expected_allsets, self.conf.allsets)"},{"line_number":31,"context_line":"        self.assertEqual(expected_force, self.conf.force)"},{"line_number":32,"context_line":"        self.assertEqual(expected_prefix, self.conf.prefix)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_90848a5e","line":29,"range":{"start_line":27,"start_character":1,"end_line":29,"end_character":50},"updated":"2016-07-29 22:52:11.000000000","message":"nit: isn\u0027t better to use these values inline instead of declarating a variable?","commit_id":"fdc12dd0de30f5b1c9bcaa05a8b89edaf6dc7a84"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"caaf1c900546a71e3a4390b802c9ac6749ce128c","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_ipset_opts_registration(self):"},{"line_number":26,"context_line":"        # default values for ip_opts"},{"line_number":27,"context_line":"        expected_allsets \u003d False"},{"line_number":28,"context_line":"        expected_force \u003d False"},{"line_number":29,"context_line":"        expected_prefix \u003d ipset_manager.NET_PREFIX"},{"line_number":30,"context_line":"        self.assertEqual(expected_allsets, self.conf.allsets)"},{"line_number":31,"context_line":"        self.assertEqual(expected_force, self.conf.force)"},{"line_number":32,"context_line":"        self.assertEqual(expected_prefix, self.conf.prefix)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_e8efcf84","line":29,"range":{"start_line":27,"start_character":1,"end_line":29,"end_character":50},"in_reply_to":"bacf61ea_90848a5e","updated":"2016-07-31 04:34:57.000000000","message":"Done","commit_id":"fdc12dd0de30f5b1c9bcaa05a8b89edaf6dc7a84"}],"neutron/tests/functional/cmd/test_netns_cleanup.py":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"4fde1306a3a0dee76391a945eca57c7fc6ce038f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        expected_force \u003d False"},{"line_number":80,"context_line":"        expected_agent_type \u003d None"},{"line_number":81,"context_line":"        self.assertEqual(expected_force, self.conf.force)"},{"line_number":82,"context_line":"        self.assertEqual(expected_agent_type, self.conf.get(\u0027agent_type\u0027))"},{"line_number":83,"context_line":"        # to unregister opts"},{"line_number":84,"context_line":"        self.conf.reset()"},{"line_number":85,"context_line":"        self.conf.unregister_opts(cmd.netns_opts)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_70d7564b","line":82,"range":{"start_line":82,"start_character":13,"end_line":82,"end_character":24},"updated":"2016-07-29 22:52:11.000000000","message":"nit: assertIsNone","commit_id":"fdc12dd0de30f5b1c9bcaa05a8b89edaf6dc7a84"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"caaf1c900546a71e3a4390b802c9ac6749ce128c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        expected_force \u003d False"},{"line_number":80,"context_line":"        expected_agent_type \u003d None"},{"line_number":81,"context_line":"        self.assertEqual(expected_force, self.conf.force)"},{"line_number":82,"context_line":"        self.assertEqual(expected_agent_type, self.conf.get(\u0027agent_type\u0027))"},{"line_number":83,"context_line":"        # to unregister opts"},{"line_number":84,"context_line":"        self.conf.reset()"},{"line_number":85,"context_line":"        self.conf.unregister_opts(cmd.netns_opts)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_88e0d397","line":82,"range":{"start_line":82,"start_character":13,"end_line":82,"end_character":24},"in_reply_to":"bacf61ea_70d7564b","updated":"2016-07-31 04:34:57.000000000","message":"done","commit_id":"fdc12dd0de30f5b1c9bcaa05a8b89edaf6dc7a84"}],"neutron/tests/functional/test_ipset_cleanup.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"713d84c03cd317ab7144cf36b24c6dc352a0acbc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e93643b3","line":1,"updated":"2016-07-27 20:43:07.000000000","message":"The test in this file is testing the successful registration of the ipset opts and is not testing the cleanup functionalities. My suggestion is to rename the file to something like test_ipset_opts_registration.","commit_id":"aa6c8defef698974b8022608019b9e53b918d18f"}],"neutron/tests/functional/test_netns_cleanup.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"713d84c03cd317ab7144cf36b24c6dc352a0acbc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_c9d41f49","line":1,"updated":"2016-07-27 20:43:07.000000000","message":"The test in this file is testing the successful registration of the netns opts and is not testing the cleanup functionalities as in neutron/tests/functional/cmd/test_netns_cleanup.py. My suggestion is to rename the file to something like test_netns_opts_registration.","commit_id":"aa6c8defef698974b8022608019b9e53b918d18f"}],"neutron/tests/functional/test_ovs_cleanup.py":[{"author":{"_account_id":22220,"name":"Anindita Das","email":"anindita.das@utexas.edu","username":"anudas"},"change_message_id":"713d84c03cd317ab7144cf36b24c6dc352a0acbc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_69c41392","line":1,"updated":"2016-07-27 20:43:07.000000000","message":"ditto","commit_id":"aa6c8defef698974b8022608019b9e53b918d18f"}],"neutron/tests/functional/test_registration_cli_opts.py":[{"author":{"_account_id":19611,"name":"Brian Stajkowski","email":"brian.stajkowski@rackspace.com","username":"ski"},"change_message_id":"d4b3202ad7d9a5bd93fc5a56e4af7ca6171dd224","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# force opt is also registered ipset_opts"},{"line_number":60,"context_line":"# oslo_config.cfg.DuplicateOptError: duplicate option: argument --force: conflicting option string(s): --force"},{"line_number":61,"context_line":"#class ConfigNETNSCLITest(base.BaseSudoTestCase):"},{"line_number":62,"context_line":"#    def setUp(self):"},{"line_number":63,"context_line":"#        super(ConfigNETNSCLITest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_f13fd0b1","line":60,"updated":"2016-06-29 16:16:29.000000000","message":"PEP8","commit_id":"7e9051d038adcac9bc43f6de3c40b015a395cf51"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"7eec57cad8d57e399d2d074c33d56760a587bf5f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from neutron.tests.functional import base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ConfigIPSetCLITest(base.BaseSudoTestCase):"},{"line_number":22,"context_line":"    def setUp(self):"},{"line_number":23,"context_line":"        super(ConfigIPSetCLITest, self).setUp()"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_804b7fb0","line":21,"range":{"start_line":21,"start_character":25,"end_line":21,"end_character":46},"updated":"2016-06-30 06:00:52.000000000","message":"I don\u0027t think you need this, you should just be able to use the neutron.tests.base.BaseTestCase class.","commit_id":"b86de4cd2025de3fc75adb09ad1df5dc8e4cc7dd"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"7eec57cad8d57e399d2d074c33d56760a587bf5f","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ConfigIPSetCLITest(base.BaseSudoTestCase):"},{"line_number":22,"context_line":"    def setUp(self):"},{"line_number":23,"context_line":"        super(ConfigIPSetCLITest, self).setUp()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setup_config(self):"},{"line_number":26,"context_line":"        self.conf \u003d ipset_cleanup.setup_conf()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_e059a3fe","line":23,"range":{"start_line":22,"start_character":4,"end_line":23,"end_character":47},"updated":"2016-06-30 06:00:52.000000000","message":"not needed if you\u0027re not just calling super, same for the below classes.","commit_id":"b86de4cd2025de3fc75adb09ad1df5dc8e4cc7dd"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"7eec57cad8d57e399d2d074c33d56760a587bf5f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def setUp(self):"},{"line_number":23,"context_line":"        super(ConfigIPSetCLITest, self).setUp()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def setup_config(self):"},{"line_number":26,"context_line":"        self.conf \u003d ipset_cleanup.setup_conf()"},{"line_number":27,"context_line":"        self.config_parse(conf\u003dself.conf)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def test_ipset_opts_registration(self):"},{"line_number":30,"context_line":"        # default values for ip_opts"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_a0f31b72","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":41},"updated":"2016-06-30 06:00:52.000000000","message":"would be better if you changed this to:\n\n    def setup_config(self, args\u003dNone):\n        self.conf \u003d ipset_cleanup.setup_conf()\n        super(TestConfigIPSetCLITest, self).setup_config(args\u003dargs)\n\n\nThis way you\u0027re calling everything correctly and calling in the correct order.","commit_id":"b86de4cd2025de3fc75adb09ad1df5dc8e4cc7dd"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"e8684141a82bcaba7cfc2c8618f7ee9d4fca9fc4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.conf.agent import cmd"},{"line_number":18,"context_line":"from neutron.tests import base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ConfigIPSetCLITest(base.BaseTestCase):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def setup_config(self, args\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_34e81de2","line":20,"updated":"2016-07-26 16:38:53.000000000","message":"Could you divide this file into each tests, for instance, test_netns_cleanup.py, test_ipset_cleanup.py, test_ovs_cleanup.py in neutron/tests/functional/cmd?","commit_id":"21615b2d57a5a35d3b94e5a2e451713131d632d5"},{"author":{"_account_id":20246,"name":"Aradhana Singh","email":"aradhanamailbox@gmail.com","username":"asingh"},"change_message_id":"aab84252d90b1e3509dd474895939e680d9bbd2b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.conf.agent import cmd"},{"line_number":18,"context_line":"from neutron.tests import base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ConfigIPSetCLITest(base.BaseTestCase):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def setup_config(self, args\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_554ad455","line":20,"in_reply_to":"dada55a8_34e81de2","updated":"2016-07-27 05:21:01.000000000","message":"done","commit_id":"21615b2d57a5a35d3b94e5a2e451713131d632d5"}]}
