)]}'
{"neutron/tests/fullstack/resources/process.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"bbcab00ba0a43982c4175e2655e41b98cab23f5c","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            kill_signal\u003dsignal.SIGTERM))"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"class PlacementFixture(fixtures.Fixture):"},{"line_number":217,"context_line":"    PLACEMENT \u003d \u0027neutron.tests.fullstack.servers.placement\u0027"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, env_desc, host_desc, test_name, placement_cfg_fixture):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_edd7fe22","line":216,"updated":"2019-04-12 17:09:32.000000000","message":"If you\u0027re potentially interested in using a working placement with an in ram db and an in process http api, checkout out how Nova imports a PlacementFixture from placement. I\u0027ve also just used it for osc-placement\u0027s functional tests: https://review.openstack.org/#/c/651939/","commit_id":"cfe0b334245c3a31e35743555a03d8a87e6bf4a5"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"de495e55645b7b69c62ac449badf9b37ca5653a0","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            kill_signal\u003dsignal.SIGTERM))"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"class PlacementFixture(fixtures.Fixture):"},{"line_number":217,"context_line":"    PLACEMENT \u003d \u0027neutron.tests.fullstack.servers.placement\u0027"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, env_desc, host_desc, test_name, placement_cfg_fixture):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_2a463323","line":216,"in_reply_to":"3fce034c_4757f803","updated":"2019-04-15 10:12:13.000000000","message":"Yeah, that makes total sense. Just wanted to make sure you were aware of it.","commit_id":"cfe0b334245c3a31e35743555a03d8a87e6bf4a5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"53c1faad9834fb51a91fe2727d68dc58f547afc6","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            kill_signal\u003dsignal.SIGTERM))"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"class PlacementFixture(fixtures.Fixture):"},{"line_number":217,"context_line":"    PLACEMENT \u003d \u0027neutron.tests.fullstack.servers.placement\u0027"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, env_desc, host_desc, test_name, placement_cfg_fixture):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_4757f803","line":216,"in_reply_to":"3fce034c_edd7fe22","updated":"2019-04-15 09:04:20.000000000","message":"Thanks Chris, actually I read some about it, but the main reason behind not using real placement was to keep neutron fullstack environment free from external dependencies","commit_id":"cfe0b334245c3a31e35743555a03d8a87e6bf4a5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a05adc71b6a3cf1307afa95fb3f370996e276317","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"class PlacementFixture(fixtures.Fixture):"},{"line_number":217,"context_line":"    PLACEMENT \u003d \u0027neutron.tests.fullstack.servers.placement\u0027"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, env_desc, host_desc, test_name, placement_cfg_fixture):"},{"line_number":220,"context_line":"        super(PlacementFixture, self).__init__()"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_69cc0661","line":217,"updated":"2019-05-10 14:04:41.000000000","message":"where this is used?","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5f3d0adda8b51a389efb097b3ae463b9ebb9c21d","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"class PlacementFixture(fixtures.Fixture):"},{"line_number":217,"context_line":"    PLACEMENT \u003d \u0027neutron.tests.fullstack.servers.placement\u0027"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def __init__(self, env_desc, host_desc, test_name, placement_cfg_fixture):"},{"line_number":220,"context_line":"        super(PlacementFixture, self).__init__()"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_20945044","line":217,"in_reply_to":"dfbec78f_69cc0661","updated":"2019-05-17 16:45:00.000000000","message":"Actually I just followed the examples here (see l185.)\nBut true, it is not used, and as I see the test works without it.","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"}],"neutron/tests/fullstack/servers/placement.py":[{"author":{"_account_id":27654,"name":"Hongbin Lu","email":"kira034@163.com","username":"hongbin.lu"},"change_message_id":"9f2b487572d95dc56362c23799ab22d498e78599","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return jsonutils.dumps(resp)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def build_method_name(self, action, path_info):"},{"line_number":94,"context_line":"        path_info_list \u003d path_info.strip(\u0027/\u0027).split(\u0027/\u0027)"},{"line_number":95,"context_line":"        method_name \u003d action.lower()"},{"line_number":96,"context_line":"        for path_chunk in path_info_list:"},{"line_number":97,"context_line":"            if any(s in path_chunk for s in [\u0027placement\u0027, \u0027CUSTOM\u0027]):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_b782a34e","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":22},"updated":"2019-04-12 15:38:00.000000000","message":"It is better to use urlparse for doing this, like: http://git.openstack.org/cgit/openstack/neutron/tree/neutron/api/api_common.py#n160 .","commit_id":"cfe0b334245c3a31e35743555a03d8a87e6bf4a5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6cc8a5d02cd8541245b2102be01fc0f94eb42f2c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return jsonutils.dumps(resp)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def build_method_name(self, action, path_info):"},{"line_number":94,"context_line":"        path_info_list \u003d path_info.strip(\u0027/\u0027).split(\u0027/\u0027)"},{"line_number":95,"context_line":"        method_name \u003d action.lower()"},{"line_number":96,"context_line":"        for path_chunk in path_info_list:"},{"line_number":97,"context_line":"            if any(s in path_chunk for s in [\u0027placement\u0027, \u0027CUSTOM\u0027]):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_587035a6","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":22},"in_reply_to":"3fce034c_b782a34e","updated":"2019-04-15 12:08:32.000000000","message":"Thanks.\nI have to keep strip and split to remove leading /, and make list of path split by /","commit_id":"cfe0b334245c3a31e35743555a03d8a87e6bf4a5"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a931026297e854e5c47d0e3b4dd0dec4ce020a1b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                        [self.resource_providers[self.host_rp_uuid]]"},{"line_number":63,"context_line":"                })"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            resp \u003d self.resource_providers[id]"},{"line_number":66,"context_line":"            resp \u003d jsonutils.dumps(resp)"},{"line_number":67,"context_line":"            return resp"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def put_traits(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_24d9fe20","line":66,"range":{"start_line":65,"start_character":0,"end_line":66,"end_character":40},"updated":"2019-05-16 08:36:56.000000000","message":"Side note (not involved in my vote): Even in languages like Python that allow changing the type of a variable by a simple assignment it is a good idea to avoid doing that.\n\nIn my experience it helps if variables never change their types - reduces the opportunity for later bugs. In a series of format conversions like this it\u0027s easy to make up new names to avoid changing the type. For example:\n\n resp \u003d self.resource_providers[id]\n resp_json \u003d jsonutils.dumps(resp)\n return resp_json","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5f3d0adda8b51a389efb097b3ae463b9ebb9c21d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                        [self.resource_providers[self.host_rp_uuid]]"},{"line_number":63,"context_line":"                })"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            resp \u003d self.resource_providers[id]"},{"line_number":66,"context_line":"            resp \u003d jsonutils.dumps(resp)"},{"line_number":67,"context_line":"            return resp"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def put_traits(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_009b4c72","line":66,"range":{"start_line":65,"start_character":0,"end_line":66,"end_character":40},"in_reply_to":"dfbec78f_24d9fe20","updated":"2019-05-17 16:45:00.000000000","message":"Thanks, I keep in mind.","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"}],"neutron/tests/fullstack/test_agent_bandwidth_report.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"a931026297e854e5c47d0e3b4dd0dec4ce020a1b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        old_bw, new_bw)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def _change_agent_conf_and_restart_agent(l2_agent_config, l2_agent,"},{"line_number":57,"context_line":"                                         mapping_key_name, new_dev):"},{"line_number":58,"context_line":"    _add_new_device_to_agent_config(l2_agent_config, mapping_key_name, new_dev)"},{"line_number":59,"context_line":"    l2_agent.agent_cfg_fixture.write_config_to_configfile()"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_2a7c7bea","line":56,"range":{"start_line":56,"start_character":23,"end_line":56,"end_character":40},"updated":"2019-05-16 08:36:56.000000000","message":"Does this actually restart the agent?","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5f3d0adda8b51a389efb097b3ae463b9ebb9c21d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        old_bw, new_bw)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def _change_agent_conf_and_restart_agent(l2_agent_config, l2_agent,"},{"line_number":57,"context_line":"                                         mapping_key_name, new_dev):"},{"line_number":58,"context_line":"    _add_new_device_to_agent_config(l2_agent_config, mapping_key_name, new_dev)"},{"line_number":59,"context_line":"    l2_agent.agent_cfg_fixture.write_config_to_configfile()"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_00c26c34","line":56,"range":{"start_line":56,"start_character":23,"end_line":56,"end_character":40},"in_reply_to":"dfbec78f_2a7c7bea","updated":"2019-05-17 16:45:00.000000000","message":"thanks, it was some old version, and the name remained...","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a05adc71b6a3cf1307afa95fb3f370996e276317","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        return False"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def test_configurations_are_synced_towards_placement(self):"},{"line_number":225,"context_line":"        self.assertTrue(self._check_agent_synced())"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        self.environment.placement.process_fixture.stop()"},{"line_number":228,"context_line":"        _add_new_bridge_and_restart_agent(self.environment.hosts[0])"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_099f8a5f","line":225,"updated":"2019-05-10 14:04:41.000000000","message":"are You sure it will always be ready? Maybe better would be to use wait_until_true() to check that?","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5f3d0adda8b51a389efb097b3ae463b9ebb9c21d","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        return False"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def test_configurations_are_synced_towards_placement(self):"},{"line_number":225,"context_line":"        self.assertTrue(self._check_agent_synced())"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        self.environment.placement.process_fixture.stop()"},{"line_number":228,"context_line":"        _add_new_bridge_and_restart_agent(self.environment.hosts[0])"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_a0dcc018","line":225,"in_reply_to":"dfbec78f_099f8a5f","updated":"2019-05-17 16:45:00.000000000","message":"Done","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a05adc71b6a3cf1307afa95fb3f370996e276317","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            self._check_agent_not_synced)"},{"line_number":235,"context_line":"        utils.wait_until_true("},{"line_number":236,"context_line":"            predicate\u003dcheck_agent_not_synced,"},{"line_number":237,"context_line":"            timeout\u003dfloat(report_interval) + 10,"},{"line_number":238,"context_line":"            sleep\u003d5)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        self.environment.placement.process_fixture.start()"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_29736e4f","line":237,"range":{"start_line":237,"start_character":20,"end_line":237,"end_character":25},"updated":"2019-05-10 14:04:41.000000000","message":"nit: why float instead of int?","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5f3d0adda8b51a389efb097b3ae463b9ebb9c21d","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            self._check_agent_not_synced)"},{"line_number":235,"context_line":"        utils.wait_until_true("},{"line_number":236,"context_line":"            predicate\u003dcheck_agent_not_synced,"},{"line_number":237,"context_line":"            timeout\u003dfloat(report_interval) + 10,"},{"line_number":238,"context_line":"            sleep\u003d5)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        self.environment.placement.process_fixture.start()"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_60e6c8eb","line":237,"range":{"start_line":237,"start_character":20,"end_line":237,"end_character":25},"in_reply_to":"dfbec78f_29736e4f","updated":"2019-05-17 16:45:00.000000000","message":"Done","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a05adc71b6a3cf1307afa95fb3f370996e276317","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        utils.wait_until_true("},{"line_number":236,"context_line":"            predicate\u003dcheck_agent_not_synced,"},{"line_number":237,"context_line":"            timeout\u003dfloat(report_interval) + 10,"},{"line_number":238,"context_line":"            sleep\u003d5)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        self.environment.placement.process_fixture.start()"},{"line_number":241,"context_line":"        check_agent_synced \u003d functools.partial(self._check_agent_synced)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_c98f3221","line":238,"updated":"2019-05-10 14:04:41.000000000","message":"maybe sleep\u003d1 could make it catch true faster?","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5f3d0adda8b51a389efb097b3ae463b9ebb9c21d","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        utils.wait_until_true("},{"line_number":236,"context_line":"            predicate\u003dcheck_agent_not_synced,"},{"line_number":237,"context_line":"            timeout\u003dfloat(report_interval) + 10,"},{"line_number":238,"context_line":"            sleep\u003d5)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        self.environment.placement.process_fixture.start()"},{"line_number":241,"context_line":"        check_agent_synced \u003d functools.partial(self._check_agent_synced)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_20d0d0f7","line":238,"in_reply_to":"dfbec78f_c98f3221","updated":"2019-05-17 16:45:00.000000000","message":"Done","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"a05adc71b6a3cf1307afa95fb3f370996e276317","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        utils.wait_until_true("},{"line_number":243,"context_line":"            predicate\u003dcheck_agent_synced,"},{"line_number":244,"context_line":"            timeout\u003dfloat(report_interval) + 10,"},{"line_number":245,"context_line":"            sleep\u003d5)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_49a3429f","line":245,"updated":"2019-05-10 14:04:41.000000000","message":"same comments here","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5f3d0adda8b51a389efb097b3ae463b9ebb9c21d","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        utils.wait_until_true("},{"line_number":243,"context_line":"            predicate\u003dcheck_agent_synced,"},{"line_number":244,"context_line":"            timeout\u003dfloat(report_interval) + 10,"},{"line_number":245,"context_line":"            sleep\u003d5)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_40cdc45b","line":245,"in_reply_to":"dfbec78f_49a3429f","updated":"2019-05-17 16:45:00.000000000","message":"Done","commit_id":"bbb861e9c458bbdd02c018ff48a9ee3559759991"}]}
