)]}'
{"tempest/api/compute/floating_ips/base.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a3e6850f7af966f59514f57d2c4727dda88da30f","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class BaseFloatingIPsTest(base.BaseV2ComputeTest):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    max_microversion \u003d \u00272.35\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"},{"line_number":24,"context_line":"    def setup_credentials(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f2577a7_359974c3","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":29},"updated":"2017-09-15 17:33:10.000000000","message":"this makes all FIP tests to cap 2.35. where test_floating_ips_actions_* tests have associate_floating_ip_to_server \u0026 disassociate_floating_ip_from_server which were not deprecated in 2.35 its 2.43\n\nWe should separate those tests in separate class (keeping interop or any other CI using those tests) and then cap accordingly.","commit_id":"b34bdc3fd4a16dd5fe98bf70a7f542c3b36b7409"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d5821a2d3a611dae8c79669e0b223556fba91656","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class BaseFloatingIPsTest(base.BaseV2ComputeTest):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    max_microversion \u003d \u00272.35\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"},{"line_number":24,"context_line":"    def setup_credentials(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f5c4f37_f655b71e","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":29},"in_reply_to":"5f2577a7_359974c3","updated":"2017-09-21 19:12:41.000000000","message":"Good catch, let me upload a new patchset.","commit_id":"b34bdc3fd4a16dd5fe98bf70a7f542c3b36b7409"}],"tempest/api/compute/floating_ips/test_floating_ips_actions.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"d958e265e633f87f07f35c905908d5adcf6c8686","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Server creation"},{"line_number":51,"context_line":"        server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":52,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"},{"line_number":53,"context_line":"        # Floating IP creation"},{"line_number":54,"context_line":"        body \u003d cls.client.create_floating_ip("},{"line_number":55,"context_line":"            pool\u003dCONF.network.floating_network_name)[\u0027floating_ip\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_8500f902","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":21},"updated":"2017-10-16 07:49:44.000000000","message":"this is not used in FloatingIPsTestJSON, so it shouldn\u0027t be created in FloatingIPsJSONBase.resource_setup","commit_id":"43f1a885e313c96c3e227191ee99e322f50483b4"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"bf447f04b32af90011512390af51a63e3922bfe6","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        # Server creation"},{"line_number":51,"context_line":"        server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":52,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"},{"line_number":53,"context_line":"        # Floating IP creation"},{"line_number":54,"context_line":"        body \u003d cls.client.create_floating_ip("},{"line_number":55,"context_line":"            pool\u003dCONF.network.floating_network_name)[\u0027floating_ip\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_c718311f","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":21},"in_reply_to":"5f4e5783_8500f902","updated":"2017-10-16 11:39:22.000000000","message":"Done","commit_id":"43f1a885e313c96c3e227191ee99e322f50483b4"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"84e4c16ae709bd9db7d7c7ac666bf4c5bf48ba9c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        super(FloatingIPsJSONBase, cls).resource_setup()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # Server creation"},{"line_number":50,"context_line":"        cls.server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":51,"context_line":"        # Floating IP creation"},{"line_number":52,"context_line":"        body \u003d cls.client.create_floating_ip("},{"line_number":53,"context_line":"            pool\u003dCONF.network.floating_network_name)[\u0027floating_ip\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f4e5783_431782a5","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":64},"updated":"2017-10-17 01:38:51.000000000","message":"Because FloatingIPsTestJSON doesn\u0027t need a server, so the server shouldn\u0027t be created in FloatingIPsJSONBase, \nit should be created in FloatingIPsAssociationTestJSON instead","commit_id":"c8bd24a1a3a69cc6387328f6829b27694f6891a1"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"1b865326e222dd7273de35001acfe9b186cddf61","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        super(FloatingIPsJSONBase, cls).resource_setup()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # Server creation"},{"line_number":50,"context_line":"        cls.server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":51,"context_line":"        # Floating IP creation"},{"line_number":52,"context_line":"        body \u003d cls.client.create_floating_ip("},{"line_number":53,"context_line":"            pool\u003dCONF.network.floating_network_name)[\u0027floating_ip\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f4e5783_1ff2f606","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":64},"in_reply_to":"5f4e5783_431782a5","updated":"2017-10-17 17:31:58.000000000","message":"Done","commit_id":"c8bd24a1a3a69cc6387328f6829b27694f6891a1"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"3065034f8f8f242113bdeeb9618a0184cd44f8d1","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    floating_ip \u003d None"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def skip_checks(cls):"},{"line_number":34,"context_line":"        super(FloatingIPsJSONBase, cls).skip_checks()"},{"line_number":35,"context_line":"        if not utils.get_service_list()[\u0027network\u0027]:"},{"line_number":36,"context_line":"            raise cls.skipException(\"network service not enabled.\")"},{"line_number":37,"context_line":"        if not CONF.network_feature_enabled.floating_ips:"},{"line_number":38,"context_line":"            raise cls.skipException(\"Floating ips are not available\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def setup_clients(cls):"},{"line_number":42,"context_line":"        super(FloatingIPsJSONBase, cls).setup_clients()"},{"line_number":43,"context_line":"        cls.client \u003d cls.floating_ips_client"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @classmethod"},{"line_number":46,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f4e5783_1fff9667","line":43,"range":{"start_line":32,"start_character":0,"end_line":43,"end_character":44},"updated":"2017-10-18 01:00:10.000000000","message":"Maybe you can move this to base.BaseFloatingIPsTest? Then FloatingIPsJSONBase is not needed in this file.","commit_id":"94d600e9755fae03c792c07455d7bbcf7c22571e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"352390165958ee5fe0f37eec4d654bad276d658f","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    floating_ip \u003d None"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def skip_checks(cls):"},{"line_number":34,"context_line":"        super(FloatingIPsJSONBase, cls).skip_checks()"},{"line_number":35,"context_line":"        if not utils.get_service_list()[\u0027network\u0027]:"},{"line_number":36,"context_line":"            raise cls.skipException(\"network service not enabled.\")"},{"line_number":37,"context_line":"        if not CONF.network_feature_enabled.floating_ips:"},{"line_number":38,"context_line":"            raise cls.skipException(\"Floating ips are not available\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @classmethod"},{"line_number":41,"context_line":"    def setup_clients(cls):"},{"line_number":42,"context_line":"        super(FloatingIPsJSONBase, cls).setup_clients()"},{"line_number":43,"context_line":"        cls.client \u003d cls.floating_ips_client"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @classmethod"},{"line_number":46,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f4b6375_36da36e9","line":43,"range":{"start_line":32,"start_character":0,"end_line":43,"end_character":44},"in_reply_to":"5f4e5783_1fff9667","updated":"2017-10-18 15:58:17.000000000","message":"Oh yeah :) And this means all the other classes don\u0027t need their identical skip_checks() and setup_clients(). Done.","commit_id":"94d600e9755fae03c792c07455d7bbcf7c22571e"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"3065034f8f8f242113bdeeb9618a0184cd44f8d1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def resource_setup(cls):"},{"line_number":47,"context_line":"        super(FloatingIPsJSONBase, cls).resource_setup()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # Floating IP creation"},{"line_number":50,"context_line":"        body \u003d cls.client.create_floating_ip("},{"line_number":51,"context_line":"            pool\u003dCONF.network.floating_network_name)[\u0027floating_ip\u0027]"},{"line_number":52,"context_line":"        cls.addClassResourceCleanup(cls.client.delete_floating_ip, body[\u0027id\u0027])"},{"line_number":53,"context_line":"        cls.floating_ip_id \u003d body[\u0027id\u0027]"},{"line_number":54,"context_line":"        cls.floating_ip \u003d body[\u0027ip\u0027]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class FloatingIPsTestJSON(FloatingIPsJSONBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f4e5783_5f098e93","line":54,"range":{"start_line":49,"start_character":0,"end_line":54,"end_character":36},"updated":"2017-10-18 01:00:10.000000000","message":"this is not used in FloatingIPsTestJSON, so it can be put in FloatingIPsAssociationTestJSON\u0027s resource_setup","commit_id":"94d600e9755fae03c792c07455d7bbcf7c22571e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"352390165958ee5fe0f37eec4d654bad276d658f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def resource_setup(cls):"},{"line_number":47,"context_line":"        super(FloatingIPsJSONBase, cls).resource_setup()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # Floating IP creation"},{"line_number":50,"context_line":"        body \u003d cls.client.create_floating_ip("},{"line_number":51,"context_line":"            pool\u003dCONF.network.floating_network_name)[\u0027floating_ip\u0027]"},{"line_number":52,"context_line":"        cls.addClassResourceCleanup(cls.client.delete_floating_ip, body[\u0027id\u0027])"},{"line_number":53,"context_line":"        cls.floating_ip_id \u003d body[\u0027id\u0027]"},{"line_number":54,"context_line":"        cls.floating_ip \u003d body[\u0027ip\u0027]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class FloatingIPsTestJSON(FloatingIPsJSONBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f4b6375_d68e42cf","line":54,"range":{"start_line":49,"start_character":0,"end_line":54,"end_character":36},"in_reply_to":"5f4e5783_5f098e93","updated":"2017-10-18 15:58:17.000000000","message":"Done","commit_id":"94d600e9755fae03c792c07455d7bbcf7c22571e"}],"tempest/api/compute/floating_ips/test_floating_ips_actions_negative.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"d958e265e633f87f07f35c905908d5adcf6c8686","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # Server creation"},{"line_number":48,"context_line":"        server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":49,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"},{"line_number":50,"context_line":"        # Generating a nonexistent floatingIP id"},{"line_number":51,"context_line":"        body \u003d cls.client.list_floating_ips()[\u0027floating_ips\u0027]"},{"line_number":52,"context_line":"        floating_ip_ids \u003d [floating_ip[\u0027id\u0027] for floating_ip in body]"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_45b3210b","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":21},"updated":"2017-10-16 07:49:44.000000000","message":"ditto","commit_id":"43f1a885e313c96c3e227191ee99e322f50483b4"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"bf447f04b32af90011512390af51a63e3922bfe6","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # Server creation"},{"line_number":48,"context_line":"        server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":49,"context_line":"        cls.server_id \u003d server[\u0027id\u0027]"},{"line_number":50,"context_line":"        # Generating a nonexistent floatingIP id"},{"line_number":51,"context_line":"        body \u003d cls.client.list_floating_ips()[\u0027floating_ips\u0027]"},{"line_number":52,"context_line":"        floating_ip_ids \u003d [floating_ip[\u0027id\u0027] for floating_ip in body]"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_a71535e7","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":21},"in_reply_to":"5f4e5783_45b3210b","updated":"2017-10-16 11:39:22.000000000","message":"Done","commit_id":"43f1a885e313c96c3e227191ee99e322f50483b4"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"50a8de3b88fbb9ab48d83397628ff85f2d822940","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        super(FloatingIPsNegativeJSONBase, cls).resource_setup()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # Server creation"},{"line_number":34,"context_line":"        cls.server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":35,"context_line":"        # Generating a nonexistent floatingIP id"},{"line_number":36,"context_line":"        body \u003d cls.client.list_floating_ips()[\u0027floating_ips\u0027]"},{"line_number":37,"context_line":"        floating_ip_ids \u003d [floating_ip[\u0027id\u0027] for floating_ip in body]"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_0c2e02a5","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":64},"updated":"2017-10-19 02:21:29.000000000","message":"cls.server is not used in FloatingIPsNegativeTestJSON while cls.non_exist_id is not used in FloatingIPsAssociationNegativeTestJSON,\nso maybe FloatingIPsNegativeJSONBase can be removed, and to set server/non_exist_id in two testcases respectively.","commit_id":"bf472b636d11ca6a3361f1167d4d2e887c54fcd4"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9cc234605685ae7eab6d1d480468b4c0496cb523","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        super(FloatingIPsNegativeJSONBase, cls).resource_setup()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # Server creation"},{"line_number":34,"context_line":"        cls.server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":35,"context_line":"        # Generating a nonexistent floatingIP id"},{"line_number":36,"context_line":"        body \u003d cls.client.list_floating_ips()[\u0027floating_ips\u0027]"},{"line_number":37,"context_line":"        floating_ip_ids \u003d [floating_ip[\u0027id\u0027] for floating_ip in body]"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_8f0d3a39","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":64},"in_reply_to":"3f4b6375_0c2e02a5","updated":"2017-10-19 09:43:29.000000000","message":"Done","commit_id":"bf472b636d11ca6a3361f1167d4d2e887c54fcd4"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"bea41b31dac8bd6c7b1970c9ccca4ef53f1a2949","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    @classmethod"},{"line_number":71,"context_line":"    def resource_setup(cls):"},{"line_number":72,"context_line":"        super(FloatingIPsAssociationNegativeTestJSON, cls).resource_setup()"},{"line_number":73,"context_line":"        cls.server \u003d cls.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":74,"context_line":"        cls.server_id \u003d cls.server[\u0027id\u0027]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_7ec48e91","line":73,"range":{"start_line":73,"start_character":8,"end_line":73,"end_character":18},"updated":"2017-10-24 02:54:53.000000000","message":"no need to use \"cls.server\", \"server\" can be used instead.","commit_id":"065eb4af8b7cc0284caa08bc5e8fbb035b91ca8a"}]}
