)]}'
{"doc/api_samples/os-hypervisors/v2.33/hypervisors-detail-resp.json":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"af29a4e0f00587f05d957a9195b660adcf9121ad","unresolved":false,"context_lines":[{"line_number":22,"context_line":"            \"host_ip\": \"1.1.1.1\","},{"line_number":23,"context_line":"            \"free_disk_gb\": 1028,"},{"line_number":24,"context_line":"            \"free_ram_mb\": 7680,"},{"line_number":25,"context_line":"            \"hypervisor_hostname\": \"host1\","},{"line_number":26,"context_line":"            \"hypervisor_type\": \"fake\","},{"line_number":27,"context_line":"            \"hypervisor_version\": 1000,"},{"line_number":28,"context_line":"            \"id\": 2,"}],"source_content_type":"application/json","patch_set":1,"id":"ff82abbf_73cf7fb0","line":25,"updated":"2017-11-30 18:21:37.000000000","message":"I know this ship has sailed, but this isn\u0027t the first time that hard-coded names have caused wonky test results. I still wish we used random strings like in https://github.com/EdLeafe/pyrax/blob/master/pyrax/utils.py#L278","commit_id":"b3ab1718502597707cd4c2eb3e5a997ab0bf60e0"}],"nova/scheduler/client/report.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"af29a4e0f00587f05d957a9195b660adcf9121ad","unresolved":false,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"        # TODO(efried): Push error codes from placement, and use \u0027em."},{"line_number":458,"context_line":"        name_conflict \u003d \u0027Conflicting resource provider name:\u0027"},{"line_number":459,"context_line":"        if resp.status_code \u003d\u003d 409 and name_conflict not in resp.text:"},{"line_number":460,"context_line":"            # Another thread concurrently created a resource provider with the"},{"line_number":461,"context_line":"            # same UUID. Log a warning and then just return the resource"},{"line_number":462,"context_line":"            # provider object from _get_resource_provider()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_13f713d7","line":459,"range":{"start_line":459,"start_character":39,"end_line":459,"end_character":69},"updated":"2017-11-30 18:21:37.000000000","message":"nit: I prefer to see the more specific case that raises the exception handled first, and then fall through to the non-exception behavior.","commit_id":"b3ab1718502597707cd4c2eb3e5a997ab0bf60e0"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1e94ae4ff23990be165dfa30dd3ec89b22639806","unresolved":false,"context_lines":[{"line_number":477,"context_line":"        args \u003d {"},{"line_number":478,"context_line":"            \u0027uuid\u0027: uuid,"},{"line_number":479,"context_line":"            \u0027status_code\u0027: resp.status_code,"},{"line_number":480,"context_line":"            \u0027err_text\u0027: resp.text,"},{"line_number":481,"context_line":"            \u0027placement_req_id\u0027: placement_req_id,"},{"line_number":482,"context_line":"        }"},{"line_number":483,"context_line":"        LOG.error(msg, args)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_18209249","line":480,"updated":"2017-11-30 18:00:39.000000000","message":"If you wanted, perhaps later, you could use the JSON of the error response to get at the structured data: https://github.com/openstack/nova/blob/1cf7a26bbd5129970c90ce0f5ed6384b4f3df5b7/nova/api/openstack/placement/util.py#L95\n\nTo get that either you need to make sure that the request is sent with an accept header of application/json or this needs to merge: https://review.openstack.org/#/c/518223/","commit_id":"b3ab1718502597707cd4c2eb3e5a997ab0bf60e0"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7d047f2b8a36c37cd9b94a18d19e7893f0f1cf7e","unresolved":false,"context_lines":[{"line_number":477,"context_line":"        args \u003d {"},{"line_number":478,"context_line":"            \u0027uuid\u0027: uuid,"},{"line_number":479,"context_line":"            \u0027status_code\u0027: resp.status_code,"},{"line_number":480,"context_line":"            \u0027err_text\u0027: resp.text,"},{"line_number":481,"context_line":"            \u0027placement_req_id\u0027: placement_req_id,"},{"line_number":482,"context_line":"        }"},{"line_number":483,"context_line":"        LOG.error(msg, args)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_188732b9","line":480,"in_reply_to":"ff82abbf_18209249","updated":"2017-11-30 18:16:41.000000000","message":"Cool.\n\nDefinitely seems like a followon change, though.  There\u0027s like a dozen places in this file that would use it.","commit_id":"b3ab1718502597707cd4c2eb3e5a997ab0bf60e0"}]}
