)]}'
{"nova/api/openstack/placement/handlers/inventory.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"112a25eeef5f415835312070c8860b44465040f3","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        resource_provider.set_inventory(inventories)"},{"line_number":356,"context_line":"    except (exception.ConcurrentUpdateDetected,"},{"line_number":357,"context_line":"            exception.InventoryInUse,"},{"line_number":358,"context_line":"            exception.InvalidInventoryNewCapacityExceeded,"},{"line_number":359,"context_line":"            db_exc.DBDuplicateEntry) as exc:"},{"line_number":360,"context_line":"        raise webob.exc.HTTPConflict("},{"line_number":361,"context_line":"            \u0027update conflict: %s\u0027 % exc,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_396c0c9c","line":358,"updated":"2016-09-09 17:02:30.000000000","message":"This looks like it is adding something back in that was removed in Change-Id: I48ae1d7cd6bc309243493ddac99ce990c0146534\n\nand the comment at 328 and 378 and the exception at 406.\n\nSo it looks like you ought to rebase off master (to make sure all is well)?","commit_id":"7ee8303c66cdc0f2c705a2ebfae08a98a61c5655"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b55db1b1f63cec671d0a496d827c6513b7baf0f8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"POST_INVENTORY_SCHEMA[\u0027required\u0027].append(\u0027resource_class\u0027)"},{"line_number":63,"context_line":"POST_INVENTORY_SCHEMA[\u0027required\u0027].remove(\u0027resource_provider_generation\u0027)"},{"line_number":64,"context_line":"PUT_INVENTORY_RECORD_SCHEMA \u003d copy.deepcopy(BASE_INVENTORY_SCHEMA)"},{"line_number":65,"context_line":"PUT_INVENTORY_RECORD_SCHEMA[\u0027required\u0027].remove(\u0027resource_provider_generation\u0027)"},{"line_number":66,"context_line":"PUT_INVENTORY_SCHEMA \u003d {"},{"line_number":67,"context_line":"    \"type\": \"object\","},{"line_number":68,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_103b6939","line":65,"updated":"2016-09-12 09:39:30.000000000","message":"Emm..... I think we should pop the \"resource_provider_generation\" Why we want to input generation in each inventory?","commit_id":"17d69098af8362cbdfa2698573ebc887c4e75753"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f83e99f272b0eec71e42f5b6a31b5310113e917f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"POST_INVENTORY_SCHEMA[\u0027required\u0027].append(\u0027resource_class\u0027)"},{"line_number":63,"context_line":"POST_INVENTORY_SCHEMA[\u0027required\u0027].remove(\u0027resource_provider_generation\u0027)"},{"line_number":64,"context_line":"PUT_INVENTORY_RECORD_SCHEMA \u003d copy.deepcopy(BASE_INVENTORY_SCHEMA)"},{"line_number":65,"context_line":"PUT_INVENTORY_RECORD_SCHEMA[\u0027required\u0027].remove(\u0027resource_provider_generation\u0027)"},{"line_number":66,"context_line":"PUT_INVENTORY_SCHEMA \u003d {"},{"line_number":67,"context_line":"    \"type\": \"object\","},{"line_number":68,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_7fd1d9cc","line":65,"in_reply_to":"9a89bdaa_103b6939","updated":"2016-09-12 12:14:07.000000000","message":"Alex, that is what the above line is doing...","commit_id":"17d69098af8362cbdfa2698573ebc887c4e75753"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2a0a502b35607afd2075ffafeba64a87713fbf40","unresolved":false,"context_lines":[{"line_number":62,"context_line":"POST_INVENTORY_SCHEMA[\u0027required\u0027].append(\u0027resource_class\u0027)"},{"line_number":63,"context_line":"POST_INVENTORY_SCHEMA[\u0027required\u0027].remove(\u0027resource_provider_generation\u0027)"},{"line_number":64,"context_line":"PUT_INVENTORY_RECORD_SCHEMA \u003d copy.deepcopy(BASE_INVENTORY_SCHEMA)"},{"line_number":65,"context_line":"PUT_INVENTORY_RECORD_SCHEMA[\u0027required\u0027].remove(\u0027resource_provider_generation\u0027)"},{"line_number":66,"context_line":"PUT_INVENTORY_SCHEMA \u003d {"},{"line_number":67,"context_line":"    \"type\": \"object\","},{"line_number":68,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_127a7af1","line":65,"in_reply_to":"9a89bdaa_646dcd03","updated":"2016-09-12 14:46:40.000000000","message":"I got answer from Chris in the scheduler meeting. \n\n22:21 \u003ccdent\u003e alex_xu: I think the gist there is that the generation at the top level is required, the one within the inventory itself is ignored, but allowed to be there because it is required in the post\n22:21 \u003ccdent\u003e so if you have code that is generating inventories for both situations you can reuse it\n\nBut I feel it is very strange. So let me remove the -1 first.","commit_id":"17d69098af8362cbdfa2698573ebc887c4e75753"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1e3ca94f526ed18cf8fc7730d13e8dde1d1f76a0","unresolved":false,"context_lines":[{"line_number":62,"context_line":"POST_INVENTORY_SCHEMA[\u0027required\u0027].append(\u0027resource_class\u0027)"},{"line_number":63,"context_line":"POST_INVENTORY_SCHEMA[\u0027required\u0027].remove(\u0027resource_provider_generation\u0027)"},{"line_number":64,"context_line":"PUT_INVENTORY_RECORD_SCHEMA \u003d copy.deepcopy(BASE_INVENTORY_SCHEMA)"},{"line_number":65,"context_line":"PUT_INVENTORY_RECORD_SCHEMA[\u0027required\u0027].remove(\u0027resource_provider_generation\u0027)"},{"line_number":66,"context_line":"PUT_INVENTORY_SCHEMA \u003d {"},{"line_number":67,"context_line":"    \"type\": \"object\","},{"line_number":68,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_646dcd03","line":65,"in_reply_to":"9a89bdaa_7fd1d9cc","updated":"2016-09-12 13:14:03.000000000","message":"sorry.. I mean PUT_INVENTORY_RECORD_SCHEMA[\u0027properties\u0027].pop(\"resource_provider_generation\").. Hope I\u0027m not live in my own world again...","commit_id":"17d69098af8362cbdfa2698573ebc887c4e75753"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d058c0491468bdb4e056ca1e800aae144c1bfbab","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import exception"},{"line_number":23,"context_line":"from nova import objects"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"RESOURCE_CLASS_IDENTIFIER \u003d \"^[A-Z0-9_]+$\""},{"line_number":26,"context_line":"BASE_INVENTORY_SCHEMA \u003d {"},{"line_number":27,"context_line":"    \"type\": \"object\","},{"line_number":28,"context_line":"    \"properties\": {"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_161b3874","line":25,"updated":"2016-09-12 21:55:49.000000000","message":"This is the same as https://github.com/openstack/nova/blob/master/nova/api/openstack/placement/handlers/allocation.py#L51 but just slightly differently defined - at some point we should maybe pull this into a parameters.py module or something more common so the various handler schemas can define common rules.","commit_id":"09db0ba7cc275e0282226ddb9a6a259a2b179316"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d058c0491468bdb4e056ca1e800aae144c1bfbab","unresolved":false,"context_lines":[{"line_number":204,"context_line":"@webob.dec.wsgify"},{"line_number":205,"context_line":"@util.require_content(\u0027application/json\u0027)"},{"line_number":206,"context_line":"def create_inventory(req):"},{"line_number":207,"context_line":"    \"\"\"POST to create one inventory."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    On success return a 201 response, a location header pointing"},{"line_number":210,"context_line":"    to the newly created inventory and an application/json representation"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_b6e9acb9","line":207,"updated":"2016-09-12 21:55:49.000000000","message":"I don\u0027t see a gabbit for this?","commit_id":"09db0ba7cc275e0282226ddb9a6a259a2b179316"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"79d9476b6f83407b537d7a01448b6b542b7c50a4","unresolved":false,"context_lines":[{"line_number":204,"context_line":"@webob.dec.wsgify"},{"line_number":205,"context_line":"@util.require_content(\u0027application/json\u0027)"},{"line_number":206,"context_line":"def create_inventory(req):"},{"line_number":207,"context_line":"    \"\"\"POST to create one inventory."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    On success return a 201 response, a location header pointing"},{"line_number":210,"context_line":"    to the newly created inventory and an application/json representation"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_2df70a8c","line":207,"in_reply_to":"9a89bdaa_362afc90","updated":"2016-09-12 22:57:01.000000000","message":"Thanks, yeah, I got mixed up looking at the allocations.yaml which has some inventory tests in it.","commit_id":"09db0ba7cc275e0282226ddb9a6a259a2b179316"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c9fff499c424f1311000e3ad724162289e624050","unresolved":false,"context_lines":[{"line_number":204,"context_line":"@webob.dec.wsgify"},{"line_number":205,"context_line":"@util.require_content(\u0027application/json\u0027)"},{"line_number":206,"context_line":"def create_inventory(req):"},{"line_number":207,"context_line":"    \"\"\"POST to create one inventory."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    On success return a 201 response, a location header pointing"},{"line_number":210,"context_line":"    to the newly created inventory and an application/json representation"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_362afc90","line":207,"in_reply_to":"9a89bdaa_b6e9acb9","updated":"2016-09-12 22:07:39.000000000","message":"Line 41 of nova/tests/functional/api/openstack/placement/gabbits/inventory.yaml tests this.","commit_id":"09db0ba7cc275e0282226ddb9a6a259a2b179316"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d058c0491468bdb4e056ca1e800aae144c1bfbab","unresolved":false,"context_lines":[{"line_number":369,"context_line":"@webob.dec.wsgify"},{"line_number":370,"context_line":"@util.require_content(\u0027application/json\u0027)"},{"line_number":371,"context_line":"def update_inventory(req):"},{"line_number":372,"context_line":"    \"\"\"PUT to update one inventory."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    If the resource generation is out of sync, return a 409."},{"line_number":375,"context_line":"    If the inventory has settings which are invalid (for example"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_f6c89457","line":372,"updated":"2016-09-12 21:55:49.000000000","message":"I don\u0027t see a gabbit for this?","commit_id":"09db0ba7cc275e0282226ddb9a6a259a2b179316"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c9fff499c424f1311000e3ad724162289e624050","unresolved":false,"context_lines":[{"line_number":369,"context_line":"@webob.dec.wsgify"},{"line_number":370,"context_line":"@util.require_content(\u0027application/json\u0027)"},{"line_number":371,"context_line":"def update_inventory(req):"},{"line_number":372,"context_line":"    \"\"\"PUT to update one inventory."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    If the resource generation is out of sync, return a 409."},{"line_number":375,"context_line":"    If the inventory has settings which are invalid (for example"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_4a49945f","line":372,"in_reply_to":"9a89bdaa_f6c89457","updated":"2016-09-12 22:07:39.000000000","message":"Line 73 of nova/tests/functional/api/openstack/placement/gabbits/inventory.yaml tests a single PUT.","commit_id":"09db0ba7cc275e0282226ddb9a6a259a2b179316"}],"nova/tests/functional/api/openstack/placement/gabbits/allocations.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d058c0491468bdb4e056ca1e800aae144c1bfbab","unresolved":false,"context_lines":[{"line_number":262,"context_line":"  request_headers:"},{"line_number":263,"context_line":"      content-type: application/json"},{"line_number":264,"context_line":"  data:"},{"line_number":265,"context_line":"      # TODO(cdent): This format is going to go out of date because"},{"line_number":266,"context_line":"      # of other changes"},{"line_number":267,"context_line":"      resource_provider_generation: 0"},{"line_number":268,"context_line":"      inventories:"},{"line_number":269,"context_line":"        VCPU:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9a89bdaa_56b780d7","line":266,"range":{"start_line":265,"start_character":6,"end_line":266,"end_character":24},"updated":"2016-09-12 21:55:49.000000000","message":"Can the TODO here and on L279 go away?","commit_id":"09db0ba7cc275e0282226ddb9a6a259a2b179316"}]}
