)]}'
{"tempest/api/network/base_routers.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"04b96b058945d60d747f04f2a69cbf6b5520c211","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _create_router(self, name, admin_state_up\u003dFalse,"},{"line_number":33,"context_line":"                       external_network_id\u003dNone, enable_snat\u003dNone):"},{"line_number":34,"context_line":"        # associate a cleanup with created routers to avoid quota limits"},{"line_number":35,"context_line":"        router \u003d self.create_router(name, admin_state_up,"},{"line_number":36,"context_line":"                                    external_network_id, enable_snat)"},{"line_number":37,"context_line":"        self.addCleanup(self._cleanup_router, router)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_acaf5e93","line":34,"updated":"2014-08-15 18:54:56.000000000","message":"_create_router uses create_router which adds the router to the list of routers, and schedules a cleanup with calls delete_router and removes the router from the list.\nOther tests are not using any create helper from the base class but create_router from the client directly instead and scheduling a cleanup with _delete_router.\nThis is really confusing, but it was not introduced by this patch, so it\u0027s ok. \nIf you have a chance (in a separate change) to add some docstring or simplify this it would be great :)","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3f66c5c09b2bc8e8832c59cde3450761149481c6","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _create_router(self, name, admin_state_up\u003dFalse,"},{"line_number":33,"context_line":"                       external_network_id\u003dNone, enable_snat\u003dNone):"},{"line_number":34,"context_line":"        # associate a cleanup with created routers to avoid quota limits"},{"line_number":35,"context_line":"        router \u003d self.create_router(name, admin_state_up,"},{"line_number":36,"context_line":"                                    external_network_id, enable_snat)"},{"line_number":37,"context_line":"        self.addCleanup(self._cleanup_router, router)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_18d7acee","line":34,"in_reply_to":"7ac7a964_acaf5e93","updated":"2014-08-15 20:36:08.000000000","message":"I\u0027ll revise","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"}],"tempest/api/network/test_routers.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"164ecb4a3d314228c723b20084895ec57047ce31","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":332,"context_line":"    def test_create_distributed_router(self):"},{"line_number":333,"context_line":"        name \u003d data_utils.rand_name(\u0027router-\u0027)"},{"line_number":334,"context_line":"        resp, create_body \u003d self.admin_client.create_router("},{"line_number":335,"context_line":"            name, distributed\u003dTrue)"},{"line_number":336,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_55a3be42","line":333,"updated":"2014-07-23 08:42:09.000000000","message":"rand_name adds \u0027-\u0027 internally after the specified name.\nIn the above case, double \u0027-\u0027 between \u0027router\u0027 and numbers.\nbetter to specify \u0027router\u0027 only.","commit_id":"ed03f0fdd5552539df4370e7c3e23549c029445c"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"17724e400c7b8c9d3df0566952235b5643c8e803","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":332,"context_line":"    def test_create_distributed_router(self):"},{"line_number":333,"context_line":"        name \u003d data_utils.rand_name(\u0027router-\u0027)"},{"line_number":334,"context_line":"        resp, create_body \u003d self.admin_client.create_router("},{"line_number":335,"context_line":"            name, distributed\u003dTrue)"},{"line_number":336,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_1beb2da5","line":333,"in_reply_to":"baada198_55a3be42","updated":"2014-07-23 13:47:36.000000000","message":"Done","commit_id":"ed03f0fdd5552539df4370e7c3e23549c029445c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"164ecb4a3d314228c723b20084895ec57047ce31","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":343,"context_line":"    def test_convert_centralized_router(self):"},{"line_number":344,"context_line":"        self.router \u003d self._create_router(data_utils.rand_name(\u0027router-\u0027))"},{"line_number":345,"context_line":"        self.assertNotIn(\u0027distributed\u0027, self.router)"},{"line_number":346,"context_line":"        resp, update_body \u003d self.admin_client.update_router(self.router[\u0027id\u0027],"},{"line_number":347,"context_line":"                                                            distributed\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_d56eeeff","line":344,"updated":"2014-07-23 08:42:09.000000000","message":"ditto","commit_id":"ed03f0fdd5552539df4370e7c3e23549c029445c"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"17724e400c7b8c9d3df0566952235b5643c8e803","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":343,"context_line":"    def test_convert_centralized_router(self):"},{"line_number":344,"context_line":"        self.router \u003d self._create_router(data_utils.rand_name(\u0027router-\u0027))"},{"line_number":345,"context_line":"        self.assertNotIn(\u0027distributed\u0027, self.router)"},{"line_number":346,"context_line":"        resp, update_body \u003d self.admin_client.update_router(self.router[\u0027id\u0027],"},{"line_number":347,"context_line":"                                                            distributed\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_3b29d1f2","line":344,"in_reply_to":"baada198_d56eeeff","updated":"2014-07-23 13:47:36.000000000","message":"Done","commit_id":"ed03f0fdd5552539df4370e7c3e23549c029445c"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"04b96b058945d60d747f04f2a69cbf6b5520c211","unresolved":false,"context_lines":[{"line_number":350,"context_line":"    @classmethod"},{"line_number":351,"context_line":"    def setUpClass(cls):"},{"line_number":352,"context_line":"        super(DvrRoutersTest, cls).setUpClass()"},{"line_number":353,"context_line":"        resp, extensions \u003d cls.client.list_extensions()"},{"line_number":354,"context_line":"        ext_alias_list \u003d [ext[\u0027alias\u0027] for ext in extensions[\u0027extensions\u0027]]"},{"line_number":355,"context_line":"        if \u0027dvr\u0027 not in ext_alias_list:"},{"line_number":356,"context_line":"            msg \u003d \"DVR extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_e7916f9b","line":353,"updated":"2014-08-15 18:54:56.000000000","message":"This should be a feature flag in the config and not a poll to the extension list.","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3f66c5c09b2bc8e8832c59cde3450761149481c6","unresolved":false,"context_lines":[{"line_number":350,"context_line":"    @classmethod"},{"line_number":351,"context_line":"    def setUpClass(cls):"},{"line_number":352,"context_line":"        super(DvrRoutersTest, cls).setUpClass()"},{"line_number":353,"context_line":"        resp, extensions \u003d cls.client.list_extensions()"},{"line_number":354,"context_line":"        ext_alias_list \u003d [ext[\u0027alias\u0027] for ext in extensions[\u0027extensions\u0027]]"},{"line_number":355,"context_line":"        if \u0027dvr\u0027 not in ext_alias_list:"},{"line_number":356,"context_line":"            msg \u003d \"DVR extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_78e8a0b4","line":353,"in_reply_to":"7ac7a964_e7916f9b","updated":"2014-08-15 20:36:08.000000000","message":"please see previous comments. It was done like this initially, but after thinking about this more closely I would have broken the Icehouse job run, if the alias was kept as is. Not sure what\u0027s the best approach here: a) polling extensions as done now; b) making extension list parametrized by OpenStack release; I\u0027d be in favor of a) because b) put extra burden on infra.","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"5ddd473019c3d59739216fa4ac6cd6aa9e14d56e","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    def setUpClass(cls):"},{"line_number":352,"context_line":"        super(DvrRoutersTest, cls).setUpClass()"},{"line_number":353,"context_line":"        resp, extensions \u003d cls.client.list_extensions()"},{"line_number":354,"context_line":"        ext_alias_list \u003d [ext[\u0027alias\u0027] for ext in extensions[\u0027extensions\u0027]]"},{"line_number":355,"context_line":"        if \u0027dvr\u0027 not in ext_alias_list:"},{"line_number":356,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":357,"context_line":"            raise cls.skipException(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_67863f67","line":354,"updated":"2014-08-15 18:55:33.000000000","message":"This should use the available extensions CONF option, CONF.network_feature_enabled.api_extensions instead of polling the api to determine if the extension is enabled.","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3f66c5c09b2bc8e8832c59cde3450761149481c6","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    def setUpClass(cls):"},{"line_number":352,"context_line":"        super(DvrRoutersTest, cls).setUpClass()"},{"line_number":353,"context_line":"        resp, extensions \u003d cls.client.list_extensions()"},{"line_number":354,"context_line":"        ext_alias_list \u003d [ext[\u0027alias\u0027] for ext in extensions[\u0027extensions\u0027]]"},{"line_number":355,"context_line":"        if \u0027dvr\u0027 not in ext_alias_list:"},{"line_number":356,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":357,"context_line":"            raise cls.skipException(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_98ebbcaf","line":354,"in_reply_to":"7ac7a964_67863f67","updated":"2014-08-15 20:36:08.000000000","message":"ditto","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"04b96b058945d60d747f04f2a69cbf6b5520c211","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        if \u0027dvr\u0027 not in ext_alias_list:"},{"line_number":356,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":357,"context_line":"            raise cls.skipException(msg)"},{"line_number":358,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":359,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_c93f2c24","line":358,"updated":"2014-08-15 18:54:56.000000000","message":"This and L359 seem to be a copy-paste error?\nThe identity_admin_client doesn\u0027t appear to be used here or in any super-class.","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3f66c5c09b2bc8e8832c59cde3450761149481c6","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        if \u0027dvr\u0027 not in ext_alias_list:"},{"line_number":356,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":357,"context_line":"            raise cls.skipException(msg)"},{"line_number":358,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":359,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_3805487a","line":358,"in_reply_to":"7ac7a964_c93f2c24","updated":"2014-08-15 20:36:08.000000000","message":"will revise, you may be right.","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"04b96b058945d60d747f04f2a69cbf6b5520c211","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        name \u003d data_utils.rand_name(\u0027router\u0027)"},{"line_number":364,"context_line":"        resp, create_body \u003d self.admin_client.create_router("},{"line_number":365,"context_line":"            name, distributed\u003dTrue)"},{"line_number":366,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":367,"context_line":"        self.addCleanup(self._delete_router,"},{"line_number":368,"context_line":"                        create_body[\u0027router\u0027][\u0027id\u0027],"},{"line_number":369,"context_line":"                        self.admin_client)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_694e1898","line":366,"updated":"2014-08-15 18:54:56.000000000","message":"Nit: if the router was not created the assertion fails, and there\u0027s no cleanup to be done.\nIf the router was created and the status code is wrong (e.g. 200), this fails and the router is not cleaned-up.","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3f66c5c09b2bc8e8832c59cde3450761149481c6","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        name \u003d data_utils.rand_name(\u0027router\u0027)"},{"line_number":364,"context_line":"        resp, create_body \u003d self.admin_client.create_router("},{"line_number":365,"context_line":"            name, distributed\u003dTrue)"},{"line_number":366,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":367,"context_line":"        self.addCleanup(self._delete_router,"},{"line_number":368,"context_line":"                        create_body[\u0027router\u0027][\u0027id\u0027],"},{"line_number":369,"context_line":"                        self.admin_client)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_b8f8787d","line":366,"in_reply_to":"7ac7a964_694e1898","updated":"2014-08-15 20:36:08.000000000","message":"will revise","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"e5ec0f83ee341143284e6240aec3db95a56cbdab","unresolved":false,"context_lines":[{"line_number":355,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":356,"context_line":"    def test_convert_centralized_router(self):"},{"line_number":357,"context_line":"        self.router \u003d self._create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":358,"context_line":"        self.assertNotIn(\u0027distributed\u0027, self.router)"},{"line_number":359,"context_line":"        resp, update_body \u003d self.admin_client.update_router(self.router[\u0027id\u0027],"},{"line_number":360,"context_line":"                                                            distributed\u003dTrue)"},{"line_number":361,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_53e7bcac","line":358,"updated":"2014-11-18 18:01:31.000000000","message":"Not sure this is what is intended. The line before creates a routers, but in a dvr enabled system any router created will have the \u0027distributed\u0027 attribute. It will just be false.  Perhaps the check should be assertFalse(router[\u0027distributed\u0027]) instead.","commit_id":"c95d18b26f13417ea80696693bd559b2138a3295"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"9caeb8920063dc276a4ba0f9079d19fcb9cdbeff","unresolved":false,"context_lines":[{"line_number":355,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":356,"context_line":"    def test_convert_centralized_router(self):"},{"line_number":357,"context_line":"        self.router \u003d self._create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":358,"context_line":"        self.assertNotIn(\u0027distributed\u0027, self.router)"},{"line_number":359,"context_line":"        resp, update_body \u003d self.admin_client.update_router(self.router[\u0027id\u0027],"},{"line_number":360,"context_line":"                                                            distributed\u003dTrue)"},{"line_number":361,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_e77ffea9","line":358,"in_reply_to":"5a890539_53e7bcac","updated":"2014-11-18 19:52:30.000000000","message":"_create_router creates a router with non-admin rights, and a regular tenant is not supposed to see the \u0027distributed\u0027 attribute. In other words, by policy.json tenants have no visibility of the type of routers they are managing. It\u0027s an admin only concern.","commit_id":"c95d18b26f13417ea80696693bd559b2138a3295"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"95a42c63755916b28b85954ad4fae821717cd932","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":357,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":358,"context_line":"            raise cls.skipException(msg)"},{"line_number":359,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":360,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_3b076f83","line":359,"updated":"2015-03-16 18:16:45.000000000","message":"This code will not work with the new accounts file way of getting credentials. The admin manager is already set as cls.os_adm in the resource_setup for BaseAdminNetworkTest so you can use that here. I realize this was copied from the other class in this file which has the same issue.","commit_id":"7c143c47b950582658a5f03e33d5310e516aae31"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"e6fd99a873b705905500833c0491ddfe46f19a26","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":357,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":358,"context_line":"            raise cls.skipException(msg)"},{"line_number":359,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":360,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_ba7430d1","line":359,"in_reply_to":"9a80dd14_040167af","updated":"2015-03-16 21:56:46.000000000","message":"Sorry, I just meant remove line 359 and line 360 becomes\n\ncls.identity_admin_client \u003d cls.os_adm.identity_client\n\nlike in the network QuotasTest","commit_id":"7c143c47b950582658a5f03e33d5310e516aae31"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"86cd27f33f754fee75c256c665fb2be5f4e04eec","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":357,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":358,"context_line":"            raise cls.skipException(msg)"},{"line_number":359,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":360,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_040167af","line":359,"in_reply_to":"9a80dd14_3b076f83","updated":"2015-03-16 21:02:46.000000000","message":"can you point me to a good example?","commit_id":"7c143c47b950582658a5f03e33d5310e516aae31"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5106a5e23129ea43e08845041c530bafc18b8d90","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":357,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":358,"context_line":"            raise cls.skipException(msg)"},{"line_number":359,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":360,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_4246ea50","line":359,"in_reply_to":"9a80dd14_ba7430d1","updated":"2015-03-16 23:47:01.000000000","message":"Thanks!","commit_id":"7c143c47b950582658a5f03e33d5310e516aae31"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"61ba477911b755ba2457bae798e481807fec204f","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    @classmethod"},{"line_number":354,"context_line":"    def resource_setup(cls):"},{"line_number":355,"context_line":"        super(DvrRoutersTest, cls).resource_setup()"},{"line_number":356,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":357,"context_line":"            msg \u003d \"DVR extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_c307041c","line":354,"updated":"2015-03-24 13:53:32.000000000","message":"This could be using the new split resource setup methods like skip_check and setup_clients, but now a big deal","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"444f27b3b039d7827dc29e0da3da2dd270ec3c70","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    @classmethod"},{"line_number":354,"context_line":"    def resource_setup(cls):"},{"line_number":355,"context_line":"        super(DvrRoutersTest, cls).resource_setup()"},{"line_number":356,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":357,"context_line":"            msg \u003d \"DVR extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_7f27b864","line":354,"in_reply_to":"1a6ced46_c307041c","updated":"2015-03-24 16:03:09.000000000","message":"let me look into it, I am not familiar with the new mechanism","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"61ba477911b755ba2457bae798e481807fec204f","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":357,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":358,"context_line":"            raise cls.skipException(msg)"},{"line_number":359,"context_line":"        cls.identity_admin_client \u003d cls.os_adm.identity_client"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":362,"context_line":"    @test.idempotent_id(\u0027141297aa-3424-455d-aa8d-f2d95731e00a\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_c690f250","line":359,"updated":"2015-03-24 13:53:32.000000000","message":"Is this used anywhere?","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"444f27b3b039d7827dc29e0da3da2dd270ec3c70","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":357,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":358,"context_line":"            raise cls.skipException(msg)"},{"line_number":359,"context_line":"        cls.identity_admin_client \u003d cls.os_adm.identity_client"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":362,"context_line":"    @test.idempotent_id(\u0027141297aa-3424-455d-aa8d-f2d95731e00a\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_9f39d443","line":359,"in_reply_to":"1a6ced46_c690f250","updated":"2015-03-24 16:03:09.000000000","message":"um...it did at one point, you may be right that this is no longer used...I can see it in test_quotas too...I\u0027ll clean it up if it\u0027s no longer needed.","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"61ba477911b755ba2457bae798e481807fec204f","unresolved":false,"context_lines":[{"line_number":372,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":373,"context_line":"    @test.idempotent_id(\u0027644d7a4a-01a1-4b68-bb8d-0c0042cb1729\u0027)"},{"line_number":374,"context_line":"    def test_convert_centralized_router(self):"},{"line_number":375,"context_line":"        self.router \u003d self._create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":376,"context_line":"        self.assertNotIn(\u0027distributed\u0027, self.router)"},{"line_number":377,"context_line":"        update_body \u003d self.admin_client.update_router(self.router[\u0027id\u0027],"},{"line_number":378,"context_line":"                                                      distributed\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_666f3ec6","line":375,"updated":"2015-03-24 13:53:32.000000000","message":"Why are you setting this to be a class variable instead of a local? it\u0027s not being used anywhere else. That being said not a reason to block, just a follow-on cleanup","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"444f27b3b039d7827dc29e0da3da2dd270ec3c70","unresolved":false,"context_lines":[{"line_number":372,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":373,"context_line":"    @test.idempotent_id(\u0027644d7a4a-01a1-4b68-bb8d-0c0042cb1729\u0027)"},{"line_number":374,"context_line":"    def test_convert_centralized_router(self):"},{"line_number":375,"context_line":"        self.router \u003d self._create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":376,"context_line":"        self.assertNotIn(\u0027distributed\u0027, self.router)"},{"line_number":377,"context_line":"        update_body \u003d self.admin_client.update_router(self.router[\u0027id\u0027],"},{"line_number":378,"context_line":"                                                      distributed\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_1f45e4b2","line":375,"in_reply_to":"1a6ced46_666f3ec6","updated":"2015-03-24 16:03:09.000000000","message":"YAGNI, I guess...","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"fa9bbb71fe99de149ddaf244460d3d217b12a13b","unresolved":false,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    @classmethod"},{"line_number":354,"context_line":"    def skip_checks(cls):"},{"line_number":355,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":356,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":357,"context_line":"            raise cls.skipException(msg)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6ced46_b859415c","line":355,"updated":"2015-03-24 18:57:02.000000000","message":"This needs to call super first.","commit_id":"4a5f0ed3637e219513c9aad16d9f0d91d0d41ae1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4d09a43c12ac14a726ec50b4f0c59f34fe13d055","unresolved":false,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    @classmethod"},{"line_number":354,"context_line":"    def skip_checks(cls):"},{"line_number":355,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":356,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":357,"context_line":"            raise cls.skipException(msg)"},{"line_number":358,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6ced46_aea9f67c","line":355,"in_reply_to":"1a6ced46_b859415c","updated":"2015-03-24 22:17:31.000000000","message":"It seemed to work fine without...my bad.","commit_id":"4a5f0ed3637e219513c9aad16d9f0d91d0d41ae1"}],"tempest/api/network/test_routers_negative.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"164ecb4a3d314228c723b20084895ec57047ce31","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            raise cls.skipException(msg)"},{"line_number":98,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":99,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":100,"context_line":"        cls.router \u003d cls.create_router(data_utils.rand_name(\u0027router-\u0027))"},{"line_number":101,"context_line":"        cls.network \u003d cls.create_network()"},{"line_number":102,"context_line":"        cls.subnet \u003d cls.create_subnet(cls.network)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_c71e455f","line":100,"updated":"2014-07-23 08:42:09.000000000","message":"ditto","commit_id":"ed03f0fdd5552539df4370e7c3e23549c029445c"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"17724e400c7b8c9d3df0566952235b5643c8e803","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            raise cls.skipException(msg)"},{"line_number":98,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":99,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":100,"context_line":"        cls.router \u003d cls.create_router(data_utils.rand_name(\u0027router-\u0027))"},{"line_number":101,"context_line":"        cls.network \u003d cls.create_network()"},{"line_number":102,"context_line":"        cls.subnet \u003d cls.create_subnet(cls.network)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_5b2cc501","line":100,"in_reply_to":"baada198_c71e455f","updated":"2014-07-23 13:47:36.000000000","message":"Done","commit_id":"ed03f0fdd5552539df4370e7c3e23549c029445c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"164ecb4a3d314228c723b20084895ec57047ce31","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    def test_router_create_tenant_distributed_returns_403(self):"},{"line_number":106,"context_line":"        self.assertRaises(exceptions.Unauthorized,"},{"line_number":107,"context_line":"                          self.create_router,"},{"line_number":108,"context_line":"                          data_utils.rand_name(\u0027router-\u0027),"},{"line_number":109,"context_line":"                          distributed\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_07383dd3","line":108,"updated":"2014-07-23 08:42:09.000000000","message":"ditto","commit_id":"ed03f0fdd5552539df4370e7c3e23549c029445c"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"17724e400c7b8c9d3df0566952235b5643c8e803","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    def test_router_create_tenant_distributed_returns_403(self):"},{"line_number":106,"context_line":"        self.assertRaises(exceptions.Unauthorized,"},{"line_number":107,"context_line":"                          self.create_router,"},{"line_number":108,"context_line":"                          data_utils.rand_name(\u0027router-\u0027),"},{"line_number":109,"context_line":"                          distributed\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_7b334962","line":108,"in_reply_to":"baada198_07383dd3","updated":"2014-07-23 13:47:36.000000000","message":"Done","commit_id":"ed03f0fdd5552539df4370e7c3e23549c029445c"},{"author":{"_account_id":12708,"name":"prabhu murthy","email":"prabhu.m4@hpe.com","username":"prabhm"},"change_message_id":"eb935f44c714f6a50a03771fb5838ba0849fdbfe","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            raise cls.skipException(msg)"},{"line_number":98,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":99,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":100,"context_line":"        cls.router \u003d cls.create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":101,"context_line":"        cls.network \u003d cls.create_network()"},{"line_number":102,"context_line":"        cls.subnet \u003d cls.create_subnet(cls.network)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_dd9f864f","line":100,"updated":"2014-08-11 07:38:45.000000000","message":"Here while a router is created \"distributed \u003d true\" agrs should be specified  so that this router can be reused in DvrRoutersNegativeTest tests  (creating router without distributed \u003d true will holds good only if router_distributed is set to true in neutron.conf )","commit_id":"e35715d34784779e303ff0f5f1247a67394a32c0"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"04b96b058945d60d747f04f2a69cbf6b5520c211","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    @test.safe_setup"},{"line_number":91,"context_line":"    def setUpClass(cls):"},{"line_number":92,"context_line":"        super(DvrRoutersNegativeTest, cls).setUpClass()"},{"line_number":93,"context_line":"        resp, extensions \u003d cls.client.list_extensions()"},{"line_number":94,"context_line":"        ext_alias_list \u003d [ext[\u0027alias\u0027] for ext in extensions[\u0027extensions\u0027]]"},{"line_number":95,"context_line":"        if \u0027dvr\u0027 not in ext_alias_list:"},{"line_number":96,"context_line":"            msg \u003d \"DVR extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_07910b99","line":93,"updated":"2014-08-15 18:54:56.000000000","message":"This should be a feature flag in the config and not a poll to the extension list.","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3f66c5c09b2bc8e8832c59cde3450761149481c6","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    @test.safe_setup"},{"line_number":91,"context_line":"    def setUpClass(cls):"},{"line_number":92,"context_line":"        super(DvrRoutersNegativeTest, cls).setUpClass()"},{"line_number":93,"context_line":"        resp, extensions \u003d cls.client.list_extensions()"},{"line_number":94,"context_line":"        ext_alias_list \u003d [ext[\u0027alias\u0027] for ext in extensions[\u0027extensions\u0027]]"},{"line_number":95,"context_line":"        if \u0027dvr\u0027 not in ext_alias_list:"},{"line_number":96,"context_line":"            msg \u003d \"DVR extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_f8f2f098","line":93,"in_reply_to":"7ac7a964_07910b99","updated":"2014-08-15 20:36:08.000000000","message":"ditto","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"04b96b058945d60d747f04f2a69cbf6b5520c211","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":97,"context_line":"            raise cls.skipException(msg)"},{"line_number":98,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":99,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":100,"context_line":"        cls.router \u003d cls.create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":101,"context_line":"        cls.network \u003d cls.create_network()"},{"line_number":102,"context_line":"        cls.subnet \u003d cls.create_subnet(cls.network)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_0cfdb23a","line":99,"updated":"2014-08-15 18:54:56.000000000","message":"L98 and L99 look like a copy past issue?","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3f66c5c09b2bc8e8832c59cde3450761149481c6","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":97,"context_line":"            raise cls.skipException(msg)"},{"line_number":98,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":99,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":100,"context_line":"        cls.router \u003d cls.create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":101,"context_line":"        cls.network \u003d cls.create_network()"},{"line_number":102,"context_line":"        cls.subnet \u003d cls.create_subnet(cls.network)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_387aa8f1","line":99,"in_reply_to":"7ac7a964_0cfdb23a","updated":"2014-08-15 20:36:08.000000000","message":"ditto","commit_id":"bab6b0faeaade6eb877e12a2f2e41b901115c3ae"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"61ba477911b755ba2457bae798e481807fec204f","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @classmethod"},{"line_number":120,"context_line":"    def resource_setup(cls):"},{"line_number":121,"context_line":"        super(DvrRoutersNegativeTest, cls).resource_setup()"},{"line_number":122,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":123,"context_line":"            msg \u003d \"DVR extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_a620564a","line":120,"updated":"2015-03-24 13:53:32.000000000","message":"same comment on the split setup, but no big deal.","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"444f27b3b039d7827dc29e0da3da2dd270ec3c70","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @classmethod"},{"line_number":120,"context_line":"    def resource_setup(cls):"},{"line_number":121,"context_line":"        super(DvrRoutersNegativeTest, cls).resource_setup()"},{"line_number":122,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":123,"context_line":"            msg \u003d \"DVR extension not enabled.\""}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_1f732416","line":120,"in_reply_to":"1a6ced46_a620564a","updated":"2015-03-24 16:03:09.000000000","message":"will look into it.","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"61ba477911b755ba2457bae798e481807fec204f","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":123,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":124,"context_line":"            raise cls.skipException(msg)"},{"line_number":125,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":126,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":127,"context_line":"        cls.router \u003d cls.create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":128,"context_line":"        cls.network \u003d cls.create_network()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_e6908e97","line":125,"updated":"2015-03-24 13:53:32.000000000","message":"You don\u0027t want AdminManager here, if you need to get admin creds use cls.isolated_creds.get_admin_creds() so to have the same net effect do something like:\n\n  admin_manager \u003d clients.Manager(cls.isolated_creds.get_admin_creds())","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"444f27b3b039d7827dc29e0da3da2dd270ec3c70","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":123,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":124,"context_line":"            raise cls.skipException(msg)"},{"line_number":125,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":126,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":127,"context_line":"        cls.router \u003d cls.create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":128,"context_line":"        cls.network \u003d cls.create_network()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_df4fccbc","line":125,"in_reply_to":"1a6ced46_e6908e97","updated":"2015-03-24 16:03:09.000000000","message":"see below.","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"61ba477911b755ba2457bae798e481807fec204f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":124,"context_line":"            raise cls.skipException(msg)"},{"line_number":125,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":126,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":127,"context_line":"        cls.router \u003d cls.create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":128,"context_line":"        cls.network \u003d cls.create_network()"},{"line_number":129,"context_line":"        cls.subnet \u003d cls.create_subnet(cls.network)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_8686fa11","line":126,"updated":"2015-03-24 13:53:32.000000000","message":"Same question here is identity_admin_client used anywhere","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"444f27b3b039d7827dc29e0da3da2dd270ec3c70","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":124,"context_line":"            raise cls.skipException(msg)"},{"line_number":125,"context_line":"        admin_manager \u003d clients.AdminManager()"},{"line_number":126,"context_line":"        cls.identity_admin_client \u003d admin_manager.identity_client"},{"line_number":127,"context_line":"        cls.router \u003d cls.create_router(data_utils.rand_name(\u0027router\u0027))"},{"line_number":128,"context_line":"        cls.network \u003d cls.create_network()"},{"line_number":129,"context_line":"        cls.subnet \u003d cls.create_subnet(cls.network)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6ced46_ffe568a8","line":126,"in_reply_to":"1a6ced46_8686fa11","updated":"2015-03-24 16:03:09.000000000","message":"this might be vestigial...and I forgot to remove it.","commit_id":"06c2a1b76941f2f9f46460add0962945bdb478ec"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"fa9bbb71fe99de149ddaf244460d3d217b12a13b","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @classmethod"},{"line_number":119,"context_line":"    def skip_checks(cls):"},{"line_number":120,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":121,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":122,"context_line":"            raise cls.skipException(msg)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6ced46_58404d56","line":120,"updated":"2015-03-24 18:57:02.000000000","message":"This needs to call super first.","commit_id":"4a5f0ed3637e219513c9aad16d9f0d91d0d41ae1"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4d09a43c12ac14a726ec50b4f0c59f34fe13d055","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @classmethod"},{"line_number":119,"context_line":"    def skip_checks(cls):"},{"line_number":120,"context_line":"        if not test.is_extension_enabled(\u0027dvr\u0027, \u0027network\u0027):"},{"line_number":121,"context_line":"            msg \u003d \"DVR extension not enabled.\""},{"line_number":122,"context_line":"            raise cls.skipException(msg)"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6ced46_ceb712d7","line":120,"in_reply_to":"1a6ced46_58404d56","updated":"2015-03-24 22:17:31.000000000","message":"Done","commit_id":"4a5f0ed3637e219513c9aad16d9f0d91d0d41ae1"}]}
