)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2278b48b742be0ac136488d20d580e55255e5b8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"However, online data migration is only done implicitly via listing or"},{"line_number":14,"context_line":"showing resource providers. With this patch, executing the cli command"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    `placement-manage db online-data-migration`"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"makes sure all the resource providers are ready for nested provider"},{"line_number":19,"context_line":"feature, that is, all the root_provider_ids in the DB have non-None"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bfdaf3ff_ea0b0821","line":16,"range":{"start_line":16,"start_character":25,"end_line":16,"end_character":46},"updated":"2019-01-17 19:34:17.000000000","message":"The command name is actually online_data_migrations","commit_id":"af0c9397c4b9487f360b3adbf48d644999c8269c"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2c365d453d727fe8522b110beaaab6b8119833f7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"However, online data migration is only done implicitly via listing or"},{"line_number":14,"context_line":"showing resource providers. With this patch, executing the cli command"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    `placement-manage db online-data-migration`"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"makes sure all the resource providers are ready for nested provider"},{"line_number":19,"context_line":"feature, that is, all the root_provider_ids in the DB have non-None"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bfdaf3ff_078676dc","line":16,"range":{"start_line":16,"start_character":25,"end_line":16,"end_character":46},"in_reply_to":"bfdaf3ff_ea0b0821","updated":"2019-01-18 13:46:51.000000000","message":"Done","commit_id":"af0c9397c4b9487f360b3adbf48d644999c8269c"}],"placement/db/sqlalchemy/migration.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f28a05972d8e0efb879efdcb20783ccd3a5a046c","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"online_migrations \u003d ("},{"line_number":35,"context_line":"    # These functions are called with a DB context and a count, which is the"},{"line_number":36,"context_line":"    # maximum batch size requested by the user. They must be idempotent."},{"line_number":37,"context_line":"    # At most $count records should be migrated. The function must return a"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_351f32b8","line":34,"updated":"2019-01-17 18:31:01.000000000","message":"Hmm, this isn\u0027t really a knock against this change, but it\u0027s kind of a weird place to have this down in the db/sqlalchemy code since the migration functions normally run against object code where the actual DB API stuff is. In nova, the online data migrations are defined in the manage command:\n\nhttps://github.com/openstack/nova/blob/master/nova/cmd/manage.py#L377\n\nIt also means the run_online_migration command logic is separate from the command code itself, which seems confusing to me.","commit_id":"334855b4df605118991575bf499a0bd7af1a1ccc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2278b48b742be0ac136488d20d580e55255e5b8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    # have finished."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    # Added in Stein"},{"line_number":49,"context_line":"    rp_obj.set_root_provider_ids,"},{"line_number":50,"context_line":")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bfdaf3ff_8a3d9cc5","line":49,"range":{"start_line":49,"start_character":11,"end_line":49,"end_character":32},"updated":"2019-01-17 19:34:17.000000000","message":"How about adding a short release note for this? Should also probably update the table in the CLI docs:\n\nhttps://review.openstack.org/#/c/624942/5/doc/source/cli/placement-manage.rst@100","commit_id":"af0c9397c4b9487f360b3adbf48d644999c8269c"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"2c365d453d727fe8522b110beaaab6b8119833f7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    # have finished."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    # Added in Stein"},{"line_number":49,"context_line":"    rp_obj.set_root_provider_ids,"},{"line_number":50,"context_line":")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bfdaf3ff_c76b8e1b","line":49,"range":{"start_line":49,"start_character":11,"end_line":49,"end_character":32},"in_reply_to":"bfdaf3ff_8a3d9cc5","updated":"2019-01-18 13:46:51.000000000","message":"Done","commit_id":"af0c9397c4b9487f360b3adbf48d644999c8269c"}],"placement/tests/functional/db/test_resource_provider.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b8d912d67b9f4d8fedbb7f139346620df63712ee","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        root_provider_uuid set and ensure the root_provider_uuid field in the"},{"line_number":153,"context_line":"        table is set to the provider\u0027s ID via set_root_provider_ids()."},{"line_number":154,"context_line":"        \"\"\""},{"line_number":155,"context_line":"        # Second, set up records for \"old-style\" resource providers with"},{"line_number":156,"context_line":"        # no root provider UUID."},{"line_number":157,"context_line":"        rp_tbl \u003d rp_obj._RP_TBL"},{"line_number":158,"context_line":"        conn \u003d self.placement_db.get_engine().connect()"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_185989fd","line":155,"range":{"start_line":155,"start_character":10,"end_line":155,"end_character":16},"updated":"2019-01-18 20:16:32.000000000","message":"First","commit_id":"9cc7935b7e37a8001d2b0f0bcce05db8dfd13c3f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09712b1ad2c93b4ea65dc0d09b0da9bde7b50bd2","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        root_provider_uuid set and ensure the root_provider_uuid field in the"},{"line_number":153,"context_line":"        table is set to the provider\u0027s ID via set_root_provider_ids()."},{"line_number":154,"context_line":"        \"\"\""},{"line_number":155,"context_line":"        # Second, set up records for \"old-style\" resource providers with"},{"line_number":156,"context_line":"        # no root provider UUID."},{"line_number":157,"context_line":"        rp_tbl \u003d rp_obj._RP_TBL"},{"line_number":158,"context_line":"        conn \u003d self.placement_db.get_engine().connect()"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_d8f781d4","line":155,"range":{"start_line":155,"start_character":10,"end_line":155,"end_character":16},"in_reply_to":"9fdfeff1_185989fd","updated":"2019-01-18 20:20:58.000000000","message":"Done","commit_id":"9cc7935b7e37a8001d2b0f0bcce05db8dfd13c3f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b8d912d67b9f4d8fedbb7f139346620df63712ee","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        self.assertIsNone(res[0][0])"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # Run set_root_provider_ids()"},{"line_number":197,"context_line":"        rp_obj.set_root_provider_ids(self.ctx, batch_size\u003d10)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        # Check rp_1 that it has got the root provider id"},{"line_number":200,"context_line":"        sel_stmt \u003d sa.select([rp_tbl.c.root_provider_id]).where("}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_385ecde6","line":197,"updated":"2019-01-18 20:16:32.000000000","message":"nit: could assert this returns (2, 2)","commit_id":"9cc7935b7e37a8001d2b0f0bcce05db8dfd13c3f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09712b1ad2c93b4ea65dc0d09b0da9bde7b50bd2","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        self.assertIsNone(res[0][0])"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        # Run set_root_provider_ids()"},{"line_number":197,"context_line":"        rp_obj.set_root_provider_ids(self.ctx, batch_size\u003d10)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        # Check rp_1 that it has got the root provider id"},{"line_number":200,"context_line":"        sel_stmt \u003d sa.select([rp_tbl.c.root_provider_id]).where("}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_f8f4c5d1","line":197,"in_reply_to":"9fdfeff1_385ecde6","updated":"2019-01-18 20:20:58.000000000","message":"Done","commit_id":"9cc7935b7e37a8001d2b0f0bcce05db8dfd13c3f"}],"releasenotes/notes/set_root_provider_id-53930a5d1dbd374f.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b8d912d67b9f4d8fedbb7f139346620df63712ee","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    be run during the normal placement-manage db online_data_migrations"},{"line_number":7,"context_line":"    routine. See the `Bug#1803925`_ for more details."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    .. _Bug#1803925: https://bugs.launchpad.net/nova/+bug/1796920"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9fdfeff1_f86fe58f","line":9,"range":{"start_line":9,"start_character":58,"end_line":9,"end_character":65},"updated":"2019-01-18 20:16:32.000000000","message":"This is the wrong bug.","commit_id":"9cc7935b7e37a8001d2b0f0bcce05db8dfd13c3f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09712b1ad2c93b4ea65dc0d09b0da9bde7b50bd2","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    be run during the normal placement-manage db online_data_migrations"},{"line_number":7,"context_line":"    routine. See the `Bug#1803925`_ for more details."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    .. _Bug#1803925: https://bugs.launchpad.net/nova/+bug/1796920"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9fdfeff1_9801f9b2","line":9,"range":{"start_line":9,"start_character":58,"end_line":9,"end_character":65},"in_reply_to":"9fdfeff1_f86fe58f","updated":"2019-01-18 20:20:58.000000000","message":"Done","commit_id":"9cc7935b7e37a8001d2b0f0bcce05db8dfd13c3f"}]}
