)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"abb7ed4e32fcc740412df4149971edc8902cf3fd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Adolfo Duarte \u003cadolfo.duarte@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-07 14:09:47 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding api tests for dvr routers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests Added:"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a890539_be58f38a","line":7,"updated":"2014-11-15 11:14:58.000000000","message":"DVR is better to write upper case","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"7d75da06726dde045383fda40cad25bc2075bd6b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"in network_client.py:"},{"line_number":10,"context_line":"update_router in json/network_client.py did not provide a way to update"},{"line_number":11,"context_line":"the \u0027distributed\u0027 attribute of a router. Sending a rest call to a"},{"line_number":12,"context_line":"system that does not support dvr (icehouse and older) or aa system with"},{"line_number":13,"context_line":"dvr extension disabled will cause a failure, thus care must be taken to"},{"line_number":14,"context_line":"only include the attribute in the rest call if it is explicitely"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a961159_a29c8ac1","line":11,"updated":"2014-12-18 21:34:48.000000000","message":"I would use upper case for rest (i.e. REST)","commit_id":"b1153ff2de30bda6f11c02d56f086f7234c016f0"},{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"7d75da06726dde045383fda40cad25bc2075bd6b","unresolved":false,"context_lines":[{"line_number":9,"context_line":"in network_client.py:"},{"line_number":10,"context_line":"update_router in json/network_client.py did not provide a way to update"},{"line_number":11,"context_line":"the \u0027distributed\u0027 attribute of a router. Sending a rest call to a"},{"line_number":12,"context_line":"system that does not support dvr (icehouse and older) or aa system with"},{"line_number":13,"context_line":"dvr extension disabled will cause a failure, thus care must be taken to"},{"line_number":14,"context_line":"only include the attribute in the rest call if it is explicitely"},{"line_number":15,"context_line":"requested via the kwargs dict."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a961159_628d427c","line":12,"updated":"2014-12-18 21:34:48.000000000","message":"typo - \u0027aa\u0027 system","commit_id":"b1153ff2de30bda6f11c02d56f086f7234c016f0"},{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"7d75da06726dde045383fda40cad25bc2075bd6b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"the \u0027distributed\u0027 attribute of a router. Sending a rest call to a"},{"line_number":12,"context_line":"system that does not support dvr (icehouse and older) or aa system with"},{"line_number":13,"context_line":"dvr extension disabled will cause a failure, thus care must be taken to"},{"line_number":14,"context_line":"only include the attribute in the rest call if it is explicitely"},{"line_number":15,"context_line":"requested via the kwargs dict."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Tests Added:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a961159_62e4623c","line":14,"updated":"2014-12-18 21:34:48.000000000","message":"again, user upper case for rest","commit_id":"b1153ff2de30bda6f11c02d56f086f7234c016f0"}],"tempest/api/network/admin/test_routers_dvr.py":[{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"7d75da06726dde045383fda40cad25bc2075bd6b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                raise cls.skipException(msg)"},{"line_number":30,"context_line":"        # The check above will pass if api_extensions\u003dall, which does"},{"line_number":31,"context_line":"        # not mean dvr extension itself is present."},{"line_number":32,"context_line":"        # Instead, we have to check wether dvr is actually present by using"},{"line_number":33,"context_line":"        # admin credentials to create router with distributed\u003dTrue attribute"},{"line_number":34,"context_line":"        # and checking for BadRequest exception and that the resulting router"},{"line_number":35,"context_line":"        # has a distributed attribute."}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_6252a2df","line":32,"updated":"2014-12-18 21:34:48.000000000","message":"should be \"whether\".\nAlso, use upper case for \"dvr\"","commit_id":"b1153ff2de30bda6f11c02d56f086f7234c016f0"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"6dea404f7456b29196aae860ec9f972d2a964dd1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                raise cls.skipException(msg)"},{"line_number":30,"context_line":"        # The check above will pass if api_extensions\u003dall, which does"},{"line_number":31,"context_line":"        # not mean dvr extension itself is present."},{"line_number":32,"context_line":"        # Instead, we have to check wether dvr is actually present by using"},{"line_number":33,"context_line":"        # admin credentials to create router with distributed\u003dTrue attribute"},{"line_number":34,"context_line":"        # and checking for BadRequest exception and that the resulting router"},{"line_number":35,"context_line":"        # has a distributed attribute."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_1cca626e","line":32,"in_reply_to":"3a961159_6252a2df","updated":"2015-01-29 00:00:28.000000000","message":"Done","commit_id":"b1153ff2de30bda6f11c02d56f086f7234c016f0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"778e9f13ff07bff05c8a5a708c49a15cd1b3a7e5","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dTrue)"},{"line_number":57,"context_line":"        self.addCleanup(self.admin_client.delete_router,"},{"line_number":58,"context_line":"                        router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":59,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], True)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":62,"context_line":"    def test_centralized_router_creation(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_af2468c5","line":59,"updated":"2015-01-30 15:48:50.000000000","message":"use self.assertTrue","commit_id":"bb2c2c7376c1a9f59483d31d1e6ed8eca3663f4e"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"2195764f29b945c83bc0fa08f9fc73e1ea1020e7","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dTrue)"},{"line_number":57,"context_line":"        self.addCleanup(self.admin_client.delete_router,"},{"line_number":58,"context_line":"                        router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":59,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], True)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":62,"context_line":"    def test_centralized_router_creation(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_ebfec96a","line":59,"in_reply_to":"fa81d914_af2468c5","updated":"2015-02-02 07:20:15.000000000","message":"Done","commit_id":"bb2c2c7376c1a9f59483d31d1e6ed8eca3663f4e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"778e9f13ff07bff05c8a5a708c49a15cd1b3a7e5","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dFalse)"},{"line_number":75,"context_line":"        self.addCleanup(self.admin_client.delete_router,"},{"line_number":76,"context_line":"                        router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":77,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], False)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":80,"context_line":"    def test_centralized_router_update_to_dvr(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_ef2ae08e","line":77,"updated":"2015-01-30 15:48:50.000000000","message":"use self.assertFalse","commit_id":"bb2c2c7376c1a9f59483d31d1e6ed8eca3663f4e"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"2195764f29b945c83bc0fa08f9fc73e1ea1020e7","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dFalse)"},{"line_number":75,"context_line":"        self.addCleanup(self.admin_client.delete_router,"},{"line_number":76,"context_line":"                        router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":77,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], False)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":80,"context_line":"    def test_centralized_router_update_to_dvr(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_cb090597","line":77,"in_reply_to":"fa81d914_ef2ae08e","updated":"2015-02-02 07:20:15.000000000","message":"Done","commit_id":"bb2c2c7376c1a9f59483d31d1e6ed8eca3663f4e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"778e9f13ff07bff05c8a5a708c49a15cd1b3a7e5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dFalse)"},{"line_number":94,"context_line":"        self.addCleanup(self.admin_client.delete_router,"},{"line_number":95,"context_line":"                        router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":96,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], False)"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_6f16f056","line":96,"updated":"2015-01-30 15:48:50.000000000","message":"use assertFalse","commit_id":"bb2c2c7376c1a9f59483d31d1e6ed8eca3663f4e"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"2195764f29b945c83bc0fa08f9fc73e1ea1020e7","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dFalse)"},{"line_number":94,"context_line":"        self.addCleanup(self.admin_client.delete_router,"},{"line_number":95,"context_line":"                        router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":96,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], False)"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_0bbcfd68","line":96,"in_reply_to":"fa81d914_6f16f056","updated":"2015-02-02 07:20:15.000000000","message":"Done","commit_id":"bb2c2c7376c1a9f59483d31d1e6ed8eca3663f4e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"778e9f13ff07bff05c8a5a708c49a15cd1b3a7e5","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], False)"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_4f112c5c","line":99,"updated":"2015-01-30 15:48:50.000000000","message":"use assertTrue","commit_id":"bb2c2c7376c1a9f59483d31d1e6ed8eca3663f4e"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"2195764f29b945c83bc0fa08f9fc73e1ea1020e7","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], False)"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_2bb0e18a","line":99,"in_reply_to":"fa81d914_4f112c5c","updated":"2015-02-02 07:20:15.000000000","message":"Done","commit_id":"bb2c2c7376c1a9f59483d31d1e6ed8eca3663f4e"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"aa1711380260dbadf187812f0afc0be0106664d6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_dfcc5f38","line":1,"updated":"2015-02-02 09:12:51.000000000","message":"2015","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"d93bb68bd1ac278d0681e8d223f61f1d9450c633","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_28eef58b","line":1,"in_reply_to":"da86d52c_dfcc5f38","updated":"2015-02-10 01:52:51.000000000","message":"Done","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"32644aa9da5ac936dd06cdf04eb79728eee13c48","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class RoutersTestDVR(base.BaseRouterTest):"},{"line_number":22,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_b515629d","line":22,"updated":"2015-02-05 16:18:59.000000000","message":"I think this is not needed anymore. But I am not sure...","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"d93bb68bd1ac278d0681e8d223f61f1d9450c633","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class RoutersTestDVR(base.BaseRouterTest):"},{"line_number":22,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_48f16969","line":22,"in_reply_to":"da86d52c_b515629d","updated":"2015-02-10 01:52:51.000000000","message":"removed","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":12524,"name":"Zengfa Gao","email":"zengfa.gao@hp.com","username":"zengfagao"},"change_message_id":"0684b1bc96a02932c816294a7c6fc11d3bef540a","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        Acceptance"},{"line_number":88,"context_line":"        The router is created and the \"distributed\" attribute is"},{"line_number":89,"context_line":"        set to False. Once the router is updated, the distributed"},{"line_number":90,"context_line":"        attribute will be set to False"},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        name \u003d data_utils.rand_name(\u0027router\u0027)"},{"line_number":93,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_e4dc8648","line":90,"updated":"2015-02-05 18:02:40.000000000","message":"Is this to be True at the end?","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"d93bb68bd1ac278d0681e8d223f61f1d9450c633","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        Acceptance"},{"line_number":88,"context_line":"        The router is created and the \"distributed\" attribute is"},{"line_number":89,"context_line":"        set to False. Once the router is updated, the distributed"},{"line_number":90,"context_line":"        attribute will be set to False"},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        name \u003d data_utils.rand_name(\u0027router\u0027)"},{"line_number":93,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_88eb6177","line":90,"in_reply_to":"da86d52c_6bd68c29","updated":"2015-02-10 01:52:51.000000000","message":"Done","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"d93bb68bd1ac278d0681e8d223f61f1d9450c633","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        Acceptance"},{"line_number":88,"context_line":"        The router is created and the \"distributed\" attribute is"},{"line_number":89,"context_line":"        set to False. Once the router is updated, the distributed"},{"line_number":90,"context_line":"        attribute will be set to False"},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        name \u003d data_utils.rand_name(\u0027router\u0027)"},{"line_number":93,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_68e8ed7c","line":90,"in_reply_to":"da86d52c_e4dc8648","updated":"2015-02-10 01:52:51.000000000","message":"Done","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"20b021c8af706f7d0676d3d6d9c7e1c76caaf774","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        Acceptance"},{"line_number":88,"context_line":"        The router is created and the \"distributed\" attribute is"},{"line_number":89,"context_line":"        set to False. Once the router is updated, the distributed"},{"line_number":90,"context_line":"        attribute will be set to False"},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        name \u003d data_utils.rand_name(\u0027router\u0027)"},{"line_number":93,"context_line":"        router \u003d self.admin_client.create_router(name, distributed\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_6bd68c29","line":90,"in_reply_to":"da86d52c_e4dc8648","updated":"2015-02-06 09:10:58.000000000","message":"Good catch.","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":12524,"name":"Zengfa Gao","email":"zengfa.gao@hp.com","username":"zengfagao"},"change_message_id":"0684b1bc96a02932c816294a7c6fc11d3bef540a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertFalse(router[\u0027router\u0027][\u0027distributed\u0027])"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertTrue(router[\u0027router\u0027][\u0027distributed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_e4b3a607","line":99,"updated":"2015-02-05 18:02:40.000000000","message":"I would like to add test to make sure that we cannot change distributed from True to False. Change router from distributed to centralized is not supported.","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"d93bb68bd1ac278d0681e8d223f61f1d9450c633","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertFalse(router[\u0027router\u0027][\u0027distributed\u0027])"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertTrue(router[\u0027router\u0027][\u0027distributed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_08f7715a","line":99,"in_reply_to":"da86d52c_abb32408","updated":"2015-02-10 01:52:51.000000000","message":"Done","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":12524,"name":"Zengfa Gao","email":"zengfa.gao@hp.com","username":"zengfagao"},"change_message_id":"0e3cc843bb9427d171e31898dfa710b0c56b1c74","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertFalse(router[\u0027router\u0027][\u0027distributed\u0027])"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertTrue(router[\u0027router\u0027][\u0027distributed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_c3d833f1","line":99,"in_reply_to":"da86d52c_abb32408","updated":"2015-02-06 15:41:55.000000000","message":"I really like your test case because I thought about adding DVR router testing last week. For DVR migrate to centralized, we can put in test_router_negative.py.","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"d93bb68bd1ac278d0681e8d223f61f1d9450c633","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertFalse(router[\u0027router\u0027][\u0027distributed\u0027])"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertTrue(router[\u0027router\u0027][\u0027distributed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_689f0d04","line":99,"in_reply_to":"da86d52c_c3d833f1","updated":"2015-02-10 01:52:51.000000000","message":"will add test and put it under test_router_negative.py as a separate patch\nDid a quick poc and currently I get: \n      File \"tempest/common/service_client.py\", line 81, in request\n        raise exceptions.NotImplemented(ex)\n    NotImplemented: Got NotImplemented error\n    Details: Got NotImplemented error\n    Details:\n    \n\nwhich is the correct behavior. Looks like i would have to catch the \"NotImplemented(ex) \" exception. So will add to a different patch so as not to make this patch too long.","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"20b021c8af706f7d0676d3d6d9c7e1c76caaf774","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertFalse(router[\u0027router\u0027][\u0027distributed\u0027])"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertTrue(router[\u0027router\u0027][\u0027distributed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_abb32408","line":99,"in_reply_to":"da86d52c_e4b3a607","updated":"2015-02-06 09:10:58.000000000","message":"+1\n\nBut I don\u0027t know \u0027where\u0027 to put this new test, as it\u0027s kind of a \"negative test\"","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"d93bb68bd1ac278d0681e8d223f61f1d9450c633","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.assertFalse(router[\u0027router\u0027][\u0027distributed\u0027])"},{"line_number":97,"context_line":"        router \u003d self.admin_client.update_router(router[\u0027router\u0027][\u0027id\u0027],"},{"line_number":98,"context_line":"                                                 distributed\u003dTrue)"},{"line_number":99,"context_line":"        self.assertTrue(router[\u0027router\u0027][\u0027distributed\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_e8fbfd44","line":99,"in_reply_to":"da86d52c_e4b3a607","updated":"2015-02-10 01:52:51.000000000","message":"Done","commit_id":"59d6a72c41cee63eae482feb209a19f695d8b618"}],"tempest/api/network/test_routers_dvr.py":[{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"6af734f6e0f220ec63483c0f8060656976b484f2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_5d8cde7f","line":1,"updated":"2014-11-12 12:35:15.000000000","message":"Should be 2014","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"d4048f6efb076765e9ab19eb21dc698dbd36bd4d","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"},{"line_number":26,"context_line":"    def resource_setup(cls):"},{"line_number":27,"context_line":"        super(RoutersTestDVR, cls).resource_setup()"},{"line_number":28,"context_line":"        for ext in [\u0027router\u0027, \u0027dvr\u0027]:"},{"line_number":29,"context_line":"            if not test.is_extension_enabled(ext, \u0027network\u0027):"},{"line_number":30,"context_line":"                msg \u003d \"%s extension not enabled.\" % ext"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_9ba357ff","line":27,"updated":"2014-11-14 16:36:56.000000000","message":"Can you place this call after below skipException? That way, if the test is being skipped because extension is not available then you are not wasting the resources being setup up front.","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"d4048f6efb076765e9ab19eb21dc698dbd36bd4d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                raise cls.skipException(msg)"},{"line_number":32,"context_line":"        # The check above will pass if api_extensions\u003dall, which does"},{"line_number":33,"context_line":"        # not mean dvr extension itself is present."},{"line_number":34,"context_line":"        # Instead, we have to check weather dvr is actually present by using"},{"line_number":35,"context_line":"        # admin credentials to create router with distributed\u003dTrue attribute"},{"line_number":36,"context_line":"        # and checking for BadRequest exception and that the resulting router"},{"line_number":37,"context_line":"        # is has a distributed attri bute."}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_f0239aba","line":34,"updated":"2014-11-14 16:36:56.000000000","message":"Typo - should be \"whether\" instead of \"weather\" :-)","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":13167,"name":"Yogesh","email":"ykshirsa@netapp.com","username":"yogi1"},"change_message_id":"d4048f6efb076765e9ab19eb21dc698dbd36bd4d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        # Instead, we have to check weather dvr is actually present by using"},{"line_number":35,"context_line":"        # admin credentials to create router with distributed\u003dTrue attribute"},{"line_number":36,"context_line":"        # and checking for BadRequest exception and that the resulting router"},{"line_number":37,"context_line":"        # is has a distributed attri bute."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            name \u003d data_utils.rand_name(\u0027pretest-check\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_5b01ef03","line":37,"updated":"2014-11-14 16:36:56.000000000","message":"\"router is has\" seems incorrect, should be \"router has\".\nAlso, attribute word is broken. Need to remove the space.","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"abb7ed4e32fcc740412df4149971edc8902cf3fd","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                msg \u003d (\"\u0027distributed\u0027 attribute not present. DVR not enabled\")"},{"line_number":44,"context_line":"                cls.admin_client.delete_router(router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":45,"context_line":"                raise cls.skipException(msg)"},{"line_number":46,"context_line":"            cls.admin_client.delete_router(router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":47,"context_line":"        except exceptions.BadRequest:"},{"line_number":48,"context_line":"            msg \u003d \"DVR Possibly not enabled\""},{"line_number":49,"context_line":"            raise cls.skipException(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_de385f3f","line":46,"updated":"2014-11-15 11:14:58.000000000","message":"this line is good candidate for \"finally:\"\nTry to organize it as \"try, except, finally\" block, please.","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"c73571cc4dd4867ddd73b903345d1e255629fd93","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                msg \u003d (\"\u0027distributed\u0027 attribute not present. DVR not enabled\")"},{"line_number":44,"context_line":"                cls.admin_client.delete_router(router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":45,"context_line":"                raise cls.skipException(msg)"},{"line_number":46,"context_line":"            cls.admin_client.delete_router(router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":47,"context_line":"        except exceptions.BadRequest:"},{"line_number":48,"context_line":"            msg \u003d \"DVR Possibly not enabled\""},{"line_number":49,"context_line":"            raise cls.skipException(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_db668850","line":46,"in_reply_to":"5a890539_de385f3f","updated":"2015-02-02 07:21:43.000000000","message":"I thought about this, and would like to do it that way but the problem I see is that the create_router could fail so no router would be created.  In that case if we come to a \"finally\" statement with the line: \ndelete_router(router[\u0027router\u0027][\u0027id\u0027]) \nthat itself would fail with an exception because router does not exist (it was never created).\n\ncode in a finally block will always be executed, but the delete_router should only be executed if the router was actually created.","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"abb7ed4e32fcc740412df4149971edc8902cf3fd","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            msg \u003d \"DVR Possibly not enabled\""},{"line_number":49,"context_line":"            raise cls.skipException(msg)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @test.requires_ext(extension\u003d\u0027dvr\u0027, service\u003d\u0027network\u0027)"},{"line_number":52,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":53,"context_line":"    def test_distributed_router_creation(self):"},{"line_number":54,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_7e620b3f","line":51,"updated":"2014-11-15 11:14:58.000000000","message":"do you need this line? you anyway check it in resource setup","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"abb7ed4e32fcc740412df4149971edc8902cf3fd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                        router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":68,"context_line":"        self.assertEqual(router[\u0027router\u0027][\u0027distributed\u0027], True)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @test.requires_ext(extension\u003d\u0027dvr\u0027, service\u003d\u0027network\u0027)"},{"line_number":71,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":72,"context_line":"    def test_centralized_router_creation(self):"},{"line_number":73,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_9e67b74c","line":70,"updated":"2014-11-15 11:14:58.000000000","message":"same as above","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"abb7ed4e32fcc740412df4149971edc8902cf3fd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    def test_centralized_router_creation(self):"},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        Test uses administrative credentials to creates a"},{"line_number":75,"context_line":"        DVR (Centralized Virtual Routing) router using the"},{"line_number":76,"context_line":"        distributed\u003dFalse."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        Acceptance"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_3e1ec3bb","line":75,"updated":"2014-11-15 11:14:58.000000000","message":"(Centralized Virtual Routing)? I thought DVR is Distributed Virtual Router","commit_id":"ae275c66c1b448f25c2284a98d415b5d91b6de47"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"6876983ebe23951f9f8edccdab3fe58acbf2bed9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        # and checking for BadRequest exception and that the resulting router"},{"line_number":36,"context_line":"        # has a distributed attribute."},{"line_number":37,"context_line":"        super(RoutersTestDVR, cls).resource_setup()"},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            name \u003d data_utils.rand_name(\u0027pretest-check\u0027)"},{"line_number":40,"context_line":"            _, router \u003d cls.admin_client.create_router(name)"},{"line_number":41,"context_line":"            if \u0027distributed\u0027 not in router[\u0027router\u0027]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_91a7a5bc","line":38,"updated":"2014-11-24 23:06:25.000000000","message":"In my opinion, this whole try block is logically incorrect. If you get a BadRequest exception, it has nothing to do with whether DVR is enabled or not (that is to be determined by the presence or lack thereof of the \u0027distributed\u0027 attribute in the response). It is just a bad request and the test should be let to fail with the BadRequest exception. Whatever the error that triggered the BadRequest exception, It shouldn\u0027t be hidden / masked with a skipException.\n\nSo, I suggest to remove the try - exception block and then simplify to the following lines: \n\nname \u003d data_utils.rand_name(\u0027pretest-check\u0027)\n_, router \u003d cls.admin_client.create_router(name)\ncls.admin_client.delete_router(router[\u0027router\u0027][\u0027id\u0027])\nif \u0027distributed\u0027 not in router[\u0027router\u0027]\n    msg \u003d (\"\u0027distributed\u0027 attribute not present. DVR not enabled\")\n    raise cls.skipException(msg)","commit_id":"65571e42a65e9c3710970d7d764f00493ffab333"},{"author":{"_account_id":13770,"name":"Adolfo Duarte","email":"adduarte@redhat.com","username":"adolfoduarte"},"change_message_id":"824f4d2702248dcdc719a26db37d502271e68199","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        # and checking for BadRequest exception and that the resulting router"},{"line_number":36,"context_line":"        # has a distributed attribute."},{"line_number":37,"context_line":"        super(RoutersTestDVR, cls).resource_setup()"},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            name \u003d data_utils.rand_name(\u0027pretest-check\u0027)"},{"line_number":40,"context_line":"            _, router \u003d cls.admin_client.create_router(name)"},{"line_number":41,"context_line":"            if \u0027distributed\u0027 not in router[\u0027router\u0027]:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_a70e1f3b","line":38,"in_reply_to":"5a890539_91a7a5bc","updated":"2015-02-02 07:21:11.000000000","message":"Yes. I think that is a better idea. Thanks.  I will make changes.","commit_id":"65571e42a65e9c3710970d7d764f00493ffab333"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"10fb27da51e25989d061ea55f453d3a44cf6e6b8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                cls.admin_client.delete_router(router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":44,"context_line":"                raise cls.skipException(msg)"},{"line_number":45,"context_line":"            cls.admin_client.delete_router(router[\u0027router\u0027][\u0027id\u0027])"},{"line_number":46,"context_line":"        except exceptions.BadRequest:"},{"line_number":47,"context_line":"            msg \u003d \"DVR Possibly not enabled\""},{"line_number":48,"context_line":"            raise cls.skipException(msg)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_31c1912f","line":46,"updated":"2014-11-24 23:10:00.000000000","message":"agree with Miguel. Maybe will be compromise to check the log message of BadRequest?","commit_id":"65571e42a65e9c3710970d7d764f00493ffab333"}]}
