)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"890f9538ec5c7403556caa3098a7ce389fa98321","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added checks for:"},{"line_number":10,"context_line":" - the response from a floating ip creation contains the port\u0027s fixed ip address;"},{"line_number":11,"context_line":" - creating a floating ip specifying a floating ip address;"},{"line_number":12,"context_line":" - listing all floating ip\u0027s from an admin user;"},{"line_number":13,"context_line":" - a normal user only sees his floating ip\u0027s in a list operation."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUH%2F%2F0k8%3D","line":11,"updated":"2014-01-08 03:37:36.000000000","message":"specifying a fixed ip address","commit_id":"46185994276953238ab35c8bc12b391bb54601eb"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"7ada274fcdfbf01f983e473c90c8be460c7f1708","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Also create_floating_ip and update_floating_ip was updated to use"},{"line_number":17,"context_line":"_create and _update from network_client_base."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ie517a8b51414f9331a8c38822054c6759ac9a01c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"AAAAUH%2F9XQM%3D","line":18,"updated":"2014-02-07 12:56:42.000000000","message":"Add blueprint or bug please","commit_id":"d171abe302e7b475ce08314dd454a50fab74001a"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"785bd4a93bb98bf8b3441d459f4bb85edebb96b0","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Also create_floating_ip and update_floating_ip was updated to use"},{"line_number":17,"context_line":"_create and _update from network_client_base."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ie517a8b51414f9331a8c38822054c6759ac9a01c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"AAAAUH%2F9Wew%3D","line":18,"in_reply_to":"AAAAUH%2F9W%2BY%3D","updated":"2014-02-07 15:06:24.000000000","message":"Ok let it be, I\u0027ve seen many patches for tempest without blueprint nor bug link","commit_id":"d171abe302e7b475ce08314dd454a50fab74001a"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"a967279b48760ace15e27c2616e56c86ad7a2533","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Also create_floating_ip and update_floating_ip was updated to use"},{"line_number":17,"context_line":"_create and _update from network_client_base."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ie517a8b51414f9331a8c38822054c6759ac9a01c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"AAAAUH%2F9W%2BY%3D","line":18,"in_reply_to":"AAAAUH%2F9XQM%3D","updated":"2014-02-07 13:38:49.000000000","message":"This change is done according to etherpad page https://etherpad.openstack.org/p/icehouse-summit-qa-neutron. I don\u0027t know if I really need to create a bug in this way.","commit_id":"d171abe302e7b475ce08314dd454a50fab74001a"}],"tempest/api/network/admin/test_floating_ips_admin_actions.py":[{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"1b9082d4645b942cb0bf8a03cc1c7ee448747ef1","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":37,"id":"AAAAXH%2F%2FolE%3D","line":1,"updated":"2014-04-18 16:58:43.000000000","message":"should be 2014  :-)","commit_id":"4556385fa79cf81922f0481e4ef3e9383b78c1e2"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"2e3767758c5539d7984ab7e4579b15e87c7d819b","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":37,"id":"AAAAXH%2F%2FgAU%3D","line":1,"in_reply_to":"AAAAXH%2F%2FolE%3D","updated":"2014-04-21 07:49:50.000000000","message":"Thanks","commit_id":"4556385fa79cf81922f0481e4ef3e9383b78c1e2"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"cefb8847ea42ec60a3fcb421ab32f63ed2f4abfa","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":34,"context_line":"    def test_list_floating_ips_from_admin_and_nonadmin(self):"},{"line_number":35,"context_line":"        # Create floating ip from admin user"},{"line_number":36,"context_line":"        resp, floating_ip_admin \u003d self.admin_client.create_floatingip("},{"line_number":37,"context_line":"            floating_network_id\u003dself.ext_net_id)"},{"line_number":38,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAXX%2F%2F61M%3D","line":35,"updated":"2014-04-25 09:43:10.000000000","message":"Would be better to use  \u0027demo\u0027 (primary) user/tenant for floating ip creation, and using the alt_demo (alt_user) for checking he is not able to see floating ip  in tenant where he does not have any role. \n\nAnd also would be better to use the admin\u0027s all mighty floating ip listing capabilities on tenant where he is not a member.","commit_id":"fbdae40475031b09e7318ef2906c6199f7d31a20"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"386a74ba2fcbd14f26e8d7f881c35e9692a4b1ae","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":34,"context_line":"    def test_list_floating_ips_from_admin_and_nonadmin(self):"},{"line_number":35,"context_line":"        # Create floating ip from admin user"},{"line_number":36,"context_line":"        resp, floating_ip_admin \u003d self.admin_client.create_floatingip("},{"line_number":37,"context_line":"            floating_network_id\u003dself.ext_net_id)"},{"line_number":38,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAXX%2F%2FvJ4%3D","line":35,"in_reply_to":"AAAAXX%2F%2F61M%3D","updated":"2014-04-28 11:14:47.000000000","message":"Thanks for pointing me this. Will correct in next patch set.","commit_id":"fbdae40475031b09e7318ef2906c6199f7d31a20"}],"tempest/api/network/base.py":[{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"583671b6da656899fc33f7ae3f80309da4b46022","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        return router"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    @classmethod"},{"line_number":176,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":177,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":178,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":179,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FLRI%3D","line":176,"updated":"2014-01-16 18:08:20.000000000","message":"Not a tempest expert but I find odd to remove **kwargs from this method, you could easily extend the attributes in this function if you keep it.","commit_id":"671865d07d2412cfe5f99ac6662001fe881e7af5"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"change_message_id":"1faef33975e9321513829b5f7192aa1124937837","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        return router"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    @classmethod"},{"line_number":176,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":177,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":178,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":179,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FLKQ%3D","line":176,"in_reply_to":"AAAAUH%2F%2FLOE%3D","updated":"2014-01-16 18:56:14.000000000","message":"Understood! It makes sense","commit_id":"671865d07d2412cfe5f99ac6662001fe881e7af5"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"96158f52ebaaa0dce7a31e55b13b0a972db34dd5","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        return router"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    @classmethod"},{"line_number":176,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":177,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":178,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":179,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FLOE%3D","line":176,"in_reply_to":"AAAAUH%2F%2FLRI%3D","updated":"2014-01-16 18:18:11.000000000","message":"In commit message I wrote \"Also create_floating_ip and update_floating_ip was updated to use _create and _update from network_client_base.\" Now it is used special _creater method from network_client_base it contains  **kwargs.\nSame work was done in this change https://review.openstack.org/62614 for pool.","commit_id":"671865d07d2412cfe5f99ac6662001fe881e7af5"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"7ada274fcdfbf01f983e473c90c8be460c7f1708","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        return fip"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @classmethod"},{"line_number":187,"context_line":"    def update_floatingip(cls, port_id):"},{"line_number":188,"context_line":"        resp, body \u003d cls.client.update_floatingip(port_id\u003dport_id)"},{"line_number":189,"context_line":"        floatingip \u003d body[\u0027floatingip\u0027]"},{"line_number":190,"context_line":"        return floatingip"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F9XR4%3D","line":187,"updated":"2014-02-07 12:56:42.000000000","message":"where are you using this method? I may have missed something but it seems to me that you are using only the update_floatingip method defined in the neutron client in test_floating_ips.py . If that\u0027s the case please remove this method, otherwise discard my comment.","commit_id":"d171abe302e7b475ce08314dd454a50fab74001a"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"2b912e150415f7285163068a76c0f275a3480990","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        return fip"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @classmethod"},{"line_number":187,"context_line":"    def update_floatingip(cls, port_id):"},{"line_number":188,"context_line":"        resp, body \u003d cls.client.update_floatingip(port_id\u003dport_id)"},{"line_number":189,"context_line":"        floatingip \u003d body[\u0027floatingip\u0027]"},{"line_number":190,"context_line":"        return floatingip"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUX%2F%2F85E%3D","line":187,"in_reply_to":"AAAAUH%2F9XR4%3D","updated":"2014-02-08 18:13:39.000000000","message":"+1 to the suggestion. This method seems to be trivial enough to use client.update_floatingip directly","commit_id":"d171abe302e7b475ce08314dd454a50fab74001a"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"023d2578b06c45ee25579132a01ffe67d50a1690","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        return router"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    @classmethod"},{"line_number":185,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":186,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":187,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":188,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUX%2F%2FjGk%3D","line":185,"updated":"2014-02-12 12:56:29.000000000","message":"IMO, \"def create_floatingip(cls, **kwargs):\" is better.  :-)","commit_id":"3ad7f9bb2c1b58f03d653a4633be0a84544e1ade"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"48638e02b2af327c35ec74e8f76cea9d9cab2232","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        return router"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    @classmethod"},{"line_number":185,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":186,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":187,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":188,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUX%2F%2Fak8%3D","line":185,"in_reply_to":"AAAAUX%2F%2FjGk%3D","updated":"2014-02-13 11:38:54.000000000","message":"I prefer to leave this as it is now because other such methods in this class don\u0027t have **kwargs. This one should not have them either for consistency.","commit_id":"3ad7f9bb2c1b58f03d653a4633be0a84544e1ade"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"e351a97ff43c4188bd067382724a1243c71b9508","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        return router"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    @classmethod"},{"line_number":200,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":201,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":202,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":203,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAVn%2F%2FajY%3D","line":200,"updated":"2014-03-06 08:07:57.000000000","message":"Why did you removed the **kwargs ?\n\nMay be it is not used at the moment, but I think it should be preserved.","commit_id":"0473fd7498590320a32f78a6bb9a946d46195cdd"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"06369fdfa767aa325ad895c9705afe339e0e1583","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        return router"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    @classmethod"},{"line_number":200,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":201,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":202,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":203,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAWH%2F%2F7qk%3D","line":200,"in_reply_to":"AAAAVn%2F%2Fahg%3D","updated":"2014-03-12 21:01:08.000000000","message":"This method seems to only be called in one place from setUpClass of FloatingIPAdminTestJSON. Probably it could just be removed.","commit_id":"0473fd7498590320a32f78a6bb9a946d46195cdd"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"4cd192a52a1bc87f61d1f5828e94b8de36f3afc5","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        return router"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    @classmethod"},{"line_number":200,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":201,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":202,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":203,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAVn%2F%2Fahg%3D","line":200,"in_reply_to":"AAAAVn%2F%2FajY%3D","updated":"2014-03-06 08:11:54.000000000","message":"In commit message I wrote \"Also create_floating_ip and update_floating_ip was updated to use _create and _update from network_client_base.\" Now it is used special _creater method from network_client_base it contains **kwargs.","commit_id":"0473fd7498590320a32f78a6bb9a946d46195cdd"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"30a2c4b252fb247e3632274475d25f60d7ca5afb","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        return router"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    @classmethod"},{"line_number":200,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":201,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":202,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":203,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":27,"id":"AAAAWH%2F%2F4mY%3D","line":200,"in_reply_to":"AAAAWH%2F%2F7qk%3D","updated":"2014-03-13 06:15:31.000000000","message":"I prefer to leave it. It may be needed later.","commit_id":"0473fd7498590320a32f78a6bb9a946d46195cdd"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5c646fee0f481a094f3de398835867fb238c2fee","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        return router"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    @classmethod"},{"line_number":196,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":197,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":198,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":199,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAWH%2F%2Fsuk%3D","line":196,"updated":"2014-03-14 12:19:20.000000000","message":"why the method rename?","commit_id":"92b250020741fa941bba3d4157e7d82c51918274"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e29f08341b7f7805a26742fd11d8c11e5d5a6efc","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        return router"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    @classmethod"},{"line_number":196,"context_line":"    def create_floatingip(cls, external_network_id):"},{"line_number":197,"context_line":"        \"\"\"Wrapper utility that returns a test floating IP.\"\"\""},{"line_number":198,"context_line":"        resp, body \u003d cls.client.create_floatingip("},{"line_number":199,"context_line":"            floating_network_id\u003dexternal_network_id)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAWH%2F%2Fss0%3D","line":196,"in_reply_to":"AAAAWH%2F%2Fsuk%3D","updated":"2014-03-14 12:29:55.000000000","message":"It was renamed to make it similar to clients create_floatingip, which is now named so to use _create and _update from network_client_base.","commit_id":"92b250020741fa941bba3d4157e7d82c51918274"}],"tempest/api/network/test_floating_ips.py":[{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"890f9538ec5c7403556caa3098a7ce389fa98321","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        self.assertIsNone(updated_floating_ip[\u0027fixed_ip_address\u0027])"},{"line_number":123,"context_line":"        self.assertIsNone(updated_floating_ip[\u0027router_id\u0027])"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_create_floating_api_spec_on_address(self):"},{"line_number":126,"context_line":"        resp, boby \u003d self.client.create_floating_ip("},{"line_number":127,"context_line":"            self.ext_net_id,"},{"line_number":128,"context_line":"            port_id\u003dself.ports[0][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F0k0%3D","line":125,"updated":"2014-01-08 03:37:36.000000000","message":"suggest change the name for this case, to make it more understandable","commit_id":"46185994276953238ab35c8bc12b391bb54601eb"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"8067f4b72d80d3e95caa8ba53e795555c8c1d497","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            port_id\u003dself.ports[0][\u0027id\u0027],"},{"line_number":129,"context_line":"            fixed_ip_address\u003d\u002710.100.0.2\u0027)"},{"line_number":130,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":131,"context_line":"        create_floating_ip \u003d boby[\u0027floatingip\u0027]"},{"line_number":132,"context_line":"        self.assertIsNotNone(create_floating_ip[\u0027id\u0027])"},{"line_number":133,"context_line":"        self.assertEqual(create_floating_ip[\u0027fixed_ip_address\u0027],"},{"line_number":134,"context_line":"                         \u002710.100.0.2\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAT3%2F%2F8uQ%3D","line":131,"updated":"2013-12-26 14:14:40.000000000","message":"just a small nit: would name it create*d*_floating_ip or just floating_ip","commit_id":"46185994276953238ab35c8bc12b391bb54601eb"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"8067f4b72d80d3e95caa8ba53e795555c8c1d497","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        self.assertEqual(create_floating_ip[\u0027fixed_ip_address\u0027],"},{"line_number":134,"context_line":"                         \u002710.100.0.2\u0027)"},{"line_number":135,"context_line":"        resp, floating_ip \u003d self.client.update_floating_ip("},{"line_number":136,"context_line":"            create_floating_ip[\u0027id\u0027], port_id\u003dNone)"},{"line_number":137,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":138,"context_line":"        self._delete_floating_ip(create_floating_ip[\u0027id\u0027])"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAT3%2F%2F8uI%3D","line":136,"updated":"2013-12-26 14:14:40.000000000","message":"am I wrong or does this update port_id attribute? why not assert it?","commit_id":"46185994276953238ab35c8bc12b391bb54601eb"},{"author":{"_account_id":7930,"name":"jun xie","email":"easonxie160@163.com","username":"jeffreycoho"},"change_message_id":"890f9538ec5c7403556caa3098a7ce389fa98321","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        self.assertIn(floating_ip_admin[\u0027floatingip\u0027][\u0027id\u0027], floating_ip_ids)"},{"line_number":159,"context_line":"        self.admin_client.delete_floatingip(floating_ip[\u0027floatingip\u0027][\u0027id\u0027])"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def test_list_floating_ip_from_user(self):"},{"line_number":162,"context_line":"        resp, body \u003d self.admin_client.create_floating_ip("},{"line_number":163,"context_line":"            self.ext_net_id)"},{"line_number":164,"context_line":"        floating_ip_admin \u003d body[\u0027floatingip\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F0j0%3D","line":161,"updated":"2014-01-08 03:37:36.000000000","message":"better to change to test_list_floating_ip_from_nonadmin?","commit_id":"46185994276953238ab35c8bc12b391bb54601eb"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"fa3b0156cb48c69f2ab307c1d3aa560b1d34c2dd","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.assertIsNotNone(updated_floating_ip[\u0027fixed_ip_address\u0027])"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":160,"context_line":"    def test_create_floating_api_specifying_on_fixed_ip_address(self):"},{"line_number":161,"context_line":"        resp, boby \u003d self.client.create_floating_ip("},{"line_number":162,"context_line":"            self.ext_net_id,"},{"line_number":163,"context_line":"            port_id\u003dself.ports[0][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fscw%3D","line":160,"updated":"2014-01-09 15:29:20.000000000","message":"Do you mean \"create_floating_ip\"?","commit_id":"d4d9440cfc16e74bd51ba9ebd423b4c77a186d1c"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"ac3ead0cf66c44cabafa26450b7bc2682d94929d","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.assertIsNotNone(updated_floating_ip[\u0027fixed_ip_address\u0027])"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":160,"context_line":"    def test_create_floating_api_specifying_on_fixed_ip_address(self):"},{"line_number":161,"context_line":"        resp, boby \u003d self.client.create_floating_ip("},{"line_number":162,"context_line":"            self.ext_net_id,"},{"line_number":163,"context_line":"            port_id\u003dself.ports[0][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FoUg%3D","line":160,"in_reply_to":"AAAAUH%2F%2Fscw%3D","updated":"2014-01-10 10:54:57.000000000","message":"Yes, thanks,","commit_id":"d4d9440cfc16e74bd51ba9ebd423b4c77a186d1c"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"fa3b0156cb48c69f2ab307c1d3aa560b1d34c2dd","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"},{"line_number":168,"context_line":"        self.assertEqual(created_floating_ip[\u0027fixed_ip_address\u0027],"},{"line_number":169,"context_line":"                         \u002710.100.0.2\u0027)"},{"line_number":170,"context_line":"        resp, floating_ip \u003d self.client.update_floating_ip("},{"line_number":171,"context_line":"            created_floating_ip[\u0027id\u0027], port_id\u003dNone)"},{"line_number":172,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":173,"context_line":"        self.assertIsNone(floating_ip[\u0027floatingip\u0027][\u0027port_id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fscc%3D","line":170,"updated":"2014-01-09 15:29:20.000000000","message":"Possibly you could mention this action in the function name..","commit_id":"d4d9440cfc16e74bd51ba9ebd423b4c77a186d1c"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"ac3ead0cf66c44cabafa26450b7bc2682d94929d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"},{"line_number":168,"context_line":"        self.assertEqual(created_floating_ip[\u0027fixed_ip_address\u0027],"},{"line_number":169,"context_line":"                         \u002710.100.0.2\u0027)"},{"line_number":170,"context_line":"        resp, floating_ip \u003d self.client.update_floating_ip("},{"line_number":171,"context_line":"            created_floating_ip[\u0027id\u0027], port_id\u003dNone)"},{"line_number":172,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":173,"context_line":"        self.assertIsNone(floating_ip[\u0027floatingip\u0027][\u0027port_id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FoT8%3D","line":170,"in_reply_to":"AAAAUH%2F%2Fscc%3D","updated":"2014-01-10 10:54:57.000000000","message":"This is just clearing up.","commit_id":"d4d9440cfc16e74bd51ba9ebd423b4c77a186d1c"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"fa3b0156cb48c69f2ab307c1d3aa560b1d34c2dd","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":199,"context_line":"    def test_list_floating_ip_from_nonadmin(self):"},{"line_number":200,"context_line":"        resp, body \u003d self.admin_client.create_floating_ip("},{"line_number":201,"context_line":"            self.ext_net_id)"},{"line_number":202,"context_line":"        floating_ip_admin \u003d body[\u0027floatingip\u0027]"},{"line_number":203,"context_line":"        resp, body \u003d self.client.create_floating_ip(self.ext_net_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FsNY%3D","line":200,"updated":"2014-01-09 15:29:20.000000000","message":"What if we move this to setUpClass? Since botg tests are using it?","commit_id":"d4d9440cfc16e74bd51ba9ebd423b4c77a186d1c"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"ac3ead0cf66c44cabafa26450b7bc2682d94929d","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":199,"context_line":"    def test_list_floating_ip_from_nonadmin(self):"},{"line_number":200,"context_line":"        resp, body \u003d self.admin_client.create_floating_ip("},{"line_number":201,"context_line":"            self.ext_net_id)"},{"line_number":202,"context_line":"        floating_ip_admin \u003d body[\u0027floatingip\u0027]"},{"line_number":203,"context_line":"        resp, body \u003d self.client.create_floating_ip(self.ext_net_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FoMo%3D","line":200,"in_reply_to":"AAAAUH%2F%2FsNY%3D","updated":"2014-01-10 10:54:57.000000000","message":"As you can see since different clients are used here, it is not reliable to move both of them to setUp. I\u0027ll move floating_ip from non admin user to setUp.","commit_id":"d4d9440cfc16e74bd51ba9ebd423b4c77a186d1c"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"fa3b0156cb48c69f2ab307c1d3aa560b1d34c2dd","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        resp, body \u003d self.admin_client.create_floating_ip("},{"line_number":201,"context_line":"            self.ext_net_id)"},{"line_number":202,"context_line":"        floating_ip_admin \u003d body[\u0027floatingip\u0027]"},{"line_number":203,"context_line":"        resp, body \u003d self.client.create_floating_ip(self.ext_net_id)"},{"line_number":204,"context_line":"        floating_ip \u003d body[\u0027floatingip\u0027]"},{"line_number":205,"context_line":"        resp, body \u003d self.client.list_floatingips()"},{"line_number":206,"context_line":"        floating_ip_ids \u003d [f[\u0027id\u0027] for f in body[\u0027floatingips\u0027]]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FsNM%3D","line":203,"updated":"2014-01-09 15:29:20.000000000","message":"Same here, move to setUp?","commit_id":"d4d9440cfc16e74bd51ba9ebd423b4c77a186d1c"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"26f833a12c80f126c3448b9811ec3475304dfd3a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        resp, boby \u003d self.client.create_floating_ip("},{"line_number":162,"context_line":"            self.ext_net_id,"},{"line_number":163,"context_line":"            port_id\u003dself.ports[0][\u0027id\u0027],"},{"line_number":164,"context_line":"            fixed_ip_address\u003d\u002710.100.0.2\u0027)"},{"line_number":165,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":166,"context_line":"        created_floating_ip \u003d boby[\u0027floatingip\u0027]"},{"line_number":167,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZIU%3D","line":164,"updated":"2014-01-14 09:21:34.000000000","message":"I would suggest to change this value to some other from the middle of the range.\nThe reason is that in case some other floating ip tests are executed in parallel, they might consume the same ip address (from the start of the available range), and then this test will fail because ip is allocated.","commit_id":"a2732f0115be86c41aa7dac7dbbc7c05463d758d"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"26f833a12c80f126c3448b9811ec3475304dfd3a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"},{"line_number":168,"context_line":"        self.assertEqual(created_floating_ip[\u0027fixed_ip_address\u0027],"},{"line_number":169,"context_line":"                         \u002710.100.0.2\u0027)"},{"line_number":170,"context_line":"        resp, floating_ip \u003d self.client.update_floating_ip("},{"line_number":171,"context_line":"            created_floating_ip[\u0027id\u0027], port_id\u003dNone)"},{"line_number":172,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":173,"context_line":"        self.assertIsNone(floating_ip[\u0027floatingip\u0027][\u0027port_id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FZEU%3D","line":170,"updated":"2014-01-14 09:21:34.000000000","message":"it would be good if you could change all *_floating_ip to *_floatingip in this file. That will allow to remove corresponding methods from network client and use autogenerated methods.","commit_id":"a2732f0115be86c41aa7dac7dbbc7c05463d758d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"93b7882a2331b8c2cd922e58b2adfa3799daa573","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def test_create_list_show_update_delete_floating_ip(self):"},{"line_number":64,"context_line":"        # Creates a floating IP"},{"line_number":65,"context_line":"        resp, body \u003d self.client.create_floatingip("},{"line_number":66,"context_line":"            floating_network_id\u003dself.ext_net_id, port_id\u003dself.ports[0][\u0027id\u0027])"},{"line_number":67,"context_line":"        created_floating_ip \u003d body[\u0027floatingip\u0027]"},{"line_number":68,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"},{"line_number":69,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027tenant_id\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F9zec%3D","line":66,"updated":"2014-02-03 19:38:31.000000000","message":"Here","commit_id":"4190093e0f378a85ffdf12050e9c4ca8e0341472"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"93b7882a2331b8c2cd922e58b2adfa3799daa573","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def test_floating_ip_delete_port(self):"},{"line_number":120,"context_line":"        # Create a floating IP"},{"line_number":121,"context_line":"        resp, body \u003d self.client.create_floatingip("},{"line_number":122,"context_line":"            floating_network_id\u003dself.ext_net_id)"},{"line_number":123,"context_line":"        # Create a port"},{"line_number":124,"context_line":"        created_floating_ip \u003d body[\u0027floatingip\u0027]"},{"line_number":125,"context_line":"        resp, port \u003d self.client.create_port(network_id\u003dself.network[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F9zeM%3D","line":122,"updated":"2014-02-03 19:38:31.000000000","message":"Here","commit_id":"4190093e0f378a85ffdf12050e9c4ca8e0341472"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"93b7882a2331b8c2cd922e58b2adfa3799daa573","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    def test_floating_ip_update_different_router(self):"},{"line_number":147,"context_line":"        # Associate a floating IP to a port on a router"},{"line_number":148,"context_line":"        resp, body \u003d self.client.create_floatingip("},{"line_number":149,"context_line":"            floating_network_id\u003dself.ext_net_id, port_id\u003dself.ports[1][\u0027id\u0027])"},{"line_number":150,"context_line":"        created_floating_ip \u003d body[\u0027floatingip\u0027]"},{"line_number":151,"context_line":"        self.assertEqual(created_floating_ip[\u0027router_id\u0027], self.router[\u0027id\u0027])"},{"line_number":152,"context_line":"        network2 \u003d self.create_network()"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F9zd8%3D","line":149,"updated":"2014-02-03 19:38:31.000000000","message":"Here","commit_id":"4190093e0f378a85ffdf12050e9c4ca8e0341472"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"93b7882a2331b8c2cd922e58b2adfa3799daa573","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            floating_network_id\u003dself.ext_net_id,"},{"line_number":174,"context_line":"            port_id\u003dself.ports[1][\u0027id\u0027],"},{"line_number":175,"context_line":"            fixed_ip_address\u003dself.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"},{"line_number":176,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":177,"context_line":"        created_floating_ip \u003d boby[\u0027floatingip\u0027]"},{"line_number":178,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"},{"line_number":179,"context_line":"        self.assertEqual(created_floating_ip[\u0027fixed_ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F9zd0%3D","line":176,"updated":"2014-02-03 19:38:31.000000000","message":"Here","commit_id":"4190093e0f378a85ffdf12050e9c4ca8e0341472"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"93b7882a2331b8c2cd922e58b2adfa3799daa573","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":199,"context_line":"    def test_list_floating_ips_from_admin(self):"},{"line_number":200,"context_line":"        resp, floating_ip_admin \u003d self.admin_client.create_floatingip("},{"line_number":201,"context_line":"            floating_network_id\u003dself.ext_net_id)"},{"line_number":202,"context_line":"        resp, body \u003d self.admin_client.list_floatingips()"},{"line_number":203,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":204,"context_line":"        floating_ip_ids \u003d [f[\u0027id\u0027] for f in body[\u0027floatingips\u0027]]"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F9zds%3D","line":201,"updated":"2014-02-03 19:38:31.000000000","message":"Here","commit_id":"4190093e0f378a85ffdf12050e9c4ca8e0341472"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"93b7882a2331b8c2cd922e58b2adfa3799daa573","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":211,"context_line":"    def test_list_floating_ip_from_nonadmin(self):"},{"line_number":212,"context_line":"        resp, body \u003d self.admin_client.create_floatingip("},{"line_number":213,"context_line":"            floating_network_id\u003dself.ext_net_id)"},{"line_number":214,"context_line":"        floating_ip_admin \u003d body[\u0027floatingip\u0027]"},{"line_number":215,"context_line":"        resp, body \u003d self.client.list_floatingips()"},{"line_number":216,"context_line":"        floating_ip_ids \u003d [f[\u0027id\u0027] for f in body[\u0027floatingips\u0027]]"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F9zcY%3D","line":213,"updated":"2014-02-03 19:38:31.000000000","message":"Here","commit_id":"4190093e0f378a85ffdf12050e9c4ca8e0341472"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"7ada274fcdfbf01f983e473c90c8be460c7f1708","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    def setUpClass(cls):"},{"line_number":197,"context_line":"        super(FloatingIPAdminTestJSON, cls).setUpClass()"},{"line_number":198,"context_line":"        cls.ext_net_id \u003d CONF.network.public_network_id"},{"line_number":199,"context_line":"        cls.floating_ip \u003d cls.create_floatingip(cls.ext_net_id)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":202,"context_line":"    def test_list_floating_ips_from_admin(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F9XQU%3D","line":199,"updated":"2014-02-07 12:56:42.000000000","message":"This is the only place where you use the create_floatingip method from the base class. Everywhere else you use the client method self.client.create_floatingip. I propose to use the client method here too and remove the create_floatingip method from the base class. Maybe even more elegant would be to use everywhere in this file the base class method and to modify the base class to do the self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027]) there. That would spare some duplicated lines. If you choose this path I\u0027d do the base for the base class method update_floatingip","commit_id":"d171abe302e7b475ce08314dd454a50fab74001a"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"785bd4a93bb98bf8b3441d459f4bb85edebb96b0","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    def setUpClass(cls):"},{"line_number":197,"context_line":"        super(FloatingIPAdminTestJSON, cls).setUpClass()"},{"line_number":198,"context_line":"        cls.ext_net_id \u003d CONF.network.public_network_id"},{"line_number":199,"context_line":"        cls.floating_ip \u003d cls.create_floatingip(cls.ext_net_id)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":202,"context_line":"    def test_list_floating_ips_from_admin(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F9Wa0%3D","line":199,"in_reply_to":"AAAAUH%2F9W%2Fo%3D","updated":"2014-02-07 15:06:24.000000000","message":"I know that review but thanks for pointing me there. I think my suggestion is still valid. You are using the create_floatingip method from the base class only in line 199. Unless I am missing something in the other cases you are using the client method.\nself.client.update_floatingip or self.client.create_floatingip , (apart from line 199). I think the client method is used to check the return code, which is good, I am only suggesting to move the assertEqual(\u0027201\u0027, resp[\u0027status\u0027]) in the base class methods.\nIn that case for example update_floatingip in the base class method would be:\n\n@classmethod\ndef update_floatingip(cls, port_id):\n    resp, body \u003d cls.client.update_floatingip(port_id\u003dport_id)\n    self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])\n    floatingip \u003d body[\u0027floatingip\u0027]\n    return floatingip\n\n\nand line 186-189 of this file\n resp, floating_ip \u003d self.client.update_floatingip(\n    created_floating_ip[\u0027id\u0027], port_id\u003dNone)\n    self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])\n    created_floating_ip \u003d boby[\u0027floatingip\u0027]\n\ncould be just \n    created_floating_ip \u003d self.update_floatingip(\n        created_floating_ip[\u0027id\u0027], port_id\u003dNone)\n\nAnyway feel free to discard my suggestion. I will remove the -1 ,what I am proposing is just an improvement","commit_id":"d171abe302e7b475ce08314dd454a50fab74001a"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"36c86412770acfd4843ff9f76a7cbc06fef56100","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    def setUpClass(cls):"},{"line_number":197,"context_line":"        super(FloatingIPAdminTestJSON, cls).setUpClass()"},{"line_number":198,"context_line":"        cls.ext_net_id \u003d CONF.network.public_network_id"},{"line_number":199,"context_line":"        cls.floating_ip \u003d cls.create_floatingip(cls.ext_net_id)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":202,"context_line":"    def test_list_floating_ips_from_admin(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F9VLs%3D","line":199,"in_reply_to":"AAAAUH%2F9Wa0%3D","updated":"2014-02-07 17:23:09.000000000","message":"Thanks for such detailed explanation and for your review, I got your point. I will think about your suggestion.","commit_id":"d171abe302e7b475ce08314dd454a50fab74001a"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"a967279b48760ace15e27c2616e56c86ad7a2533","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    def setUpClass(cls):"},{"line_number":197,"context_line":"        super(FloatingIPAdminTestJSON, cls).setUpClass()"},{"line_number":198,"context_line":"        cls.ext_net_id \u003d CONF.network.public_network_id"},{"line_number":199,"context_line":"        cls.floating_ip \u003d cls.create_floatingip(cls.ext_net_id)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":202,"context_line":"    def test_list_floating_ips_from_admin(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F9W%2Fo%3D","line":199,"in_reply_to":"AAAAUH%2F9XQU%3D","updated":"2014-02-07 13:38:49.000000000","message":"In commit message I wrote \"Also create_floating_ip and update_floating_ip was updated to use _create and _update from network_client_base.\" Now it is used special _creater and _updater method from network_client_base. Same work was done in this change https://review.openstack.org/62614 for pool.\nPlease, take a look at the change that I mentioned I think after that it would be clear to you what I\u0027ve done. Now create_floatingip and update_floatingip  from base is used  everytime.","commit_id":"d171abe302e7b475ce08314dd454a50fab74001a"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"023d2578b06c45ee25579132a01ffe67d50a1690","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":125,"context_line":"        created_floating_ip \u003d body[\u0027floatingip\u0027]"},{"line_number":126,"context_line":"        self.addCleanup(self.client.delete_floating_ip,"},{"line_number":127,"context_line":"                        created_floating_ip[\u0027id\u0027])"},{"line_number":128,"context_line":"        # Create a port"},{"line_number":129,"context_line":"        resp, port \u003d self.client.create_port(network_id\u003dself.network[\u0027id\u0027])"},{"line_number":130,"context_line":"        created_port \u003d port[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUX%2F%2FmYI%3D","line":127,"updated":"2014-02-12 12:56:29.000000000","message":"I think the original code should be fine. Here could use self.create_floating_ip. It can help cleanup floating ip in parent\u0027s tearDownClass. you don\u0027t need addCleanup anymore. The status code is already checked in test_create_list_show_update_delete_floating_ip. So don\u0027t need check it redundantly.","commit_id":"3ad7f9bb2c1b58f03d653a4633be0a84544e1ade"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"3aab015a54ce3e0886ef72e4e39331e847885362","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":125,"context_line":"        created_floating_ip \u003d body[\u0027floatingip\u0027]"},{"line_number":126,"context_line":"        self.addCleanup(self.client.delete_floating_ip,"},{"line_number":127,"context_line":"                        created_floating_ip[\u0027id\u0027])"},{"line_number":128,"context_line":"        # Create a port"},{"line_number":129,"context_line":"        resp, port \u003d self.client.create_port(network_id\u003dself.network[\u0027id\u0027])"},{"line_number":130,"context_line":"        created_port \u003d port[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUX%2F%2Fdfo%3D","line":127,"in_reply_to":"AAAAUX%2F%2Fi0k%3D","updated":"2014-02-13 02:06:32.000000000","message":"Ann, \"_create/_update\" method is great work. I understood that and had look all of the previous comments before giving my comments.  Your patch is good. Here is just my suggestion to make the code better from my view. :-) Anyway, I could revoke my -1.\n\nThanks!","commit_id":"3ad7f9bb2c1b58f03d653a4633be0a84544e1ade"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"4e6bd762bd1efd0c1f239c7f220340682ae6761f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":125,"context_line":"        created_floating_ip \u003d body[\u0027floatingip\u0027]"},{"line_number":126,"context_line":"        self.addCleanup(self.client.delete_floating_ip,"},{"line_number":127,"context_line":"                        created_floating_ip[\u0027id\u0027])"},{"line_number":128,"context_line":"        # Create a port"},{"line_number":129,"context_line":"        resp, port \u003d self.client.create_port(network_id\u003dself.network[\u0027id\u0027])"},{"line_number":130,"context_line":"        created_port \u003d port[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUX%2F%2Fi0k%3D","line":127,"in_reply_to":"AAAAUX%2F%2FmYI%3D","updated":"2014-02-12 13:37:06.000000000","message":"In commit message I wrote \"Also create_floating_ip and update_floating_ip was updated to use _create and _update from network_client_base.\" Now it is used special _creater and _updater method from network_client_base. Same work was done in this change https://review.openstack.org/62614 for pool. Please, take a look at the change that I mentioned I think after that it would be clear to you what I\u0027ve done. Now I can\u0027t use self.create_floating_ip. As about checking status I\u0027ve got comment to patch 16 that I should check it everywhere.","commit_id":"3ad7f9bb2c1b58f03d653a4633be0a84544e1ade"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"023d2578b06c45ee25579132a01ffe67d50a1690","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":153,"context_line":"        created_floating_ip \u003d body[\u0027floatingip\u0027]"},{"line_number":154,"context_line":"        self.addCleanup(self.client.delete_floating_ip,"},{"line_number":155,"context_line":"                        created_floating_ip[\u0027id\u0027])"},{"line_number":156,"context_line":"        self.assertEqual(created_floating_ip[\u0027router_id\u0027], self.router[\u0027id\u0027])"},{"line_number":157,"context_line":"        network2 \u003d self.create_network()"},{"line_number":158,"context_line":"        subnet2 \u003d self.create_subnet(network2)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUX%2F%2FjHs%3D","line":155,"updated":"2014-02-12 12:56:29.000000000","message":"ditto","commit_id":"3ad7f9bb2c1b58f03d653a4633be0a84544e1ade"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"023d2578b06c45ee25579132a01ffe67d50a1690","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":180,"context_line":"        created_floating_ip \u003d boby[\u0027floatingip\u0027]"},{"line_number":181,"context_line":"        self.addCleanup(self.client.delete_floating_ip,"},{"line_number":182,"context_line":"                        created_floating_ip[\u0027id\u0027])"},{"line_number":183,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"},{"line_number":184,"context_line":"        self.assertEqual(created_floating_ip[\u0027fixed_ip_address\u0027],"},{"line_number":185,"context_line":"                         self.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUX%2F%2FjHk%3D","line":182,"updated":"2014-02-12 12:56:29.000000000","message":"ditto","commit_id":"3ad7f9bb2c1b58f03d653a4633be0a84544e1ade"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"31a00507fd4d1175901dc3c48a26b2b0af883931","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                         floating_ip_ids)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"class FloatingIPTestXML(FloatingIPTestJSON):"},{"line_number":233,"context_line":"    _interface \u003d \u0027xml\u0027"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAWH%2F%2BpOc%3D","line":232,"updated":"2014-03-25 10:56:02.000000000","message":"I think we could  move this up to the corresponding parent class.","commit_id":"b7c14ff9c64f8cde68ab637108cfb8da67282cbd"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"243ce9af2db3d71517dd295d7721b8488b13e2a9","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":177,"context_line":"    def test_create_floating_ip_specifying_on_fixed_ip_address(self):"},{"line_number":178,"context_line":"        resp, boby \u003d self.client.create_floatingip("},{"line_number":179,"context_line":"            floating_network_id\u003dself.ext_net_id,"},{"line_number":180,"context_line":"            port_id\u003dself.ports[1][\u0027id\u0027],"},{"line_number":181,"context_line":"            fixed_ip_address\u003dself.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2BoTs%3D","line":178,"updated":"2014-03-25 14:06:05.000000000","message":"nit: body","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"bfffdb96c14b8da5bb021f521848c542c005b8d5","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":177,"context_line":"    def test_create_floating_ip_specifying_on_fixed_ip_address(self):"},{"line_number":178,"context_line":"        resp, boby \u003d self.client.create_floatingip("},{"line_number":179,"context_line":"            floating_network_id\u003dself.ext_net_id,"},{"line_number":180,"context_line":"            port_id\u003dself.ports[1][\u0027id\u0027],"},{"line_number":181,"context_line":"            fixed_ip_address\u003dself.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2Bnic%3D","line":178,"in_reply_to":"AAAAWH%2F%2BoTs%3D","updated":"2014-03-25 14:46:19.000000000","message":"Thanks, will correct","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"243ce9af2db3d71517dd295d7721b8488b13e2a9","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        created_floating_ip \u003d boby[\u0027floatingip\u0027]"},{"line_number":184,"context_line":"        self.addCleanup(self.client.delete_floatingip,"},{"line_number":185,"context_line":"                        created_floating_ip[\u0027id\u0027])"},{"line_number":186,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"},{"line_number":187,"context_line":"        self.assertEqual(created_floating_ip[\u0027fixed_ip_address\u0027],"},{"line_number":188,"context_line":"                         self.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"},{"line_number":189,"context_line":"        resp, floating_ip \u003d self.client.update_floatingip("}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2Bn54%3D","line":186,"updated":"2014-03-25 14:06:05.000000000","message":"not sure if the line above worths something, since we just added it\u0027s id to cleanup on the line before, so that will fail before you reach this check.\n\nSo either invert those lines or remove L186","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"bfffdb96c14b8da5bb021f521848c542c005b8d5","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        created_floating_ip \u003d boby[\u0027floatingip\u0027]"},{"line_number":184,"context_line":"        self.addCleanup(self.client.delete_floatingip,"},{"line_number":185,"context_line":"                        created_floating_ip[\u0027id\u0027])"},{"line_number":186,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"},{"line_number":187,"context_line":"        self.assertEqual(created_floating_ip[\u0027fixed_ip_address\u0027],"},{"line_number":188,"context_line":"                         self.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"},{"line_number":189,"context_line":"        resp, floating_ip \u003d self.client.update_floatingip("}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2BniY%3D","line":186,"in_reply_to":"AAAAWH%2F%2Bn54%3D","updated":"2014-03-25 14:46:19.000000000","message":"Ok, will do","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"243ce9af2db3d71517dd295d7721b8488b13e2a9","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    _interface \u003d \u0027xml\u0027"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"class FloatingIPAdminTestJSON(base.BaseAdminNetworkTest):"},{"line_number":200,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2Bn3k%3D","line":199,"updated":"2014-03-25 14:06:05.000000000","message":"More a question than a suggestion, but wouldn\u0027t make sense to inherit from FloatingIPTestJSON and run those tests as admin as well?","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"bfffdb96c14b8da5bb021f521848c542c005b8d5","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    _interface \u003d \u0027xml\u0027"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"class FloatingIPAdminTestJSON(base.BaseAdminNetworkTest):"},{"line_number":200,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2BngY%3D","line":199,"in_reply_to":"AAAAWH%2F%2Bn3k%3D","updated":"2014-03-25 14:46:19.000000000","message":"I prefer to leave it as it is now.","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"243ce9af2db3d71517dd295d7721b8488b13e2a9","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @classmethod"},{"line_number":203,"context_line":"    def setUpClass(cls):"},{"line_number":204,"context_line":"        super(FloatingIPAdminTestJSON, cls).setUpClass()"},{"line_number":205,"context_line":"        cls.ext_net_id \u003d CONF.network.public_network_id"},{"line_number":206,"context_line":"        cls.floating_ip \u003d cls.create_floatingip(cls.ext_net_id)"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2Bn30%3D","line":204,"updated":"2014-03-25 14:06:05.000000000","message":"49Shouldn\u0027t you check for network client like L49?","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"bfffdb96c14b8da5bb021f521848c542c005b8d5","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @classmethod"},{"line_number":203,"context_line":"    def setUpClass(cls):"},{"line_number":204,"context_line":"        super(FloatingIPAdminTestJSON, cls).setUpClass()"},{"line_number":205,"context_line":"        cls.ext_net_id \u003d CONF.network.public_network_id"},{"line_number":206,"context_line":"        cls.floating_ip \u003d cls.create_floatingip(cls.ext_net_id)"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2Bnh0%3D","line":204,"in_reply_to":"AAAAWH%2F%2Bn30%3D","updated":"2014-03-25 14:46:19.000000000","message":"Yes, thanks, I\u0027ll correct","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"243ce9af2db3d71517dd295d7721b8488b13e2a9","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        floating_ip_ids \u003d [f[\u0027id\u0027] for f in body[\u0027floatingips\u0027]]"},{"line_number":231,"context_line":"        self.assertIn(self.floating_ip[\u0027id\u0027], floating_ip_ids)"},{"line_number":232,"context_line":"        self.assertNotIn(floating_ip_admin[\u0027id\u0027],"},{"line_number":233,"context_line":"                         floating_ip_ids)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"class FloatingIPAdminTestXML(FloatingIPAdminTestJSON):"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2BoEQ%3D","line":233,"updated":"2014-03-25 14:06:05.000000000","message":"I think this test would be more useful if instead of care about the deleted admin\u0027s floating ip we create a user floating ip and assure it\u0027s listed, cause the list can be empty  (maybe creating it on setup and this would just be part of the first test and this one just assure delete ips don\u0027t appear, or something)","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"bfffdb96c14b8da5bb021f521848c542c005b8d5","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        floating_ip_ids \u003d [f[\u0027id\u0027] for f in body[\u0027floatingips\u0027]]"},{"line_number":231,"context_line":"        self.assertIn(self.floating_ip[\u0027id\u0027], floating_ip_ids)"},{"line_number":232,"context_line":"        self.assertNotIn(floating_ip_admin[\u0027id\u0027],"},{"line_number":233,"context_line":"                         floating_ip_ids)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"class FloatingIPAdminTestXML(FloatingIPAdminTestJSON):"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAWH%2F%2BnjA%3D","line":233,"in_reply_to":"AAAAWH%2F%2BoEQ%3D","updated":"2014-03-25 14:46:19.000000000","message":"In setUpClass floating ip from nonadmin user was already created and the idea of this test is \"Assert a normal user only sees his floating ip\u0027s in a list operation\" according to https://etherpad.openstack.org/p/icehouse-summit-qa-neutron. So here is checked that self.floating_ip[\u0027id\u0027](that is created from nonadmin) is in the list and floating_ip_admin[\u0027id\u0027](from admin user) is not in the list.","commit_id":"0f432a7f319e2567ab4116f2fff63795eb14ecbb"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7d00b445d92003fb9d662d1bb8f4056d72e6e5d2","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        self.assertIn(floating_ip_admin[\u0027floatingip\u0027][\u0027id\u0027], floating_ip_ids)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":222,"context_line":"    def test_list_floating_ip_from_nonadmin(self):"},{"line_number":223,"context_line":"        resp, body \u003d self.admin_client.create_floatingip("},{"line_number":224,"context_line":"            floating_network_id\u003dself.ext_net_id)"},{"line_number":225,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAWH%2F%2BNTw%3D","line":222,"updated":"2014-03-28 12:12:43.000000000","message":"there is so much duplication here, I feel like we could probably just do both lists in a single test. Or at least move everything before the list into setUp","commit_id":"c8c6dbea84ccca3a3ead76da303e7ac554609b63"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"55414b4a37069989f4921394c019f98a39068a37","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        self.assertIsNotNone(updated_floating_ip[\u0027fixed_ip_address\u0027])"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":177,"context_line":"    def test_create_floating_ip_specifying_on_fixed_ip_address(self):"},{"line_number":178,"context_line":"        resp, boby \u003d self.client.create_floatingip("},{"line_number":179,"context_line":"            floating_network_id\u003dself.ext_net_id,"},{"line_number":180,"context_line":"            port_id\u003dself.ports[1][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAWH%2F93CI%3D","line":177,"updated":"2014-04-01 16:28:04.000000000","message":"This should be : test_create_floating_ip_specifying_a_fixed_ip_address","commit_id":"2dd8bc1fd5def5c1b0a7d33ccd7db37626231d0f"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"5dded278a902f90ba67854a46bcbdacd77aace50","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        self.assertIsNotNone(updated_floating_ip[\u0027fixed_ip_address\u0027])"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":177,"context_line":"    def test_create_floating_ip_specifying_on_fixed_ip_address(self):"},{"line_number":178,"context_line":"        resp, boby \u003d self.client.create_floatingip("},{"line_number":179,"context_line":"            floating_network_id\u003dself.ext_net_id,"},{"line_number":180,"context_line":"            port_id\u003dself.ports[1][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAWH%2F9o8s%3D","line":177,"in_reply_to":"AAAAWH%2F93CI%3D","updated":"2014-04-03 06:19:35.000000000","message":"Done","commit_id":"2dd8bc1fd5def5c1b0a7d33ccd7db37626231d0f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"55414b4a37069989f4921394c019f98a39068a37","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":177,"context_line":"    def test_create_floating_ip_specifying_on_fixed_ip_address(self):"},{"line_number":178,"context_line":"        resp, boby \u003d self.client.create_floatingip("},{"line_number":179,"context_line":"            floating_network_id\u003dself.ext_net_id,"},{"line_number":180,"context_line":"            port_id\u003dself.ports[1][\u0027id\u0027],"},{"line_number":181,"context_line":"            fixed_ip_address\u003dself.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAWH%2F93B0%3D","line":178,"updated":"2014-04-01 16:28:04.000000000","message":"s/boby/body/","commit_id":"2dd8bc1fd5def5c1b0a7d33ccd7db37626231d0f"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"5dded278a902f90ba67854a46bcbdacd77aace50","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":177,"context_line":"    def test_create_floating_ip_specifying_on_fixed_ip_address(self):"},{"line_number":178,"context_line":"        resp, boby \u003d self.client.create_floatingip("},{"line_number":179,"context_line":"            floating_network_id\u003dself.ext_net_id,"},{"line_number":180,"context_line":"            port_id\u003dself.ports[1][\u0027id\u0027],"},{"line_number":181,"context_line":"            fixed_ip_address\u003dself.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAWH%2F9o8o%3D","line":178,"in_reply_to":"AAAAWH%2F93B0%3D","updated":"2014-04-03 06:19:35.000000000","message":"Done","commit_id":"2dd8bc1fd5def5c1b0a7d33ccd7db37626231d0f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"55414b4a37069989f4921394c019f98a39068a37","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            port_id\u003dself.ports[1][\u0027id\u0027],"},{"line_number":181,"context_line":"            fixed_ip_address\u003dself.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"},{"line_number":182,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":183,"context_line":"        created_floating_ip \u003d boby[\u0027floatingip\u0027]"},{"line_number":184,"context_line":"        self.addCleanup(self.client.delete_floatingip,"},{"line_number":185,"context_line":"                        created_floating_ip[\u0027id\u0027])"},{"line_number":186,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAWH%2F93Bk%3D","line":183,"updated":"2014-04-01 16:28:04.000000000","message":"s/boby/body/","commit_id":"2dd8bc1fd5def5c1b0a7d33ccd7db37626231d0f"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"5dded278a902f90ba67854a46bcbdacd77aace50","unresolved":false,"context_lines":[{"line_number":180,"context_line":"            port_id\u003dself.ports[1][\u0027id\u0027],"},{"line_number":181,"context_line":"            fixed_ip_address\u003dself.ports[1][\u0027fixed_ips\u0027][0][\u0027ip_address\u0027])"},{"line_number":182,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":183,"context_line":"        created_floating_ip \u003d boby[\u0027floatingip\u0027]"},{"line_number":184,"context_line":"        self.addCleanup(self.client.delete_floatingip,"},{"line_number":185,"context_line":"                        created_floating_ip[\u0027id\u0027])"},{"line_number":186,"context_line":"        self.assertIsNotNone(created_floating_ip[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":34,"id":"AAAAWH%2F9o8k%3D","line":183,"in_reply_to":"AAAAWH%2F93Bk%3D","updated":"2014-04-03 06:19:35.000000000","message":"Done","commit_id":"2dd8bc1fd5def5c1b0a7d33ccd7db37626231d0f"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"f08e69a86caac3291738071031414bc571906599","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    _interface \u003d \u0027xml\u0027"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"class FloatingIPAdminTestJSON(base.BaseAdminNetworkTest):"},{"line_number":200,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":36,"id":"AAAAXH%2F%2FtXw%3D","line":199,"updated":"2014-04-18 02:21:39.000000000","message":"Shouldn\u0027t this class go in the tempest.api.network.admin directory instead of here?","commit_id":"70508bdafe3d88a8de3cac7c91bea44179c70a1f"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"f08e69a86caac3291738071031414bc571906599","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        resp, body \u003d self.client.list_floatingips()"},{"line_number":226,"context_line":"        floating_ip_ids \u003d [f[\u0027id\u0027] for f in body[\u0027floatingips\u0027]]"},{"line_number":227,"context_line":"        # Check that nonadmin user doesn\u0027t see floating ip created from admin"},{"line_number":228,"context_line":"        self.assertIn(self.floating_ip[\u0027id\u0027], floating_ip_ids)"},{"line_number":229,"context_line":"        self.assertNotIn(floating_ip_admin[\u0027floatingip\u0027][\u0027id\u0027],"},{"line_number":230,"context_line":"                         floating_ip_ids)"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"AAAAXH%2F%2FtY4%3D","line":228,"updated":"2014-04-18 02:21:39.000000000","message":"So AIUI he underlying assumption here is not that it\u0027s actual admin vs non-admin but that admin user and regular user are in different tenants. If the admin user and the regular user were in the same tenant I believe the floating ip would show up in the list. \n\nThis is working right now because of tenant isolation (and/or the devstack defaults) mean that the admin user and test primary user are in different tenants. I think we should probably explicitly make the test use different tenants. The easiest way to do this would be to add a force_tenant_isolation attr to the FloatingIPAdminTestJSON class like here:\n\nhttp://git.openstack.org/cgit/openstack/tempest/tree/tempest/api/compute/admin/test_quotas.py#n22","commit_id":"70508bdafe3d88a8de3cac7c91bea44179c70a1f"}],"tempest/services/network/network_client_base.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"06bafaa2012eb3cd7160b5b3d1cc962f2faa3854","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \u0027security_groups\u0027: \u0027security_groups\u0027,"},{"line_number":43,"context_line":"    \u0027security_group_rules\u0027: \u0027security_group_rules\u0027,"},{"line_number":44,"context_line":"    \u0027ikepolicy\u0027: \u0027ikepolicies\u0027,"},{"line_number":45,"context_line":"    #\u0027floating_ip\u0027: \u0027floatingips\u0027,"},{"line_number":46,"context_line":"    \u0027quotas\u0027: \u0027quotas\u0027"},{"line_number":47,"context_line":"}"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2B5s4%3D","line":45,"updated":"2014-02-18 10:01:17.000000000","message":"if jenkins runs succeed, don\u0027t forget to remove the comment","commit_id":"4fcc7012640e1ab9bd7e8ff96b14a7ca35a901c5"}]}
