)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"ce249421fed179efe7467c26f929f18861fd04a0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"   defined in Tempest."},{"line_number":12,"context_line":"2. methods should be consistent with names and"},{"line_number":13,"context_line":"   parameters."},{"line_number":14,"context_line":"4. Add docstring about method usage and parameter."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Signed-off by: Soniya Vyas\u003csvyas@redhat.com\u003e"},{"line_number":17,"context_line":"Change-Id: I191c8861c9ec29b78c9c8ad12ff2ddf3ffbf4db1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ff570b3c_3a8d0fd3","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":1},"updated":"2020-05-18 23:14:10.000000000","message":"3?","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"9d535c5f183f2eb7905be7a257c305cbdc954c14","unresolved":false,"context_lines":[{"line_number":11,"context_line":"   defined in Tempest."},{"line_number":12,"context_line":"2. methods should be consistent with names and"},{"line_number":13,"context_line":"   parameters."},{"line_number":14,"context_line":"4. Add docstring about method usage and parameter."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Signed-off by: Soniya Vyas\u003csvyas@redhat.com\u003e"},{"line_number":17,"context_line":"Change-Id: I191c8861c9ec29b78c9c8ad12ff2ddf3ffbf4db1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ff570b3c_ae243db0","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":1},"in_reply_to":"ff570b3c_3a8d0fd3","updated":"2020-05-19 05:58:02.000000000","message":"Ohh, I will correct that","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Soniya Vyas \u003csvyas@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-07-30 18:48:05 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Need to have stable tempest scenario manager"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch addresses following facts:"},{"line_number":10,"context_line":"1. common manager methods among plugins should be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9f560f44_b33df390","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":50},"updated":"2020-08-03 09:33:46.000000000","message":"Could you please rephrase this? Seems like the patch mainly adds missing docstrings.","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[WIP] Need to have stable tempest scenario manager"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch addresses following facts:"},{"line_number":10,"context_line":"1. common manager methods among plugins should be"},{"line_number":11,"context_line":"   defined in Tempest."},{"line_number":12,"context_line":"2. methods should be consistent with names and"},{"line_number":13,"context_line":"   parameters."},{"line_number":14,"context_line":"3. Add docstring about method usage and parameter."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9f560f44_d33867a1","line":11,"range":{"start_line":10,"start_character":0,"end_line":11,"end_character":22},"updated":"2020-08-03 09:33:46.000000000","message":"I think this is not addressed in this patch.","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Soniya Vyas \u003csvyas@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-08-07 16:14:56 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Need to have stable tempest scenario manager"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch addresses following facts:"},{"line_number":10,"context_line":"1. common manager methods among plugins should be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9f560f44_c0dad477","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"updated":"2020-08-11 14:16:12.000000000","message":"let\u0027s remove this now.","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"}],"tempest/scenario/manager.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ae7b7c9db937f12db1bbcbaf10b8b2280a62470d","unresolved":false,"context_lines":[{"line_number":373,"context_line":"            description\u003ddescription,"},{"line_number":374,"context_line":"            metadata\u003dmetadata)[\u0027snapshot\u0027]"},{"line_number":375,"context_line":"        if wait:"},{"line_number":376,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":377,"context_line":"            for count in _utils._iterate_timeout("},{"line_number":378,"context_line":"                    timeout,"},{"line_number":379,"context_line":"                    \"Timeout waiting for the volume snapshot to be available.\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_6d3325ac","line":376,"updated":"2020-04-30 13:33:41.000000000","message":"pep8: F841 local variable \u0027snapshot_id\u0027 is assigned to but never used","commit_id":"47c6fc0042f0d44fddf8eb3bf53bf0202d6e4916"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ae7b7c9db937f12db1bbcbaf10b8b2280a62470d","unresolved":false,"context_lines":[{"line_number":374,"context_line":"            metadata\u003dmetadata)[\u0027snapshot\u0027]"},{"line_number":375,"context_line":"        if wait:"},{"line_number":376,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":377,"context_line":"            for count in _utils._iterate_timeout("},{"line_number":378,"context_line":"                    timeout,"},{"line_number":379,"context_line":"                    \"Timeout waiting for the volume snapshot to be available.\""},{"line_number":380,"context_line":"            ):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_cd26b968","line":377,"updated":"2020-04-30 13:33:41.000000000","message":"pep8: F821 undefined name \u0027_utils\u0027","commit_id":"47c6fc0042f0d44fddf8eb3bf53bf0202d6e4916"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4b0211f8aa40ee08125d36c2f6dfea91641d543d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                    \u0027Either api_v1 or api_v2 must be True in \u0027"},{"line_number":109,"context_line":"                    \u0027[image-feature-enabled].\u0027)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        setup_compute_client(cls)"},{"line_number":112,"context_line":"        setup_nova_secgroup_client(cls)"},{"line_number":113,"context_line":"        setup_neutron_network_client(cls)"},{"line_number":114,"context_line":"        if CONF.service_available.cinder:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f493fa4_17f4de5a","line":111,"updated":"2020-05-05 14:56:13.000000000","message":"pep8: F821 undefined name \u0027setup_compute_client\u0027","commit_id":"164fdae22733da106a9aa421e72be7c02cdefbd5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4b0211f8aa40ee08125d36c2f6dfea91641d543d","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                    \u0027[image-feature-enabled].\u0027)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        setup_compute_client(cls)"},{"line_number":112,"context_line":"        setup_nova_secgroup_client(cls)"},{"line_number":113,"context_line":"        setup_neutron_network_client(cls)"},{"line_number":114,"context_line":"        if CONF.service_available.cinder:"},{"line_number":115,"context_line":"            cls.volumes_client \u003d cls.os_primary.volumes_client_latest"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f493fa4_77e9e27e","line":112,"updated":"2020-05-05 14:56:13.000000000","message":"pep8: F821 undefined name \u0027setup_nova_secgroup_client\u0027","commit_id":"164fdae22733da106a9aa421e72be7c02cdefbd5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4b0211f8aa40ee08125d36c2f6dfea91641d543d","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        setup_compute_client(cls)"},{"line_number":112,"context_line":"        setup_nova_secgroup_client(cls)"},{"line_number":113,"context_line":"        setup_neutron_network_client(cls)"},{"line_number":114,"context_line":"        if CONF.service_available.cinder:"},{"line_number":115,"context_line":"            cls.volumes_client \u003d cls.os_primary.volumes_client_latest"},{"line_number":116,"context_line":"            cls.snapshots_client \u003d cls.os_primary.snapshots_client_latest"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f493fa4_57ee6688","line":113,"updated":"2020-05-05 14:56:13.000000000","message":"pep8: F821 undefined name \u0027setup_neutron_network_client\u0027","commit_id":"164fdae22733da106a9aa421e72be7c02cdefbd5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4b0211f8aa40ee08125d36c2f6dfea91641d543d","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            description\u003ddescription,"},{"line_number":382,"context_line":"            metadata\u003dmetadata)[\u0027snapshot\u0027]"},{"line_number":383,"context_line":"        if wait:"},{"line_number":384,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":385,"context_line":"            for count in _utils._iterate_timeout("},{"line_number":386,"context_line":"                    timeout,"},{"line_number":387,"context_line":"                    \"Timeout waiting for the volume snapshot to be available.\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f493fa4_b7024a3d","line":384,"updated":"2020-05-05 14:56:13.000000000","message":"pep8: F841 local variable \u0027snapshot_id\u0027 is assigned to but never used","commit_id":"164fdae22733da106a9aa421e72be7c02cdefbd5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4b0211f8aa40ee08125d36c2f6dfea91641d543d","unresolved":false,"context_lines":[{"line_number":382,"context_line":"            metadata\u003dmetadata)[\u0027snapshot\u0027]"},{"line_number":383,"context_line":"        if wait:"},{"line_number":384,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":385,"context_line":"            for count in _utils._iterate_timeout("},{"line_number":386,"context_line":"                    timeout,"},{"line_number":387,"context_line":"                    \"Timeout waiting for the volume snapshot to be available.\""},{"line_number":388,"context_line":"            ):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f493fa4_97ff4e33","line":385,"updated":"2020-05-05 14:56:13.000000000","message":"pep8: F821 undefined name \u0027_utils\u0027","commit_id":"164fdae22733da106a9aa421e72be7c02cdefbd5"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0738b385ad698cdf300d91e3625e738d4a87dee6","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                    \u0027Either api_v1 or api_v2 must be True in \u0027"},{"line_number":134,"context_line":"                    \u0027[image-feature-enabled].\u0027)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        setup_compute_client(cls)"},{"line_number":137,"context_line":"        setup_nova_secgroup_client(cls)"},{"line_number":138,"context_line":"        setup_neutron_network_client(cls)"},{"line_number":139,"context_line":"        if CONF.service_available.cinder:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_ce08352a","line":136,"updated":"2020-05-11 09:01:14.000000000","message":"pep8: F821 undefined name \u0027setup_compute_client\u0027","commit_id":"f2a98740751e6afca0f782f17e6af33331a470dc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0738b385ad698cdf300d91e3625e738d4a87dee6","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    \u0027[image-feature-enabled].\u0027)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        setup_compute_client(cls)"},{"line_number":137,"context_line":"        setup_nova_secgroup_client(cls)"},{"line_number":138,"context_line":"        setup_neutron_network_client(cls)"},{"line_number":139,"context_line":"        if CONF.service_available.cinder:"},{"line_number":140,"context_line":"            cls.volumes_client \u003d cls.os_primary.volumes_client_latest"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_ae0d0139","line":137,"updated":"2020-05-11 09:01:14.000000000","message":"pep8: F821 undefined name \u0027setup_nova_secgroup_client\u0027","commit_id":"f2a98740751e6afca0f782f17e6af33331a470dc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0738b385ad698cdf300d91e3625e738d4a87dee6","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        setup_compute_client(cls)"},{"line_number":137,"context_line":"        setup_nova_secgroup_client(cls)"},{"line_number":138,"context_line":"        setup_neutron_network_client(cls)"},{"line_number":139,"context_line":"        if CONF.service_available.cinder:"},{"line_number":140,"context_line":"            cls.volumes_client \u003d cls.os_primary.volumes_client_latest"},{"line_number":141,"context_line":"            cls.snapshots_client \u003d cls.os_primary.snapshots_client_latest"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_0e122d59","line":138,"updated":"2020-05-11 09:01:14.000000000","message":"pep8: F821 undefined name \u0027setup_neutron_network_client\u0027","commit_id":"f2a98740751e6afca0f782f17e6af33331a470dc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0738b385ad698cdf300d91e3625e738d4a87dee6","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            description\u003ddescription,"},{"line_number":382,"context_line":"            metadata\u003dmetadata)[\u0027snapshot\u0027]"},{"line_number":383,"context_line":"        if wait:"},{"line_number":384,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":385,"context_line":"            for count in _utils._iterate_timeout("},{"line_number":386,"context_line":"                    timeout,"},{"line_number":387,"context_line":"                    \"Timeout waiting for the volume snapshot to be available.\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_ee0ed930","line":384,"updated":"2020-05-11 09:01:14.000000000","message":"pep8: F841 local variable \u0027snapshot_id\u0027 is assigned to but never used","commit_id":"f2a98740751e6afca0f782f17e6af33331a470dc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0738b385ad698cdf300d91e3625e738d4a87dee6","unresolved":false,"context_lines":[{"line_number":382,"context_line":"            metadata\u003dmetadata)[\u0027snapshot\u0027]"},{"line_number":383,"context_line":"        if wait:"},{"line_number":384,"context_line":"            snapshot_id \u003d snapshot[\u0027id\u0027]"},{"line_number":385,"context_line":"            for count in _utils._iterate_timeout("},{"line_number":386,"context_line":"                    timeout,"},{"line_number":387,"context_line":"                    \"Timeout waiting for the volume snapshot to be available.\""},{"line_number":388,"context_line":"            ):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_4e1c256a","line":385,"updated":"2020-05-11 09:01:14.000000000","message":"pep8: F821 undefined name \u0027_utils\u0027","commit_id":"f2a98740751e6afca0f782f17e6af33331a470dc"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"ce249421fed179efe7467c26f929f18861fd04a0","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        cls.compute_images_client \u003d cls.os_primary.compute_images_client"},{"line_number":96,"context_line":"        cls.keypairs_client \u003d cls.os_primary.keypairs_client"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def setup_nova_secgroup_client(cls):"},{"line_number":99,"context_line":"        \"\"\"Nova security groups client \"\"\""},{"line_number":100,"context_line":"        cls.compute_security_groups_client \u003d ("},{"line_number":101,"context_line":"            cls.os_primary.compute_security_groups_client)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_1db00543","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":34},"updated":"2020-05-18 23:14:10.000000000","message":"I think `setup_compute_secgroup_client` is better because using `nova` is a bit inconsistent against `setup_*compute*_client`.","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"9d535c5f183f2eb7905be7a257c305cbdc954c14","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        cls.compute_images_client \u003d cls.os_primary.compute_images_client"},{"line_number":96,"context_line":"        cls.keypairs_client \u003d cls.os_primary.keypairs_client"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def setup_nova_secgroup_client(cls):"},{"line_number":99,"context_line":"        \"\"\"Nova security groups client \"\"\""},{"line_number":100,"context_line":"        cls.compute_security_groups_client \u003d ("},{"line_number":101,"context_line":"            cls.os_primary.compute_security_groups_client)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_2eb30d4f","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":34},"in_reply_to":"ff570b3c_1db00543","updated":"2020-05-19 05:58:02.000000000","message":"Correct, I will update in next patch set","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"ce249421fed179efe7467c26f929f18861fd04a0","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        cls.servers_client \u003d cls.os_primary.servers_client"},{"line_number":105,"context_line":"        cls.interface_client \u003d cls.os_primary.interfaces_client"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def setup_neutron_network_client(cls):"},{"line_number":108,"context_line":"        \"\"\"Neutron network client \"\"\""},{"line_number":109,"context_line":"        cls.networks_client \u003d cls.os_primary.networks_client"},{"line_number":110,"context_line":"        cls.ports_client \u003d cls.os_primary.ports_client"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_fd6711e8","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":36},"updated":"2020-05-18 23:14:10.000000000","message":"`neutron_network` is a bit redundant. I think just `network` is enough.","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"9d535c5f183f2eb7905be7a257c305cbdc954c14","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        cls.servers_client \u003d cls.os_primary.servers_client"},{"line_number":105,"context_line":"        cls.interface_client \u003d cls.os_primary.interfaces_client"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def setup_neutron_network_client(cls):"},{"line_number":108,"context_line":"        \"\"\"Neutron network client \"\"\""},{"line_number":109,"context_line":"        cls.networks_client \u003d cls.os_primary.networks_client"},{"line_number":110,"context_line":"        cls.ports_client \u003d cls.os_primary.ports_client"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_ce6d31cd","line":107,"range":{"start_line":107,"start_character":8,"end_line":107,"end_character":36},"in_reply_to":"ff570b3c_fd6711e8","updated":"2020-05-19 05:58:02.000000000","message":"Sounds good","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"ce249421fed179efe7467c26f929f18861fd04a0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            volume_microversion\u003dself.volume_request_microversion,"},{"line_number":91,"context_line":"            placement_microversion\u003dself.placement_request_microversion))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def setup_compute_client(cls):"},{"line_number":94,"context_line":"        \"\"\"Compute image client \"\"\""},{"line_number":95,"context_line":"        cls.compute_images_client \u003d cls.os_primary.compute_images_client"},{"line_number":96,"context_line":"        cls.keypairs_client \u003d cls.os_primary.keypairs_client"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def setup_nova_secgroup_client(cls):"},{"line_number":99,"context_line":"        \"\"\"Nova security groups client \"\"\""},{"line_number":100,"context_line":"        cls.compute_security_groups_client \u003d ("},{"line_number":101,"context_line":"            cls.os_primary.compute_security_groups_client)"},{"line_number":102,"context_line":"        cls.compute_security_group_rules_client \u003d ("},{"line_number":103,"context_line":"            cls.os_primary.compute_security_group_rules_client)"},{"line_number":104,"context_line":"        cls.servers_client \u003d cls.os_primary.servers_client"},{"line_number":105,"context_line":"        cls.interface_client \u003d cls.os_primary.interfaces_client"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def setup_neutron_network_client(cls):"},{"line_number":108,"context_line":"        \"\"\"Neutron network client \"\"\""},{"line_number":109,"context_line":"        cls.networks_client \u003d cls.os_primary.networks_client"},{"line_number":110,"context_line":"        cls.ports_client \u003d cls.os_primary.ports_client"},{"line_number":111,"context_line":"        cls.routers_client \u003d cls.os_primary.routers_client"},{"line_number":112,"context_line":"        cls.subnets_client \u003d cls.os_primary.subnets_client"},{"line_number":113,"context_line":"        cls.floating_ips_client \u003d cls.os_primary.floating_ips_client"},{"line_number":114,"context_line":"        cls.security_groups_client \u003d cls.os_primary.security_groups_client"},{"line_number":115,"context_line":"        cls.security_group_rules_client \u003d ("},{"line_number":116,"context_line":"            cls.os_primary.security_group_rules_client)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @classmethod"},{"line_number":119,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_3d8ce97d","line":116,"range":{"start_line":93,"start_character":0,"end_line":116,"end_character":55},"updated":"2020-05-18 23:14:10.000000000","message":"I actually don\u0027t understand why we should make split out these setups into these methods yet..","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"9d535c5f183f2eb7905be7a257c305cbdc954c14","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            volume_microversion\u003dself.volume_request_microversion,"},{"line_number":91,"context_line":"            placement_microversion\u003dself.placement_request_microversion))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def setup_compute_client(cls):"},{"line_number":94,"context_line":"        \"\"\"Compute image client \"\"\""},{"line_number":95,"context_line":"        cls.compute_images_client \u003d cls.os_primary.compute_images_client"},{"line_number":96,"context_line":"        cls.keypairs_client \u003d cls.os_primary.keypairs_client"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def setup_nova_secgroup_client(cls):"},{"line_number":99,"context_line":"        \"\"\"Nova security groups client \"\"\""},{"line_number":100,"context_line":"        cls.compute_security_groups_client \u003d ("},{"line_number":101,"context_line":"            cls.os_primary.compute_security_groups_client)"},{"line_number":102,"context_line":"        cls.compute_security_group_rules_client \u003d ("},{"line_number":103,"context_line":"            cls.os_primary.compute_security_group_rules_client)"},{"line_number":104,"context_line":"        cls.servers_client \u003d cls.os_primary.servers_client"},{"line_number":105,"context_line":"        cls.interface_client \u003d cls.os_primary.interfaces_client"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def setup_neutron_network_client(cls):"},{"line_number":108,"context_line":"        \"\"\"Neutron network client \"\"\""},{"line_number":109,"context_line":"        cls.networks_client \u003d cls.os_primary.networks_client"},{"line_number":110,"context_line":"        cls.ports_client \u003d cls.os_primary.ports_client"},{"line_number":111,"context_line":"        cls.routers_client \u003d cls.os_primary.routers_client"},{"line_number":112,"context_line":"        cls.subnets_client \u003d cls.os_primary.subnets_client"},{"line_number":113,"context_line":"        cls.floating_ips_client \u003d cls.os_primary.floating_ips_client"},{"line_number":114,"context_line":"        cls.security_groups_client \u003d cls.os_primary.security_groups_client"},{"line_number":115,"context_line":"        cls.security_group_rules_client \u003d ("},{"line_number":116,"context_line":"            cls.os_primary.security_group_rules_client)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @classmethod"},{"line_number":119,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_2e45cd43","line":116,"range":{"start_line":93,"start_character":0,"end_line":116,"end_character":55},"in_reply_to":"ff570b3c_3d8ce97d","updated":"2020-05-19 05:58:02.000000000","message":"I think we should split these methods because a single method should be concerned about a single responsibilty. \nWhen we group all of them together, the method becomes generalized for all component specific setups and becomes too lengthy as well.\nIf we split them, it becomes easier to read and understand code.","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"0967c23ab4c7b8dfeaa5cb4f864b74af1a839444","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    # resp part which is not used in scenario tests"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def create_port(self, network_id, client\u003dNone, **kwargs):"},{"line_number":149,"context_line":"        \"\"\"Creates port \"\"\""},{"line_number":150,"context_line":"        if not client:"},{"line_number":151,"context_line":"            client \u003d self.ports_client"},{"line_number":152,"context_line":"        name \u003d data_utils.rand_name(self.__class__.__name__)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_5b344293","line":149,"updated":"2020-05-19 08:12:36.000000000","message":"I believe we don\u0027t need this space at the end of each comment with triple quotes","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"a97c21f3e53f8c3fe8c62277ccf43fe512c9926f","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    # resp part which is not used in scenario tests"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def create_port(self, network_id, client\u003dNone, **kwargs):"},{"line_number":149,"context_line":"        \"\"\"Creates port \"\"\""},{"line_number":150,"context_line":"        if not client:"},{"line_number":151,"context_line":"            client \u003d self.ports_client"},{"line_number":152,"context_line":"        name \u003d data_utils.rand_name(self.__class__.__name__)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_008c0d7d","line":149,"in_reply_to":"ff570b3c_5b344293","updated":"2020-07-13 12:40:15.000000000","message":"Yeah, I will update in next patch set.","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        return image[\u0027id\u0027]"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def glance_image_create(self):"},{"line_number":550,"context_line":"        \"\"\"creates image using following parameters:"},{"line_number":551,"context_line":"        img_container_format: Image container format to use when creating"},{"line_number":552,"context_line":"                              the image"},{"line_number":553,"context_line":"        img_disk_format: Image disk format to use when creating the image"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_63b3690b","line":550,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":548,"context_line":""},{"line_number":549,"context_line":"    def glance_image_create(self):"},{"line_number":550,"context_line":"        \"\"\"creates image using following parameters:"},{"line_number":551,"context_line":"        img_container_format: Image container format to use when creating"},{"line_number":552,"context_line":"                              the image"},{"line_number":553,"context_line":"        img_disk_format: Image disk format to use when creating the image"},{"line_number":554,"context_line":"        img_properties: Image properties."}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_43b8e5e3","line":551,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    def glance_image_create(self):"},{"line_number":550,"context_line":"        \"\"\"creates image using following parameters:"},{"line_number":551,"context_line":"        img_container_format: Image container format to use when creating"},{"line_number":552,"context_line":"                              the image"},{"line_number":553,"context_line":"        img_disk_format: Image disk format to use when creating the image"},{"line_number":554,"context_line":"        img_properties: Image properties."},{"line_number":555,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_a3d0e120","line":552,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        \"\"\"creates image using following parameters:"},{"line_number":551,"context_line":"        img_container_format: Image container format to use when creating"},{"line_number":552,"context_line":"                              the image"},{"line_number":553,"context_line":"        img_disk_format: Image disk format to use when creating the image"},{"line_number":554,"context_line":"        img_properties: Image properties."},{"line_number":555,"context_line":"        \"\"\""},{"line_number":556,"context_line":"        img_path \u003d CONF.scenario.img_dir + \"/\" + CONF.scenario.img_file"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_83cddd86","line":553,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        img_container_format: Image container format to use when creating"},{"line_number":552,"context_line":"                              the image"},{"line_number":553,"context_line":"        img_disk_format: Image disk format to use when creating the image"},{"line_number":554,"context_line":"        img_properties: Image properties."},{"line_number":555,"context_line":"        \"\"\""},{"line_number":556,"context_line":"        img_path \u003d CONF.scenario.img_dir + \"/\" + CONF.scenario.img_file"},{"line_number":557,"context_line":"        aki_img_path \u003d CONF.scenario.img_dir + \"/\" + CONF.scenario.aki_img_file"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_e3c65968","line":554,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":552,"context_line":"                              the image"},{"line_number":553,"context_line":"        img_disk_format: Image disk format to use when creating the image"},{"line_number":554,"context_line":"        img_properties: Image properties."},{"line_number":555,"context_line":"        \"\"\""},{"line_number":556,"context_line":"        img_path \u003d CONF.scenario.img_dir + \"/\" + CONF.scenario.img_file"},{"line_number":557,"context_line":"        aki_img_path \u003d CONF.scenario.img_dir + \"/\" + CONF.scenario.aki_img_file"},{"line_number":558,"context_line":"        ari_img_path \u003d CONF.scenario.img_dir + \"/\" + CONF.scenario.ari_img_file"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_c3c35556","line":555,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":927,"context_line":""},{"line_number":928,"context_line":"    def create_subnet(self, network, subnets_client\u003dNone,"},{"line_number":929,"context_line":"                      namestart\u003d\u0027subnet-smoke\u0027, **kwargs):"},{"line_number":930,"context_line":"        \"\"\"Create a subnet for the given network"},{"line_number":931,"context_line":"        within the cidr block configured for tenant networks."},{"line_number":932,"context_line":"        \"\"\""},{"line_number":933,"context_line":"        if not subnets_client:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_23a211af","line":930,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":928,"context_line":"    def create_subnet(self, network, subnets_client\u003dNone,"},{"line_number":929,"context_line":"                      namestart\u003d\u0027subnet-smoke\u0027, **kwargs):"},{"line_number":930,"context_line":"        \"\"\"Create a subnet for the given network"},{"line_number":931,"context_line":"        within the cidr block configured for tenant networks."},{"line_number":932,"context_line":"        \"\"\""},{"line_number":933,"context_line":"        if not subnets_client:"},{"line_number":934,"context_line":"            subnets_client \u003d self.subnets_client"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_03a70dbf","line":931,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":929,"context_line":"                      namestart\u003d\u0027subnet-smoke\u0027, **kwargs):"},{"line_number":930,"context_line":"        \"\"\"Create a subnet for the given network"},{"line_number":931,"context_line":"        within the cidr block configured for tenant networks."},{"line_number":932,"context_line":"        \"\"\""},{"line_number":933,"context_line":"        if not subnets_client:"},{"line_number":934,"context_line":"            subnets_client \u003d self.subnets_client"},{"line_number":935,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_63a8898b","line":932,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"    def list_and_check_container_objects(self, container_name,"},{"line_number":1505,"context_line":"                                         present_obj\u003dNone,"},{"line_number":1506,"context_line":"                                         not_present_obj\u003dNone):"},{"line_number":1507,"context_line":"        \"\"\"List objects for a given container and assert which are present and"},{"line_number":1508,"context_line":"        which are not \"\"\""},{"line_number":1509,"context_line":"        if present_obj is None:"},{"line_number":1510,"context_line":"            present_obj \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_a3958142","line":1507,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":1504,"context_line":"    def list_and_check_container_objects(self, container_name,"},{"line_number":1505,"context_line":"                                         present_obj\u003dNone,"},{"line_number":1506,"context_line":"                                         not_present_obj\u003dNone):"},{"line_number":1507,"context_line":"        \"\"\"List objects for a given container and assert which are present and"},{"line_number":1508,"context_line":"        which are not \"\"\""},{"line_number":1509,"context_line":"        if present_obj is None:"},{"line_number":1510,"context_line":"            present_obj \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_43ad8599","line":1507,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                                         present_obj\u003dNone,"},{"line_number":1506,"context_line":"                                         not_present_obj\u003dNone):"},{"line_number":1507,"context_line":"        \"\"\"List objects for a given container and assert which are present and"},{"line_number":1508,"context_line":"        which are not \"\"\""},{"line_number":1509,"context_line":"        if present_obj is None:"},{"line_number":1510,"context_line":"            present_obj \u003d []"},{"line_number":1511,"context_line":"        if not_present_obj is None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_e39bf96f","line":1508,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f6e859df5f23e48d70c494e9cf6e4570029e4734","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                                         present_obj\u003dNone,"},{"line_number":1506,"context_line":"                                         not_present_obj\u003dNone):"},{"line_number":1507,"context_line":"        \"\"\"List objects for a given container and assert which are present and"},{"line_number":1508,"context_line":"        which are not \"\"\""},{"line_number":1509,"context_line":"        if present_obj is None:"},{"line_number":1510,"context_line":"            present_obj \u003d []"},{"line_number":1511,"context_line":"        if not_present_obj is None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff570b3c_8392fd55","line":1508,"updated":"2020-05-18 16:10:35.000000000","message":"pep8: H405: multi line docstring summary not separated with an empty line","commit_id":"0c6b819f392a87ef4b06d6663cbb05dc7d78f123"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"827c11160d037ac7ccbb9bf9b6333120f92d38c4","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import subprocess"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import netaddr"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_0c438040","line":17,"updated":"2020-07-15 20:13:03.000000000","message":"pep8: F401 \u0027os\u0027 imported but unused","commit_id":"4184be3c180f33de79b4469579a8ec90ed479e22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"827c11160d037ac7ccbb9bf9b6333120f92d38c4","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                  \u0027incremental\u0027: incremental,"},{"line_number":356,"context_line":"                  \u0027container\u0027: container}"},{"line_number":357,"context_line":"        backup \u003d self.backups_client.create_backup(volume_id\u003dvolume_id,"},{"line_number":358,"context_line":"                                                   **kwargs)[\u0027backup\u0027]"},{"line_number":359,"context_line":"        self.addCleanup(self.backups_client.delete_backup, backup[\u0027id\u0027])"},{"line_number":360,"context_line":"        waiters.wait_for_volume_resource_status(self.backups_client,"},{"line_number":361,"context_line":"                                                backup[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_6c779ca1","line":358,"updated":"2020-07-15 20:13:03.000000000","message":"pep8: F841 local variable \u0027aki_img_path\u0027 is assigned to but never used","commit_id":"4184be3c180f33de79b4469579a8ec90ed479e22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"827c11160d037ac7ccbb9bf9b6333120f92d38c4","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                  \u0027incremental\u0027: incremental,"},{"line_number":356,"context_line":"                  \u0027container\u0027: container}"},{"line_number":357,"context_line":"        backup \u003d self.backups_client.create_backup(volume_id\u003dvolume_id,"},{"line_number":358,"context_line":"                                                   **kwargs)[\u0027backup\u0027]"},{"line_number":359,"context_line":"        self.addCleanup(self.backups_client.delete_backup, backup[\u0027id\u0027])"},{"line_number":360,"context_line":"        waiters.wait_for_volume_resource_status(self.backups_client,"},{"line_number":361,"context_line":"                                                backup[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_ac6d34cd","line":358,"updated":"2020-07-15 20:13:03.000000000","message":"pep8: F841 local variable \u0027ami_img_path\u0027 is assigned to but never used","commit_id":"4184be3c180f33de79b4469579a8ec90ed479e22"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"827c11160d037ac7ccbb9bf9b6333120f92d38c4","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                  \u0027incremental\u0027: incremental,"},{"line_number":356,"context_line":"                  \u0027container\u0027: container}"},{"line_number":357,"context_line":"        backup \u003d self.backups_client.create_backup(volume_id\u003dvolume_id,"},{"line_number":358,"context_line":"                                                   **kwargs)[\u0027backup\u0027]"},{"line_number":359,"context_line":"        self.addCleanup(self.backups_client.delete_backup, backup[\u0027id\u0027])"},{"line_number":360,"context_line":"        waiters.wait_for_volume_resource_status(self.backups_client,"},{"line_number":361,"context_line":"                                                backup[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf51134e_4c7a9887","line":358,"updated":"2020-07-15 20:13:03.000000000","message":"pep8: F841 local variable \u0027ari_img_path\u0027 is assigned to but never used","commit_id":"4184be3c180f33de79b4469579a8ec90ed479e22"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"5b7f284c4141c7609e3812f125e15ee90c4ca9fb","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        return image[\u0027id\u0027]"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def glance_image_create(self):"},{"line_number":535,"context_line":"        img_path \u003d CONF.scenario.img_file"},{"line_number":536,"context_line":"        if not os.path.exists(img_path):"},{"line_number":537,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":538,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":539,"context_line":"            # released - there will be one release which accepts both"},{"line_number":540,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":541,"context_line":"            LOG.warning("},{"line_number":542,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":543,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":544,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":545,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":546,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":547,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":548,"context_line":"            img_path \u003d os.path.join(CONF.scenario.img_dir, img_path)"},{"line_number":549,"context_line":"        img_container_format \u003d CONF.scenario.img_container_format"},{"line_number":550,"context_line":"        img_disk_format \u003d CONF.scenario.img_disk_format"},{"line_number":551,"context_line":"        img_properties \u003d CONF.scenario.img_properties"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_082833e0","side":"PARENT","line":548,"range":{"start_line":535,"start_character":8,"end_line":548,"end_character":68},"updated":"2020-07-29 12:57:19.000000000","message":"be careful about rebase, this code needs to stay here","commit_id":"90018eabe73a3d55e2690c4b7284cd8d88692f3d"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"3a56c0b52fecb7c880a95abdb8e1d76d083b60fc","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        return image[\u0027id\u0027]"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def glance_image_create(self):"},{"line_number":535,"context_line":"        img_path \u003d CONF.scenario.img_file"},{"line_number":536,"context_line":"        if not os.path.exists(img_path):"},{"line_number":537,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":538,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":539,"context_line":"            # released - there will be one release which accepts both"},{"line_number":540,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":541,"context_line":"            LOG.warning("},{"line_number":542,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":543,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":544,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":545,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":546,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":547,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":548,"context_line":"            img_path \u003d os.path.join(CONF.scenario.img_dir, img_path)"},{"line_number":549,"context_line":"        img_container_format \u003d CONF.scenario.img_container_format"},{"line_number":550,"context_line":"        img_disk_format \u003d CONF.scenario.img_disk_format"},{"line_number":551,"context_line":"        img_properties \u003d CONF.scenario.img_properties"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_17acc232","side":"PARENT","line":548,"range":{"start_line":535,"start_character":8,"end_line":548,"end_character":68},"in_reply_to":"9f560f44_082833e0","updated":"2020-07-30 07:29:02.000000000","message":"Thanks Martin, I will make a note of it.","commit_id":"90018eabe73a3d55e2690c4b7284cd8d88692f3d"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_client_latest"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    # ## Test functions library"},{"line_number":137,"context_line":"    #"},{"line_number":138,"context_line":"    # The create_[resource] functions only return body and discard the"},{"line_number":139,"context_line":"    # resp part which is not used in scenario tests"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_534c5741","side":"PARENT","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":5},"updated":"2020-08-03 09:33:46.000000000","message":"Is this change needed in this patch?","commit_id":"c02aa28390ed48710f57ae18531b28d59d968f8d"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"91bb13ac84e5f3b6906a80d5f72b2dfc0477eb5b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_client_latest"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    # ## Test functions library"},{"line_number":137,"context_line":"    #"},{"line_number":138,"context_line":"    # The create_[resource] functions only return body and discard the"},{"line_number":139,"context_line":"    # resp part which is not used in scenario tests"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_6c93685c","side":"PARENT","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":5},"in_reply_to":"9f560f44_135adf81","updated":"2020-08-04 14:01:14.000000000","message":"I was just curious why remove only that line .. that\u0027s all","commit_id":"c02aa28390ed48710f57ae18531b28d59d968f8d"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"adfcc8a4766afd3577fef122b8d57e789baf48cc","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_client_latest"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    # ## Test functions library"},{"line_number":137,"context_line":"    #"},{"line_number":138,"context_line":"    # The create_[resource] functions only return body and discard the"},{"line_number":139,"context_line":"    # resp part which is not used in scenario tests"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_135adf81","side":"PARENT","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":5},"in_reply_to":"9f560f44_534c5741","updated":"2020-08-04 12:24:47.000000000","message":"Could you explain this a bit more?","commit_id":"c02aa28390ed48710f57ae18531b28d59d968f8d"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    @classmethod"},{"line_number":120,"context_line":"    def setup_clients(cls):"},{"line_number":121,"context_line":"        super(ScenarioTest, cls).setup_clients()"},{"line_number":122,"context_line":"        \"\"\"Clients (in alphabetical order)\"\"\""},{"line_number":123,"context_line":"        cls.flavors_client \u003d cls.os_primary.flavors_client"},{"line_number":124,"context_line":"        cls.compute_floating_ips_client \u003d ("},{"line_number":125,"context_line":"            cls.os_primary.compute_floating_ips_client)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_f3ce4bb2","line":122,"range":{"start_line":122,"start_character":8,"end_line":122,"end_character":11},"updated":"2020-08-03 09:33:46.000000000","message":"why the doc string style here? what was wrong with the comment style?","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":418,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":419,"context_line":"        \"\"\"Creates volume type"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        In a multiple-storage back-end configuration,"},{"line_number":422,"context_line":"        each back end has a name (volume_backend_name)."},{"line_number":423,"context_line":"        The name of the back end is declared as an extra-specification"},{"line_number":424,"context_line":"        of a volume type (such as, volume_backend_name\u003dLVM)."}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_73687b86","line":421,"range":{"start_line":421,"start_character":30,"end_line":421,"end_character":38},"updated":"2020-08-03 09:33:46.000000000","message":"could you please unify the terminology in this docstring, seems like \u0027backend\u0027 is mostly used in tempest.","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        In a multiple-storage back-end configuration,"},{"line_number":422,"context_line":"        each back end has a name (volume_backend_name)."},{"line_number":423,"context_line":"        The name of the back end is declared as an extra-specification"},{"line_number":424,"context_line":"        of a volume type (such as, volume_backend_name\u003dLVM)."},{"line_number":425,"context_line":"        When a volume is created, the scheduler chooses an"},{"line_number":426,"context_line":"        appropriate back end to handle the request, according"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_d36187ab","line":423,"range":{"start_line":423,"start_character":24,"end_line":423,"end_character":32},"updated":"2020-08-03 09:33:46.000000000","message":"^^ plus a few other occurrences below.","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":566,"context_line":"    def glance_image_create(self):"},{"line_number":567,"context_line":"        \"\"\"Creates image"},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"        This utlity uses following parameters:"},{"line_number":570,"context_line":"        img_container_format: Image container format to use when creating"},{"line_number":571,"context_line":"                             the image"},{"line_number":572,"context_line":"        img_disk_format: Image disk format to use when creating the image"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_d32fc73c","line":569,"range":{"start_line":569,"start_character":35,"end_line":569,"end_character":45},"updated":"2020-08-03 09:33:46.000000000","message":"I wouldn\u0027t say it\u0027s parameters, the method has only one parameter - self .. it\u0027s config options, if you wanna document them img_path is missing.","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":627,"context_line":""},{"line_number":628,"context_line":"    def create_server_snapshot(self, server, name\u003dNone):"},{"line_number":629,"context_line":"        \"\"\"Creates server snapshot\"\"\""},{"line_number":630,"context_line":"        \"\"\"Glance client\"\"\""},{"line_number":631,"context_line":"        _image_client \u003d self.image_client"},{"line_number":632,"context_line":"        \"\"\"Compute client\"\"\""},{"line_number":633,"context_line":"        _images_client \u003d self.compute_images_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_d3d3475f","line":630,"range":{"start_line":630,"start_character":8,"end_line":630,"end_character":11},"updated":"2020-08-03 09:33:46.000000000","message":"why the doc string style here? what was wrong with the comment style?","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"91bb13ac84e5f3b6906a80d5f72b2dfc0477eb5b","unresolved":false,"context_lines":[{"line_number":627,"context_line":""},{"line_number":628,"context_line":"    def create_server_snapshot(self, server, name\u003dNone):"},{"line_number":629,"context_line":"        \"\"\"Creates server snapshot\"\"\""},{"line_number":630,"context_line":"        \"\"\"Glance client\"\"\""},{"line_number":631,"context_line":"        _image_client \u003d self.image_client"},{"line_number":632,"context_line":"        \"\"\"Compute client\"\"\""},{"line_number":633,"context_line":"        _images_client \u003d self.compute_images_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_ccc39437","line":630,"range":{"start_line":630,"start_character":8,"end_line":630,"end_character":11},"in_reply_to":"9f560f44_b64aefa8","updated":"2020-08-04 14:01:14.000000000","message":"I totally agree with editing the docstrings and adding more info there.\n\nthe two docstrings just look strange:\n\"\"\"\u003ctext\u003e\"\"\"\n\"\"\"\u003ctext2\u003e\"\"\"\n\nI would expect one multiline docstring:\n\"\"\"\u003ctext\u003e\n\n\u003ctext2\u003e\n\"\"\"","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"9966c4dff5d314fb685b971a65d885cd358d760a","unresolved":false,"context_lines":[{"line_number":627,"context_line":""},{"line_number":628,"context_line":"    def create_server_snapshot(self, server, name\u003dNone):"},{"line_number":629,"context_line":"        \"\"\"Creates server snapshot\"\"\""},{"line_number":630,"context_line":"        \"\"\"Glance client\"\"\""},{"line_number":631,"context_line":"        _image_client \u003d self.image_client"},{"line_number":632,"context_line":"        \"\"\"Compute client\"\"\""},{"line_number":633,"context_line":"        _images_client \u003d self.compute_images_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_1e3d89dc","line":630,"range":{"start_line":630,"start_character":8,"end_line":630,"end_character":11},"in_reply_to":"9f560f44_ccc39437","updated":"2020-08-10 06:36:24.000000000","message":"You are right, This needs to be changed.","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"adfcc8a4766afd3577fef122b8d57e789baf48cc","unresolved":false,"context_lines":[{"line_number":627,"context_line":""},{"line_number":628,"context_line":"    def create_server_snapshot(self, server, name\u003dNone):"},{"line_number":629,"context_line":"        \"\"\"Creates server snapshot\"\"\""},{"line_number":630,"context_line":"        \"\"\"Glance client\"\"\""},{"line_number":631,"context_line":"        _image_client \u003d self.image_client"},{"line_number":632,"context_line":"        \"\"\"Compute client\"\"\""},{"line_number":633,"context_line":"        _images_client \u003d self.compute_images_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_b64aefa8","line":630,"range":{"start_line":630,"start_character":8,"end_line":630,"end_character":11},"in_reply_to":"9f560f44_d3d3475f","updated":"2020-08-04 12:24:47.000000000","message":"Actually, I want to update this doc strings because these are  just one line comment with name of method itself, not informative right. I will be updating the docstrings in future patchsets.","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":629,"context_line":"        \"\"\"Creates server snapshot\"\"\""},{"line_number":630,"context_line":"        \"\"\"Glance client\"\"\""},{"line_number":631,"context_line":"        _image_client \u003d self.image_client"},{"line_number":632,"context_line":"        \"\"\"Compute client\"\"\""},{"line_number":633,"context_line":"        _images_client \u003d self.compute_images_client"},{"line_number":634,"context_line":"        if name is None:"},{"line_number":635,"context_line":"            name \u003d data_utils.rand_name(self.__class__.__name__ + \u0027snapshot\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_73e19b2a","line":632,"range":{"start_line":632,"start_character":8,"end_line":632,"end_character":11},"updated":"2020-08-03 09:33:46.000000000","message":"why the doc string style here? what was wrong with the comment style?","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":644,"context_line":"                        _image_client.delete_image, image_id)"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        if CONF.image_feature_enabled.api_v1:"},{"line_number":647,"context_line":"            \"\"\"In glance v1 the additional properties are stored in the"},{"line_number":648,"context_line":"            headers.\"\"\""},{"line_number":649,"context_line":"            resp \u003d _image_client.check_image(image_id)"},{"line_number":650,"context_line":"            snapshot_image \u003d common_image.get_image_meta_from_headers(resp)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_93e42f3e","line":647,"range":{"start_line":647,"start_character":12,"end_line":647,"end_character":15},"updated":"2020-08-03 09:33:46.000000000","message":"why the doc string style here? what was wrong with the comment style?","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":650,"context_line":"            snapshot_image \u003d common_image.get_image_meta_from_headers(resp)"},{"line_number":651,"context_line":"            image_props \u003d snapshot_image.get(\u0027properties\u0027, {})"},{"line_number":652,"context_line":"        else:"},{"line_number":653,"context_line":"            \"\"\"In glance v2 the additional properties are flattened.\"\"\""},{"line_number":654,"context_line":"            snapshot_image \u003d _image_client.show_image(image_id)"},{"line_number":655,"context_line":"            image_props \u003d snapshot_image"},{"line_number":656,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_33dba37c","line":653,"range":{"start_line":653,"start_character":12,"end_line":653,"end_character":15},"updated":"2020-08-03 09:33:46.000000000","message":"why the doc string style here? what was wrong with the comment style?","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":682,"context_line":"        waiters.wait_for_volume_resource_status(self.volumes_client,"},{"line_number":683,"context_line":"                                                volume[\u0027id\u0027], \u0027in-use\u0027)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"        \"\"\"Return the updated volume after the attachment\"\"\""},{"line_number":686,"context_line":"        return self.volumes_client.show_volume(volume[\u0027id\u0027])[\u0027volume\u0027]"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"    def nova_volume_detach(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_f3f5abee","line":685,"range":{"start_line":685,"start_character":8,"end_line":685,"end_character":11},"updated":"2020-08-03 09:33:46.000000000","message":"why the doc string style here? what was wrong with the comment style?","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":767,"context_line":"                                             mtu\u003dmtu, server\u003dserver),"},{"line_number":768,"context_line":"                        msg\u003dmsg)"},{"line_number":769,"context_line":"        if should_connect:"},{"line_number":770,"context_line":"            \"\"\"no need to check ssh for negative connectivity\"\"\""},{"line_number":771,"context_line":"            try:"},{"line_number":772,"context_line":"                self.get_remote_client(ip_address, username, private_key,"},{"line_number":773,"context_line":"                                       server\u003dserver)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_53de176d","line":770,"range":{"start_line":770,"start_character":12,"end_line":770,"end_character":15},"updated":"2020-08-03 09:33:46.000000000","message":"why the doc string style here? what was wrong with the comment style?","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ee1a04a0105fb9d7f467863ba975da440706c7e","unresolved":false,"context_lines":[{"line_number":950,"context_line":"        within the cidr block configured for tenant networks."},{"line_number":951,"context_line":""},{"line_number":952,"context_line":"        It uses the following parameters:"},{"line_number":953,"context_line":"        name \u003d Name of the subnet"},{"line_number":954,"context_line":"        network_id \u003d network\u0027s id of the subnet"},{"line_number":955,"context_line":"        tenant_id \u003d tenant\u0027s id"},{"line_number":956,"context_line":"        cidr \u003d cidr block"},{"line_number":957,"context_line":"        ip_version \u003d ip version of the given network,"},{"line_number":958,"context_line":"        \"\"\""},{"line_number":959,"context_line":"        if not subnets_client:"},{"line_number":960,"context_line":"            subnets_client \u003d self.subnets_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_938f0f74","line":957,"range":{"start_line":953,"start_character":8,"end_line":957,"end_character":53},"updated":"2020-08-03 09:33:46.000000000","message":"please use the style f.e. as on line 511 -\u003e :param \u003cparam\u003e\n\nAlso the method has only the following parameters:\nnetwork, subnets_client and namestart.","commit_id":"2aa18d974ac30cd736284a54bd21be28925be335"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            placement_microversion\u003dself.placement_request_microversion))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def setup_compute_client(cls):"},{"line_number":95,"context_line":"        \"\"\"Compute image client\"\"\""},{"line_number":96,"context_line":"        cls.compute_images_client \u003d cls.os_primary.compute_images_client"},{"line_number":97,"context_line":"        cls.keypairs_client \u003d cls.os_primary.keypairs_client"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_203ab097","line":95,"range":{"start_line":95,"start_character":19,"end_line":95,"end_character":24},"updated":"2020-08-11 14:16:12.000000000","message":"compute","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            volume_microversion\u003dself.volume_request_microversion,"},{"line_number":92,"context_line":"            placement_microversion\u003dself.placement_request_microversion))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def setup_compute_client(cls):"},{"line_number":95,"context_line":"        \"\"\"Compute image client\"\"\""},{"line_number":96,"context_line":"        cls.compute_images_client \u003d cls.os_primary.compute_images_client"},{"line_number":97,"context_line":"        cls.keypairs_client \u003d cls.os_primary.keypairs_client"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def setup_compute_secgroup_client(cls):"},{"line_number":100,"context_line":"        \"\"\"Nova security groups client\"\"\""},{"line_number":101,"context_line":"        cls.compute_security_groups_client \u003d ("},{"line_number":102,"context_line":"            cls.os_primary.compute_security_groups_client)"},{"line_number":103,"context_line":"        cls.compute_security_group_rules_client \u003d ("},{"line_number":104,"context_line":"            cls.os_primary.compute_security_group_rules_client)"},{"line_number":105,"context_line":"        cls.servers_client \u003d cls.os_primary.servers_client"},{"line_number":106,"context_line":"        cls.interface_client \u003d cls.os_primary.interfaces_client"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def setup_network_client(cls):"},{"line_number":109,"context_line":"        \"\"\"Neutron network client\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_e0ba7808","line":106,"range":{"start_line":94,"start_character":0,"end_line":106,"end_character":63},"updated":"2020-08-11 14:16:12.000000000","message":"let\u0027s merge these two into one method as both are compute clients.","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    @classmethod"},{"line_number":120,"context_line":"    def setup_clients(cls):"},{"line_number":121,"context_line":"        super(ScenarioTest, cls).setup_clients()"},{"line_number":122,"context_line":"        \"\"\"Clients (in alphabetical order)\"\"\""},{"line_number":123,"context_line":"        cls.flavors_client \u003d cls.os_primary.flavors_client"},{"line_number":124,"context_line":"        cls.compute_floating_ips_client \u003d ("},{"line_number":125,"context_line":"            cls.os_primary.compute_floating_ips_client)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_00f20c9b","line":122,"range":{"start_line":122,"start_character":11,"end_line":122,"end_character":18},"updated":"2020-08-11 14:16:12.000000000","message":"s/Clients/This setup the service clients for the tests/","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def create_volume(self, size\u003dNone, name\u003dNone, snapshot_id\u003dNone,"},{"line_number":313,"context_line":"                      imageRef\u003dNone, volume_type\u003dNone):"},{"line_number":314,"context_line":"        \"\"\"Creates volume\"\"\""},{"line_number":315,"context_line":"        if size is None:"},{"line_number":316,"context_line":"            size \u003d CONF.volume.volume_size"},{"line_number":317,"context_line":"        if imageRef:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_401244b6","line":314,"range":{"start_line":314,"start_character":11,"end_line":314,"end_character":25},"updated":"2020-08-11 14:16:12.000000000","message":"Creates volume and wait for volume to be in \u0027available\u0027 state. This method return the volume full representation by GET request.","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":351,"context_line":"    def create_backup(self, volume_id, name\u003dNone, description\u003dNone,"},{"line_number":352,"context_line":"                      force\u003dFalse, snapshot_id\u003dNone, incremental\u003dFalse,"},{"line_number":353,"context_line":"                      container\u003dNone):"},{"line_number":354,"context_line":"        \"\"\"Creates backup\"\"\""},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        name \u003d name or data_utils.rand_name("},{"line_number":357,"context_line":"            self.__class__.__name__ + \"-backup\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_201750a6","line":354,"range":{"start_line":354,"start_character":11,"end_line":354,"end_character":25},"updated":"2020-08-11 14:16:12.000000000","message":"Creates backup and wait for backup to be in \u0027available\u0027 state.","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        return backup"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def restore_backup(self, backup_id):"},{"line_number":372,"context_line":"        \"\"\"Restore backup\"\"\""},{"line_number":373,"context_line":"        restore \u003d self.backups_client.restore_backup(backup_id)[\u0027restore\u0027]"},{"line_number":374,"context_line":"        self.addCleanup(self.volumes_client.delete_volume,"},{"line_number":375,"context_line":"                        restore[\u0027volume_id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_601148ad","line":372,"range":{"start_line":372,"start_character":25,"end_line":372,"end_character":26},"updated":"2020-08-11 14:16:12.000000000","message":"ditto","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    def create_volume_snapshot(self, volume_id, name\u003dNone, description\u003dNone,"},{"line_number":385,"context_line":"                               metadata\u003dNone, force\u003dFalse):"},{"line_number":386,"context_line":"        \"\"\"Creates volume snapshot\"\"\""},{"line_number":387,"context_line":"        name \u003d name or data_utils.rand_name("},{"line_number":388,"context_line":"            self.__class__.__name__ + \u0027-snapshot\u0027)"},{"line_number":389,"context_line":"        snapshot \u003d self.snapshots_client.create_snapshot("}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_00204cf7","line":386,"range":{"start_line":386,"start_character":34,"end_line":386,"end_character":35},"updated":"2020-08-11 14:16:12.000000000","message":"ditto","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        return snapshot_image"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"    def nova_volume_attach(self, server, volume_to_attach):"},{"line_number":678,"context_line":"        \"\"\"Attach nova volume\"\"\""},{"line_number":679,"context_line":"        volume \u003d self.servers_client.attach_volume("},{"line_number":680,"context_line":"            server[\u0027id\u0027], volumeId\u003dvolume_to_attach[\u0027id\u0027])[\u0027volumeAttachment\u0027]"},{"line_number":681,"context_line":"        self.assertEqual(volume_to_attach[\u0027id\u0027], volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_20659046","line":678,"range":{"start_line":678,"start_character":29,"end_line":678,"end_character":30},"updated":"2020-08-11 14:16:12.000000000","message":"ditto","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        return self.volumes_client.show_volume(volume[\u0027id\u0027])[\u0027volume\u0027]"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"    def nova_volume_detach(self, server, volume):"},{"line_number":689,"context_line":"        \"\"\"Detach nova volume\"\"\""},{"line_number":690,"context_line":"        self.servers_client.detach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":691,"context_line":"        waiters.wait_for_volume_resource_status(self.volumes_client,"},{"line_number":692,"context_line":"                                                volume[\u0027id\u0027], \u0027available\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_805a9c80","line":689,"range":{"start_line":689,"start_character":29,"end_line":689,"end_character":32},"updated":"2020-08-11 14:16:12.000000000","message":"ditto","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":793,"context_line":""},{"line_number":794,"context_line":"    def create_timestamp(self, ip_address, dev_name\u003dNone, mount_path\u003d\u0027/mnt\u0027,"},{"line_number":795,"context_line":"                         private_key\u003dNone, server\u003dNone):"},{"line_number":796,"context_line":"        \"\"\"Creates timestamp\"\"\""},{"line_number":797,"context_line":"        ssh_client \u003d self.get_remote_client(ip_address,"},{"line_number":798,"context_line":"                                            private_key\u003dprivate_key,"},{"line_number":799,"context_line":"                                            server\u003dserver)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_a0ac0036","line":796,"range":{"start_line":796,"start_character":28,"end_line":796,"end_character":30},"updated":"2020-08-11 14:16:12.000000000","message":"let\u0027s add more detail like it does ssh and create the timestamp and return the created timestamp.","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":811,"context_line":""},{"line_number":812,"context_line":"    def get_timestamp(self, ip_address, dev_name\u003dNone, mount_path\u003d\u0027/mnt\u0027,"},{"line_number":813,"context_line":"                      private_key\u003dNone, server\u003dNone):"},{"line_number":814,"context_line":"        \"\"\"Returns timestamp\"\"\""},{"line_number":815,"context_line":"        ssh_client \u003d self.get_remote_client(ip_address,"},{"line_number":816,"context_line":"                                            private_key\u003dprivate_key,"},{"line_number":817,"context_line":"                                            server\u003dserver)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_e0a6f853","line":814,"range":{"start_line":814,"start_character":11,"end_line":814,"end_character":28},"updated":"2020-08-11 14:16:12.000000000","message":"ditto","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":854,"context_line":""},{"line_number":855,"context_line":"    @classmethod"},{"line_number":856,"context_line":"    def get_host_for_server(cls, server_id):"},{"line_number":857,"context_line":"        \"\"\"Gets host for server\"\"\""},{"line_number":858,"context_line":"        server_details \u003d cls.os_admin.servers_client.show_server(server_id)"},{"line_number":859,"context_line":"        return server_details[\u0027server\u0027][\u0027OS-EXT-SRV-ATTR:host\u0027]"},{"line_number":860,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_4061a411","line":857,"range":{"start_line":857,"start_character":21,"end_line":857,"end_character":24},"updated":"2020-08-11 14:16:12.000000000","message":"s/for/of","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"065dc8294ce83c53d7593777a7c89abab254661d","unresolved":false,"context_lines":[{"line_number":873,"context_line":"                                    security_group\u003dNone,"},{"line_number":874,"context_line":"                                    delete_on_termination\u003dFalse,"},{"line_number":875,"context_line":"                                    name\u003dNone):"},{"line_number":876,"context_line":"        \"\"\"Boot instance from resource\"\"\""},{"line_number":877,"context_line":"        create_kwargs \u003d dict()"},{"line_number":878,"context_line":"        if keypair:"},{"line_number":879,"context_line":"            create_kwargs[\u0027key_name\u0027] \u003d keypair[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_4b4b855e","line":876,"range":{"start_line":876,"start_character":11,"end_line":876,"end_character":38},"updated":"2020-08-11 14:16:12.000000000","message":"let\u0027s add bdm details also.\n\n\"\"\"Boot instance with block device mapping with source info passed in arguments.","commit_id":"20c6d924386f98baa5c2ccd7b25bbef3f6177a94"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"cd0f1977e953d5911da2aa1a54982345a65e0be7","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                self.image_client.store_image_file(image[\u0027id\u0027], image_file)"},{"line_number":592,"context_line":"        return image[\u0027id\u0027]"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def glance_image_create(self):"},{"line_number":595,"context_line":"        \"\"\"Creates image"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        This wrapper utility creates image with container format, disk format,"},{"line_number":598,"context_line":"        properties and path of image."},{"line_number":599,"context_line":"        \"\"\""},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        img_path \u003d CONF.scenario.img_file"},{"line_number":602,"context_line":"        if not os.path.exists(img_path):"},{"line_number":603,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":604,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":605,"context_line":"            # released - there will be one release which accepts both"},{"line_number":606,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":607,"context_line":"            LOG.warning("},{"line_number":608,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":609,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":610,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":611,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":612,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":613,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":614,"context_line":"            img_path \u003d os.path.join(CONF.scenario.img_dir, img_path)"},{"line_number":615,"context_line":"        img_container_format \u003d CONF.scenario.img_container_format"},{"line_number":616,"context_line":"        img_disk_format \u003d CONF.scenario.img_disk_format"},{"line_number":617,"context_line":"        img_properties \u003d CONF.scenario.img_properties"},{"line_number":618,"context_line":"        LOG.debug(\"paths: img: %s, container_format: %s, disk_format: %s, \""},{"line_number":619,"context_line":"                  \"properties: %s\","},{"line_number":620,"context_line":"                  img_path, img_container_format, img_disk_format,"},{"line_number":621,"context_line":"                  img_properties)"},{"line_number":622,"context_line":"        image \u003d self._image_create(\u0027scenario-img\u0027,"},{"line_number":623,"context_line":"                                   img_container_format,"},{"line_number":624,"context_line":"                                   img_path,"},{"line_number":625,"context_line":"                                   disk_format\u003dimg_disk_format,"},{"line_number":626,"context_line":"                                   properties\u003dimg_properties)"},{"line_number":627,"context_line":"        LOG.debug(\"image:%s\", image)"},{"line_number":628,"context_line":"        return image"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def _log_console_output(self, servers\u003dNone, client\u003dNone):"},{"line_number":631,"context_line":"        \"\"\"Console log output\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_1e316d0c","line":628,"range":{"start_line":594,"start_character":4,"end_line":628,"end_character":20},"updated":"2020-08-18 19:39:10.000000000","message":"we can\u0027t just remove the method, most of its logic needs to be merged with the logic of _image_create if we wanna merge these two functions into one\n\nAlso I would make this change in a separate commit with a reno as it slightly affects public plugin interface.","commit_id":"8da2d8fb6299558e5d10c958aebf8b1cfc2e41a1"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"ed6e7e16a90c30ee1387640c0f265129c8fb2877","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                self.image_client.store_image_file(image[\u0027id\u0027], image_file)"},{"line_number":592,"context_line":"        return image[\u0027id\u0027]"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def glance_image_create(self):"},{"line_number":595,"context_line":"        \"\"\"Creates image"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        This wrapper utility creates image with container format, disk format,"},{"line_number":598,"context_line":"        properties and path of image."},{"line_number":599,"context_line":"        \"\"\""},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        img_path \u003d CONF.scenario.img_file"},{"line_number":602,"context_line":"        if not os.path.exists(img_path):"},{"line_number":603,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":604,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":605,"context_line":"            # released - there will be one release which accepts both"},{"line_number":606,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":607,"context_line":"            LOG.warning("},{"line_number":608,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":609,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":610,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":611,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":612,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":613,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":614,"context_line":"            img_path \u003d os.path.join(CONF.scenario.img_dir, img_path)"},{"line_number":615,"context_line":"        img_container_format \u003d CONF.scenario.img_container_format"},{"line_number":616,"context_line":"        img_disk_format \u003d CONF.scenario.img_disk_format"},{"line_number":617,"context_line":"        img_properties \u003d CONF.scenario.img_properties"},{"line_number":618,"context_line":"        LOG.debug(\"paths: img: %s, container_format: %s, disk_format: %s, \""},{"line_number":619,"context_line":"                  \"properties: %s\","},{"line_number":620,"context_line":"                  img_path, img_container_format, img_disk_format,"},{"line_number":621,"context_line":"                  img_properties)"},{"line_number":622,"context_line":"        image \u003d self._image_create(\u0027scenario-img\u0027,"},{"line_number":623,"context_line":"                                   img_container_format,"},{"line_number":624,"context_line":"                                   img_path,"},{"line_number":625,"context_line":"                                   disk_format\u003dimg_disk_format,"},{"line_number":626,"context_line":"                                   properties\u003dimg_properties)"},{"line_number":627,"context_line":"        LOG.debug(\"image:%s\", image)"},{"line_number":628,"context_line":"        return image"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def _log_console_output(self, servers\u003dNone, client\u003dNone):"},{"line_number":631,"context_line":"        \"\"\"Console log output\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_679d7956","line":628,"range":{"start_line":594,"start_character":4,"end_line":628,"end_character":20},"in_reply_to":"9f560f44_1e316d0c","updated":"2020-08-19 08:24:15.000000000","message":"So if we look at the logic of method removed ..its just that we create those arguments in glance_image_create()[the method which is removed] which we are taking as arguments for _image_create() already. There is nothing in the glance_image_create() which is not implemented in _image_create() because at the end glance_image_create() calls _image_create for image creation.\n\nSo, I think we can remove glance_image_create() completely without keeping its logic as well.","commit_id":"8da2d8fb6299558e5d10c958aebf8b1cfc2e41a1"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"cc536891c80ad420785e21b4d16a7b17b04e24e7","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                self.image_client.store_image_file(image[\u0027id\u0027], image_file)"},{"line_number":592,"context_line":"        return image[\u0027id\u0027]"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def glance_image_create(self):"},{"line_number":595,"context_line":"        \"\"\"Creates image"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        This wrapper utility creates image with container format, disk format,"},{"line_number":598,"context_line":"        properties and path of image."},{"line_number":599,"context_line":"        \"\"\""},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        img_path \u003d CONF.scenario.img_file"},{"line_number":602,"context_line":"        if not os.path.exists(img_path):"},{"line_number":603,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":604,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":605,"context_line":"            # released - there will be one release which accepts both"},{"line_number":606,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":607,"context_line":"            LOG.warning("},{"line_number":608,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":609,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":610,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":611,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":612,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":613,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":614,"context_line":"            img_path \u003d os.path.join(CONF.scenario.img_dir, img_path)"},{"line_number":615,"context_line":"        img_container_format \u003d CONF.scenario.img_container_format"},{"line_number":616,"context_line":"        img_disk_format \u003d CONF.scenario.img_disk_format"},{"line_number":617,"context_line":"        img_properties \u003d CONF.scenario.img_properties"},{"line_number":618,"context_line":"        LOG.debug(\"paths: img: %s, container_format: %s, disk_format: %s, \""},{"line_number":619,"context_line":"                  \"properties: %s\","},{"line_number":620,"context_line":"                  img_path, img_container_format, img_disk_format,"},{"line_number":621,"context_line":"                  img_properties)"},{"line_number":622,"context_line":"        image \u003d self._image_create(\u0027scenario-img\u0027,"},{"line_number":623,"context_line":"                                   img_container_format,"},{"line_number":624,"context_line":"                                   img_path,"},{"line_number":625,"context_line":"                                   disk_format\u003dimg_disk_format,"},{"line_number":626,"context_line":"                                   properties\u003dimg_properties)"},{"line_number":627,"context_line":"        LOG.debug(\"image:%s\", image)"},{"line_number":628,"context_line":"        return image"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def _log_console_output(self, servers\u003dNone, client\u003dNone):"},{"line_number":631,"context_line":"        \"\"\"Console log output\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_0ed2d25c","line":628,"range":{"start_line":594,"start_character":4,"end_line":628,"end_character":20},"in_reply_to":"9f560f44_679d7956","updated":"2020-08-19 12:53:07.000000000","message":"There is one thing we need, it\u0027s the condition which checks if img_path exists and prints a warning, see lines from 601 to 614. It\u0027s just temporary and will be removed after we release tempest 25 tag, until then it\u0027s needed so that users are informed about the img_dir deprecation.","commit_id":"8da2d8fb6299558e5d10c958aebf8b1cfc2e41a1"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"076c5c01ec0f3e4df8f61c9e09f42d052316933f","unresolved":false,"context_lines":[{"line_number":531,"context_line":"                self.image_client.store_image_file(image[\u0027id\u0027], image_file)"},{"line_number":532,"context_line":"        return image[\u0027id\u0027]"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def glance_image_create(self):"},{"line_number":535,"context_line":"        img_path \u003d CONF.scenario.img_file"},{"line_number":536,"context_line":"        if not os.path.exists(img_path):"},{"line_number":537,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":538,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":539,"context_line":"            # released - there will be one release which accepts both"},{"line_number":540,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":541,"context_line":"            LOG.warning("},{"line_number":542,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":543,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":544,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":545,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":546,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":547,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":548,"context_line":"            img_path \u003d os.path.join(CONF.scenario.img_dir, img_path)"},{"line_number":549,"context_line":"        img_container_format \u003d CONF.scenario.img_container_format"},{"line_number":550,"context_line":"        img_disk_format \u003d CONF.scenario.img_disk_format"},{"line_number":551,"context_line":"        img_properties \u003d CONF.scenario.img_properties"},{"line_number":552,"context_line":"        LOG.debug(\"paths: img: %s, container_format: %s, disk_format: %s, \""},{"line_number":553,"context_line":"                  \"properties: %s\","},{"line_number":554,"context_line":"                  img_path, img_container_format, img_disk_format,"},{"line_number":555,"context_line":"                  img_properties)"},{"line_number":556,"context_line":"        image \u003d self._image_create(\u0027scenario-img\u0027,"},{"line_number":557,"context_line":"                                   img_container_format,"},{"line_number":558,"context_line":"                                   img_path,"},{"line_number":559,"context_line":"                                   disk_format\u003dimg_disk_format,"},{"line_number":560,"context_line":"                                   properties\u003dimg_properties)"},{"line_number":561,"context_line":"        LOG.debug(\"image:%s\", image)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        return image"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def _log_console_output(self, servers\u003dNone, client\u003dNone):"},{"line_number":566,"context_line":"        if not CONF.compute_feature_enabled.console_output:"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_6f617905","side":"PARENT","line":563,"range":{"start_line":534,"start_character":4,"end_line":563,"end_character":20},"updated":"2020-08-24 20:38:44.000000000","message":"this change should go to the following review: \nhttps://review.opendev.org/#/c/746492/\n\nas ^^ that\u0027s the review which is trying to merge _image_create and glance_image_create methods together.","commit_id":"c02aa28390ed48710f57ae18531b28d59d968f8d"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"076c5c01ec0f3e4df8f61c9e09f42d052316933f","unresolved":false,"context_lines":[{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        if properties is None:"},{"line_number":585,"context_line":"            properties \u003d {}"},{"line_number":586,"context_line":"        if not os.path.exists(path):"},{"line_number":587,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":588,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":589,"context_line":"            # released - there will be one release which accepts both"},{"line_number":590,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":591,"context_line":"            LOG.warning("},{"line_number":592,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":593,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":594,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":595,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":596,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":597,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":598,"context_line":"            path \u003d os.path.join(CONF.scenario.img_dir, path)"},{"line_number":599,"context_line":"        name \u003d data_utils.rand_name(\u0027%s-\u0027 % name)"},{"line_number":600,"context_line":"        params \u003d {"},{"line_number":601,"context_line":"            \u0027name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_0f471d79","line":598,"range":{"start_line":586,"start_character":0,"end_line":598,"end_character":60},"updated":"2020-08-24 20:38:44.000000000","message":"this change should go to the following review: \nhttps://review.opendev.org/#/c/746492/\n\nas ^^ that\u0027s the review which is trying to merge _image_create and glance_image_create methods together.","commit_id":"2b77434c980cb547f56dd559b6df4d15079a826f"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"368ac3ec267b97c5b934d5664434652f82f9b454","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        linux_client.validate_authentication()"},{"line_number":503,"context_line":"        return linux_client"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def _image_create(self, name, fmt, path,"},{"line_number":506,"context_line":"                      disk_format\u003dNone, properties\u003dNone):"},{"line_number":507,"context_line":"        if properties is None:"},{"line_number":508,"context_line":"            properties \u003d {}"},{"line_number":509,"context_line":"        name \u003d data_utils.rand_name(\u0027%s-\u0027 % name)"},{"line_number":510,"context_line":"        params \u003d {"},{"line_number":511,"context_line":"            \u0027name\u0027: name,"},{"line_number":512,"context_line":"            \u0027container_format\u0027: fmt,"},{"line_number":513,"context_line":"            \u0027disk_format\u0027: disk_format or fmt,"},{"line_number":514,"context_line":"        }"},{"line_number":515,"context_line":"        if CONF.image_feature_enabled.api_v1:"},{"line_number":516,"context_line":"            params[\u0027is_public\u0027] \u003d \u0027False\u0027"},{"line_number":517,"context_line":"            params[\u0027properties\u0027] \u003d properties"},{"line_number":518,"context_line":"            params \u003d {\u0027headers\u0027: common_image.image_meta_to_headers(**params)}"},{"line_number":519,"context_line":"        else:"},{"line_number":520,"context_line":"            params[\u0027visibility\u0027] \u003d \u0027private\u0027"},{"line_number":521,"context_line":"            # Additional properties are flattened out in the v2 API."},{"line_number":522,"context_line":"            params.update(properties)"},{"line_number":523,"context_line":"        body \u003d self.image_client.create_image(**params)"},{"line_number":524,"context_line":"        image \u003d body[\u0027image\u0027] if \u0027image\u0027 in body else body"},{"line_number":525,"context_line":"        self.addCleanup(self.image_client.delete_image, image[\u0027id\u0027])"},{"line_number":526,"context_line":"        self.assertEqual(\"queued\", image[\u0027status\u0027])"},{"line_number":527,"context_line":"        with open(path, \u0027rb\u0027) as image_file:"},{"line_number":528,"context_line":"            if CONF.image_feature_enabled.api_v1:"},{"line_number":529,"context_line":"                self.image_client.update_image(image[\u0027id\u0027], data\u003dimage_file)"},{"line_number":530,"context_line":"            else:"},{"line_number":531,"context_line":"                self.image_client.store_image_file(image[\u0027id\u0027], image_file)"},{"line_number":532,"context_line":"        return image[\u0027id\u0027]"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def glance_image_create(self):"},{"line_number":535,"context_line":"        img_path \u003d CONF.scenario.img_file"},{"line_number":536,"context_line":"        if not os.path.exists(img_path):"},{"line_number":537,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":538,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":539,"context_line":"            # released - there will be one release which accepts both"},{"line_number":540,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":541,"context_line":"            LOG.warning("},{"line_number":542,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":543,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":544,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":545,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":546,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":547,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":548,"context_line":"            img_path \u003d os.path.join(CONF.scenario.img_dir, img_path)"},{"line_number":549,"context_line":"        img_container_format \u003d CONF.scenario.img_container_format"},{"line_number":550,"context_line":"        img_disk_format \u003d CONF.scenario.img_disk_format"},{"line_number":551,"context_line":"        img_properties \u003d CONF.scenario.img_properties"},{"line_number":552,"context_line":"        LOG.debug(\"paths: img: %s, container_format: %s, disk_format: %s, \""},{"line_number":553,"context_line":"                  \"properties: %s\","},{"line_number":554,"context_line":"                  img_path, img_container_format, img_disk_format,"},{"line_number":555,"context_line":"                  img_properties)"},{"line_number":556,"context_line":"        image \u003d self._image_create(\u0027scenario-img\u0027,"},{"line_number":557,"context_line":"                                   img_container_format,"},{"line_number":558,"context_line":"                                   img_path,"},{"line_number":559,"context_line":"                                   disk_format\u003dimg_disk_format,"},{"line_number":560,"context_line":"                                   properties\u003dimg_properties)"},{"line_number":561,"context_line":"        LOG.debug(\"image:%s\", image)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        return image"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def _log_console_output(self, servers\u003dNone, client\u003dNone):"},{"line_number":566,"context_line":"        if not CONF.compute_feature_enabled.console_output:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_ca8b411c","side":"PARENT","line":563,"range":{"start_line":505,"start_character":4,"end_line":563,"end_character":20},"updated":"2020-08-25 20:37:13.000000000","message":"this is already addressed by https://review.opendev.org/#/c/746492/ so it cannot be in this patch.","commit_id":"c02aa28390ed48710f57ae18531b28d59d968f8d"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"d2da8805b3a09d6e27a4466bab9cd1188d5151b2","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        linux_client.validate_authentication()"},{"line_number":503,"context_line":"        return linux_client"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def _image_create(self, name, fmt, path,"},{"line_number":506,"context_line":"                      disk_format\u003dNone, properties\u003dNone):"},{"line_number":507,"context_line":"        if properties is None:"},{"line_number":508,"context_line":"            properties \u003d {}"},{"line_number":509,"context_line":"        name \u003d data_utils.rand_name(\u0027%s-\u0027 % name)"},{"line_number":510,"context_line":"        params \u003d {"},{"line_number":511,"context_line":"            \u0027name\u0027: name,"},{"line_number":512,"context_line":"            \u0027container_format\u0027: fmt,"},{"line_number":513,"context_line":"            \u0027disk_format\u0027: disk_format or fmt,"},{"line_number":514,"context_line":"        }"},{"line_number":515,"context_line":"        if CONF.image_feature_enabled.api_v1:"},{"line_number":516,"context_line":"            params[\u0027is_public\u0027] \u003d \u0027False\u0027"},{"line_number":517,"context_line":"            params[\u0027properties\u0027] \u003d properties"},{"line_number":518,"context_line":"            params \u003d {\u0027headers\u0027: common_image.image_meta_to_headers(**params)}"},{"line_number":519,"context_line":"        else:"},{"line_number":520,"context_line":"            params[\u0027visibility\u0027] \u003d \u0027private\u0027"},{"line_number":521,"context_line":"            # Additional properties are flattened out in the v2 API."},{"line_number":522,"context_line":"            params.update(properties)"},{"line_number":523,"context_line":"        body \u003d self.image_client.create_image(**params)"},{"line_number":524,"context_line":"        image \u003d body[\u0027image\u0027] if \u0027image\u0027 in body else body"},{"line_number":525,"context_line":"        self.addCleanup(self.image_client.delete_image, image[\u0027id\u0027])"},{"line_number":526,"context_line":"        self.assertEqual(\"queued\", image[\u0027status\u0027])"},{"line_number":527,"context_line":"        with open(path, \u0027rb\u0027) as image_file:"},{"line_number":528,"context_line":"            if CONF.image_feature_enabled.api_v1:"},{"line_number":529,"context_line":"                self.image_client.update_image(image[\u0027id\u0027], data\u003dimage_file)"},{"line_number":530,"context_line":"            else:"},{"line_number":531,"context_line":"                self.image_client.store_image_file(image[\u0027id\u0027], image_file)"},{"line_number":532,"context_line":"        return image[\u0027id\u0027]"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def glance_image_create(self):"},{"line_number":535,"context_line":"        img_path \u003d CONF.scenario.img_file"},{"line_number":536,"context_line":"        if not os.path.exists(img_path):"},{"line_number":537,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":538,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":539,"context_line":"            # released - there will be one release which accepts both"},{"line_number":540,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":541,"context_line":"            LOG.warning("},{"line_number":542,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":543,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":544,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":545,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":546,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":547,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":548,"context_line":"            img_path \u003d os.path.join(CONF.scenario.img_dir, img_path)"},{"line_number":549,"context_line":"        img_container_format \u003d CONF.scenario.img_container_format"},{"line_number":550,"context_line":"        img_disk_format \u003d CONF.scenario.img_disk_format"},{"line_number":551,"context_line":"        img_properties \u003d CONF.scenario.img_properties"},{"line_number":552,"context_line":"        LOG.debug(\"paths: img: %s, container_format: %s, disk_format: %s, \""},{"line_number":553,"context_line":"                  \"properties: %s\","},{"line_number":554,"context_line":"                  img_path, img_container_format, img_disk_format,"},{"line_number":555,"context_line":"                  img_properties)"},{"line_number":556,"context_line":"        image \u003d self._image_create(\u0027scenario-img\u0027,"},{"line_number":557,"context_line":"                                   img_container_format,"},{"line_number":558,"context_line":"                                   img_path,"},{"line_number":559,"context_line":"                                   disk_format\u003dimg_disk_format,"},{"line_number":560,"context_line":"                                   properties\u003dimg_properties)"},{"line_number":561,"context_line":"        LOG.debug(\"image:%s\", image)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        return image"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def _log_console_output(self, servers\u003dNone, client\u003dNone):"},{"line_number":566,"context_line":"        if not CONF.compute_feature_enabled.console_output:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_cbe4d9e2","side":"PARENT","line":563,"range":{"start_line":505,"start_character":4,"end_line":563,"end_character":20},"in_reply_to":"9f560f44_ca8b411c","updated":"2020-08-26 12:47:23.000000000","message":"you have reviewed earlier patch set, this method has been removed from the recent patchset.","commit_id":"c02aa28390ed48710f57ae18531b28d59d968f8d"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"f3b6ae5eba7cc747073e3a50a091d1293d5fc79b","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        linux_client.validate_authentication()"},{"line_number":503,"context_line":"        return linux_client"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    def _image_create(self, name, fmt, path,"},{"line_number":506,"context_line":"                      disk_format\u003dNone, properties\u003dNone):"},{"line_number":507,"context_line":"        if properties is None:"},{"line_number":508,"context_line":"            properties \u003d {}"},{"line_number":509,"context_line":"        name \u003d data_utils.rand_name(\u0027%s-\u0027 % name)"},{"line_number":510,"context_line":"        params \u003d {"},{"line_number":511,"context_line":"            \u0027name\u0027: name,"},{"line_number":512,"context_line":"            \u0027container_format\u0027: fmt,"},{"line_number":513,"context_line":"            \u0027disk_format\u0027: disk_format or fmt,"},{"line_number":514,"context_line":"        }"},{"line_number":515,"context_line":"        if CONF.image_feature_enabled.api_v1:"},{"line_number":516,"context_line":"            params[\u0027is_public\u0027] \u003d \u0027False\u0027"},{"line_number":517,"context_line":"            params[\u0027properties\u0027] \u003d properties"},{"line_number":518,"context_line":"            params \u003d {\u0027headers\u0027: common_image.image_meta_to_headers(**params)}"},{"line_number":519,"context_line":"        else:"},{"line_number":520,"context_line":"            params[\u0027visibility\u0027] \u003d \u0027private\u0027"},{"line_number":521,"context_line":"            # Additional properties are flattened out in the v2 API."},{"line_number":522,"context_line":"            params.update(properties)"},{"line_number":523,"context_line":"        body \u003d self.image_client.create_image(**params)"},{"line_number":524,"context_line":"        image \u003d body[\u0027image\u0027] if \u0027image\u0027 in body else body"},{"line_number":525,"context_line":"        self.addCleanup(self.image_client.delete_image, image[\u0027id\u0027])"},{"line_number":526,"context_line":"        self.assertEqual(\"queued\", image[\u0027status\u0027])"},{"line_number":527,"context_line":"        with open(path, \u0027rb\u0027) as image_file:"},{"line_number":528,"context_line":"            if CONF.image_feature_enabled.api_v1:"},{"line_number":529,"context_line":"                self.image_client.update_image(image[\u0027id\u0027], data\u003dimage_file)"},{"line_number":530,"context_line":"            else:"},{"line_number":531,"context_line":"                self.image_client.store_image_file(image[\u0027id\u0027], image_file)"},{"line_number":532,"context_line":"        return image[\u0027id\u0027]"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def glance_image_create(self):"},{"line_number":535,"context_line":"        img_path \u003d CONF.scenario.img_file"},{"line_number":536,"context_line":"        if not os.path.exists(img_path):"},{"line_number":537,"context_line":"            # TODO(kopecmartin): replace LOG.warning for rasing"},{"line_number":538,"context_line":"            # InvalidConfiguration exception after tempest 25.0.0 is"},{"line_number":539,"context_line":"            # released - there will be one release which accepts both"},{"line_number":540,"context_line":"            # behaviors in order to avoid many failures across CIs and etc."},{"line_number":541,"context_line":"            LOG.warning("},{"line_number":542,"context_line":"                \u0027Starting Tempest 25.0.0 release, CONF.scenario.img_file need \u0027"},{"line_number":543,"context_line":"                \u0027a full path for the image. CONF.scenario.img_dir was \u0027"},{"line_number":544,"context_line":"                \u0027deprecated and will be removed in the next release. Till \u0027"},{"line_number":545,"context_line":"                \u0027Tempest 25.0.0, old behavior is maintained and keep working \u0027"},{"line_number":546,"context_line":"                \u0027but starting Tempest 26.0.0, you need to specify the full \u0027"},{"line_number":547,"context_line":"                \u0027path in CONF.scenario.img_file config option.\u0027)"},{"line_number":548,"context_line":"            img_path \u003d os.path.join(CONF.scenario.img_dir, img_path)"},{"line_number":549,"context_line":"        img_container_format \u003d CONF.scenario.img_container_format"},{"line_number":550,"context_line":"        img_disk_format \u003d CONF.scenario.img_disk_format"},{"line_number":551,"context_line":"        img_properties \u003d CONF.scenario.img_properties"},{"line_number":552,"context_line":"        LOG.debug(\"paths: img: %s, container_format: %s, disk_format: %s, \""},{"line_number":553,"context_line":"                  \"properties: %s\","},{"line_number":554,"context_line":"                  img_path, img_container_format, img_disk_format,"},{"line_number":555,"context_line":"                  img_properties)"},{"line_number":556,"context_line":"        image \u003d self._image_create(\u0027scenario-img\u0027,"},{"line_number":557,"context_line":"                                   img_container_format,"},{"line_number":558,"context_line":"                                   img_path,"},{"line_number":559,"context_line":"                                   disk_format\u003dimg_disk_format,"},{"line_number":560,"context_line":"                                   properties\u003dimg_properties)"},{"line_number":561,"context_line":"        LOG.debug(\"image:%s\", image)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        return image"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"    def _log_console_output(self, servers\u003dNone, client\u003dNone):"},{"line_number":566,"context_line":"        if not CONF.compute_feature_enabled.console_output:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_91a210ad","side":"PARENT","line":563,"range":{"start_line":505,"start_character":4,"end_line":563,"end_character":20},"in_reply_to":"9f560f44_cbe4d9e2","updated":"2020-08-26 13:33:14.000000000","message":"and that\u0027s the problem that it has been removed, it cannot be removed in this review, it\u0027s removed by https://review.opendev.org/#/c/746492 which is not merged yet and thus these 2 methods have to be here in the context of this review.","commit_id":"c02aa28390ed48710f57ae18531b28d59d968f8d"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"ea7ab0c452ff1c5ea08ec60fe277766656a6ecd3","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        self.assertEqual(backup_id, restore[\u0027backup_id\u0027])"},{"line_number":393,"context_line":"        return restore"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def rebuild_server(self, server_id, image\u003dNone,"},{"line_number":396,"context_line":"                       preserve_ephemeral\u003dFalse, wait\u003dTrue,"},{"line_number":397,"context_line":"                       rebuild_kwargs\u003dNone):"},{"line_number":398,"context_line":"        if image is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_37a5e2b5","line":395,"range":{"start_line":395,"start_character":8,"end_line":395,"end_character":22},"updated":"2020-08-27 12:11:56.000000000","message":"this is the only method without any docstring, but that can be also done in other patchset, we\u0027re not done with manager.py from manager scenario work point of view ...","commit_id":"ef0d95aa43cbd11abbaecc2ab193c306ea3bb6e5"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"b7e692f6cd2c77ad35499e232aef68d9ff933f2f","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        self.assertEqual(backup_id, restore[\u0027backup_id\u0027])"},{"line_number":393,"context_line":"        return restore"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def rebuild_server(self, server_id, image\u003dNone,"},{"line_number":396,"context_line":"                       preserve_ephemeral\u003dFalse, wait\u003dTrue,"},{"line_number":397,"context_line":"                       rebuild_kwargs\u003dNone):"},{"line_number":398,"context_line":"        if image is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_3264d0b8","line":395,"range":{"start_line":395,"start_character":8,"end_line":395,"end_character":22},"in_reply_to":"9f560f44_37a5e2b5","updated":"2020-09-03 14:13:47.000000000","message":"Yeah, I will do this in another patch.","commit_id":"ef0d95aa43cbd11abbaecc2ab193c306ea3bb6e5"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"ea7ab0c452ff1c5ea08ec60fe277766656a6ecd3","unresolved":false,"context_lines":[{"line_number":809,"context_line":"                LOG.exception(extra_msg)"},{"line_number":810,"context_line":"                raise"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"    def create_floating_ip(self, server, pool_name\u003dNone):"},{"line_number":813,"context_line":"        \"\"\"Create a floating IP and associates to a server on Nova\"\"\""},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"        if not pool_name:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f560f44_d73f4622","line":812,"range":{"start_line":812,"start_character":33,"end_line":812,"end_character":39},"updated":"2020-08-27 12:11:56.000000000","message":"seems like create_floating_ip method is used in scenario tests with \u0027thing\u0027 parameter explicitly:\nhttps://opendev.org/openstack/tempest/src/commit/4792d42d41116978e77c67c2346ba211b1eca729/tempest/scenario/test_network_v6.py#L133\n\nSo we should rename \u0027thing\u0027 there ^^ as well.\nI quickly checked http://codesearch.openstack.org for any other usages of create_floating_ip method with thing parameter in any other openstack project and I didn\u0027t find anything, so we should be fine.","commit_id":"ef0d95aa43cbd11abbaecc2ab193c306ea3bb6e5"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"b8e7f9f2dbc34a1a53a8e29546f1f0a799beec1c","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"                            \"Unable to get network by name: %s\" % network_name)"},{"line_number":1108,"context_line":"        return net[0]"},{"line_number":1109,"context_line":""},{"line_number":1110,"context_line":"    def create_floating_ip(self, thing, external_network_id\u003dNone,"},{"line_number":1111,"context_line":"                           port_id\u003dNone, client\u003dNone):"},{"line_number":1112,"context_line":"        \"\"\"Create a floating IP and associates to a resource/port on Neutron\"\"\""},{"line_number":1113,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_fa3225f2","line":1110,"range":{"start_line":1110,"start_character":33,"end_line":1110,"end_character":38},"updated":"2020-08-27 21:59:17.000000000","message":"oh, here\u0027s another \u0027thing\u0027 - this method is here twice (it\u0027s overloaded by different arguments) and after the thing got renamed in test_network_v6.py the jobs started failing because apparently test_network_v6.py calls this method, not the one on line 812\n\nso hopefully after you rename this, everything should work","commit_id":"447260c115a97084a7722abc9b54d150ed4a7404"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7d7913b35e2ec519fbfb39f3e26c232ff7f69081","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"                            \"Unable to get network by name: %s\" % network_name)"},{"line_number":1108,"context_line":"        return net[0]"},{"line_number":1109,"context_line":""},{"line_number":1110,"context_line":"    def create_floating_ip(self, thing, external_network_id\u003dNone,"},{"line_number":1111,"context_line":"                           port_id\u003dNone, client\u003dNone):"},{"line_number":1112,"context_line":"        \"\"\"Create a floating IP and associates to a resource/port on Neutron\"\"\""},{"line_number":1113,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9f560f44_1ac9d924","line":1110,"range":{"start_line":1110,"start_character":33,"end_line":1110,"end_character":38},"in_reply_to":"9f560f44_fa3225f2","updated":"2020-08-27 23:09:21.000000000","message":"yeah, this is to go on neutron side and other is to on nova side. at the end we should remove all nova proxy API call but that is a separate patch,","commit_id":"447260c115a97084a7722abc9b54d150ed4a7404"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        \"\"\"Creates keypair"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        Keypair is a public key of OpenSSH key pair used for accessing"},{"line_number":167,"context_line":"        to create servers"},{"line_number":168,"context_line":"        Keypair can also be created by a private key for the same purpose"},{"line_number":169,"context_line":"        Here, the keys are randomly generated[public/private]"},{"line_number":170,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_b6970aec","line":167,"range":{"start_line":167,"start_character":8,"end_line":167,"end_character":10},"updated":"2020-08-31 08:19:04.000000000","message":"maybe \u0027and\u0027?","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        This wrapper utility creates volume and wait for volume to be"},{"line_number":313,"context_line":"        in \u0027available\u0027 state."},{"line_number":314,"context_line":"        This method return the volume full representation by GET request."},{"line_number":315,"context_line":"        \"\"\""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        if size is None:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_96fbe645","line":314,"range":{"start_line":314,"start_character":20,"end_line":314,"end_character":26},"updated":"2020-08-31 08:19:04.000000000","message":"returns","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        This wrapper utility creates volume and wait for volume to be"},{"line_number":313,"context_line":"        in \u0027available\u0027 state."},{"line_number":314,"context_line":"        This method return the volume full representation by GET request."},{"line_number":315,"context_line":"        \"\"\""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        if size is None:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_56014e39","line":314,"range":{"start_line":314,"start_character":31,"end_line":314,"end_character":37},"updated":"2020-08-31 08:19:04.000000000","message":"volume\u0027s","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                      container\u003dNone):"},{"line_number":356,"context_line":"        \"\"\"Creates backup"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        This wrapper utility creates backup and wait for backup to be"},{"line_number":359,"context_line":"        in \u0027available\u0027 state."},{"line_number":360,"context_line":"        \"\"\""},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_16e8767a","line":358,"range":{"start_line":358,"start_character":48,"end_line":358,"end_character":52},"updated":"2020-08-31 08:19:04.000000000","message":"waits","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":377,"context_line":"    def restore_backup(self, backup_id):"},{"line_number":378,"context_line":"        \"\"\"Restore backup"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        This wrapper utility restores backup and wait for backup to be"},{"line_number":381,"context_line":"        in \u0027available\u0027 state."},{"line_number":382,"context_line":"        \"\"\""},{"line_number":383,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_169d160a","line":380,"range":{"start_line":380,"start_character":49,"end_line":380,"end_character":53},"updated":"2020-08-31 08:19:04.000000000","message":"waits","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                               metadata\u003dNone, force\u003dFalse):"},{"line_number":414,"context_line":"        \"\"\"Creates volume"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        This wrapper utility creates volume snapshot and wait for backup"},{"line_number":417,"context_line":"        to be in \u0027available\u0027 state."},{"line_number":418,"context_line":"        \"\"\""},{"line_number":419,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_f6a18248","line":416,"range":{"start_line":416,"start_character":57,"end_line":416,"end_character":61},"updated":"2020-08-31 08:19:04.000000000","message":"waits","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                        _image_client.delete_image, image_id)"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"        if CONF.image_feature_enabled.api_v1:"},{"line_number":678,"context_line":"            # In glance v1 the additional properties are stored in the"},{"line_number":679,"context_line":"            # headers"},{"line_number":680,"context_line":"            resp \u003d _image_client.check_image(image_id)"},{"line_number":681,"context_line":"            snapshot_image \u003d common_image.get_image_meta_from_headers(resp)"},{"line_number":682,"context_line":"            image_props \u003d snapshot_image.get(\u0027properties\u0027, {})"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_b64eea93","line":679,"range":{"start_line":678,"start_character":70,"end_line":679,"end_character":21},"updated":"2020-08-31 08:19:04.000000000","message":"any specific reason why this was put to another line?","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":827,"context_line":"                         private_key\u003dNone, server\u003dNone):"},{"line_number":828,"context_line":"        \"\"\"Creates timestamp"},{"line_number":829,"context_line":""},{"line_number":830,"context_line":"        This wrapper utility does ssh, creates timestamp and return the"},{"line_number":831,"context_line":"        created timestamp."},{"line_number":832,"context_line":"        \"\"\""},{"line_number":833,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_f6486288","line":830,"range":{"start_line":830,"start_character":61,"end_line":830,"end_character":67},"updated":"2020-08-31 08:19:04.000000000","message":"returns","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":850,"context_line":"                      private_key\u003dNone, server\u003dNone):"},{"line_number":851,"context_line":"        \"\"\"Returns timestamp"},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"        This wrapper utility does ssh and return the timestamp."},{"line_number":854,"context_line":"        \"\"\""},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"        ssh_client \u003d self.get_remote_client(ip_address,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_565dce46","line":853,"range":{"start_line":853,"start_character":42,"end_line":853,"end_character":48},"updated":"2020-08-31 08:19:04.000000000","message":"returns","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"3a919909c84aae8dab8333afd90a212885655bed","unresolved":false,"context_lines":[{"line_number":1598,"context_line":"        \"\"\"List and verify objects for a given container"},{"line_number":1599,"context_line":""},{"line_number":1600,"context_line":"        This utility lists objects for a given container"},{"line_number":1601,"context_line":"        and assert which are present and"},{"line_number":1602,"context_line":"        which are not"},{"line_number":1603,"context_line":"        \"\"\""},{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"        if present_obj is None:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_d998efcd","line":1602,"range":{"start_line":1601,"start_character":8,"end_line":1602,"end_character":21},"updated":"2020-08-31 08:19:04.000000000","message":"\".. and asserts ..\"\n\nalso this could be on one line","commit_id":"6cbccb9e664de7ef0bb702794ef48773d75980f7"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"aa8e488c679862c80bd808c84f553f293c918e88","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def setup_compute_client(cls):"},{"line_number":95,"context_line":"        \"\"\"Compute and Compute security groups client\"\"\""},{"line_number":96,"context_line":"        cls.compute_images_client \u003d cls.os_primary.compute_images_client"},{"line_number":97,"context_line":"        cls.keypairs_client \u003d cls.os_primary.keypairs_client"},{"line_number":98,"context_line":"        cls.compute_security_groups_client \u003d ("},{"line_number":99,"context_line":"            cls.os_primary.compute_security_groups_client)"},{"line_number":100,"context_line":"        cls.compute_security_group_rules_client \u003d ("}],"source_content_type":"text/x-python","patch_set":20,"id":"9f560f44_e7298989","line":97,"updated":"2020-09-03 15:58:50.000000000","message":"OUT of scope, just a note\nIMHO actually we should stop using the short hands,\nit is frequently confusing.","commit_id":"0c84f3ee2eec4216cfa659d5ac21225f08eaef09"},{"author":{"_account_id":30742,"name":"Soniya Murlidhar Vyas","email":"svyas@redhat.com","username":"svyas"},"change_message_id":"a028ad6458d041ab8ee42f2df326f0725178b3e0","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def setup_compute_client(cls):"},{"line_number":95,"context_line":"        \"\"\"Compute and Compute security groups client\"\"\""},{"line_number":96,"context_line":"        cls.compute_images_client \u003d cls.os_primary.compute_images_client"},{"line_number":97,"context_line":"        cls.keypairs_client \u003d cls.os_primary.keypairs_client"},{"line_number":98,"context_line":"        cls.compute_security_groups_client \u003d ("},{"line_number":99,"context_line":"            cls.os_primary.compute_security_groups_client)"},{"line_number":100,"context_line":"        cls.compute_security_group_rules_client \u003d ("}],"source_content_type":"text/x-python","patch_set":20,"id":"9f560f44_07363db5","line":97,"in_reply_to":"9f560f44_e7298989","updated":"2020-09-03 16:08:23.000000000","message":"I dont find any short hand here.","commit_id":"0c84f3ee2eec4216cfa659d5ac21225f08eaef09"}]}
