)]}'
{"tempest/api/network/admin/test_external_network_extension.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"6ff31b9fb7676d3ea3a69d58e98bf3de19063f9c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.assertIn(network[\u0027admin_state_up\u0027], [True, \u0027True\u0027])"},{"line_number":29,"context_line":"        if \u0027router:external\u0027 in network:"},{"line_number":30,"context_line":"            self.assertEqual(network[\u0027router:external\u0027], True)"},{"line_number":31,"context_line":"        else:"},{"line_number":32,"context_line":"            self.assertEqual(network[\u0027external\u0027], \u0027True\u0027)"},{"line_number":33,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2Fqq4%3D","line":31,"updated":"2014-01-09 21:44:33.000000000","message":"the fact that you have to have this if-else indicate an issue with xml deserialization in the client for composite attribute names. Could you deal with it in some way? Maybe you could add a namespace name to an attribute as a prefix (e.g. router:)?","commit_id":"24c26beee671f4a2532044a07db7a518df1db237"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"40031c94814cd908cf2b6de937b1b1145c3e72d5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":26,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":27,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":28,"context_line":"        self.assertIn(network[\u0027admin_state_up\u0027], [True, \u0027True\u0027])"},{"line_number":29,"context_line":"        self.assertEqual(network[\u0027router:external\u0027], True)"},{"line_number":30,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZCM%3D","line":28,"updated":"2014-01-14 09:35:26.000000000","message":"that seem weird. as far as i understand, the need to check booleans like that is because of xml. Could we modify xml-to-json so booleans are auto converted?","commit_id":"abbdf936c461852a7500608293567a7fe9a476f6"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"0a36e8ae835cb157e7980874e80ec0bcde4c6082","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":26,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":27,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":28,"context_line":"        self.assertIn(network[\u0027admin_state_up\u0027], [True, \u0027True\u0027])"},{"line_number":29,"context_line":"        self.assertEqual(network[\u0027router:external\u0027], True)"},{"line_number":30,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FY%2B0%3D","line":28,"in_reply_to":"AAAAUH%2F%2FZCM%3D","updated":"2014-01-14 09:44:21.000000000","message":"I just forgot to remove this. I\u0027ve already done change that helps to fix it. Thanks.","commit_id":"abbdf936c461852a7500608293567a7fe9a476f6"},{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"63692e6eb1f731804c1a05cbe34abde0d604880c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Mirantis, Inc."},{"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"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FUlE%3D","line":2,"updated":"2014-01-15 06:39:01.000000000","message":"is this copyright info ok?","commit_id":"d35f778239671da4b877ca512dab2021117c5a73"},{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"63692e6eb1f731804c1a05cbe34abde0d604880c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"from tempest.api.network import base"},{"line_number":16,"context_line":"from tempest.common.utils import data_utils"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FUk4%3D","line":14,"updated":"2014-01-15 06:39:01.000000000","message":"nit: one line between 14 and 15","commit_id":"d35f778239671da4b877ca512dab2021117c5a73"},{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"63692e6eb1f731804c1a05cbe34abde0d604880c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":26,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":27,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":28,"context_line":"        self.assertEqual(network[\u0027admin_state_up\u0027], True)"},{"line_number":29,"context_line":"        self.assertEqual(network[\u0027router:external\u0027], True)"},{"line_number":30,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FUB4%3D","line":28,"updated":"2014-01-15 06:39:01.000000000","message":"why assert admin_state_up ?","commit_id":"d35f778239671da4b877ca512dab2021117c5a73"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9b8b7f8ee6339bef1ec6241f58abeabb402cd171","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":26,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":27,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":28,"context_line":"        self.assertEqual(network[\u0027admin_state_up\u0027], True)"},{"line_number":29,"context_line":"        self.assertEqual(network[\u0027router:external\u0027], True)"},{"line_number":30,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FT3E%3D","line":28,"in_reply_to":"AAAAUH%2F%2FUB4%3D","updated":"2014-01-15 07:09:26.000000000","message":"Because it is necessary to check this parameter is \u0027True\u0027 from admin client.","commit_id":"d35f778239671da4b877ca512dab2021117c5a73"},{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"63692e6eb1f731804c1a05cbe34abde0d604880c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":38,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":39,"context_line":"                                                      **update_body)"},{"line_number":40,"context_line":"        updated_network \u003d body[\u0027network\u0027]"},{"line_number":41,"context_line":"        self.assertEqual(updated_network[\u0027router:external\u0027], True)"},{"line_number":42,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FUBM%3D","line":40,"updated":"2014-01-15 06:39:01.000000000","message":"i think we could write this case in the last case(line 22). that way, u already created a network with external:true(Line 23), then u could update the network\u0027s external attribute (setting it to false), then do the assertion.","commit_id":"d35f778239671da4b877ca512dab2021117c5a73"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9b8b7f8ee6339bef1ec6241f58abeabb402cd171","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":38,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":39,"context_line":"                                                      **update_body)"},{"line_number":40,"context_line":"        updated_network \u003d body[\u0027network\u0027]"},{"line_number":41,"context_line":"        self.assertEqual(updated_network[\u0027router:external\u0027], True)"},{"line_number":42,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FT3M%3D","line":40,"in_reply_to":"AAAAUH%2F%2FUBM%3D","updated":"2014-01-15 07:09:26.000000000","message":"I can\u0027t agree with you in this comment and two next. I think that creating one test case instead of three is bad idea. Every test is created to test some exact action.  If I put them together it will be worse understanding.","commit_id":"d35f778239671da4b877ca512dab2021117c5a73"},{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"63692e6eb1f731804c1a05cbe34abde0d604880c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.assertEqual(updated_network[\u0027router:external\u0027], True)"},{"line_number":42,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_list_external_networks(self):"},{"line_number":45,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027),"},{"line_number":46,"context_line":"                     \u0027router:external\u0027: True}"},{"line_number":47,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FT8w%3D","line":44,"updated":"2014-01-15 06:39:01.000000000","message":"may also consider putting these cases into one","commit_id":"d35f778239671da4b877ca512dab2021117c5a73"},{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"3497bf3522afe4ebd40f13c8dd1923724869af17","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":24,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":25,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":26,"context_line":"        self.assertEqual(network[\u0027admin_state_up\u0027], True)"},{"line_number":27,"context_line":"        self.assertEqual(network[\u0027router:external\u0027], True)"},{"line_number":28,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B4tU%3D","line":26,"updated":"2014-01-21 03:50:04.000000000","message":"Hi,Ann, but u did not pass admin_state_up to the creation, i do not think it is necessary to asset it. although maybe the default value for it is True. And  if the default value is somehow decided to be False, then this case would be failed. Maybe if u want to assert it to be True, u would include it in the post_body.","commit_id":"cc98706ee35f254b861504050f1699489717de6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"ab59ef49fba3a168b532fb8abe812555149254fd","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":24,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":25,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":26,"context_line":"        self.assertEqual(network[\u0027admin_state_up\u0027], True)"},{"line_number":27,"context_line":"        self.assertEqual(network[\u0027router:external\u0027], True)"},{"line_number":28,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B3iY%3D","line":26,"in_reply_to":"AAAAUH%2F%2B4tU%3D","updated":"2014-01-21 09:41:58.000000000","message":"Ok, I\u0027ll remove this check.","commit_id":"cc98706ee35f254b861504050f1699489717de6d"},{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"3497bf3522afe4ebd40f13c8dd1923724869af17","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_update_external_network(self):"},{"line_number":31,"context_line":"        resp, body \u003d self.admin_client.create_network("},{"line_number":32,"context_line":"            name\u003ddata_utils.rand_name(\u0027network-\u0027))"},{"line_number":33,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":34,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B4r8%3D","line":31,"updated":"2014-01-21 03:50:04.000000000","message":"Yes, I understand ur point. Maybe it is more understandable for seperate cases. Actually the reason I suggest to group some of these cases into one is: so that we dont have to create\u0026delete the resources again and again, thus saving some time to run all the cases.Meanwhile, avoid many duplicate codes. and I think that is how\u0026 why they do in cases like this one: test_create_update_delete_network_subnet(self) .","commit_id":"cc98706ee35f254b861504050f1699489717de6d"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"ab59ef49fba3a168b532fb8abe812555149254fd","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_update_external_network(self):"},{"line_number":31,"context_line":"        resp, body \u003d self.admin_client.create_network("},{"line_number":32,"context_line":"            name\u003ddata_utils.rand_name(\u0027network-\u0027))"},{"line_number":33,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":34,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2B3dc%3D","line":31,"in_reply_to":"AAAAUH%2F%2B4r8%3D","updated":"2014-01-21 09:41:58.000000000","message":"Here different networks are created and this test should check\n\"Update a network from an administrative user specifying the external network extension attribute\" (https://etherpad.openstack.org/p/icehouse-summit-qa-neutron) so if I create one network I should update one parameter two times. In my opinion it is not worth doing. Also this tests are not so big and creating one test instead of two won\u0027t save a lot of time.","commit_id":"cc98706ee35f254b861504050f1699489717de6d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c4c476f49a0111d0c177a66049be829c548a50c3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027),"},{"line_number":29,"context_line":"                     \u0027router:external\u0027: True}"},{"line_number":30,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":31,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":32,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":33,"context_line":"        # Verifies router:external parameter"},{"line_number":34,"context_line":"        self.assertEqual(network[\u0027router:external\u0027], True)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2FxAU%3D","line":31,"updated":"2014-02-10 23:01:17.000000000","message":"Please move the addCleanup call right after this assert","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"5cf671a49be81b1a9bffeb08a2e3ff5062d2ea7b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027),"},{"line_number":29,"context_line":"                     \u0027router:external\u0027: True}"},{"line_number":30,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":31,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":32,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":33,"context_line":"        # Verifies router:external parameter"},{"line_number":34,"context_line":"        self.assertEqual(network[\u0027router:external\u0027], True)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Fua0%3D","line":31,"in_reply_to":"AAAAUX%2F%2FxAU%3D","updated":"2014-02-11 08:11:34.000000000","message":"Done","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c4c476f49a0111d0c177a66049be829c548a50c3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        resp, body \u003d self.admin_client.create_network("},{"line_number":41,"context_line":"            name\u003ddata_utils.rand_name(\u0027network-\u0027))"},{"line_number":42,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":43,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":44,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":45,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":46,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2FxAQ%3D","line":43,"updated":"2014-02-10 23:01:17.000000000","message":"Please move the addCleanup call right after this assert","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"5cf671a49be81b1a9bffeb08a2e3ff5062d2ea7b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        resp, body \u003d self.admin_client.create_network("},{"line_number":41,"context_line":"            name\u003ddata_utils.rand_name(\u0027network-\u0027))"},{"line_number":42,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":43,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":44,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":45,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":46,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Fuaw%3D","line":43,"in_reply_to":"AAAAUX%2F%2FxAQ%3D","updated":"2014-02-11 08:11:34.000000000","message":"Done","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c4c476f49a0111d0c177a66049be829c548a50c3","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # Create external_net"},{"line_number":54,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027),"},{"line_number":55,"context_line":"                     \u0027router:external\u0027: True}"},{"line_number":56,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":57,"context_line":"        external_network \u003d body[\u0027network\u0027]"},{"line_number":58,"context_line":"        # List networks as a normal user and confirm the external"},{"line_number":59,"context_line":"        # network extension attribute is returned for those networks"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Fw%2Fs%3D","line":56,"updated":"2014-02-10 23:01:17.000000000","message":"Please add self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027]). Please move the addCleanup call right after this assert","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"5cf671a49be81b1a9bffeb08a2e3ff5062d2ea7b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # Create external_net"},{"line_number":54,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027),"},{"line_number":55,"context_line":"                     \u0027router:external\u0027: True}"},{"line_number":56,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":57,"context_line":"        external_network \u003d body[\u0027network\u0027]"},{"line_number":58,"context_line":"        # List networks as a normal user and confirm the external"},{"line_number":59,"context_line":"        # network extension attribute is returned for those networks"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Fuas%3D","line":56,"in_reply_to":"AAAAUX%2F%2Fw%2Fs%3D","updated":"2014-02-11 08:11:34.000000000","message":"Done","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c4c476f49a0111d0c177a66049be829c548a50c3","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        # Create external_net"},{"line_number":75,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027),"},{"line_number":76,"context_line":"                     \u0027router:external\u0027: True}"},{"line_number":77,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":78,"context_line":"        external_network \u003d body[\u0027network\u0027]"},{"line_number":79,"context_line":"        # Show an external network as a normal user and confirm the"},{"line_number":80,"context_line":"        # external network extension attribute is returned."}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Fw%2Fk%3D","line":77,"updated":"2014-02-10 23:01:17.000000000","message":"Please add self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027]). Please move the addCleanup call right after this assert","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"5cf671a49be81b1a9bffeb08a2e3ff5062d2ea7b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        # Create external_net"},{"line_number":75,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027),"},{"line_number":76,"context_line":"                     \u0027router:external\u0027: True}"},{"line_number":77,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":78,"context_line":"        external_network \u003d body[\u0027network\u0027]"},{"line_number":79,"context_line":"        # Show an external network as a normal user and confirm the"},{"line_number":80,"context_line":"        # external network extension attribute is returned."}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Fuao%3D","line":77,"in_reply_to":"AAAAUX%2F%2Fw%2Fk%3D","updated":"2014-02-11 08:11:34.000000000","message":"Done","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c4c476f49a0111d0c177a66049be829c548a50c3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.assertEqual(external_network[\u0027name\u0027], show_ext_net[\u0027name\u0027])"},{"line_number":84,"context_line":"        self.assertEqual(external_network[\u0027id\u0027], show_ext_net[\u0027id\u0027])"},{"line_number":85,"context_line":"        self.assertEqual(external_network[\u0027router:external\u0027],"},{"line_number":86,"context_line":"                         show_ext_net[\u0027router:external\u0027])"},{"line_number":87,"context_line":"        resp, body \u003d self.client.show_network(self.network[\u0027id\u0027])"},{"line_number":88,"context_line":"        show_net \u003d body[\u0027network\u0027]"},{"line_number":89,"context_line":"        # Verify with show that router:external is False for network"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Fw%2BM%3D","line":86,"updated":"2014-02-10 23:01:17.000000000","message":"I think it would be better to do: \n\nself.assertTrue(show_ext_net[\u0027router:external\u0027])\n\nThis way, we catch the potential error of Neutron setting this attribute wrongly at creation of the network","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"5cf671a49be81b1a9bffeb08a2e3ff5062d2ea7b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.assertEqual(external_network[\u0027name\u0027], show_ext_net[\u0027name\u0027])"},{"line_number":84,"context_line":"        self.assertEqual(external_network[\u0027id\u0027], show_ext_net[\u0027id\u0027])"},{"line_number":85,"context_line":"        self.assertEqual(external_network[\u0027router:external\u0027],"},{"line_number":86,"context_line":"                         show_ext_net[\u0027router:external\u0027])"},{"line_number":87,"context_line":"        resp, body \u003d self.client.show_network(self.network[\u0027id\u0027])"},{"line_number":88,"context_line":"        show_net \u003d body[\u0027network\u0027]"},{"line_number":89,"context_line":"        # Verify with show that router:external is False for network"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2Fuak%3D","line":86,"in_reply_to":"AAAAUX%2F%2Fw%2BM%3D","updated":"2014-02-11 08:11:34.000000000","message":"Done","commit_id":"a9883f2bcdfffe60daf179e365bf69c8b4967536"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"794d653839fedd0eef8e068bc4c25578c7d4396d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027),"},{"line_number":29,"context_line":"                     \u0027router:external\u0027: True}"},{"line_number":30,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":31,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":32,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":33,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":34,"context_line":"        # Verifies router:external parameter"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUX%2F%2FrXs%3D","line":31,"updated":"2014-02-11 15:18:37.000000000","message":"suggestion: consider separate the creation in above in an helper method, something like _create_network(self, router_external\u003dTrue)","commit_id":"208133cc43f9f2958e0c5f988b469b6d4481b8fd"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"806c1b2aafa01227a3f29657fb8851a360210a36","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027),"},{"line_number":29,"context_line":"                     \u0027router:external\u0027: True}"},{"line_number":30,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":31,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":32,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":33,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":34,"context_line":"        # Verifies router:external parameter"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUX%2F%2Flgk%3D","line":31,"in_reply_to":"AAAAUX%2F%2FrXs%3D","updated":"2014-02-12 06:58:05.000000000","message":"Ok, will do","commit_id":"208133cc43f9f2958e0c5f988b469b6d4481b8fd"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"794d653839fedd0eef8e068bc4c25578c7d4396d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            name\u003ddata_utils.rand_name(\u0027network-\u0027))"},{"line_number":42,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":43,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":44,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":45,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":46,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":47,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUX%2F%2Fr%2Bc%3D","line":44,"updated":"2014-02-11 15:18:37.000000000","message":"afaik the cleanups are already done in the teardown method on the base class.","commit_id":"208133cc43f9f2958e0c5f988b469b6d4481b8fd"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c8bc8a72087d83dd4ca75a584cd02a00d3934388","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            name\u003ddata_utils.rand_name(\u0027network-\u0027))"},{"line_number":42,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":43,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":44,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":45,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":46,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":47,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUX%2F%2FgfA%3D","line":44,"in_reply_to":"AAAAUX%2F%2Flg8%3D","updated":"2014-02-13 23:16:51.000000000","message":"@Mauro Rodrigues\n\nYeah, I saw your comment and was puzzled. So maybe Ann and I are missing something. Would you point out exactly where is that tear down method that deletes the resources?","commit_id":"208133cc43f9f2958e0c5f988b469b6d4481b8fd"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"806c1b2aafa01227a3f29657fb8851a360210a36","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            name\u003ddata_utils.rand_name(\u0027network-\u0027))"},{"line_number":42,"context_line":"        network \u003d body[\u0027network\u0027]"},{"line_number":43,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":44,"context_line":"        self.addCleanup(self.admin_client.delete_network, network[\u0027id\u0027])"},{"line_number":45,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":46,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":47,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUX%2F%2Flg8%3D","line":44,"in_reply_to":"AAAAUX%2F%2Fr%2Bc%3D","updated":"2014-02-12 06:58:05.000000000","message":"May be I missed something, but in tearDown cleanups are done only for that networks that were created with self.create_network. Here I create network with self.admin_client.create_network, so I have to clean it up myself.","commit_id":"208133cc43f9f2958e0c5f988b469b6d4481b8fd"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"ac4bd4acf28d04f9e99a936feba387e0333198b7","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def _create_network(self, external\u003dTrue):"},{"line_number":26,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027)}"},{"line_number":27,"context_line":"        if external is not None:"},{"line_number":28,"context_line":"            post_body[\u0027router:external\u0027] \u003d external"},{"line_number":29,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":30,"context_line":"        network \u003d body[\u0027network\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUX%2F%2FUx0%3D","line":27,"updated":"2014-02-13 23:33:16.000000000","message":"I would right:\n\nif external:\n\nWhether you pass to this function external\u003dFalse or external\u003dNone, it will evaluate to False anyway in the if statement.","commit_id":"e3b966681b3a827925c30b9d62d0a2b81ce4bcb1"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"c0d060e70a3b052ffda7035a38fba6bfd099b549","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def _create_network(self, external\u003dTrue):"},{"line_number":26,"context_line":"        post_body \u003d {\u0027name\u0027: data_utils.rand_name(\u0027network-\u0027)}"},{"line_number":27,"context_line":"        if external is not None:"},{"line_number":28,"context_line":"            post_body[\u0027router:external\u0027] \u003d external"},{"line_number":29,"context_line":"        resp, body \u003d self.admin_client.create_network(**post_body)"},{"line_number":30,"context_line":"        network \u003d body[\u0027network\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUX%2F%2FTKc%3D","line":27,"in_reply_to":"AAAAUX%2F%2FUx0%3D","updated":"2014-02-14 05:24:02.000000000","message":"Yes, thanks, that will be much better! I\u0027ll correct in my next patch.","commit_id":"e3b966681b3a827925c30b9d62d0a2b81ce4bcb1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"ac4bd4acf28d04f9e99a936feba387e0333198b7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def test_update_external_network(self):"},{"line_number":44,"context_line":"        # Update a network as an admin user specifying the"},{"line_number":45,"context_line":"        # external network extension attribute"},{"line_number":46,"context_line":"        network \u003d self._create_network(external\u003dNone)"},{"line_number":47,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":48,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":49,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUX%2F%2FUwY%3D","line":46,"updated":"2014-02-13 23:33:16.000000000","message":"external\u003dFalse is more meaningful, in my opinion","commit_id":"e3b966681b3a827925c30b9d62d0a2b81ce4bcb1"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"68ebe9c9aba77dfeb1ddfab409a0e533954c9d9e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self.assertIn(self.network[\u0027id\u0027], networks_list)"},{"line_number":66,"context_line":"        for net in body[\u0027networks\u0027]:"},{"line_number":67,"context_line":"            if net[\u0027id\u0027] \u003d\u003d self.network[\u0027id\u0027]:"},{"line_number":68,"context_line":"                self.assertFalse(net[\u0027router:external\u0027])"},{"line_number":69,"context_line":"            elif net[\u0027id\u0027] \u003d\u003d external_network[\u0027id\u0027]:"},{"line_number":70,"context_line":"                self.assertTrue(net[\u0027router:external\u0027])"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAU3%2F%2FsFE%3D","line":68,"updated":"2014-02-25 08:55:32.000000000","message":"Does it make sense to get rid of condition statement in favor of:\n self.assertEqual(net[\u0027id\u0027] \u003d\u003d self.network[\u0027id\u0027], \n       not net[\u0027router:external\u0027])","commit_id":"a9389f439eaf36e3baca215de5971e4ba0ef067f"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"9931a4813878a6a59abb03ef28f747c3ffa58a6d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self.assertIn(self.network[\u0027id\u0027], networks_list)"},{"line_number":66,"context_line":"        for net in body[\u0027networks\u0027]:"},{"line_number":67,"context_line":"            if net[\u0027id\u0027] \u003d\u003d self.network[\u0027id\u0027]:"},{"line_number":68,"context_line":"                self.assertFalse(net[\u0027router:external\u0027])"},{"line_number":69,"context_line":"            elif net[\u0027id\u0027] \u003d\u003d external_network[\u0027id\u0027]:"},{"line_number":70,"context_line":"                self.assertTrue(net[\u0027router:external\u0027])"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAU3%2F%2Frq0%3D","line":68,"in_reply_to":"AAAAU3%2F%2FsFE%3D","updated":"2014-02-25 09:33:47.000000000","message":"It is good check, but I think I won\u0027t change this, as it is better for understanding.","commit_id":"a9389f439eaf36e3baca215de5971e4ba0ef067f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f680daa6f60674b4709b0480d14b11576720fdf5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def test_update_external_network(self):"},{"line_number":44,"context_line":"        # Update a network as an admin user specifying the"},{"line_number":45,"context_line":"        # external network extension attribute"},{"line_number":46,"context_line":"        network \u003d self._create_network(external\u003dFalse)"},{"line_number":47,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":48,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":49,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAWH%2F%2FPb8%3D","line":46,"updated":"2014-03-19 06:55:51.000000000","message":"better to add\n\n  self.assertTrue(network[\u0027router:external\u0027])\n\nfor checking an update_network effect.","commit_id":"a9122d8994046e3a6c7c0b27a074eaf3af3371b9"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"ef7183ac47cace5b73bdac8e93345177800b082b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def test_update_external_network(self):"},{"line_number":44,"context_line":"        # Update a network as an admin user specifying the"},{"line_number":45,"context_line":"        # external network extension attribute"},{"line_number":46,"context_line":"        network \u003d self._create_network(external\u003dFalse)"},{"line_number":47,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":48,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":49,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAWH%2F%2FPQ4%3D","line":46,"in_reply_to":"AAAAWH%2F%2FPWQ%3D","updated":"2014-03-19 07:32:28.000000000","message":"I\u0027ll add check in next patch set.","commit_id":"a9122d8994046e3a6c7c0b27a074eaf3af3371b9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e8be3c871bc675cf132d29ec4afe654489f49ae7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def test_update_external_network(self):"},{"line_number":44,"context_line":"        # Update a network as an admin user specifying the"},{"line_number":45,"context_line":"        # external network extension attribute"},{"line_number":46,"context_line":"        network \u003d self._create_network(external\u003dFalse)"},{"line_number":47,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":48,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":49,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAWH%2F%2FPWQ%3D","line":46,"in_reply_to":"AAAAWH%2F%2FPXM%3D","updated":"2014-03-19 07:13:47.000000000","message":"Sorry for typo, how about\n\n self.assertNotIn(\u0027router:external\u0027, network)?\n\nI feel better to confirm the target network is not external before updating it to external.","commit_id":"a9122d8994046e3a6c7c0b27a074eaf3af3371b9"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"2b1005158e3c809e7be85f52fa82ff91162851a9","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def test_update_external_network(self):"},{"line_number":44,"context_line":"        # Update a network as an admin user specifying the"},{"line_number":45,"context_line":"        # external network extension attribute"},{"line_number":46,"context_line":"        network \u003d self._create_network(external\u003dFalse)"},{"line_number":47,"context_line":"        update_body \u003d {\u0027router:external\u0027: True}"},{"line_number":48,"context_line":"        resp, body \u003d self.admin_client.update_network(network[\u0027id\u0027],"},{"line_number":49,"context_line":"                                                      **update_body)"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAWH%2F%2FPXM%3D","line":46,"in_reply_to":"AAAAWH%2F%2FPb8%3D","updated":"2014-03-19 07:10:23.000000000","message":"Do you mean \n\n     self.assertFalse(network[\u0027router:external\u0027])?\n\nI don\u0027t think that it is necessary to add this check here as  _create_network is not tested here. Also network might not have this parameter at all.","commit_id":"a9122d8994046e3a6c7c0b27a074eaf3af3371b9"}],"tempest/api/network/test_external_network_extension.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3ed662d2f87903a5a8dd7051d951c1a167d5333b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest.common.utils import data_utils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class ExternalNetworksTestJSON(base.BaseAdminNetworkTest):"},{"line_number":20,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_create_external_network(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2FwUY%3D","line":19,"updated":"2014-01-02 10:11:20.000000000","message":"there are other admin tests being developed for Neutron tests.\nFor instance: https://review.openstack.org/#/c/63625/\n\nI am fine with both having different tests cases in different modules or a single test case. I just wanted to bring this up so perhaps devs might coordinate among themselves.","commit_id":"77e3cd978820e4868a470d9b39cac5285614ad46"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"aa21b2bad97abad5d7ff5cb1384625dfc5798539","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest.common.utils import data_utils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class ExternalNetworksTestJSON(base.BaseAdminNetworkTest):"},{"line_number":20,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def test_create_external_network(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FuGQ%3D","line":19,"in_reply_to":"AAAAT3%2F%2FwUY%3D","updated":"2014-01-09 08:09:28.000000000","message":"We are creating different tests so they should be kept in separate modules. But it seems suitable to move my tests to /admin/. Is this ok or do you suggest some another changes?","commit_id":"77e3cd978820e4868a470d9b39cac5285614ad46"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3ed662d2f87903a5a8dd7051d951c1a167d5333b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        if \u0027router:external\u0027 in network:"},{"line_number":30,"context_line":"            self.assertEqual(network[\u0027router:external\u0027], True)"},{"line_number":31,"context_line":"        else:"},{"line_number":32,"context_line":"            self.assertEqual(network[\u0027external\u0027], \u0027True\u0027)"},{"line_number":33,"context_line":"        self.admin_client.delete_network(network[\u0027id\u0027])"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_update_external_network(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2FwUI%3D","line":32,"updated":"2014-01-02 10:11:20.000000000","message":"This is interesting.\nIn which case do we have neutron return \u0027external\u0027 as a string?\n\nTo me this appears to be a neutron bug.\n\nThis comment applies to several methods in this module","commit_id":"77e3cd978820e4868a470d9b39cac5285614ad46"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"aa21b2bad97abad5d7ff5cb1384625dfc5798539","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        if \u0027router:external\u0027 in network:"},{"line_number":30,"context_line":"            self.assertEqual(network[\u0027router:external\u0027], True)"},{"line_number":31,"context_line":"        else:"},{"line_number":32,"context_line":"            self.assertEqual(network[\u0027external\u0027], \u0027True\u0027)"},{"line_number":33,"context_line":"        self.admin_client.delete_network(network[\u0027id\u0027])"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_update_external_network(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FuRg%3D","line":32,"in_reply_to":"AAAAT3%2F%2FwUI%3D","updated":"2014-01-09 08:09:28.000000000","message":"This is done so because XML expects string and has another name of parameter.","commit_id":"77e3cd978820e4868a470d9b39cac5285614ad46"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3ed662d2f87903a5a8dd7051d951c1a167d5333b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            self.assertEqual(updated_network[\u0027router:external\u0027], True)"},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            self.assertEqual(updated_network[\u0027external\u0027], \u0027True\u0027)"},{"line_number":48,"context_line":"        self.admin_client.delete_network(network[\u0027id\u0027])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_list_external_networks(self):"},{"line_number":51,"context_line":"        post_body \u003d {\u0027name\u0027:data_utils.rand_name(\u0027network-\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2FwTs%3D","line":48,"updated":"2014-01-02 10:11:20.000000000","message":"instead of explicitly deleting the network at the end of test, consider adding a cleanup action.\n\nOtherwise the network will not be removed if the assertions fail.\n\nThis comment applies to all the tests in this module","commit_id":"77e3cd978820e4868a470d9b39cac5285614ad46"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3ed662d2f87903a5a8dd7051d951c1a167d5333b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        resp, body \u003d self.client.list_networks()"},{"line_number":59,"context_line":"        networks_list \u003d body[\u0027networks\u0027]"},{"line_number":60,"context_line":"        self.assertIn(external_network[\u0027id\u0027] and network[\u0027id\u0027],"},{"line_number":61,"context_line":"                      [net[\u0027id\u0027] for net in networks_list])"},{"line_number":62,"context_line":"        self.admin_client.delete_network(network[\u0027id\u0027])"},{"line_number":63,"context_line":"        self.admin_client.delete_network(external_network[\u0027id\u0027])"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2FwTM%3D","line":61,"updated":"2014-01-02 10:11:20.000000000","message":"is the above assertion aimed at verifying both network identifiers are in network_list?\n\nIf so, I\u0027m not sure if it\u0027s correct or not, as the code will evaluate the expression in the first actual parameter and then pass only network[\u0027id\u0027] to assertIn, in my opinion.","commit_id":"77e3cd978820e4868a470d9b39cac5285614ad46"}]}
