)]}'
{"nova/api/openstack/placement/handlers/inventory.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"46e9bc1aeb102b29ef44eb18fd236650868380a4","unresolved":false,"context_lines":[{"line_number":480,"context_line":"              \u0027%(rp_uuid)s: %(error)s\u0027) % {\u0027rp_uuid\u0027: resource_provider.uuid,"},{"line_number":481,"context_line":"                                          \u0027error\u0027: exc})"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    return _send_inventory(req, resource_provider, inventory)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_b417dc51","line":483,"range":{"start_line":483,"start_character":11,"end_line":483,"end_character":26},"updated":"2017-10-13 07:35:29.000000000","message":"just a question, will PUT also return header info? if so, then first patch in this patch chain need update? I think we want to be consistent","commit_id":"f795880e5eceb6fdeb6d9ad55e7176bc4c14d9f5"}],"nova/api/openstack/placement/util.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"46e9bc1aeb102b29ef44eb18fd236650868380a4","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def pick_last_modified(last_modified, obj):"},{"line_number":120,"context_line":"    \"\"\"Choose max of last_modified and obj.updated_at or obj.created_at.\"\"\""},{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        current_modified \u003d (obj.updated_at or obj.created_at)"},{"line_number":123,"context_line":"    except NotImplementedError:"},{"line_number":124,"context_line":"        # If updated_at is not implemented, we are looking at objects that"},{"line_number":125,"context_line":"        # have not come from the database, so \"now\" is the right modified"},{"line_number":126,"context_line":"        # time."},{"line_number":127,"context_line":"        current_modified \u003d timeutils.utcnow(with_timezone\u003dTrue)"},{"line_number":128,"context_line":"    if last_modified:"},{"line_number":129,"context_line":"        last_modified \u003d max(last_modified, current_modified)"},{"line_number":130,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_0800d000","line":127,"range":{"start_line":121,"start_character":4,"end_line":127,"end_character":63},"updated":"2017-10-13 07:35:29.000000000","message":"we\u0027d better make change at first patch of this chain","commit_id":"f795880e5eceb6fdeb6d9ad55e7176bc4c14d9f5"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3ae750db4a58246d5d85ab381702800290e3f30f","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def pick_last_modified(last_modified, obj):"},{"line_number":120,"context_line":"    \"\"\"Choose max of last_modified and obj.updated_at or obj.created_at.\"\"\""},{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        current_modified \u003d (obj.updated_at or obj.created_at)"},{"line_number":123,"context_line":"    except NotImplementedError:"},{"line_number":124,"context_line":"        # If updated_at is not implemented, we are looking at objects that"},{"line_number":125,"context_line":"        # have not come from the database, so \"now\" is the right modified"},{"line_number":126,"context_line":"        # time."},{"line_number":127,"context_line":"        current_modified \u003d timeutils.utcnow(with_timezone\u003dTrue)"},{"line_number":128,"context_line":"    if last_modified:"},{"line_number":129,"context_line":"        last_modified \u003d max(last_modified, current_modified)"},{"line_number":130,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f4e5783_be3e8d88","line":127,"range":{"start_line":121,"start_character":4,"end_line":127,"end_character":63},"in_reply_to":"5f4e5783_0800d000","updated":"2017-10-13 14:30:42.000000000","message":"yes, when it gets the PUT addition, this should move there.","commit_id":"f795880e5eceb6fdeb6d9ad55e7176bc4c14d9f5"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"578d20a677736eb0766dc6db8db4dc2ef1a4b2f8","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def pick_last_modified(last_modified, obj):"},{"line_number":120,"context_line":"    \"\"\"Choose max of last_modified and obj.updated_at or obj.created_at.\"\"\""},{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        current_modified \u003d (obj.updated_at or obj.created_at)"},{"line_number":123,"context_line":"    except NotImplementedError:"},{"line_number":124,"context_line":"        # If updated_at is not implemented, we are looking at objects that"},{"line_number":125,"context_line":"        # have not come from the database, so \"now\" is the right modified"},{"line_number":126,"context_line":"        # time."},{"line_number":127,"context_line":"        current_modified \u003d timeutils.utcnow(with_timezone\u003dTrue)"},{"line_number":128,"context_line":"    if last_modified:"},{"line_number":129,"context_line":"        last_modified \u003d max(last_modified, current_modified)"},{"line_number":130,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f4e5783_86534339","line":127,"range":{"start_line":121,"start_character":4,"end_line":127,"end_character":42},"updated":"2017-10-17 08:05:18.000000000","message":"this can be in 1st patch of this patch set, but LGTM here","commit_id":"f93cff36021429c2c823f2f81428b23453fbf075"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"38d652d4bde95032259a25814555a9ed674369d0","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"def pick_last_modified(last_modified, obj):"},{"line_number":120,"context_line":"    \"\"\"Choose max of last_modified and obj.updated_at or obj.created_at.\"\"\""},{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        current_modified \u003d (obj.updated_at or obj.created_at)"},{"line_number":123,"context_line":"    except NotImplementedError:"},{"line_number":124,"context_line":"        # If updated_at is not implemented, we are looking at objects that"},{"line_number":125,"context_line":"        # have not come from the database, so \"now\" is the right modified"},{"line_number":126,"context_line":"        # time."},{"line_number":127,"context_line":"        current_modified \u003d timeutils.utcnow(with_timezone\u003dTrue)"},{"line_number":128,"context_line":"    if last_modified:"},{"line_number":129,"context_line":"        last_modified \u003d max(last_modified, current_modified)"},{"line_number":130,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f4e5783_a906101f","line":127,"range":{"start_line":121,"start_character":4,"end_line":127,"end_character":42},"in_reply_to":"5f4e5783_86534339","updated":"2017-10-17 08:46:55.000000000","message":"I ended up not doing it in the first patch because it is not needed there, and I wanted to be sure to only add functionality that is actually being used.","commit_id":"f93cff36021429c2c823f2f81428b23453fbf075"}],"nova/tests/functional/api/openstack/placement/gabbits/inventory.yaml":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d66b5a038cb580c6019c21cfd32ae0f6bba94c2d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"  status: 200"},{"line_number":169,"context_line":"  request_headers:"},{"line_number":170,"context_line":"      # set microversion to 1.11 to get timestamp headers"},{"line_number":171,"context_line":"      openstack-api-version: placement 1.11"},{"line_number":172,"context_line":"  response_headers:"},{"line_number":173,"context_line":"      cache-control: no-cache"},{"line_number":174,"context_line":"      # Does last-modified look like a legit timestamp?"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff82abbf_0b704572","line":171,"range":{"start_line":171,"start_character":28,"end_line":171,"end_character":43},"updated":"2017-11-20 05:57:18.000000000","message":"1.11 already occupied by ad04ef197b395b34de4037a5220b68e11fb6a8c9","commit_id":"c14c7ea18467200068845e89fa41eb52f218e530"}],"nova/tests/unit/api/openstack/placement/test_util.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"611bfa0068282fa78b782d4ed33aa232d619c142","unresolved":false,"context_lines":[{"line_number":444,"context_line":"            mock_utc.return_value \u003d now"},{"line_number":445,"context_line":"            chosen_time \u003d util.pick_last_modified("},{"line_number":446,"context_line":"                None, self.resource_provider)"},{"line_number":447,"context_line":"            self.assertEqual(now, chosen_time)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_17d65429","line":447,"range":{"start_line":447,"start_character":12,"end_line":447,"end_character":46},"updated":"2017-10-26 06:58:49.000000000","message":"same to above 2 cases, we can assert utc called as well?","commit_id":"7ad6f79372a1068dd402ba15295e2e8f1f12b401"}]}
