)]}'
{"nova/api/openstack/placement/objects/resource_provider.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"061941573f0def2be2fbc26daee460f363db109b","unresolved":false,"context_lines":[{"line_number":2386,"context_line":""},{"line_number":2387,"context_line":"@db_api.api_context_manager.reader"},{"line_number":2388,"context_line":"def _get_consumer_by_uuid(ctx, uuid):"},{"line_number":2389,"context_line":"    consumers \u003d sa.alias(_CONSUMER_TBL, name\u003d\"c\")"},{"line_number":2390,"context_line":"    projects \u003d sa.alias(_PROJECT_TBL, name\u003d\"p\")"},{"line_number":2391,"context_line":"    users \u003d sa.alias(_USER_TBL, name\u003d\"u\")"},{"line_number":2392,"context_line":"    cols \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_da8baf65","line":2389,"updated":"2018-05-01 14:42:24.000000000","message":"Can I get a SQL comment, please?\n\n SELECT c.id, c.uuid,\n        p.id AS project_id, p.external_id AS project_external_id,\n        u.id AS user_id, u.external_id AS user_external_id,\n        c.generation, c.updated_at, c.created_at\n FROM consumers c\n INNER JOIN projects p ON c.project_id \u003d p.id\n INNER JOIN users u ON c.user_id \u003d u.id\n WHERE c.uuid \u003d $uuid\n\nI think?","commit_id":"56a5a154d0ee511d2e9a028866d53ad820dd27f5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4e775672a2c5eb3ef378c40becb38c471abfff8f","unresolved":false,"context_lines":[{"line_number":2386,"context_line":""},{"line_number":2387,"context_line":"@db_api.api_context_manager.reader"},{"line_number":2388,"context_line":"def _get_consumer_by_uuid(ctx, uuid):"},{"line_number":2389,"context_line":"    consumers \u003d sa.alias(_CONSUMER_TBL, name\u003d\"c\")"},{"line_number":2390,"context_line":"    projects \u003d sa.alias(_PROJECT_TBL, name\u003d\"p\")"},{"line_number":2391,"context_line":"    users \u003d sa.alias(_USER_TBL, name\u003d\"u\")"},{"line_number":2392,"context_line":"    cols \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_e03da62c","line":2389,"in_reply_to":"9f6a8fd7_05c0ec7b","updated":"2018-05-01 15:57:05.000000000","message":"Done","commit_id":"56a5a154d0ee511d2e9a028866d53ad820dd27f5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0fac584bf9c5e11c1468ca5a7ebe26b60e034d0f","unresolved":false,"context_lines":[{"line_number":2386,"context_line":""},{"line_number":2387,"context_line":"@db_api.api_context_manager.reader"},{"line_number":2388,"context_line":"def _get_consumer_by_uuid(ctx, uuid):"},{"line_number":2389,"context_line":"    consumers \u003d sa.alias(_CONSUMER_TBL, name\u003d\"c\")"},{"line_number":2390,"context_line":"    projects \u003d sa.alias(_PROJECT_TBL, name\u003d\"p\")"},{"line_number":2391,"context_line":"    users \u003d sa.alias(_USER_TBL, name\u003d\"u\")"},{"line_number":2392,"context_line":"    cols \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_05c0ec7b","line":2389,"in_reply_to":"9f6a8fd7_da8baf65","updated":"2018-05-01 15:08:43.000000000","message":"Sure thing. And yes, the above is correct.","commit_id":"56a5a154d0ee511d2e9a028866d53ad820dd27f5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"061941573f0def2be2fbc26daee460f363db109b","unresolved":false,"context_lines":[{"line_number":2397,"context_line":"        users.c.id.label(\"user_id\"),"},{"line_number":2398,"context_line":"        users.c.external_id.label(\"user_external_id\"),"},{"line_number":2399,"context_line":"        consumers.c.generation,"},{"line_number":2400,"context_line":"        consumers.c.updated_at,"},{"line_number":2401,"context_line":"        consumers.c.created_at"},{"line_number":2402,"context_line":"    ]"},{"line_number":2403,"context_line":"    c_to_p_join \u003d sa.join("},{"line_number":2404,"context_line":"        consumers, projects, consumers.c.project_id \u003d\u003d projects.c.id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_7ad2a336","line":2401,"range":{"start_line":2400,"start_character":0,"end_line":2401,"end_character":30},"updated":"2018-05-01 14:42:24.000000000","message":"Sorta curious why we need these.","commit_id":"56a5a154d0ee511d2e9a028866d53ad820dd27f5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4e775672a2c5eb3ef378c40becb38c471abfff8f","unresolved":false,"context_lines":[{"line_number":2397,"context_line":"        users.c.id.label(\"user_id\"),"},{"line_number":2398,"context_line":"        users.c.external_id.label(\"user_external_id\"),"},{"line_number":2399,"context_line":"        consumers.c.generation,"},{"line_number":2400,"context_line":"        consumers.c.updated_at,"},{"line_number":2401,"context_line":"        consumers.c.created_at"},{"line_number":2402,"context_line":"    ]"},{"line_number":2403,"context_line":"    c_to_p_join \u003d sa.join("},{"line_number":2404,"context_line":"        consumers, projects, consumers.c.project_id \u003d\u003d projects.c.id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_4037b24e","line":2401,"range":{"start_line":2400,"start_character":0,"end_line":2401,"end_character":30},"in_reply_to":"9f6a8fd7_25f2d007","updated":"2018-05-01 15:57:05.000000000","message":"Done","commit_id":"56a5a154d0ee511d2e9a028866d53ad820dd27f5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0fac584bf9c5e11c1468ca5a7ebe26b60e034d0f","unresolved":false,"context_lines":[{"line_number":2397,"context_line":"        users.c.id.label(\"user_id\"),"},{"line_number":2398,"context_line":"        users.c.external_id.label(\"user_external_id\"),"},{"line_number":2399,"context_line":"        consumers.c.generation,"},{"line_number":2400,"context_line":"        consumers.c.updated_at,"},{"line_number":2401,"context_line":"        consumers.c.created_at"},{"line_number":2402,"context_line":"    ]"},{"line_number":2403,"context_line":"    c_to_p_join \u003d sa.join("},{"line_number":2404,"context_line":"        consumers, projects, consumers.c.project_id \u003d\u003d projects.c.id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_25f2d007","line":2401,"range":{"start_line":2400,"start_character":0,"end_line":2401,"end_character":30},"in_reply_to":"9f6a8fd7_7ad2a336","updated":"2018-05-01 15:08:43.000000000","message":"Not sure either. Copy/pasta. I can remove if you really want.","commit_id":"56a5a154d0ee511d2e9a028866d53ad820dd27f5"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e84e2b99e526896a0e238961c11ac3f98a445edf","unresolved":false,"context_lines":[{"line_number":2441,"context_line":"        target.id \u003d source[\u0027id\u0027]"},{"line_number":2442,"context_line":"        target.uuid \u003d source[\u0027uuid\u0027]"},{"line_number":2443,"context_line":"        target.generation \u003d source[\u0027generation\u0027]"},{"line_number":2444,"context_line":"        target.created_at \u003d source[\u0027created_at\u0027]"},{"line_number":2445,"context_line":"        target.updated_at \u003d source[\u0027updated_at\u0027]"},{"line_number":2446,"context_line":""},{"line_number":2447,"context_line":"        target.project \u003d Project("},{"line_number":2448,"context_line":"            ctx, id\u003dsource[\u0027project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_66368eb7","line":2445,"range":{"start_line":2444,"start_character":0,"end_line":2445,"end_character":48},"updated":"2018-05-01 16:40:07.000000000","message":"okay, so now we\u0027re using the fields.  To what end?","commit_id":"f5014812707cf8772334f8d7e280b802361d1446"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9f01c4524366f20208b56a02392e885e87f057fb","unresolved":false,"context_lines":[{"line_number":2441,"context_line":"        target.id \u003d source[\u0027id\u0027]"},{"line_number":2442,"context_line":"        target.uuid \u003d source[\u0027uuid\u0027]"},{"line_number":2443,"context_line":"        target.generation \u003d source[\u0027generation\u0027]"},{"line_number":2444,"context_line":"        target.created_at \u003d source[\u0027created_at\u0027]"},{"line_number":2445,"context_line":"        target.updated_at \u003d source[\u0027updated_at\u0027]"},{"line_number":2446,"context_line":""},{"line_number":2447,"context_line":"        target.project \u003d Project("},{"line_number":2448,"context_line":"            ctx, id\u003dsource[\u0027project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f6a8fd7_9de8cc16","line":2445,"range":{"start_line":2444,"start_character":0,"end_line":2445,"end_character":48},"in_reply_to":"9f6a8fd7_66368eb7","updated":"2018-05-01 17:50:33.000000000","message":"I added , base.TimestampedObject to the object definition. created_at and updated_at are in the consumers table and the last_modified timestamp utility that runs in the handlers looks for these fields... so figured I\u0027d throw them in here for consumers.\n\nThey don\u0027t hurt anything and frankly, updated_at is never, uh, updated :) so not sure how useful the fields are at this point, but meh :)","commit_id":"f5014812707cf8772334f8d7e280b802361d1446"}],"nova/tests/functional/api/openstack/placement/db/test_resource_provider.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"061941573f0def2be2fbc26daee460f363db109b","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def test_get_by_uuid(self):"},{"line_number":114,"context_line":"        \"\"\"Creating the allocation should automatically create a consumer"},{"line_number":115,"context_line":"        record with the project and user ID from the fake context. One projects"},{"line_number":116,"context_line":"        and users table record should also have been created."},{"line_number":117,"context_line":"        \"\"\""},{"line_number":118,"context_line":"        self._make_allocation()"},{"line_number":119,"context_line":"        c \u003d rp_obj.Consumer.get_by_uuid(self.ctx, uuidsentinel.disk_consumer)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_daeacfd6","line":116,"range":{"start_line":115,"start_character":67,"end_line":116,"end_character":61},"updated":"2018-05-01 14:42:24.000000000","message":"To prove this, add User \u0026 Project.get_by_external_id calls below.","commit_id":"56a5a154d0ee511d2e9a028866d53ad820dd27f5"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4e775672a2c5eb3ef378c40becb38c471abfff8f","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def test_get_by_uuid(self):"},{"line_number":114,"context_line":"        \"\"\"Creating the allocation should automatically create a consumer"},{"line_number":115,"context_line":"        record with the project and user ID from the fake context. One projects"},{"line_number":116,"context_line":"        and users table record should also have been created."},{"line_number":117,"context_line":"        \"\"\""},{"line_number":118,"context_line":"        self._make_allocation()"},{"line_number":119,"context_line":"        c \u003d rp_obj.Consumer.get_by_uuid(self.ctx, uuidsentinel.disk_consumer)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_40d332d6","line":116,"range":{"start_line":115,"start_character":67,"end_line":116,"end_character":61},"in_reply_to":"9f6a8fd7_daeacfd6","updated":"2018-05-01 15:57:05.000000000","message":"Done","commit_id":"56a5a154d0ee511d2e9a028866d53ad820dd27f5"}]}
