)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"b4dd0b9f7a2b0d8dcc8c503bfd21f57b6ff730a3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- ProviderTree.new_root and .new_child now return the UUID of the"},{"line_number":23,"context_line":"  newly-created _Provider, rather than the _Provider itself.  (We return"},{"line_number":24,"context_line":"  the UUID because it may have been generated; and there is currently no"},{"line_number":25,"context_line":"  othre way for the caller to discover it.)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Note: It is possible that future changes will be necessary to provide"},{"line_number":28,"context_line":"(read-only) access to some _Provider attributes.  No such accessors are"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ff82abbf_f766112a","line":25,"range":{"start_line":25,"start_character":2,"end_line":25,"end_character":7},"updated":"2017-12-03 23:43:02.000000000","message":"other","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"23660ad52a6701e7426b0c9fe1857bb5b155f31b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- ProviderTree.new_root and .new_child now return the UUID of the"},{"line_number":23,"context_line":"  newly-created _Provider, rather than the _Provider itself.  (We return"},{"line_number":24,"context_line":"  the UUID because it may have been generated; and there is currently no"},{"line_number":25,"context_line":"  othre way for the caller to discover it.)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Note: It is possible that future changes will be necessary to provide"},{"line_number":28,"context_line":"(read-only) access to some _Provider attributes.  No such accessors are"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df87a7cf_dfabc9d3","line":25,"range":{"start_line":25,"start_character":2,"end_line":25,"end_character":7},"in_reply_to":"ff82abbf_f766112a","updated":"2017-12-04 16:35:10.000000000","message":"Done","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2daa478a76b8fcbf4dc67cde5c0a73485da16437","unresolved":false,"context_lines":[{"line_number":10,"context_line":"accessed only through ProviderTree interfaces to ensure thread safety."},{"line_number":11,"context_line":"However, certain ProviderTree methods were returning _Provider objects,"},{"line_number":12,"context_line":"allowing callers to think it was okay to access their internals"},{"line_number":13,"context_line":"directly."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"With this change, we truly hide _Provider behind ProviderTree.  As long"},{"line_number":16,"context_line":"as callers are well-behaved (accessing only public methods of public"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_2aff0c02","line":13,"updated":"2017-12-04 20:47:27.000000000","message":"Meh, this is kinda pythonic I think.. return a thing that behaves like a thing, but that you can\u0027t instantiate directly. But, what you\u0027re going for here is fine too...","commit_id":"1f41326ee6511e2b6ea68f844889f9a44fff773b"}],"nova/compute/provider_tree.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"b4dd0b9f7a2b0d8dcc8c503bfd21f57b6ff730a3","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                exists \u003d False"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            if exists:"},{"line_number":159,"context_line":"                err \u003d _(\"Provider %s already exists as a root.\")"},{"line_number":160,"context_line":"                raise ValueError(err % uuid)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"            p \u003d _Provider(name, uuid\u003duuid, generation\u003dgeneration)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_b73e49d8","line":159,"range":{"start_line":159,"start_character":51,"end_line":159,"end_character":61},"updated":"2017-12-03 23:43:02.000000000","message":"_find_with_lock() finds all the providers including non-root providers. Why are we sure this is always true?","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d0fcb95d24c419d18469ae0c0d85180c2d16b5a1","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                exists \u003d False"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            if exists:"},{"line_number":159,"context_line":"                err \u003d _(\"Provider %s already exists as a root.\")"},{"line_number":160,"context_line":"                raise ValueError(err % uuid)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"            p \u003d _Provider(name, uuid\u003duuid, generation\u003dgeneration)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_d640a80a","line":159,"range":{"start_line":159,"start_character":51,"end_line":159,"end_character":61},"in_reply_to":"7f96bb07_1684d05d","updated":"2018-01-11 19:25:14.000000000","message":"Done in https://review.openstack.org/531260","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90018b08f7bdf7948e157d5070e0fc20e0741247","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                exists \u003d False"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            if exists:"},{"line_number":159,"context_line":"                err \u003d _(\"Provider %s already exists as a root.\")"},{"line_number":160,"context_line":"                raise ValueError(err % uuid)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"            p \u003d _Provider(name, uuid\u003duuid, generation\u003dgeneration)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_1684d05d","line":159,"range":{"start_line":159,"start_character":51,"end_line":159,"end_character":61},"in_reply_to":"df87a7cf_4e606da6","updated":"2018-01-11 19:23:30.000000000","message":"...along with which we should also fix the fact that this check isn\u0027t being done for new_child.  It should be.","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d156ad7a740e5f988167ce59c63a8fe974646844","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                exists \u003d False"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            if exists:"},{"line_number":159,"context_line":"                err \u003d _(\"Provider %s already exists as a root.\")"},{"line_number":160,"context_line":"                raise ValueError(err % uuid)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"            p \u003d _Provider(name, uuid\u003duuid, generation\u003dgeneration)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_4e606da6","line":159,"range":{"start_line":159,"start_character":51,"end_line":159,"end_character":61},"in_reply_to":"ff82abbf_b73e49d8","updated":"2017-12-04 15:19:39.000000000","message":"A valid point, worth changing (in a different patch).","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"}],"nova/scheduler/client/report.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"b4dd0b9f7a2b0d8dcc8c503bfd21f57b6ff730a3","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            return None"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    def _ensure_resource_provider(self, uuid, name\u003dNone):"},{"line_number":487,"context_line":"        \"\"\"Ensures that the placement API has a record of a resource provider"},{"line_number":488,"context_line":"        with the supplied UUID. If not, creates the resource provider record in"},{"line_number":489,"context_line":"        the placement API for the supplied UUID, passing in a name for the"},{"line_number":490,"context_line":"        resource provider."},{"line_number":491,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_863991f3","line":488,"range":{"start_line":487,"start_character":11,"end_line":488,"end_character":30},"updated":"2017-12-03 23:43:02.000000000","message":"In the case that there is that RP not in tree but in placement and that RP has a parent, can we really use new_root()? Shouldn\u0027t we use new_child() in that case?","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c54f8891a115e824efcbfa36e7bb1b3a417e46cd","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            return None"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    def _ensure_resource_provider(self, uuid, name\u003dNone):"},{"line_number":487,"context_line":"        \"\"\"Ensures that the placement API has a record of a resource provider"},{"line_number":488,"context_line":"        with the supplied UUID. If not, creates the resource provider record in"},{"line_number":489,"context_line":"        the placement API for the supplied UUID, passing in a name for the"},{"line_number":490,"context_line":"        resource provider."},{"line_number":491,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_0e41050c","line":488,"range":{"start_line":487,"start_character":11,"end_line":488,"end_character":30},"in_reply_to":"df87a7cf_8b52e866","updated":"2017-12-04 15:18:09.000000000","message":"Right, and that\u0027s being done in [1] (which, yes, needs rebasing \u0026 updating - and it\u0027s in the middle of a pile that needs the same).\n\n[1] https://review.openstack.org/#/c/520643/5/nova/scheduler/client/report.py","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7342e288a530e90d8f6fe1e6121111fd3f7436a9","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            return None"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"    def _ensure_resource_provider(self, uuid, name\u003dNone):"},{"line_number":487,"context_line":"        \"\"\"Ensures that the placement API has a record of a resource provider"},{"line_number":488,"context_line":"        with the supplied UUID. If not, creates the resource provider record in"},{"line_number":489,"context_line":"        the placement API for the supplied UUID, passing in a name for the"},{"line_number":490,"context_line":"        resource provider."},{"line_number":491,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_8b52e866","line":488,"range":{"start_line":487,"start_character":11,"end_line":488,"end_character":30},"in_reply_to":"ff82abbf_863991f3","updated":"2017-12-04 14:22:49.000000000","message":"Well, technically, we haven\u0027t yet allowed for child providers. Once we add that ability (after https://review.openstack.org/#/c/385693/82/nova/scheduler/client/report.py is merged), yes.","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"}],"nova/tests/unit/scheduler/client/test_report.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"91b856f16b43cd0b8e5309f7455b6eda8c85d3d2","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            except AttributeError:"},{"line_number":265,"context_line":"                self.fail(\"Provider with name or UUID %s doesn\u0027t have \""},{"line_number":266,"context_line":"                          \"attribute %s (expected value: %s)\" %"},{"line_number":267,"context_line":"                          (name_or_uuid, attr, expected))"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"class TestPutAllocations(SchedulerReportClientTestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_d32be87f","line":267,"updated":"2017-11-30 19:45:14.000000000","message":"++ nice cleanup.","commit_id":"a98ff3c92535e66d5e397dbdd437f19681d9764d"}]}
