)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":14,"context_line":"- Lauching an instance with a Nic connected to the internal network"},{"line_number":15,"context_line":"- Adding rules to the tenant\u0027s default security group to allow SSH"},{"line_number":16,"context_line":"  and ICMP"},{"line_number":17,"context_line":"- Creating an associating a Floaing IP to the instance"},{"line_number":18,"context_line":"- Checking SSH connectivity to the instance Floating IP address"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ica6fef4763b6f98c7795629b99ab392e6f7b6e59"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bab6814e_64f99dc8","line":17,"range":{"start_line":17,"start_character":11,"end_line":17,"end_character":13},"updated":"2016-05-25 09:13:26.000000000","message":"and","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":14,"context_line":"- Lauching an instance with a Nic connected to the internal network"},{"line_number":15,"context_line":"- Adding rules to the tenant\u0027s default security group to allow SSH"},{"line_number":16,"context_line":"  and ICMP"},{"line_number":17,"context_line":"- Creating an associating a Floaing IP to the instance"},{"line_number":18,"context_line":"- Checking SSH connectivity to the instance Floating IP address"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ica6fef4763b6f98c7795629b99ab392e6f7b6e59"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bab6814e_b886fdd8","line":17,"range":{"start_line":17,"start_character":11,"end_line":17,"end_character":13},"in_reply_to":"bab6814e_64f99dc8","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"810945408e16492cc4bc4e293407d87c77ed626d","unresolved":false,"context_lines":[{"line_number":18,"context_line":"- Checking SSH connectivity to the instance Floating IP address"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ica6fef4763b6f98c7795629b99ab392e6f7b6e59"},{"line_number":21,"context_line":"Co-authored-by: John Schwarz \u003cjschwarz@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bab6814e_a14b7758","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":13},"updated":"2016-05-25 08:35:12.000000000","message":"Co-Authored-By","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"753c38f3b11165abf1cec8cd2c91c9be714db82d","unresolved":false,"context_lines":[{"line_number":18,"context_line":"- Checking SSH connectivity to the instance Floating IP address"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ica6fef4763b6f98c7795629b99ab392e6f7b6e59"},{"line_number":21,"context_line":"Co-authored-by: John Schwarz \u003cjschwarz@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bab6814e_219f8704","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":13},"in_reply_to":"bab6814e_a14b7758","updated":"2016-05-25 08:48:53.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"47a107510e07f28d4700c95c5c6897cf5485d959","unresolved":false,"context_lines":[{"line_number":18,"context_line":"- Checking SSH connectivity to the instance Floating IP address"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ica6fef4763b6f98c7795629b99ab392e6f7b6e59"},{"line_number":21,"context_line":"Depends-On: I701c9b65beed3aa218f110815315f416cd43e71c"},{"line_number":22,"context_line":"Co-Authored-By: John Schwarz \u003cjschwarz@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9abb7d3a_94a3d8b1","line":21,"updated":"2016-05-31 13:27:23.000000000","message":"If we see that the dependent patch is holding up this one, we can remove the dependency and import the waiters from their current location (And not from tempest.lib). We can do this because you\u0027re not breaking the interface in the dependent patch.\n\nThat being said, what\u0027s holding up this patch right now is the fact that the scenario tests are not actually being run in the experimental queue. Is this something you can look in to? I see that the job is defined in project-config, so it\u0027s not clear right now why is it not running. I wouldn\u0027t want to merge this patch without seeing it run successfully at the gate.","commit_id":"c98bc96eb2876aef8b3a82d01430a215d17abce4"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c09b9a1c3ba1a7543dabd94917d81f1c66d098ac","unresolved":false,"context_lines":[{"line_number":18,"context_line":"- Checking SSH connectivity to the instance Floating IP address"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ica6fef4763b6f98c7795629b99ab392e6f7b6e59"},{"line_number":21,"context_line":"Depends-On: I701c9b65beed3aa218f110815315f416cd43e71c"},{"line_number":22,"context_line":"Co-Authored-By: John Schwarz \u003cjschwarz@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9abb7d3a_f7950687","line":21,"in_reply_to":"9abb7d3a_94a3d8b1","updated":"2016-05-31 13:35:53.000000000","message":"Aha, I foolishly triggered experimental jobs as I thought it\u0027s there.","commit_id":"c98bc96eb2876aef8b3a82d01430a215d17abce4"}],"TESTING.rst":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1ace2178e258855455d4b46edc43e15df676bff4","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Scenario tests (neutron/tests/tempest/scenario), like API tests, use the"},{"line_number":332,"context_line":"Tempest test infrastructure and have the same requirements. Guidelines for"},{"line_number":333,"context_line":"writing a good scenario test may be found at the Tempest developer guide:"},{"line_number":334,"context_line":"http://docs.openstack.org/developer/tempest/field_guide/scenario.html"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"Scenario tests, like API tests, are split between the Tempest and Neutron"}],"source_content_type":"text/x-rst","patch_set":16,"id":"9abb7d3a_460c6f94","line":333,"range":{"start_line":333,"start_character":29,"end_line":333,"end_character":41},"updated":"2016-06-03 09:17:07.000000000","message":"If we are lucky, we may find it there? :)","commit_id":"707363fea071971fcd9a798259f0ec51e8d7a414"}],"neutron/tests/tempest/api/clients.py":[{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"7f75d44dd892ab9817f819f49e71f3b100d7ba46","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.tests.tempest import config"},{"line_number":21,"context_line":"from neutron.tests.tempest.services.network.json.network_client import \\"},{"line_number":22,"context_line":"     NetworkClientJSON"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d config.CONF"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_a97363b3","side":"PARENT","line":23,"updated":"2016-05-25 07:42:49.000000000","message":"Unrelated line deletions here and in line 33 (and specifically this should make pep8 fail).","commit_id":"065e5d66b650e336965b5ca425427c5d8e763d52"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute.floating_ips_client import \\"},{"line_number":17,"context_line":"    FloatingIPsClient as ComputeFloatingIPsClient"},{"line_number":18,"context_line":"from tempest.lib.services.compute.keypairs_client import KeyPairsClient"},{"line_number":19,"context_line":"from tempest.lib.services.compute.security_group_rules_client import \\"},{"line_number":20,"context_line":"        SecurityGroupRulesClient as ComputeSecurityGroupRulesClient"},{"line_number":21,"context_line":"from tempest.lib.services.compute.security_groups_client import \\"},{"line_number":22,"context_line":"        SecurityGroupsClient as ComputeSecurityGroupsClient"},{"line_number":23,"context_line":"from tempest.lib.services.compute.servers_client import ServersClient"},{"line_number":24,"context_line":"from tempest.lib.services.network.networks_client import NetworksClient"},{"line_number":25,"context_line":"from tempest import manager"},{"line_number":26,"context_line":"from tempest.services.identity.v2.json.tenants_client import \\"},{"line_number":27,"context_line":"    TenantsClient"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_a1589757","line":24,"range":{"start_line":16,"start_character":0,"end_line":24,"end_character":71},"updated":"2016-05-25 09:13:26.000000000","message":"Don\u0027t import classes, only modules: http://docs.openstack.org/developer/hacking/#imports","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute.floating_ips_client import \\"},{"line_number":17,"context_line":"    FloatingIPsClient as ComputeFloatingIPsClient"},{"line_number":18,"context_line":"from tempest.lib.services.compute.keypairs_client import KeyPairsClient"},{"line_number":19,"context_line":"from tempest.lib.services.compute.security_group_rules_client import \\"},{"line_number":20,"context_line":"        SecurityGroupRulesClient as ComputeSecurityGroupRulesClient"},{"line_number":21,"context_line":"from tempest.lib.services.compute.security_groups_client import \\"},{"line_number":22,"context_line":"        SecurityGroupsClient as ComputeSecurityGroupsClient"},{"line_number":23,"context_line":"from tempest.lib.services.compute.servers_client import ServersClient"},{"line_number":24,"context_line":"from tempest.lib.services.network.networks_client import NetworksClient"},{"line_number":25,"context_line":"from tempest import manager"},{"line_number":26,"context_line":"from tempest.services.identity.v2.json.tenants_client import \\"},{"line_number":27,"context_line":"    TenantsClient"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_137d6a1c","line":24,"range":{"start_line":16,"start_character":0,"end_line":24,"end_character":71},"in_reply_to":"bab6814e_a1589757","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            build_timeout\u003dCONF.network.build_timeout,"},{"line_number":91,"context_line":"            **self.default_params)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.compute_security_group_rules_client \u003d ("},{"line_number":94,"context_line":"            ComputeSecurityGroupRulesClient("},{"line_number":95,"context_line":"                self.auth_provider,"},{"line_number":96,"context_line":"                CONF.compute.catalog_type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_84c3e156","line":93,"range":{"start_line":93,"start_character":13,"end_line":93,"end_character":48},"updated":"2016-05-25 09:13:26.000000000","message":"Does it mean we create security group rules through nova? Why not talking directly to Neutron?","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            build_timeout\u003dCONF.network.build_timeout,"},{"line_number":91,"context_line":"            **self.default_params)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.compute_security_group_rules_client \u003d ("},{"line_number":94,"context_line":"            ComputeSecurityGroupRulesClient("},{"line_number":95,"context_line":"                self.auth_provider,"},{"line_number":96,"context_line":"                CONF.compute.catalog_type,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_13f9ea80","line":93,"range":{"start_line":93,"start_character":13,"end_line":93,"end_character":48},"in_reply_to":"bab6814e_84c3e156","updated":"2016-05-25 18:50:04.000000000","message":"Currently there is no support for sg rules in the API tests.\nProbably we\u0027ll need to add it. I\u0027ll add it.","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"5f47b31e158e886660502d8f474510ff7615c719","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute.floating_ips_client import \\"},{"line_number":17,"context_line":"    FloatingIPsClient as ComputeFloatingIPsClient"},{"line_number":18,"context_line":"from tempest.lib.services.compute.keypairs_client import KeyPairsClient"},{"line_number":19,"context_line":"from tempest.lib.services.compute.security_group_rules_client import \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_84010f6d","line":16,"updated":"2016-05-25 13:47:05.000000000","message":"I\u0027m glad to see the clients are already in tempest.lib, when I checked not long ago they were not.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"5f47b31e158e886660502d8f474510ff7615c719","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self._set_identity_clients()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        params \u003d {"},{"line_number":60,"context_line":"            \u0027service\u0027: CONF.compute.catalog_type,"},{"line_number":61,"context_line":"            \u0027region\u0027: CONF.compute.region or CONF.identity.region,"},{"line_number":62,"context_line":"            \u0027endpoint_type\u0027: CONF.compute.endpoint_type,"},{"line_number":63,"context_line":"            \u0027build_interval\u0027: CONF.compute.build_interval,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_e4dbbbeb","line":60,"updated":"2016-05-25 13:47:05.000000000","message":"Each configuration option we use directly increases our chances of breaking.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"b137ec9095ae05c68c8a4ad60069d41e85296a61","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self._set_identity_clients()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        params \u003d {"},{"line_number":60,"context_line":"            \u0027service\u0027: CONF.compute.catalog_type,"},{"line_number":61,"context_line":"            \u0027region\u0027: CONF.compute.region or CONF.identity.region,"},{"line_number":62,"context_line":"            \u0027endpoint_type\u0027: CONF.compute.endpoint_type,"},{"line_number":63,"context_line":"            \u0027build_interval\u0027: CONF.compute.build_interval,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_42b385e9","line":60,"in_reply_to":"bab6814e_e4dbbbeb","updated":"2016-05-25 23:01:24.000000000","message":"What do you suggest?","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"5f47b31e158e886660502d8f474510ff7615c719","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            .enable_instance_password,"},{"line_number":82,"context_line":"            **self.default_params)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        self.networks_client \u003d NetworksClient("},{"line_number":85,"context_line":"            self.auth_provider,"},{"line_number":86,"context_line":"            CONF.network.catalog_type,"},{"line_number":87,"context_line":"            CONF.network.region or CONF.identity.region,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_64eeab8c","line":84,"updated":"2016-05-25 13:47:05.000000000","message":"Can we use existing clients in the Neutron tree?","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"b137ec9095ae05c68c8a4ad60069d41e85296a61","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            .enable_instance_password,"},{"line_number":82,"context_line":"            **self.default_params)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        self.networks_client \u003d NetworksClient("},{"line_number":85,"context_line":"            self.auth_provider,"},{"line_number":86,"context_line":"            CONF.network.catalog_type,"},{"line_number":87,"context_line":"            CONF.network.region or CONF.identity.region,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_82772d3a","line":84,"in_reply_to":"bab6814e_64eeab8c","updated":"2016-05-25 23:01:24.000000000","message":"I\u0027m going to remove it.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"5f47b31e158e886660502d8f474510ff7615c719","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            build_timeout\u003dCONF.network.build_timeout,"},{"line_number":91,"context_line":"            **self.default_params)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.compute_security_group_rules_client \u003d ("},{"line_number":94,"context_line":"            ComputeSecurityGroupRulesClient("},{"line_number":95,"context_line":"                self.auth_provider,"},{"line_number":96,"context_line":"                CONF.compute.catalog_type,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_4466072a","line":93,"updated":"2016-05-25 13:47:05.000000000","message":"Using Neutron for security groups will decouple us from Tempest further.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"b137ec9095ae05c68c8a4ad60069d41e85296a61","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            build_timeout\u003dCONF.network.build_timeout,"},{"line_number":91,"context_line":"            **self.default_params)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.compute_security_group_rules_client \u003d ("},{"line_number":94,"context_line":"            ComputeSecurityGroupRulesClient("},{"line_number":95,"context_line":"                self.auth_provider,"},{"line_number":96,"context_line":"                CONF.compute.catalog_type,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_62820902","line":93,"in_reply_to":"bab6814e_4466072a","updated":"2016-05-25 23:01:24.000000000","message":"Yes, will address it.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"5f47b31e158e886660502d8f474510ff7615c719","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            **self.default_params)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.keypairs_client \u003d KeyPairsClient(self.auth_provider, **params)"},{"line_number":113,"context_line":"        self.compute_floating_ips_client \u003d ComputeFloatingIPsClient("},{"line_number":114,"context_line":"                     self.auth_provider, **params)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _set_identity_clients(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_3f35ccd9","line":113,"updated":"2016-05-25 13:47:05.000000000","message":"Same comment about the security group clients.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"b137ec9095ae05c68c8a4ad60069d41e85296a61","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            **self.default_params)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        self.keypairs_client \u003d KeyPairsClient(self.auth_provider, **params)"},{"line_number":113,"context_line":"        self.compute_floating_ips_client \u003d ComputeFloatingIPsClient("},{"line_number":114,"context_line":"                     self.auth_provider, **params)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _set_identity_clients(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_42b705f5","line":113,"in_reply_to":"bab6814e_3f35ccd9","updated":"2016-05-25 23:01:24.000000000","message":"If I\u0027m not mistaken the difference is that in Neutron you associate a Floating IP to a port. Here what I need is to associate a Floating IP to an instance.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b92689b15f5d7a3511480c3ce03ae8240008f49e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.tests.tempest.services.network.json import network_client"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from tempest.lib.services.compute import security_groups_client"},{"line_number":27,"context_line":"CONF \u003d config.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_42cfe255","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":63},"updated":"2016-05-26 12:02:54.000000000","message":"This should go to L18 though I believe we won\u0027t need it at all.","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"da82b3a69882ad7be91840a3d4bc608d3e958cd8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.tests.tempest.services.network.json import network_client"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from tempest.lib.services.compute import security_groups_client"},{"line_number":27,"context_line":"CONF \u003d config.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_06796782","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":63},"in_reply_to":"bab6814e_42cfe255","updated":"2016-05-26 16:54:13.000000000","message":"Removing","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"e2156df404100cdbb34305c6dd1fe3ff327e363f","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        self._set_identity_clients()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        params \u003d {"},{"line_number":55,"context_line":"            \u0027service\u0027: CONF.compute.catalog_type,"},{"line_number":56,"context_line":"            \u0027region\u0027: CONF.compute.region or CONF.identity.region,"},{"line_number":57,"context_line":"            \u0027endpoint_type\u0027: CONF.compute.endpoint_type,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_aa3e8088","line":54,"updated":"2016-05-26 00:09:28.000000000","message":"it\u0027s a bit strange to define at the beginning of a method a variable used at the end of the method","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"da82b3a69882ad7be91840a3d4bc608d3e958cd8","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        self._set_identity_clients()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        params \u003d {"},{"line_number":55,"context_line":"            \u0027service\u0027: CONF.compute.catalog_type,"},{"line_number":56,"context_line":"            \u0027region\u0027: CONF.compute.region or CONF.identity.region,"},{"line_number":57,"context_line":"            \u0027endpoint_type\u0027: CONF.compute.endpoint_type,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_19cc2888","line":54,"in_reply_to":"bab6814e_aa3e8088","updated":"2016-05-26 16:54:13.000000000","message":"Done","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"e2156df404100cdbb34305c6dd1fe3ff327e363f","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.servers_client \u003d servers_client.ServersClient("},{"line_number":73,"context_line":"            self.auth_provider,"},{"line_number":74,"context_line":"            \u0027compute\u0027, \u0027regionOne\u0027,"},{"line_number":75,"context_line":"            enable_instance_password\u003dCONF.compute_feature_enabled"},{"line_number":76,"context_line":"            .enable_instance_password,"},{"line_number":77,"context_line":"            **self.default_params)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_ea4c0844","line":74,"range":{"start_line":74,"start_character":13,"end_line":74,"end_character":20},"updated":"2016-05-26 00:09:28.000000000","message":"i poorly know tempest tests but we should use CONF.compute.catalog_type/region instead of hardcoded strings?","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"da82b3a69882ad7be91840a3d4bc608d3e958cd8","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.servers_client \u003d servers_client.ServersClient("},{"line_number":73,"context_line":"            self.auth_provider,"},{"line_number":74,"context_line":"            \u0027compute\u0027, \u0027regionOne\u0027,"},{"line_number":75,"context_line":"            enable_instance_password\u003dCONF.compute_feature_enabled"},{"line_number":76,"context_line":"            .enable_instance_password,"},{"line_number":77,"context_line":"            **self.default_params)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_d99aa061","line":74,"range":{"start_line":74,"start_character":13,"end_line":74,"end_character":20},"in_reply_to":"bab6814e_ea4c0844","updated":"2016-05-26 16:54:13.000000000","message":"I\u0027ll change and will ask \u0027Tempest guys\u0027 to review.","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"a6dfe224a0efc3cf3b4ffe42b884bc63e1048cfd","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute import floating_ips_client"},{"line_number":17,"context_line":"from tempest.lib.services.compute import keypairs_client"},{"line_number":18,"context_line":"from tempest.lib.services.compute import servers_client"},{"line_number":19,"context_line":"from tempest import manager"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_ea991d21","line":16,"updated":"2016-05-27 13:07:33.000000000","message":"We should probably use the Neutron FIPs client and not the Nova one.","commit_id":"ac180b9c1a41bc8589f48fe76b48d35231ef15ba"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"634034b7372b8f63b9505a2682040c7c0b7cd534","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute import floating_ips_client"},{"line_number":17,"context_line":"from tempest.lib.services.compute import keypairs_client"},{"line_number":18,"context_line":"from tempest.lib.services.compute import servers_client"},{"line_number":19,"context_line":"from tempest import manager"}],"source_content_type":"text/x-python","patch_set":8,"id":"9abb7d3a_15a8d91e","line":16,"updated":"2016-05-29 14:59:53.000000000","message":"From PS5, we should use the Neutron FIPs client instead.","commit_id":"8f67fb2011b53dda84e4afbd290caa25124e3b47"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"33a20f0da365ef9952b95b4a9674519b2351d235","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute import floating_ips_client"},{"line_number":17,"context_line":"from tempest.lib.services.compute import keypairs_client"},{"line_number":18,"context_line":"from tempest.lib.services.compute import servers_client"},{"line_number":19,"context_line":"from tempest import manager"}],"source_content_type":"text/x-python","patch_set":8,"id":"9abb7d3a_9c47c94a","line":16,"in_reply_to":"9abb7d3a_15a8d91e","updated":"2016-05-30 05:38:35.000000000","message":"I think it\u0027s depends on the usage.\nThe current usage in the basic scenario is to associate a server with a FIP. Neutron doesn\u0027t have this capability,AFAIK. To use Neutron one has to find the port of the server and associate it with the FIP. I prefer the first approach.","commit_id":"8f67fb2011b53dda84e4afbd290caa25124e3b47"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"7d796ffe51ea019baa7d5eb18f811a649e141f25","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute import floating_ips_client"},{"line_number":17,"context_line":"from tempest.lib.services.compute import keypairs_client"},{"line_number":18,"context_line":"from tempest.lib.services.compute import servers_client"},{"line_number":19,"context_line":"from tempest import manager"}],"source_content_type":"text/x-python","patch_set":8,"id":"9abb7d3a_d174859d","line":16,"in_reply_to":"9abb7d3a_9c47c94a","updated":"2016-05-30 14:12:57.000000000","message":"I don\u0027t think the details of associating the FIP with a server or a port matter. The API that we test matters, and a Neutron test should test the Neutron API if one is available.","commit_id":"8f67fb2011b53dda84e4afbd290caa25124e3b47"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"48d4a1aacd78b2427d8b0cb73e7a4b10816a456f","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute import floating_ips_client"},{"line_number":17,"context_line":"from tempest.lib.services.compute import keypairs_client"},{"line_number":18,"context_line":"from tempest.lib.services.compute import servers_client"},{"line_number":19,"context_line":"from tempest import manager"}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_e91bb47e","line":16,"range":{"start_line":16,"start_character":40,"end_line":16,"end_character":60},"updated":"2016-05-30 08:23:37.000000000","message":"This test aims on Neutron server and its API. If the test contains usage of floating ip resource, we should be using it via Neutron API and not Nova.","commit_id":"bea2ec3cb903373e4e85158ca76cd3a2c69eb9b1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0085a6cde7683ebdb41f0e5a0ff5105913ae259b","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.keypairs_client \u003d keypairs_client.KeyPairsClient("},{"line_number":76,"context_line":"            self.auth_provider, **params)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self.compute_floating_ips_client \u003d ("},{"line_number":79,"context_line":"            floating_ips_client.FloatingIPsClient("},{"line_number":80,"context_line":"                self.auth_provider, **params))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _set_identity_clients(self):"},{"line_number":83,"context_line":"        params \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_aba324ff","line":80,"range":{"start_line":78,"start_character":0,"end_line":80,"end_character":46},"updated":"2016-05-31 11:30:46.000000000","message":"Is this used anywhere?","commit_id":"156f71f7a26761ff20ff527d45dfac1d66626598"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"6b1a94d844df232c0cf8e5f421f75ed0d248bc78","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.keypairs_client \u003d keypairs_client.KeyPairsClient("},{"line_number":76,"context_line":"            self.auth_provider, **params)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self.compute_floating_ips_client \u003d ("},{"line_number":79,"context_line":"            floating_ips_client.FloatingIPsClient("},{"line_number":80,"context_line":"                self.auth_provider, **params))"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _set_identity_clients(self):"},{"line_number":83,"context_line":"        params \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_2bfbb448","line":80,"range":{"start_line":78,"start_character":0,"end_line":80,"end_character":46},"in_reply_to":"9abb7d3a_aba324ff","updated":"2016-05-31 11:47:36.000000000","message":"Removed.","commit_id":"156f71f7a26761ff20ff527d45dfac1d66626598"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d9864c2a66ed0f205019f46712d6d4af0acf3983","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute import floating_ips_client"},{"line_number":17,"context_line":"from tempest.lib.services.compute import keypairs_client"},{"line_number":18,"context_line":"from tempest.lib.services.compute import servers_client"},{"line_number":19,"context_line":"from tempest import manager"}],"source_content_type":"text/x-python","patch_set":12,"id":"9abb7d3a_6bf01c68","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":60},"updated":"2016-05-31 11:37:20.000000000","message":"Not needed now.","commit_id":"a1d18745f105c23ea4baa0167a05ddfea46d2c0d"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"f5595d00aa1b59e8c5feea42de646ef2ff1d2018","unresolved":false,"context_lines":[{"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":""},{"line_number":16,"context_line":"from tempest.lib.services.compute import floating_ips_client"},{"line_number":17,"context_line":"from tempest.lib.services.compute import keypairs_client"},{"line_number":18,"context_line":"from tempest.lib.services.compute import servers_client"},{"line_number":19,"context_line":"from tempest import manager"}],"source_content_type":"text/x-python","patch_set":12,"id":"9abb7d3a_be71a078","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":60},"in_reply_to":"9abb7d3a_6bf01c68","updated":"2016-05-31 11:45:34.000000000","message":"Done","commit_id":"a1d18745f105c23ea4baa0167a05ddfea46d2c0d"}],"neutron/tests/tempest/scenario/base.py":[{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"778e43b149596d5898b03533905d31e7a7ab2ced","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_89d5bf1c","line":1,"updated":"2016-05-25 07:44:06.000000000","message":"The copyright title should indicate the correct year and company you work for (RedHat).","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"eb83a7f7f2cb53ddc8282811084b0800b42911a0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_d428fa35","line":1,"in_reply_to":"bab6814e_89d5bf1c","updated":"2016-05-25 08:18:28.000000000","message":"Done","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"7f75d44dd892ab9817f819f49e71f3b100d7ba46","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron.tests.tempest.api import base as base_api"},{"line_number":18,"context_line":"from neutron.tests.tempest import config"},{"line_number":19,"context_line":"from tempest.lib.common import ssh"},{"line_number":20,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":21,"context_line":"import waiters"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_2972d37c","line":20,"range":{"start_line":19,"start_character":0,"end_line":20,"end_character":47},"updated":"2016-05-25 07:42:49.000000000","message":"These imports are considered \u0027library imports\u0027 so should be moved to before line 17.","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"eb83a7f7f2cb53ddc8282811084b0800b42911a0","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron.tests.tempest.api import base as base_api"},{"line_number":18,"context_line":"from neutron.tests.tempest import config"},{"line_number":19,"context_line":"from tempest.lib.common import ssh"},{"line_number":20,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":21,"context_line":"import waiters"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_741aee18","line":20,"range":{"start_line":19,"start_character":0,"end_line":20,"end_character":47},"in_reply_to":"bab6814e_2972d37c","updated":"2016-05-25 08:18:28.000000000","message":"Done","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"7f75d44dd892ab9817f819f49e71f3b100d7ba46","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @classmethod"},{"line_number":76,"context_line":"    def create_loginable_secgroup_rule(cls, secgroup_id\u003dNone):"},{"line_number":77,"context_line":"        _client \u003d cls.manager.compute_security_groups_client"},{"line_number":78,"context_line":"        _client_rules \u003d cls.manager.compute_security_group_rules_client"},{"line_number":79,"context_line":"        if secgroup_id is None:"},{"line_number":80,"context_line":"            sgs \u003d _client.list_security_groups()[\u0027security_groups\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_6955fbc4","line":77,"range":{"start_line":77,"start_character":8,"end_line":77,"end_character":9},"updated":"2016-05-25 07:42:49.000000000","message":"No need for the \u0027_\u0027 at the beginning of the variable name.","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"eb83a7f7f2cb53ddc8282811084b0800b42911a0","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @classmethod"},{"line_number":76,"context_line":"    def create_loginable_secgroup_rule(cls, secgroup_id\u003dNone):"},{"line_number":77,"context_line":"        _client \u003d cls.manager.compute_security_groups_client"},{"line_number":78,"context_line":"        _client_rules \u003d cls.manager.compute_security_group_rules_client"},{"line_number":79,"context_line":"        if secgroup_id is None:"},{"line_number":80,"context_line":"            sgs \u003d _client.list_security_groups()[\u0027security_groups\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_749f8e5f","line":77,"range":{"start_line":77,"start_character":8,"end_line":77,"end_character":9},"in_reply_to":"bab6814e_6955fbc4","updated":"2016-05-25 08:18:28.000000000","message":"Done","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"7f75d44dd892ab9817f819f49e71f3b100d7ba46","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        return router"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    @classmethod"},{"line_number":122,"context_line":"    def create_security_group(cls):"},{"line_number":123,"context_line":"        # create security group"},{"line_number":124,"context_line":"        sg_name \u003d data_utils.rand_name(\u0027sgtest\u0027)"},{"line_number":125,"context_line":"        sg_desc \u003d sg_name + \" description\""}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_69e7bb40","line":122,"range":{"start_line":122,"start_character":8,"end_line":122,"end_character":29},"updated":"2016-05-25 07:42:49.000000000","message":"This function isn\u0027t used by the test.","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"eb83a7f7f2cb53ddc8282811084b0800b42911a0","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        return router"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    @classmethod"},{"line_number":122,"context_line":"    def create_security_group(cls):"},{"line_number":123,"context_line":"        # create security group"},{"line_number":124,"context_line":"        sg_name \u003d data_utils.rand_name(\u0027sgtest\u0027)"},{"line_number":125,"context_line":"        sg_desc \u003d sg_name + \" description\""}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_74adce87","line":122,"range":{"start_line":122,"start_character":8,"end_line":122,"end_character":29},"in_reply_to":"bab6814e_69e7bb40","updated":"2016-05-25 08:18:28.000000000","message":"Done","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"7f75d44dd892ab9817f819f49e71f3b100d7ba46","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    def test_basic_instance(self):"},{"line_number":161,"context_line":"        network \u003d self.create_network()"},{"line_number":162,"context_line":"        subnet \u003d self.create_subnet(network)"},{"line_number":163,"context_line":"        self.manager.networks_client.list_networks("},{"line_number":164,"context_line":"            filters\u003d{\u0027router:external\u0027: False})"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        self.create_router_and_interface(subnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_a9e88317","line":163,"range":{"start_line":163,"start_character":37,"end_line":163,"end_character":50},"updated":"2016-05-25 07:42:49.000000000","message":"Nothing is done with the return value of \u0027list_networks\u0027. Do we really need this?","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"eb83a7f7f2cb53ddc8282811084b0800b42911a0","unresolved":false,"context_lines":[{"line_number":160,"context_line":"    def test_basic_instance(self):"},{"line_number":161,"context_line":"        network \u003d self.create_network()"},{"line_number":162,"context_line":"        subnet \u003d self.create_subnet(network)"},{"line_number":163,"context_line":"        self.manager.networks_client.list_networks("},{"line_number":164,"context_line":"            filters\u003d{\u0027router:external\u0027: False})"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        self.create_router_and_interface(subnet[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_b403b675","line":163,"range":{"start_line":163,"start_character":37,"end_line":163,"end_character":50},"in_reply_to":"bab6814e_a9e88317","updated":"2016-05-25 08:18:28.000000000","message":"Done","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"7f75d44dd892ab9817f819f49e71f3b100d7ba46","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        fip \u003d self.create_and_associate_floatingip(server[\u0027server\u0027][\u0027id\u0027])"},{"line_number":177,"context_line":"        self.check_connectivity(fip[\u0027floating_ip_address\u0027],"},{"line_number":178,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":179,"context_line":"                    keypair[\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_a981a34f","line":179,"range":{"start_line":179,"start_character":20,"end_line":179,"end_character":43},"updated":"2016-05-25 07:42:49.000000000","message":"This should be indented the same way as line 178.","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"eb83a7f7f2cb53ddc8282811084b0800b42911a0","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        fip \u003d self.create_and_associate_floatingip(server[\u0027server\u0027][\u0027id\u0027])"},{"line_number":177,"context_line":"        self.check_connectivity(fip[\u0027floating_ip_address\u0027],"},{"line_number":178,"context_line":"                                CONF.validation.image_ssh_user,"},{"line_number":179,"context_line":"                    keypair[\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_f4fd3e6f","line":179,"range":{"start_line":179,"start_character":20,"end_line":179,"end_character":43},"in_reply_to":"bab6814e_a981a34f","updated":"2016-05-25 08:18:28.000000000","message":"Done","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"810945408e16492cc4bc4e293407d87c77ed626d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 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":2,"id":"bab6814e_21f3070c","line":1,"range":{"start_line":1,"start_character":17,"end_line":1,"end_character":26},"updated":"2016-05-25 08:35:12.000000000","message":"# Copyright 2016 Red Hat, Inc.","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"810945408e16492cc4bc4e293407d87c77ed626d","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.tests.tempest.api import base as base_api"},{"line_number":20,"context_line":"from neutron.tests.tempest import config"},{"line_number":21,"context_line":"import waiters"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d config.CONF"},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_e173bfb2","line":21,"range":{"start_line":21,"start_character":7,"end_line":21,"end_character":14},"updated":"2016-05-25 08:35:12.000000000","message":"from neutron.tests.tempest.scenario import waiters","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2dba828ca2fb10a02e7f636ba61614880bfe2299","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.tests.tempest.api import base as base_api"},{"line_number":20,"context_line":"from neutron.tests.tempest import config"},{"line_number":21,"context_line":"import waiters"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d config.CONF"},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_efb3ab08","line":21,"updated":"2016-05-25 08:22:54.000000000","message":"should this not be in the section above?","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"753c38f3b11165abf1cec8cd2c91c9be714db82d","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.tests.tempest.api import base as base_api"},{"line_number":20,"context_line":"from neutron.tests.tempest import config"},{"line_number":21,"context_line":"import waiters"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d config.CONF"},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_6177cfd4","line":21,"range":{"start_line":21,"start_character":7,"end_line":21,"end_character":14},"in_reply_to":"bab6814e_e173bfb2","updated":"2016-05-25 08:48:53.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"753c38f3b11165abf1cec8cd2c91c9be714db82d","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.tests.tempest.api import base as base_api"},{"line_number":20,"context_line":"from neutron.tests.tempest import config"},{"line_number":21,"context_line":"import waiters"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d config.CONF"},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_0147e377","line":21,"in_reply_to":"bab6814e_efb3ab08","updated":"2016-05-25 08:48:53.000000000","message":"It\u0027s in neutron.tests.tempest.scenario","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def resource_cleanup(cls):"},{"line_number":38,"context_line":"        for server in cls.servers:"},{"line_number":39,"context_line":"            cls.admin_manager.servers_client.delete_server(server)"},{"line_number":40,"context_line":"            waiters.wait_for_server_termination(cls.manager.servers_client,"},{"line_number":41,"context_line":"                                                server)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        for security_group in cls.security_groups:"},{"line_number":44,"context_line":"            cls.manager.compute_security_groups_client.delete_security_group("}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_57dd296f","line":41,"range":{"start_line":40,"start_character":0,"end_line":41,"end_character":55},"updated":"2016-05-25 09:13:26.000000000","message":"What happens if we get a timeout here? I think we won\u0027t properly cleanup the env with the code below. I think it would make sense to have a cleanup per resource than one cleanup per test.","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def resource_cleanup(cls):"},{"line_number":38,"context_line":"        for server in cls.servers:"},{"line_number":39,"context_line":"            cls.admin_manager.servers_client.delete_server(server)"},{"line_number":40,"context_line":"            waiters.wait_for_server_termination(cls.manager.servers_client,"},{"line_number":41,"context_line":"                                                server)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        for security_group in cls.security_groups:"},{"line_number":44,"context_line":"            cls.manager.compute_security_groups_client.delete_security_group("}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_f321c6fd","line":41,"range":{"start_line":40,"start_character":0,"end_line":41,"end_character":55},"in_reply_to":"bab6814e_57dd296f","updated":"2016-05-25 18:50:04.000000000","message":"This is the way it\u0027s done in the API tests.","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    @classmethod"},{"line_number":54,"context_line":"    def create_server(cls, flavor_ref, image_ref, key_name, networks,"},{"line_number":55,"context_line":"                      name\u003dNone):"},{"line_number":56,"context_line":"        if not name:"},{"line_number":57,"context_line":"            name \u003d data_utils.rand_name(\u0027server-test\u0027)"},{"line_number":58,"context_line":"        server \u003d cls.manager.servers_client.create_server("},{"line_number":59,"context_line":"            name\u003dname, flavorRef\u003dflavor_ref,"},{"line_number":60,"context_line":"            imageRef\u003dimage_ref,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_440e1933","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":54},"updated":"2016-05-25 09:13:26.000000000","message":"name \u003d name or data_utils.rand_name(\u0027server-test\u0027)","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    @classmethod"},{"line_number":54,"context_line":"    def create_server(cls, flavor_ref, image_ref, key_name, networks,"},{"line_number":55,"context_line":"                      name\u003dNone):"},{"line_number":56,"context_line":"        if not name:"},{"line_number":57,"context_line":"            name \u003d data_utils.rand_name(\u0027server-test\u0027)"},{"line_number":58,"context_line":"        server \u003d cls.manager.servers_client.create_server("},{"line_number":59,"context_line":"            name\u003dname, flavorRef\u003dflavor_ref,"},{"line_number":60,"context_line":"            imageRef\u003dimage_ref,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_4ac57b3a","line":57,"range":{"start_line":56,"start_character":0,"end_line":57,"end_character":54},"in_reply_to":"bab6814e_440e1933","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @classmethod"},{"line_number":67,"context_line":"    def create_keypair(cls, client\u003dNone):"},{"line_number":68,"context_line":"        if not client:"},{"line_number":69,"context_line":"            client \u003d cls.manager.keypairs_client"},{"line_number":70,"context_line":"        name \u003d data_utils.rand_name(\u0027keypair-test\u0027)"},{"line_number":71,"context_line":"        body \u003d client.create_keypair(name\u003dname)"},{"line_number":72,"context_line":"        cls.keypairs.append(body[\u0027keypair\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_e4258dae","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":48},"updated":"2016-05-25 09:13:26.000000000","message":"ditto","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @classmethod"},{"line_number":67,"context_line":"    def create_keypair(cls, client\u003dNone):"},{"line_number":68,"context_line":"        if not client:"},{"line_number":69,"context_line":"            client \u003d cls.manager.keypairs_client"},{"line_number":70,"context_line":"        name \u003d data_utils.rand_name(\u0027keypair-test\u0027)"},{"line_number":71,"context_line":"        body \u003d client.create_keypair(name\u003dname)"},{"line_number":72,"context_line":"        cls.keypairs.append(body[\u0027keypair\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_ca35eb46","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":48},"in_reply_to":"bab6814e_e4258dae","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                \u0027to_port\u0027: 22,"},{"line_number":95,"context_line":"                \u0027cidr\u0027: \u00270.0.0.0/0\u0027,"},{"line_number":96,"context_line":"            },"},{"line_number":97,"context_line":"            {"},{"line_number":98,"context_line":"                # ping"},{"line_number":99,"context_line":"                \u0027ip_protocol\u0027: \u0027icmp\u0027,"},{"line_number":100,"context_line":"                \u0027from_port\u0027: -1,"},{"line_number":101,"context_line":"                \u0027to_port\u0027: -1,"},{"line_number":102,"context_line":"                \u0027cidr\u0027: \u00270.0.0.0/0\u0027,"},{"line_number":103,"context_line":"            }"},{"line_number":104,"context_line":"        ]"},{"line_number":105,"context_line":"        rules \u003d list()"},{"line_number":106,"context_line":"        for ruleset in rulesets:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_5795293e","line":103,"range":{"start_line":97,"start_character":0,"end_line":103,"end_character":13},"updated":"2016-05-25 09:13:26.000000000","message":"Is icmp used in test_connection_auth() ?","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                \u0027to_port\u0027: 22,"},{"line_number":95,"context_line":"                \u0027cidr\u0027: \u00270.0.0.0/0\u0027,"},{"line_number":96,"context_line":"            },"},{"line_number":97,"context_line":"            {"},{"line_number":98,"context_line":"                # ping"},{"line_number":99,"context_line":"                \u0027ip_protocol\u0027: \u0027icmp\u0027,"},{"line_number":100,"context_line":"                \u0027from_port\u0027: -1,"},{"line_number":101,"context_line":"                \u0027to_port\u0027: -1,"},{"line_number":102,"context_line":"                \u0027cidr\u0027: \u00270.0.0.0/0\u0027,"},{"line_number":103,"context_line":"            }"},{"line_number":104,"context_line":"        ]"},{"line_number":105,"context_line":"        rules \u003d list()"},{"line_number":106,"context_line":"        for ruleset in rulesets:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_8ac76311","line":103,"range":{"start_line":97,"start_character":0,"end_line":103,"end_character":13},"in_reply_to":"bab6814e_5795293e","updated":"2016-05-25 18:50:04.000000000","message":"Removing.","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                \u0027cidr\u0027: \u00270.0.0.0/0\u0027,"},{"line_number":103,"context_line":"            }"},{"line_number":104,"context_line":"        ]"},{"line_number":105,"context_line":"        rules \u003d list()"},{"line_number":106,"context_line":"        for ruleset in rulesets:"},{"line_number":107,"context_line":"            sg_rule \u003d client_rules.create_security_group_rule("},{"line_number":108,"context_line":"                parent_group_id\u003dsecgroup_id, **ruleset)[\u0027security_group_rule\u0027]"},{"line_number":109,"context_line":"            rules.append(sg_rule)"},{"line_number":110,"context_line":"        return rules"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_17b441f0","line":109,"range":{"start_line":105,"start_character":0,"end_line":109,"end_character":33},"updated":"2016-05-25 09:13:26.000000000","message":"rules \u003d [client_rules.create_security_group_rule(\n             parent_group_id\u003dsecgroup_id, **ruleset[\n                 \u0027security_group_rule\u0027]\n         for ruleset in rulesets]","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                \u0027cidr\u0027: \u00270.0.0.0/0\u0027,"},{"line_number":103,"context_line":"            }"},{"line_number":104,"context_line":"        ]"},{"line_number":105,"context_line":"        rules \u003d list()"},{"line_number":106,"context_line":"        for ruleset in rulesets:"},{"line_number":107,"context_line":"            sg_rule \u003d client_rules.create_security_group_rule("},{"line_number":108,"context_line":"                parent_group_id\u003dsecgroup_id, **ruleset)[\u0027security_group_rule\u0027]"},{"line_number":109,"context_line":"            rules.append(sg_rule)"},{"line_number":110,"context_line":"        return rules"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_aa7067dd","line":109,"range":{"start_line":105,"start_character":0,"end_line":109,"end_character":33},"in_reply_to":"bab6814e_17b441f0","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            key_name\u003dkeypair[\u0027name\u0027],"},{"line_number":156,"context_line":"            networks\u003d[{\u0027uuid\u0027: network[\u0027id\u0027]}])"},{"line_number":157,"context_line":"        waiters.wait_for_server_status(self.manager.servers_client,"},{"line_number":158,"context_line":"                                       server[\u0027server\u0027][\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":159,"context_line":"        fip \u003d self.create_and_associate_floatingip(server[\u0027server\u0027][\u0027id\u0027])"},{"line_number":160,"context_line":"        self.check_connectivity(fip[\u0027floating_ip_address\u0027],"},{"line_number":161,"context_line":"                                CONF.validation.image_ssh_user,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_57f9a9c7","line":158,"range":{"start_line":158,"start_character":63,"end_line":158,"end_character":71},"updated":"2016-05-25 09:13:26.000000000","message":"I think we should make a constants or enums of server possible statuses.","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            key_name\u003dkeypair[\u0027name\u0027],"},{"line_number":156,"context_line":"            networks\u003d[{\u0027uuid\u0027: network[\u0027id\u0027]}])"},{"line_number":157,"context_line":"        waiters.wait_for_server_status(self.manager.servers_client,"},{"line_number":158,"context_line":"                                       server[\u0027server\u0027][\u0027id\u0027], \u0027ACTIVE\u0027)"},{"line_number":159,"context_line":"        fip \u003d self.create_and_associate_floatingip(server[\u0027server\u0027][\u0027id\u0027])"},{"line_number":160,"context_line":"        self.check_connectivity(fip[\u0027floating_ip_address\u0027],"},{"line_number":161,"context_line":"                                CONF.validation.image_ssh_user,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_fe3cedc0","line":158,"range":{"start_line":158,"start_character":63,"end_line":158,"end_character":71},"in_reply_to":"bab6814e_57f9a9c7","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"5f47b31e158e886660502d8f474510ff7615c719","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class NetworkBasicTest(BaseTempestTestCase):"},{"line_number":139,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":140,"context_line":"    force_tenant_isolation \u003d False"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    # Default to ipv4."}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_042b5f95","line":139,"updated":"2016-05-25 13:47:05.000000000","message":"Why do we need admin credentials?","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"b137ec9095ae05c68c8a4ad60069d41e85296a61","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class NetworkBasicTest(BaseTempestTestCase):"},{"line_number":139,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":140,"context_line":"    force_tenant_isolation \u003d False"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    # Default to ipv4."}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_b53f02b3","line":139,"in_reply_to":"bab6814e_042b5f95","updated":"2016-05-25 23:01:24.000000000","message":"No need.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b92689b15f5d7a3511480c3ce03ae8240008f49e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                                server)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        for security_group in cls.security_groups:"},{"line_number":45,"context_line":"            cls.manager.compute_security_groups_client.delete_security_group("},{"line_number":46,"context_line":"                security_group)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        for keypair in cls.keypairs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_62278612","line":45,"range":{"start_line":45,"start_character":24,"end_line":45,"end_character":54},"updated":"2016-05-26 12:02:54.000000000","message":"Can you use neutron_client here?","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"da82b3a69882ad7be91840a3d4bc608d3e958cd8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                                server)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        for security_group in cls.security_groups:"},{"line_number":45,"context_line":"            cls.manager.compute_security_groups_client.delete_security_group("},{"line_number":46,"context_line":"                security_group)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        for keypair in cls.keypairs:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_f9e324d6","line":45,"range":{"start_line":45,"start_character":24,"end_line":45,"end_character":54},"in_reply_to":"bab6814e_62278612","updated":"2016-05-26 16:54:13.000000000","message":"I\u0027ll remove it because it\u0027s not needed at the moment.","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"e2156df404100cdbb34305c6dd1fe3ff327e363f","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            sgs \u003d client.list_security_groups()[\u0027security_groups\u0027]"},{"line_number":79,"context_line":"            for sg in sgs:"},{"line_number":80,"context_line":"                if sg[\u0027name\u0027] \u003d\u003d \u0027default\u0027:"},{"line_number":81,"context_line":"                    secgroup_id \u003d sg[\u0027id\u0027]"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # This rule is intended to permit inbound ssh"},{"line_number":84,"context_line":"        # traffic from all sources, so no group_id is provided."}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_4aa714bd","line":81,"range":{"start_line":81,"start_character":20,"end_line":81,"end_character":31},"updated":"2016-05-26 00:09:28.000000000","message":"The iteration can be stopped when default sg is found:\n\n for ...\n   if ....\n     secgroup_id \u003d ...\n     break\n\nreplace \u0027default\u0027 by a constant","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"da82b3a69882ad7be91840a3d4bc608d3e958cd8","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            sgs \u003d client.list_security_groups()[\u0027security_groups\u0027]"},{"line_number":79,"context_line":"            for sg in sgs:"},{"line_number":80,"context_line":"                if sg[\u0027name\u0027] \u003d\u003d \u0027default\u0027:"},{"line_number":81,"context_line":"                    secgroup_id \u003d sg[\u0027id\u0027]"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # This rule is intended to permit inbound ssh"},{"line_number":84,"context_line":"        # traffic from all sources, so no group_id is provided."}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_5cd5fee2","line":81,"range":{"start_line":81,"start_character":20,"end_line":81,"end_character":31},"in_reply_to":"bab6814e_4aa714bd","updated":"2016-05-26 16:54:13.000000000","message":"Done","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"e2156df404100cdbb34305c6dd1fe3ff327e363f","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # traffic from all sources, so no group_id is provided."},{"line_number":85,"context_line":"        # Setting a group_id would only permit traffic from ports"},{"line_number":86,"context_line":"        # belonging to the same security group."},{"line_number":87,"context_line":"        rulesets \u003d ["},{"line_number":88,"context_line":"            {"},{"line_number":89,"context_line":"                # ssh"},{"line_number":90,"context_line":"                \u0027protocol\u0027: \u0027tcp\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_0a9a2c6e","line":87,"updated":"2016-05-26 00:09:28.000000000","message":"no need to define a list of 1 ruleset for the moment","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"da82b3a69882ad7be91840a3d4bc608d3e958cd8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # traffic from all sources, so no group_id is provided."},{"line_number":85,"context_line":"        # Setting a group_id would only permit traffic from ports"},{"line_number":86,"context_line":"        # belonging to the same security group."},{"line_number":87,"context_line":"        rulesets \u003d ["},{"line_number":88,"context_line":"            {"},{"line_number":89,"context_line":"                # ssh"},{"line_number":90,"context_line":"                \u0027protocol\u0027: \u0027tcp\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_fc22f252","line":87,"in_reply_to":"bab6814e_0a9a2c6e","updated":"2016-05-26 16:54:13.000000000","message":"Done","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"48d4a1aacd78b2427d8b0cb73e7a4b10816a456f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.servers \u003d []"},{"line_number":35,"context_line":"        cls.keypairs \u003d []"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def resource_cleanup(cls):"},{"line_number":39,"context_line":"        for server in cls.servers:"},{"line_number":40,"context_line":"            cls.manager.servers_client.delete_server(server)"},{"line_number":41,"context_line":"            waiters.wait_for_server_termination(cls.manager.servers_client,"},{"line_number":42,"context_line":"                                                server)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        for keypair in cls.keypairs:"},{"line_number":45,"context_line":"            cls.manager.keypairs_client.delete_keypair("},{"line_number":46,"context_line":"                keypair_name\u003dkeypair[\u0027name\u0027])"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        super(BaseTempestTestCase, cls).resource_cleanup()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    @classmethod"},{"line_number":51,"context_line":"    def create_server(cls, flavor_ref, image_ref, key_name, networks,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_4945a06e","line":48,"range":{"start_line":37,"start_character":0,"end_line":48,"end_character":58},"updated":"2016-05-30 08:23:37.000000000","message":"I still don\u0027t like we rely on that nothing bad happens during executing this code. The statement \"It\u0027s done this way\" doesn\u0027t mean it\u0027s done correctly. I\u0027d prefer to either use addCleanup method per resource or creating fixtures for resources.\n\naddCleanup sounds easier. e.g. https://github.com/openstack/neutron/blob/master/neutron/tests/tempest/api/base_routers.py#L28","commit_id":"bea2ec3cb903373e4e85158ca76cd3a2c69eb9b1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"48d4a1aacd78b2427d8b0cb73e7a4b10816a456f","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    @classmethod"},{"line_number":71,"context_line":"    def create_loginable_secgroup_rule(cls, secgroup_id\u003dNone):"},{"line_number":72,"context_line":"        client \u003d cls.manager.network_client"},{"line_number":73,"context_line":"        if secgroup_id is None:"},{"line_number":74,"context_line":"            sgs \u003d client.list_security_groups()[\u0027security_groups\u0027]"},{"line_number":75,"context_line":"            for sg in sgs:"},{"line_number":76,"context_line":"                if sg[\u0027name\u0027] \u003d\u003d constants.DEFAULT_SECURITY_GROUP:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9abb7d3a_e9d3b45d","line":73,"range":{"start_line":73,"start_character":11,"end_line":73,"end_character":30},"updated":"2016-05-30 08:23:37.000000000","message":"if not secgroup_id:","commit_id":"bea2ec3cb903373e4e85158ca76cd3a2c69eb9b1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0085a6cde7683ebdb41f0e5a0ff5105913ae259b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    @classmethod"},{"line_number":71,"context_line":"    def create_loginable_secgroup_rule(cls, secgroup_id\u003dNone):"},{"line_number":72,"context_line":"        client \u003d cls.manager.network_client"},{"line_number":73,"context_line":"        if secgroup_id is None:"},{"line_number":74,"context_line":"            sgs \u003d client.list_security_groups()[\u0027security_groups\u0027]"},{"line_number":75,"context_line":"            for sg in sgs:"},{"line_number":76,"context_line":"                if sg[\u0027name\u0027] \u003d\u003d constants.DEFAULT_SECURITY_GROUP:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_28a9fa24","line":73,"range":{"start_line":73,"start_character":11,"end_line":73,"end_character":30},"updated":"2016-05-31 11:30:46.000000000","message":"Nit: Unaddressed from PS9:\n\n if not secgroup_id:","commit_id":"156f71f7a26761ff20ff527d45dfac1d66626598"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"6b1a94d844df232c0cf8e5f421f75ed0d248bc78","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    @classmethod"},{"line_number":71,"context_line":"    def create_loginable_secgroup_rule(cls, secgroup_id\u003dNone):"},{"line_number":72,"context_line":"        client \u003d cls.manager.network_client"},{"line_number":73,"context_line":"        if secgroup_id is None:"},{"line_number":74,"context_line":"            sgs \u003d client.list_security_groups()[\u0027security_groups\u0027]"},{"line_number":75,"context_line":"            for sg in sgs:"},{"line_number":76,"context_line":"                if sg[\u0027name\u0027] \u003d\u003d constants.DEFAULT_SECURITY_GROUP:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_2b573427","line":73,"range":{"start_line":73,"start_character":11,"end_line":73,"end_character":30},"in_reply_to":"9abb7d3a_28a9fa24","updated":"2016-05-31 11:47:36.000000000","message":"Done","commit_id":"156f71f7a26761ff20ff527d45dfac1d66626598"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0085a6cde7683ebdb41f0e5a0ff5105913ae259b","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @classmethod"},{"line_number":103,"context_line":"    def create_and_associate_floatingip(cls, port_id):"},{"line_number":104,"context_line":"        kwargs \u003d {\u0027port_id\u0027: port_id}"},{"line_number":105,"context_line":"        fip \u003d cls.manager.network_client.create_floatingip("},{"line_number":106,"context_line":"            CONF.network.public_network_id,"},{"line_number":107,"context_line":"            **kwargs)[\u0027floatingip\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_c85dce48","line":104,"range":{"start_line":104,"start_character":8,"end_line":104,"end_character":37},"updated":"2016-05-31 11:30:46.000000000","message":"You don\u0027t need to create dict here, just pass the port_id\n\n fip \u003d cls.manager.network_client.create_floatingip(\n     CONF.network.public_network_id,\n     port_id\u003dport_id)","commit_id":"156f71f7a26761ff20ff527d45dfac1d66626598"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"6b1a94d844df232c0cf8e5f421f75ed0d248bc78","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @classmethod"},{"line_number":103,"context_line":"    def create_and_associate_floatingip(cls, port_id):"},{"line_number":104,"context_line":"        kwargs \u003d {\u0027port_id\u0027: port_id}"},{"line_number":105,"context_line":"        fip \u003d cls.manager.network_client.create_floatingip("},{"line_number":106,"context_line":"            CONF.network.public_network_id,"},{"line_number":107,"context_line":"            **kwargs)[\u0027floatingip\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_de43c440","line":104,"range":{"start_line":104,"start_character":8,"end_line":104,"end_character":37},"in_reply_to":"9abb7d3a_c85dce48","updated":"2016-05-31 11:47:36.000000000","message":"Done","commit_id":"156f71f7a26761ff20ff527d45dfac1d66626598"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0085a6cde7683ebdb41f0e5a0ff5105913ae259b","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                                       server[\u0027server\u0027][\u0027id\u0027],"},{"line_number":138,"context_line":"                                       constants.SERVER_STATUS_ACTIVE)"},{"line_number":139,"context_line":"        port \u003d self.client.list_ports(network_id\u003dnetwork[\u0027id\u0027],"},{"line_number":140,"context_line":"                                device_id\u003dserver[\u0027server\u0027][\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":141,"context_line":"        fip \u003d self.create_and_associate_floatingip(port[\u0027id\u0027])"},{"line_number":142,"context_line":"        self.check_connectivity(fip[\u0027floating_ip_address\u0027],"},{"line_number":143,"context_line":"                                CONF.validation.image_ssh_user,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_a86b2af0","line":140,"range":{"start_line":140,"start_character":32,"end_line":140,"end_character":77},"updated":"2016-05-31 11:30:46.000000000","message":"Interesting that this passes pep8 job :-/ It has a wrong indent.","commit_id":"156f71f7a26761ff20ff527d45dfac1d66626598"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"6b1a94d844df232c0cf8e5f421f75ed0d248bc78","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                                       server[\u0027server\u0027][\u0027id\u0027],"},{"line_number":138,"context_line":"                                       constants.SERVER_STATUS_ACTIVE)"},{"line_number":139,"context_line":"        port \u003d self.client.list_ports(network_id\u003dnetwork[\u0027id\u0027],"},{"line_number":140,"context_line":"                                device_id\u003dserver[\u0027server\u0027][\u0027id\u0027])[\u0027ports\u0027][0]"},{"line_number":141,"context_line":"        fip \u003d self.create_and_associate_floatingip(port[\u0027id\u0027])"},{"line_number":142,"context_line":"        self.check_connectivity(fip[\u0027floating_ip_address\u0027],"},{"line_number":143,"context_line":"                                CONF.validation.image_ssh_user,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9abb7d3a_3e33f0ac","line":140,"range":{"start_line":140,"start_character":32,"end_line":140,"end_character":77},"in_reply_to":"9abb7d3a_a86b2af0","updated":"2016-05-31 11:47:36.000000000","message":"Done","commit_id":"156f71f7a26761ff20ff527d45dfac1d66626598"}],"neutron/tests/tempest/scenario/test_base.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"7ce4229bd17b8568b56bec8b39532575d166039a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9abb7d3a_4f1ccdc1","updated":"2016-06-02 07:51:41.000000000","message":"Did you mean to name this file \"test_base\" or \"test_basic\" ?","commit_id":"18d74e611154d2464b8932e252790e6e0742fa17"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"be47c4e772347e6e8f03d48bafd73ea271500f26","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9abb7d3a_7116cbf2","in_reply_to":"9abb7d3a_4e0b262c","updated":"2016-06-02 10:50:58.000000000","message":"I didn\u0027t mean you should rename it :) I\u0027m just wondering whether it\u0027s what you intended.","commit_id":"18d74e611154d2464b8932e252790e6e0742fa17"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"ffc48dd0320e90fbceb375543bb2dce7cd64cb99","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9abb7d3a_4e0b262c","in_reply_to":"9abb7d3a_4f1ccdc1","updated":"2016-06-02 10:43:21.000000000","message":"Done","commit_id":"18d74e611154d2464b8932e252790e6e0742fa17"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"7ce4229bd17b8568b56bec8b39532575d166039a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.tests.tempest import config"},{"line_number":18,"context_line":"from neutron.tests.tempest.scenario import base"},{"line_number":19,"context_line":"from neutron.tests.tempest.scenario import constants"},{"line_number":20,"context_line":"from tempest.common import waiters"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9abb7d3a_2ff7c98d","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":34},"updated":"2016-06-02 07:51:41.000000000","message":"Nit: This should go to L16","commit_id":"18d74e611154d2464b8932e252790e6e0742fa17"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"ffc48dd0320e90fbceb375543bb2dce7cd64cb99","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron.tests.tempest import config"},{"line_number":18,"context_line":"from neutron.tests.tempest.scenario import base"},{"line_number":19,"context_line":"from neutron.tests.tempest.scenario import constants"},{"line_number":20,"context_line":"from tempest.common import waiters"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9abb7d3a_2e08622d","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":34},"in_reply_to":"9abb7d3a_2ff7c98d","updated":"2016-06-02 10:43:21.000000000","message":"Done","commit_id":"18d74e611154d2464b8932e252790e6e0742fa17"}],"neutron/tests/tempest/scenario/waiters.py":[{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"778e43b149596d5898b03533905d31e7a7ab2ced","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_49fe37af","line":1,"updated":"2016-05-25 07:44:06.000000000","message":"Why is this file here? This looks like something from tempest - can\u0027t we import it from there?","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"eb83a7f7f2cb53ddc8282811084b0800b42911a0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_f4f25e05","line":1,"in_reply_to":"bab6814e_49fe37af","updated":"2016-05-25 08:18:28.000000000","message":"AFAIU we don\u0027t want to rely on tempest so as first step a copy seems reasonable for me.","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"1a508538e77a5b4915d21cb070704664a71d06d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_a1b9b730","line":1,"in_reply_to":"bab6814e_f4f25e05","updated":"2016-05-25 08:34:24.000000000","message":"I would like amuller\u0027s and dmellado\u0027s opinion on this matter before we go forward with this. I\u0027m fine with leaving this here as long as we have a plan going forward with putting this in tempest.lib later on.","commit_id":"af16eaf6e96c2946ca7a09cd34de24323a293124"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# NOTE(afazekas): This function needs to know a token and a subject."},{"line_number":28,"context_line":"def wait_for_server_status(client, server_id, status, ready_wait\u003dTrue,"},{"line_number":29,"context_line":"                           extra_timeout\u003d0, raise_on_error\u003dTrue):"},{"line_number":30,"context_line":"    \"\"\"Waits for a server to reach a given status.\"\"\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _get_task_state(body):"},{"line_number":33,"context_line":"        return body.get(\u0027OS-EXT-STS:task_state\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_045a512a","line":30,"range":{"start_line":30,"start_character":7,"end_line":30,"end_character":12},"updated":"2016-05-25 09:13:26.000000000","message":"Nit: Wait","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":27,"context_line":"# NOTE(afazekas): This function needs to know a token and a subject."},{"line_number":28,"context_line":"def wait_for_server_status(client, server_id, status, ready_wait\u003dTrue,"},{"line_number":29,"context_line":"                           extra_timeout\u003d0, raise_on_error\u003dTrue):"},{"line_number":30,"context_line":"    \"\"\"Waits for a server to reach a given status.\"\"\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _get_task_state(body):"},{"line_number":33,"context_line":"        return body.get(\u0027OS-EXT-STS:task_state\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_3eb5d530","line":30,"range":{"start_line":30,"start_character":7,"end_line":30,"end_character":12},"in_reply_to":"bab6814e_045a512a","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                           extra_timeout\u003d0, raise_on_error\u003dTrue):"},{"line_number":30,"context_line":"    \"\"\"Waits for a server to reach a given status.\"\"\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _get_task_state(body):"},{"line_number":33,"context_line":"        return body.get(\u0027OS-EXT-STS:task_state\u0027, None)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    # NOTE(afazekas): UNKNOWN status possible on ERROR"},{"line_number":36,"context_line":"    # or in a very early stage."}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_449e1955","line":33,"range":{"start_line":32,"start_character":0,"end_line":33,"end_character":54},"updated":"2016-05-25 09:13:26.000000000","message":"Is there a reason to create a closure here? Can you move it outside of this function?","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":29,"context_line":"                           extra_timeout\u003d0, raise_on_error\u003dTrue):"},{"line_number":30,"context_line":"    \"\"\"Waits for a server to reach a given status.\"\"\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _get_task_state(body):"},{"line_number":33,"context_line":"        return body.get(\u0027OS-EXT-STS:task_state\u0027, None)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    # NOTE(afazekas): UNKNOWN status possible on ERROR"},{"line_number":36,"context_line":"    # or in a very early stage."}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_de7c8974","line":33,"range":{"start_line":32,"start_character":0,"end_line":33,"end_character":54},"in_reply_to":"bab6814e_449e1955","updated":"2016-05-25 18:50:04.000000000","message":"Moved","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    # NOTE(afazekas): UNKNOWN status possible on ERROR"},{"line_number":36,"context_line":"    # or in a very early stage."},{"line_number":37,"context_line":"    body \u003d client.show_server(server_id)[\u0027server\u0027]"},{"line_number":38,"context_line":"    old_status \u003d server_status \u003d body[\u0027status\u0027]"},{"line_number":39,"context_line":"    old_task_state \u003d task_state \u003d _get_task_state(body)"},{"line_number":40,"context_line":"    start_time \u003d int(time.time())"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_c4332912","line":37,"range":{"start_line":37,"start_character":4,"end_line":37,"end_character":8},"updated":"2016-05-25 09:13:26.000000000","message":"Can we rename it, it\u0027s not very descriptive. I suggest something like server_dict","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    # NOTE(afazekas): UNKNOWN status possible on ERROR"},{"line_number":36,"context_line":"    # or in a very early stage."},{"line_number":37,"context_line":"    body \u003d client.show_server(server_id)[\u0027server\u0027]"},{"line_number":38,"context_line":"    old_status \u003d server_status \u003d body[\u0027status\u0027]"},{"line_number":39,"context_line":"    old_task_state \u003d task_state \u003d _get_task_state(body)"},{"line_number":40,"context_line":"    start_time \u003d int(time.time())"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_fec98d7a","line":37,"range":{"start_line":37,"start_character":4,"end_line":37,"end_character":8},"in_reply_to":"bab6814e_c4332912","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    body \u003d client.show_server(server_id)[\u0027server\u0027]"},{"line_number":38,"context_line":"    old_status \u003d server_status \u003d body[\u0027status\u0027]"},{"line_number":39,"context_line":"    old_task_state \u003d task_state \u003d _get_task_state(body)"},{"line_number":40,"context_line":"    start_time \u003d int(time.time())"},{"line_number":41,"context_line":"    timeout \u003d client.build_timeout + extra_timeout"},{"line_number":42,"context_line":"    while True:"},{"line_number":43,"context_line":"        # NOTE(afazekas): Now the BUILD status only reached"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_2441550c","line":40,"range":{"start_line":40,"start_character":17,"end_line":40,"end_character":21},"updated":"2016-05-25 09:13:26.000000000","message":"You don\u0027t need the conversion","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    body \u003d client.show_server(server_id)[\u0027server\u0027]"},{"line_number":38,"context_line":"    old_status \u003d server_status \u003d body[\u0027status\u0027]"},{"line_number":39,"context_line":"    old_task_state \u003d task_state \u003d _get_task_state(body)"},{"line_number":40,"context_line":"    start_time \u003d int(time.time())"},{"line_number":41,"context_line":"    timeout \u003d client.build_timeout + extra_timeout"},{"line_number":42,"context_line":"    while True:"},{"line_number":43,"context_line":"        # NOTE(afazekas): Now the BUILD status only reached"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_9e884124","line":40,"range":{"start_line":40,"start_character":17,"end_line":40,"end_character":21},"in_reply_to":"bab6814e_2441550c","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        # NOTE(afazekas): Now the BUILD status only reached"},{"line_number":44,"context_line":"        # between the UNKNOWN-\u003eACTIVE transition."},{"line_number":45,"context_line":"        # TODO(afazekas): enumerate and validate the stable status set"},{"line_number":46,"context_line":"        if status \u003d\u003d \u0027BUILD\u0027 and server_status !\u003d \u0027UNKNOWN\u0027:"},{"line_number":47,"context_line":"            return"},{"line_number":48,"context_line":"        if server_status \u003d\u003d status:"},{"line_number":49,"context_line":"            if ready_wait:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_64f87d7d","line":46,"range":{"start_line":46,"start_character":21,"end_line":46,"end_character":28},"updated":"2016-05-25 09:13:26.000000000","message":"Would it make sense to make constants for statuses we use?","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        # NOTE(afazekas): Now the BUILD status only reached"},{"line_number":44,"context_line":"        # between the UNKNOWN-\u003eACTIVE transition."},{"line_number":45,"context_line":"        # TODO(afazekas): enumerate and validate the stable status set"},{"line_number":46,"context_line":"        if status \u003d\u003d \u0027BUILD\u0027 and server_status !\u003d \u0027UNKNOWN\u0027:"},{"line_number":47,"context_line":"            return"},{"line_number":48,"context_line":"        if server_status \u003d\u003d status:"},{"line_number":49,"context_line":"            if ready_wait:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_b97f1f65","line":46,"range":{"start_line":46,"start_character":21,"end_line":46,"end_character":28},"in_reply_to":"bab6814e_64f87d7d","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                # when no task in progress"},{"line_number":54,"context_line":"                # NOTE(afazekas): Converted to string because of the XML"},{"line_number":55,"context_line":"                # responses"},{"line_number":56,"context_line":"                if str(task_state) \u003d\u003d \"None\":"},{"line_number":57,"context_line":"                    # without state api extension 3 sec usually enough"},{"line_number":58,"context_line":"                    time.sleep(CONF.compute.ready_wait)"},{"line_number":59,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_8472c10f","line":56,"range":{"start_line":56,"start_character":19,"end_line":56,"end_character":45},"updated":"2016-05-25 09:13:26.000000000","message":"Why do we compare strings here? Can we do just:\n\n if task_state is None:","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                # when no task in progress"},{"line_number":54,"context_line":"                # NOTE(afazekas): Converted to string because of the XML"},{"line_number":55,"context_line":"                # responses"},{"line_number":56,"context_line":"                if str(task_state) \u003d\u003d \"None\":"},{"line_number":57,"context_line":"                    # without state api extension 3 sec usually enough"},{"line_number":58,"context_line":"                    time.sleep(CONF.compute.ready_wait)"},{"line_number":59,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_99d33b38","line":56,"range":{"start_line":56,"start_character":19,"end_line":56,"end_character":45},"in_reply_to":"bab6814e_8472c10f","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        body \u003d client.show_server(server_id)[\u0027server\u0027]"},{"line_number":65,"context_line":"        server_status \u003d body[\u0027status\u0027]"},{"line_number":66,"context_line":"        task_state \u003d _get_task_state(body)"},{"line_number":67,"context_line":"        if (server_status !\u003d old_status) or (task_state !\u003d old_task_state):"},{"line_number":68,"context_line":"            LOG.info(\u0027State transition \"%s\" \u003d\u003d\u003e \"%s\" after %d second wait\u0027,"},{"line_number":69,"context_line":"                     \u0027/\u0027.join((old_status, str(old_task_state))),"},{"line_number":70,"context_line":"                     \u0027/\u0027.join((server_status, str(task_state))),"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_04a2514b","line":67,"range":{"start_line":67,"start_character":11,"end_line":67,"end_character":40},"updated":"2016-05-25 09:13:26.000000000","message":"No need for brackets","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        body \u003d client.show_server(server_id)[\u0027server\u0027]"},{"line_number":65,"context_line":"        server_status \u003d body[\u0027status\u0027]"},{"line_number":66,"context_line":"        task_state \u003d _get_task_state(body)"},{"line_number":67,"context_line":"        if (server_status !\u003d old_status) or (task_state !\u003d old_task_state):"},{"line_number":68,"context_line":"            LOG.info(\u0027State transition \"%s\" \u003d\u003d\u003e \"%s\" after %d second wait\u0027,"},{"line_number":69,"context_line":"                     \u0027/\u0027.join((old_status, str(old_task_state))),"},{"line_number":70,"context_line":"                     \u0027/\u0027.join((server_status, str(task_state))),"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_99b69bda","line":67,"range":{"start_line":67,"start_character":11,"end_line":67,"end_character":40},"in_reply_to":"bab6814e_04a2514b","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                     \u0027/\u0027.join((old_status, str(old_task_state))),"},{"line_number":70,"context_line":"                     \u0027/\u0027.join((server_status, str(task_state))),"},{"line_number":71,"context_line":"                     time.time() - start_time)"},{"line_number":72,"context_line":"        if (server_status \u003d\u003d \u0027ERROR\u0027) and raise_on_error:"},{"line_number":73,"context_line":"            if \u0027fault\u0027 in body:"},{"line_number":74,"context_line":"                raise exceptions.BuildErrorException(body[\u0027fault\u0027],"},{"line_number":75,"context_line":"                                                     server_id\u003dserver_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_a406e51d","line":72,"range":{"start_line":72,"start_character":11,"end_line":72,"end_character":37},"updated":"2016-05-25 09:13:26.000000000","message":"No need for brackets","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                     \u0027/\u0027.join((old_status, str(old_task_state))),"},{"line_number":70,"context_line":"                     \u0027/\u0027.join((server_status, str(task_state))),"},{"line_number":71,"context_line":"                     time.time() - start_time)"},{"line_number":72,"context_line":"        if (server_status \u003d\u003d \u0027ERROR\u0027) and raise_on_error:"},{"line_number":73,"context_line":"            if \u0027fault\u0027 in body:"},{"line_number":74,"context_line":"                raise exceptions.BuildErrorException(body[\u0027fault\u0027],"},{"line_number":75,"context_line":"                                                     server_id\u003dserver_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_59aef385","line":72,"range":{"start_line":72,"start_character":11,"end_line":72,"end_character":37},"in_reply_to":"bab6814e_a406e51d","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            else:"},{"line_number":77,"context_line":"                raise exceptions.BuildErrorException(server_id\u003dserver_id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        timed_out \u003d int(time.time()) - start_time \u003e\u003d timeout"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if timed_out:"},{"line_number":82,"context_line":"            expected_task_state \u003d \u0027None\u0027 if ready_wait else \u0027n/a\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_644b5d2c","line":79,"range":{"start_line":79,"start_character":20,"end_line":79,"end_character":24},"updated":"2016-05-25 09:13:26.000000000","message":"Not needed","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            else:"},{"line_number":77,"context_line":"                raise exceptions.BuildErrorException(server_id\u003dserver_id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        timed_out \u003d int(time.time()) - start_time \u003e\u003d timeout"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if timed_out:"},{"line_number":82,"context_line":"            expected_task_state \u003d \u0027None\u0027 if ready_wait else \u0027n/a\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_391ccfc0","line":79,"range":{"start_line":79,"start_character":20,"end_line":79,"end_character":24},"in_reply_to":"bab6814e_644b5d2c","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        timed_out \u003d int(time.time()) - start_time \u003e\u003d timeout"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if timed_out:"},{"line_number":82,"context_line":"            expected_task_state \u003d \u0027None\u0027 if ready_wait else \u0027n/a\u0027"},{"line_number":83,"context_line":"            message \u003d (\u0027Server %(server_id)s failed to reach %(status)s \u0027"},{"line_number":84,"context_line":"                       \u0027status and task state \"%(expected_task_state)s\" \u0027"},{"line_number":85,"context_line":"                       \u0027within the required time (%(timeout)s s).\u0027 %"},{"line_number":86,"context_line":"                       {\u0027server_id\u0027: server_id,"},{"line_number":87,"context_line":"                        \u0027status\u0027: status,"},{"line_number":88,"context_line":"                        \u0027expected_task_state\u0027: expected_task_state,"},{"line_number":89,"context_line":"                        \u0027timeout\u0027: timeout})"},{"line_number":90,"context_line":"            message +\u003d \u0027 Current status: %s.\u0027 % server_status"},{"line_number":91,"context_line":"            message +\u003d \u0027 Current task state: %s.\u0027 % task_state"},{"line_number":92,"context_line":"            caller \u003d misc_utils.find_test_caller()"},{"line_number":93,"context_line":"            if caller:"},{"line_number":94,"context_line":"                message \u003d \u0027(%s) %s\u0027 % (caller, message)"},{"line_number":95,"context_line":"            raise exceptions.TimeoutException(message)"},{"line_number":96,"context_line":"        old_status \u003d server_status"},{"line_number":97,"context_line":"        old_task_state \u003d task_state"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_b79d75bd","line":95,"range":{"start_line":81,"start_character":0,"end_line":95,"end_character":54},"updated":"2016-05-25 09:13:26.000000000","message":"Can we use a timeout context instead of computing the timeout manually? http://eventlet.net/doc/modules/timeout.html","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        timed_out \u003d int(time.time()) - start_time \u003e\u003d timeout"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if timed_out:"},{"line_number":82,"context_line":"            expected_task_state \u003d \u0027None\u0027 if ready_wait else \u0027n/a\u0027"},{"line_number":83,"context_line":"            message \u003d (\u0027Server %(server_id)s failed to reach %(status)s \u0027"},{"line_number":84,"context_line":"                       \u0027status and task state \"%(expected_task_state)s\" \u0027"},{"line_number":85,"context_line":"                       \u0027within the required time (%(timeout)s s).\u0027 %"},{"line_number":86,"context_line":"                       {\u0027server_id\u0027: server_id,"},{"line_number":87,"context_line":"                        \u0027status\u0027: status,"},{"line_number":88,"context_line":"                        \u0027expected_task_state\u0027: expected_task_state,"},{"line_number":89,"context_line":"                        \u0027timeout\u0027: timeout})"},{"line_number":90,"context_line":"            message +\u003d \u0027 Current status: %s.\u0027 % server_status"},{"line_number":91,"context_line":"            message +\u003d \u0027 Current task state: %s.\u0027 % task_state"},{"line_number":92,"context_line":"            caller \u003d misc_utils.find_test_caller()"},{"line_number":93,"context_line":"            if caller:"},{"line_number":94,"context_line":"                message \u003d \u0027(%s) %s\u0027 % (caller, message)"},{"line_number":95,"context_line":"            raise exceptions.TimeoutException(message)"},{"line_number":96,"context_line":"        old_status \u003d server_status"},{"line_number":97,"context_line":"        old_task_state \u003d task_state"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_e1956d40","line":95,"range":{"start_line":81,"start_character":0,"end_line":95,"end_character":54},"in_reply_to":"bab6814e_b79d75bd","updated":"2016-05-25 18:50:04.000000000","message":"Will do in a later patch.","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def wait_for_server_termination(client, server_id, ignore_error\u003dFalse):"},{"line_number":101,"context_line":"    \"\"\"Waits for server to reach termination.\"\"\""},{"line_number":102,"context_line":"    start_time \u003d int(time.time())"},{"line_number":103,"context_line":"    while True:"},{"line_number":104,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_c47689a2","line":101,"range":{"start_line":101,"start_character":7,"end_line":101,"end_character":12},"updated":"2016-05-25 09:13:26.000000000","message":"Nit: Wait","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def wait_for_server_termination(client, server_id, ignore_error\u003dFalse):"},{"line_number":101,"context_line":"    \"\"\"Waits for server to reach termination.\"\"\""},{"line_number":102,"context_line":"    start_time \u003d int(time.time())"},{"line_number":103,"context_line":"    while True:"},{"line_number":104,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_fec50d3d","line":101,"range":{"start_line":101,"start_character":7,"end_line":101,"end_character":12},"in_reply_to":"bab6814e_c47689a2","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def wait_for_server_termination(client, server_id, ignore_error\u003dFalse):"},{"line_number":101,"context_line":"    \"\"\"Waits for server to reach termination.\"\"\""},{"line_number":102,"context_line":"    start_time \u003d int(time.time())"},{"line_number":103,"context_line":"    while True:"},{"line_number":104,"context_line":"        try:"},{"line_number":105,"context_line":"            body \u003d client.show_server(server_id)[\u0027server\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_04cd31b7","line":102,"range":{"start_line":102,"start_character":17,"end_line":102,"end_character":21},"updated":"2016-05-25 09:13:26.000000000","message":"No need for this","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"def wait_for_server_termination(client, server_id, ignore_error\u003dFalse):"},{"line_number":101,"context_line":"    \"\"\"Waits for server to reach termination.\"\"\""},{"line_number":102,"context_line":"    start_time \u003d int(time.time())"},{"line_number":103,"context_line":"    while True:"},{"line_number":104,"context_line":"        try:"},{"line_number":105,"context_line":"            body \u003d client.show_server(server_id)[\u0027server\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_7ee0fdcc","line":102,"range":{"start_line":102,"start_character":17,"end_line":102,"end_character":21},"in_reply_to":"bab6814e_04cd31b7","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e22cde10c8ec87383caeccae80b47f6e2ba9eaee","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        if server_status \u003d\u003d \u0027ERROR\u0027 and not ignore_error:"},{"line_number":111,"context_line":"            raise exceptions.BuildErrorException(server_id\u003dserver_id)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if int(time.time()) - start_time \u003e\u003d client.build_timeout:"},{"line_number":114,"context_line":"            raise exceptions.TimeoutException"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        time.sleep(client.build_interval)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_64c4fd91","line":113,"range":{"start_line":113,"start_character":11,"end_line":113,"end_character":15},"updated":"2016-05-25 09:13:26.000000000","message":"Ditto","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df17eae2ccc6a78eb74e3a05c7f89398ebb08593","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        if server_status \u003d\u003d \u0027ERROR\u0027 and not ignore_error:"},{"line_number":111,"context_line":"            raise exceptions.BuildErrorException(server_id\u003dserver_id)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if int(time.time()) - start_time \u003e\u003d client.build_timeout:"},{"line_number":114,"context_line":"            raise exceptions.TimeoutException"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        time.sleep(client.build_interval)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_992b3beb","line":113,"range":{"start_line":113,"start_character":11,"end_line":113,"end_character":15},"in_reply_to":"bab6814e_64c4fd91","updated":"2016-05-25 18:50:04.000000000","message":"Done","commit_id":"58e2a916deeae980b3bd459b30b0ee60eaa5832b"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"5f47b31e158e886660502d8f474510ff7615c719","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# NOTE(afazekas): This function needs to know a token and a subject."},{"line_number":28,"context_line":"def wait_for_server_status(client, server_id, status, ready_wait\u003dTrue,"},{"line_number":29,"context_line":"                           extra_timeout\u003d0, raise_on_error\u003dTrue):"},{"line_number":30,"context_line":"    \"\"\"Waits for a server to reach a given status.\"\"\""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_1fe3a834","line":28,"updated":"2016-05-25 13:47:05.000000000","message":"Can you ask Tempest people if it makes sense to move these helpers from Tempest to tempest.lib? If so, we can help and then import from Neutron. Otherwise we\u0027ll copy/paste, I don\u0027t see any other option.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"b137ec9095ae05c68c8a4ad60069d41e85296a61","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# NOTE(afazekas): This function needs to know a token and a subject."},{"line_number":28,"context_line":"def wait_for_server_status(client, server_id, status, ready_wait\u003dTrue,"},{"line_number":29,"context_line":"                           extra_timeout\u003d0, raise_on_error\u003dTrue):"},{"line_number":30,"context_line":"    \"\"\"Waits for a server to reach a given status.\"\"\""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_2212c1b4","line":28,"in_reply_to":"bab6814e_1fe3a834","updated":"2016-05-25 23:01:24.000000000","message":"Will do.","commit_id":"891edbcda6241a0d0fbad3772e417063b9dbc21a"}],"neutron/tests/tempest/services/network/json/network_client.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"e2156df404100cdbb34305c6dd1fe3ff327e363f","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        post_body[\u0027security_group_rule\u0027]["},{"line_number":648,"context_line":"            \u0027security_group_id\u0027] \u003d security_group_id"},{"line_number":649,"context_line":"        body \u003d jsonutils.dumps(post_body)"},{"line_number":650,"context_line":"        uri \u003d \u0027%s/security-group-rules\u0027 % (self.uri_prefix)"},{"line_number":651,"context_line":"        resp, body \u003d self.post(uri, body)"},{"line_number":652,"context_line":"        self.expected_success(201, resp.status)"},{"line_number":653,"context_line":"        body \u003d jsonutils.loads(body)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_ea7d281d","line":650,"updated":"2016-05-26 00:09:28.000000000","message":"useless braces","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"da82b3a69882ad7be91840a3d4bc608d3e958cd8","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        post_body[\u0027security_group_rule\u0027]["},{"line_number":648,"context_line":"            \u0027security_group_id\u0027] \u003d security_group_id"},{"line_number":649,"context_line":"        body \u003d jsonutils.dumps(post_body)"},{"line_number":650,"context_line":"        uri \u003d \u0027%s/security-group-rules\u0027 % (self.uri_prefix)"},{"line_number":651,"context_line":"        resp, body \u003d self.post(uri, body)"},{"line_number":652,"context_line":"        self.expected_success(201, resp.status)"},{"line_number":653,"context_line":"        body \u003d jsonutils.loads(body)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_3c559a4f","line":650,"in_reply_to":"bab6814e_ea7d281d","updated":"2016-05-26 16:54:13.000000000","message":"Done","commit_id":"3bbc7b1302a83dc2cf359a9562f6a93b4727fe78"}]}
