)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"574a325d341a994a019757b0c3ab2591ec09e24b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b7e730b0_5e5726c6","updated":"2026-07-07 16:46:23.000000000","message":"I haven\u0027t finished reviewing it but I publishing what I have so far","commit_id":"7a53b288535e00cfe65f3af42dd2cb200780f826"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30a707cfc5ae69857a6d1a6c3153e74116fa2941","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"79ff0f55_0f1a556d","updated":"2026-07-09 10:43:38.000000000","message":"OK I revised my previous comment after trying to make it cleaner but failed. However now we have two smallish comments accumulated here so I think it would make sense to respin.\n\nAnyhow. Nice progress. We are close to land this","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb3fdf8d111741d03d0dc47bdfafdfc041a45ff6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e45bb8d8_0f239cfe","updated":"2026-07-09 10:02:50.000000000","message":"OK this is almost perfect. But good enough for me, as it is small and simple.","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"a8742dc2d257978a0008b3718616d49a7896deac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"49070e01_ef4fad33","updated":"2026-07-08 23:35:38.000000000","message":"recheck","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a0d06df8377c77455c2ee6eeff9b4a5995a6eef2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1b0e091d_9fe70bb6","updated":"2026-07-09 10:11:04.000000000","message":"sorry missed a thing","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"68780b69dab8eeb60eea94002d19d9269111a296","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3a73d3f3_dc64fa04","in_reply_to":"79ff0f55_0f1a556d","updated":"2026-07-09 11:58:08.000000000","message":"Acknowledged","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"82a1bf2562d45b54d00e67fb98650cf5483f3c81","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"18a9d97a_b69a89cd","updated":"2026-07-09 12:05:45.000000000","message":"Thanks!","commit_id":"d47c5c71a1ec38672671384294d493e07f2a31f7"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"e97d4a61811f7dd6fb5e633fd45b426b09384ef0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d0e4d096_a917ef38","updated":"2026-07-10 08:14:20.000000000","message":"@gibizer@gmail.com can you pls re-review","commit_id":"10c4d910a399290f4d0298d735c7a46a8511eebd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4cb4f76a5a826ccb021b442b57919aea37e4c31e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b4427ce6_8bf42353","updated":"2026-07-09 18:56:41.000000000","message":"lgtm","commit_id":"10c4d910a399290f4d0298d735c7a46a8511eebd"}],"placement/tests/fixtures.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"35f0ff0ce8b227c648ce48b1389094945892b03c","unresolved":true,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class Database(test_fixtures.GeneratesSchema, test_fixtures.AdHocDbFixture):"},{"line_number":34,"context_line":"    def __init__(self, conf_fixture, set_config\u003dFalse, connection\u003dNone):"},{"line_number":35,"context_line":"        \"\"\"Create a database fixture."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param conf_fixture: An oslo_config fixture.Config object."}],"source_content_type":"text/x-python","patch_set":3,"id":"c2d51c4b_05fecb44","line":34,"range":{"start_line":34,"start_character":55,"end_line":34,"end_character":70},"updated":"2026-06-18 14:38:06.000000000","message":"this connection is actually configured / configurable within the conf_fixture parameter that is already passed.","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"d2f12888ab9545e7cd0709dc2a5445abb9649ee2","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class Database(test_fixtures.GeneratesSchema, test_fixtures.AdHocDbFixture):"},{"line_number":34,"context_line":"    def __init__(self, conf_fixture, set_config\u003dFalse, connection\u003dNone):"},{"line_number":35,"context_line":"        \"\"\"Create a database fixture."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param conf_fixture: An oslo_config fixture.Config object."}],"source_content_type":"text/x-python","patch_set":3,"id":"7050b4e0_78e89192","line":34,"range":{"start_line":34,"start_character":55,"end_line":34,"end_character":70},"in_reply_to":"c2d51c4b_05fecb44","updated":"2026-07-03 12:58:45.000000000","message":"Done","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"35f0ff0ce8b227c648ce48b1389094945892b03c","unresolved":true,"context_lines":[{"line_number":49,"context_line":"            # AdHocDbFixture must receive the URL directly; super().__init__()"},{"line_number":50,"context_line":"            # would call it without url\u003d and oslo.db would provision in-memory"},{"line_number":51,"context_line":"            # sqlite:// regardless of conf_fixture.config() below."},{"line_number":52,"context_line":"            test_fixtures.AdHocDbFixture.__init__(self, url\u003dconnection)"},{"line_number":53,"context_line":"        else:"},{"line_number":54,"context_line":"            # Callers that pass the same file-backed URL across tests in one"},{"line_number":55,"context_line":"            # process need a stable oslo.db ident. Skip AdHocDbFixture"}],"source_content_type":"text/x-python","patch_set":3,"id":"8f8cebb2_d4667024","line":52,"updated":"2026-06-18 14:38:06.000000000","message":"OK that is probably the most important change we need. Good finding. So I think we can focus on this.\n\nHowever\n* you need to call this via super() as it is our base class.\n* the url we pass to it needs to come from the conf_fixture, except if set_config is true, as then this fixture is expected to define the config option itself as we see in the baseline code.\n\nSo the structure of the code should be something like\n```\nif set_config:\n  # define the config option and default it to in memory\n\n# here we know that placement_database.connection exists either because we got the conf_fixture that has it or because we set it ourselve above\n\n# initialize our base class with the url\nsuper().__init__(url\u003dconf_fixture.conf.placement_databse.connection)\n\n# do the rest of the init like passing the conf to placement_db to that sets up the test side of the DB stack.\n```","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"d2f12888ab9545e7cd0709dc2a5445abb9649ee2","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            # AdHocDbFixture must receive the URL directly; super().__init__()"},{"line_number":50,"context_line":"            # would call it without url\u003d and oslo.db would provision in-memory"},{"line_number":51,"context_line":"            # sqlite:// regardless of conf_fixture.config() below."},{"line_number":52,"context_line":"            test_fixtures.AdHocDbFixture.__init__(self, url\u003dconnection)"},{"line_number":53,"context_line":"        else:"},{"line_number":54,"context_line":"            # Callers that pass the same file-backed URL across tests in one"},{"line_number":55,"context_line":"            # process need a stable oslo.db ident. Skip AdHocDbFixture"}],"source_content_type":"text/x-python","patch_set":3,"id":"229096bc_040e666c","line":52,"in_reply_to":"8f8cebb2_d4667024","updated":"2026-07-03 12:58:45.000000000","message":"Done","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"35f0ff0ce8b227c648ce48b1389094945892b03c","unresolved":true,"context_lines":[{"line_number":51,"context_line":"            # sqlite:// regardless of conf_fixture.config() below."},{"line_number":52,"context_line":"            test_fixtures.AdHocDbFixture.__init__(self, url\u003dconnection)"},{"line_number":53,"context_line":"        else:"},{"line_number":54,"context_line":"            # Callers that pass the same file-backed URL across tests in one"},{"line_number":55,"context_line":"            # process need a stable oslo.db ident. Skip AdHocDbFixture"},{"line_number":56,"context_line":"            # per-test resource teardown so the provisioned engine survives"},{"line_number":57,"context_line":"            # across tests; normal teardown leaves a stale cached engine and"},{"line_number":58,"context_line":"            # loadapp fails with \"unable to open database file\"."},{"line_number":59,"context_line":"            driver \u003d db_utils.make_url(connection).get_backend_name()"},{"line_number":60,"context_line":"            ident \u003d \u0027file-\u0027 + hashlib.md5("},{"line_number":61,"context_line":"                connection.encode(\u0027utf-8\u0027)).hexdigest()[:16]"}],"source_content_type":"text/x-python","patch_set":3,"id":"575a4250_8c470082","line":58,"range":{"start_line":54,"start_character":0,"end_line":58,"end_character":64},"updated":"2026-06-18 14:38:06.000000000","message":"Why this is needed? What are the test cases that initializing a Placement backend multiple times with the same identity?\n\nIf there are such test cases then we need to look at them as they doing someting strange.","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"8bf68e1e97a6a76ff2b2df8c5475cad70e149096","unresolved":true,"context_lines":[{"line_number":51,"context_line":"            # sqlite:// regardless of conf_fixture.config() below."},{"line_number":52,"context_line":"            test_fixtures.AdHocDbFixture.__init__(self, url\u003dconnection)"},{"line_number":53,"context_line":"        else:"},{"line_number":54,"context_line":"            # Callers that pass the same file-backed URL across tests in one"},{"line_number":55,"context_line":"            # process need a stable oslo.db ident. Skip AdHocDbFixture"},{"line_number":56,"context_line":"            # per-test resource teardown so the provisioned engine survives"},{"line_number":57,"context_line":"            # across tests; normal teardown leaves a stale cached engine and"},{"line_number":58,"context_line":"            # loadapp fails with \"unable to open database file\"."},{"line_number":59,"context_line":"            driver \u003d db_utils.make_url(connection).get_backend_name()"},{"line_number":60,"context_line":"            ident \u003d \u0027file-\u0027 + hashlib.md5("},{"line_number":61,"context_line":"                connection.encode(\u0027utf-8\u0027)).hexdigest()[:16]"}],"source_content_type":"text/x-python","patch_set":3,"id":"af6642d7_12ce432c","line":58,"range":{"start_line":54,"start_character":0,"end_line":58,"end_character":64},"in_reply_to":"3ebe02b8_518b12d2","updated":"2026-07-07 21:48:50.000000000","message":"Yes, I tried test case specific URL for placement locally and it seems to be very simplified than the current approach, I will update the patch with the changes","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"d01ac5147c50463a95525d86f3963981705393b8","unresolved":true,"context_lines":[{"line_number":51,"context_line":"            # sqlite:// regardless of conf_fixture.config() below."},{"line_number":52,"context_line":"            test_fixtures.AdHocDbFixture.__init__(self, url\u003dconnection)"},{"line_number":53,"context_line":"        else:"},{"line_number":54,"context_line":"            # Callers that pass the same file-backed URL across tests in one"},{"line_number":55,"context_line":"            # process need a stable oslo.db ident. Skip AdHocDbFixture"},{"line_number":56,"context_line":"            # per-test resource teardown so the provisioned engine survives"},{"line_number":57,"context_line":"            # across tests; normal teardown leaves a stale cached engine and"},{"line_number":58,"context_line":"            # loadapp fails with \"unable to open database file\"."},{"line_number":59,"context_line":"            driver \u003d db_utils.make_url(connection).get_backend_name()"},{"line_number":60,"context_line":"            ident \u003d \u0027file-\u0027 + hashlib.md5("},{"line_number":61,"context_line":"                connection.encode(\u0027utf-8\u0027)).hexdigest()[:16]"}],"source_content_type":"text/x-python","patch_set":3,"id":"871fe8f6_a381fb78","line":58,"range":{"start_line":54,"start_character":0,"end_line":58,"end_character":64},"in_reply_to":"575a4250_8c470082","updated":"2026-07-03 14:45:55.000000000","message":"Each functional test creates a new Database fixture in the same stestr worker but Nova sets one shared file-backed URL on conf for that worker via _configure_placement_database().\n\nWithout a stable oslo.db ident and without skipping AdHoc per-test resource teardown, the second test in the worker hits either KeyError: \u0027_db_\u003cident\u003e\u0027 (random ident per fixture) or unable to open database file (teardown removes the sqlite file while the URL is reused).\n\nPer-test isolation is preserved via drop_all in generate_schema_create_all() before create_schema, matching what in-memory sqlite:// gets from normal AdHoc teardown.","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"574a325d341a994a019757b0c3ab2591ec09e24b","unresolved":true,"context_lines":[{"line_number":51,"context_line":"            # sqlite:// regardless of conf_fixture.config() below."},{"line_number":52,"context_line":"            test_fixtures.AdHocDbFixture.__init__(self, url\u003dconnection)"},{"line_number":53,"context_line":"        else:"},{"line_number":54,"context_line":"            # Callers that pass the same file-backed URL across tests in one"},{"line_number":55,"context_line":"            # process need a stable oslo.db ident. Skip AdHocDbFixture"},{"line_number":56,"context_line":"            # per-test resource teardown so the provisioned engine survives"},{"line_number":57,"context_line":"            # across tests; normal teardown leaves a stale cached engine and"},{"line_number":58,"context_line":"            # loadapp fails with \"unable to open database file\"."},{"line_number":59,"context_line":"            driver \u003d db_utils.make_url(connection).get_backend_name()"},{"line_number":60,"context_line":"            ident \u003d \u0027file-\u0027 + hashlib.md5("},{"line_number":61,"context_line":"                connection.encode(\u0027utf-8\u0027)).hexdigest()[:16]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ebe02b8_518b12d2","line":58,"range":{"start_line":54,"start_character":0,"end_line":58,"end_character":64},"in_reply_to":"871fe8f6_a381fb78","updated":"2026-07-07 16:46:23.000000000","message":"\u003e Each functional test creates a new Database fixture in the same stestr worker but Nova sets one shared file-backed URL on conf for that worker via _configure_placement_database().\n\nThen the nova test setup should not set one shared URL across all tests within the same worker. Instead it should set a test case specific URL for placement. I feel that would highly simplify the change needed in here in the placement fixture.\n\nFor the rest of the nova DBs we use a temp dir, could we use a temp dir for the placement DB as well? That way at the end of the test case the dir is deleted automatically.","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"4d41a69f099287fc988d2e97919ccaa820e7229d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            # sqlite:// regardless of conf_fixture.config() below."},{"line_number":52,"context_line":"            test_fixtures.AdHocDbFixture.__init__(self, url\u003dconnection)"},{"line_number":53,"context_line":"        else:"},{"line_number":54,"context_line":"            # Callers that pass the same file-backed URL across tests in one"},{"line_number":55,"context_line":"            # process need a stable oslo.db ident. Skip AdHocDbFixture"},{"line_number":56,"context_line":"            # per-test resource teardown so the provisioned engine survives"},{"line_number":57,"context_line":"            # across tests; normal teardown leaves a stale cached engine and"},{"line_number":58,"context_line":"            # loadapp fails with \"unable to open database file\"."},{"line_number":59,"context_line":"            driver \u003d db_utils.make_url(connection).get_backend_name()"},{"line_number":60,"context_line":"            ident \u003d \u0027file-\u0027 + hashlib.md5("},{"line_number":61,"context_line":"                connection.encode(\u0027utf-8\u0027)).hexdigest()[:16]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7cf72ea5_21cb5f86","line":58,"range":{"start_line":54,"start_character":0,"end_line":58,"end_character":64},"in_reply_to":"af6642d7_12ce432c","updated":"2026-07-08 12:29:17.000000000","message":"Done","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb3fdf8d111741d03d0dc47bdfafdfc041a45ff6","unresolved":true,"context_lines":[{"line_number":44,"context_line":"            except cfg.DuplicateOptError:"},{"line_number":45,"context_line":"                # already registered"},{"line_number":46,"context_line":"                pass"},{"line_number":47,"context_line":"            if conf_fixture.conf.placement_database.connection is None:"},{"line_number":48,"context_line":"                conf_fixture.config(connection\u003d\u0027sqlite://\u0027,"},{"line_number":49,"context_line":"                                    group\u003d\u0027placement_database\u0027)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"10f393c7_84aa827c","line":47,"updated":"2026-07-09 10:02:50.000000000","message":"I would say that this condition is always true if the set_config is used properly. The set_config\u003dTrue means, I have not initialized the oslo.config yet, do the minimal thing to me and register the connection option. As I did not initialized oslo.config yet there is no config value set either so when L42 registers it the value of it will be the default. That is None. So this conditional is probably unnecessary. If you need to respin it then please drop it.","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"68780b69dab8eeb60eea94002d19d9269111a296","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            except cfg.DuplicateOptError:"},{"line_number":45,"context_line":"                # already registered"},{"line_number":46,"context_line":"                pass"},{"line_number":47,"context_line":"            if conf_fixture.conf.placement_database.connection is None:"},{"line_number":48,"context_line":"                conf_fixture.config(connection\u003d\u0027sqlite://\u0027,"},{"line_number":49,"context_line":"                                    group\u003d\u0027placement_database\u0027)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a80fb45_93268b3c","line":47,"in_reply_to":"10f393c7_84aa827c","updated":"2026-07-09 11:58:08.000000000","message":"Done","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb3fdf8d111741d03d0dc47bdfafdfc041a45ff6","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        connection \u003d conf_fixture.conf.placement_database.connection"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        super().__init__(url\u003dconnection)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        self.conf_fixture \u003d conf_fixture"},{"line_number":56,"context_line":"        self.get_engine \u003d placement_db.get_placement_engine"}],"source_content_type":"text/x-python","patch_set":7,"id":"2257328e_c74784a4","line":53,"updated":"2026-07-09 10:02:50.000000000","message":"Yepp this is a lot clearer. Thanks!","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"}],"placement/tests/functional/fixtures/placement.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98660731c0c587493f874a84ebce50f90527b877","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        if self.db:"},{"line_number":77,"context_line":"            self.useFixture(db_fixture.Database("},{"line_number":78,"context_line":"                self.conf_fixture, set_config\u003dTrue,"},{"line_number":79,"context_line":"                connection\u003dself.db_connection))"},{"line_number":80,"context_line":"        # NOTE(gmann): Set enforce_scope and enforce_new_defaults to the"},{"line_number":81,"context_line":"        # same value it is for placement service. We need to explicitly set"},{"line_number":82,"context_line":"        # it here because this fixture is called by Nova functional tests and"}],"source_content_type":"text/x-python","patch_set":3,"id":"fdfdc2d8_7b27c5a5","line":79,"updated":"2026-06-18 14:41:07.000000000","message":"I think we can avoid this change by relying on the fact that the conf_fixture at this point should contain the DB url already.","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"d2f12888ab9545e7cd0709dc2a5445abb9649ee2","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        if self.db:"},{"line_number":77,"context_line":"            self.useFixture(db_fixture.Database("},{"line_number":78,"context_line":"                self.conf_fixture, set_config\u003dTrue,"},{"line_number":79,"context_line":"                connection\u003dself.db_connection))"},{"line_number":80,"context_line":"        # NOTE(gmann): Set enforce_scope and enforce_new_defaults to the"},{"line_number":81,"context_line":"        # same value it is for placement service. We need to explicitly set"},{"line_number":82,"context_line":"        # it here because this fixture is called by Nova functional tests and"}],"source_content_type":"text/x-python","patch_set":3,"id":"72169670_d5d15a2b","line":79,"in_reply_to":"fdfdc2d8_7b27c5a5","updated":"2026-07-03 12:58:45.000000000","message":"Done","commit_id":"dea57c5ace1e1cbad87d4bba82552eb6516a3c1b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a0d06df8377c77455c2ee6eeff9b4a5995a6eef2","unresolved":true,"context_lines":[{"line_number":60,"context_line":"        self.conf_fixture \u003d conf_fixture"},{"line_number":61,"context_line":"        self.register_opts \u003d register_opts"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _configure_placement_database(self, conf_fixture):"},{"line_number":64,"context_line":"        \"\"\"Allow subclasses to set placement_database.connection on conf.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"4e0503b2_ad1cac1d","line":63,"updated":"2026-07-09 10:11:04.000000000","message":"hm, there should be a cleaner way, we have the conf_fixture passed in via __init__...","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30a707cfc5ae69857a6d1a6c3153e74116fa2941","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        self.conf_fixture \u003d conf_fixture"},{"line_number":61,"context_line":"        self.register_opts \u003d register_opts"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _configure_placement_database(self, conf_fixture):"},{"line_number":64,"context_line":"        \"\"\"Allow subclasses to set placement_database.connection on conf.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7cbdb310_e569451e","line":63,"in_reply_to":"4e0503b2_ad1cac1d","updated":"2026-07-09 10:43:38.000000000","message":"//later\nthere is a way, but it is not cleaner. Unfortunately we have this ordering issue that we need a conf fixture initialized with the option definitions and *then* we want to set the connection field. And do it before the DB fixture is initialized. So the either we do this what you proposed, or we do the whole config init and DB init calls in nova first and then pass in the initied config and set db\u003dFalse. But that looks worse in my eyes. So lets have this as you proposed.","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30a707cfc5ae69857a6d1a6c3153e74116fa2941","unresolved":true,"context_lines":[{"line_number":61,"context_line":"        self.register_opts \u003d register_opts"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _configure_placement_database(self, conf_fixture):"},{"line_number":64,"context_line":"        \"\"\"Allow subclasses to set placement_database.connection on conf.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def setUp(self):"},{"line_number":67,"context_line":"        super(PlacementFixture, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fc12f059_ac63d441","line":64,"updated":"2026-07-09 10:43:38.000000000","message":"This can be used in  more generic way not just for the connection option, so lets name it more generic. Maybe \"_update_config\" or \"_configure_placement\".\n\nAlso update the doc text to something like: \"Allow subclasses to modify config options after the config fixture is initialized and the placement options are registered.\"","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"},{"author":{"_account_id":35153,"name":"Ashish Gupta","email":"ashigupt@redhat.com","username":"ashigupt","status":"Redhat"},"change_message_id":"68780b69dab8eeb60eea94002d19d9269111a296","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.register_opts \u003d register_opts"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _configure_placement_database(self, conf_fixture):"},{"line_number":64,"context_line":"        \"\"\"Allow subclasses to set placement_database.connection on conf.\"\"\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def setUp(self):"},{"line_number":67,"context_line":"        super(PlacementFixture, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"b5ee32aa_e4bc1106","line":64,"in_reply_to":"fc12f059_ac63d441","updated":"2026-07-09 11:58:08.000000000","message":"Done","commit_id":"995e1e6ea4e9101ca0a58f29d9896fceb7c276b9"}]}
