)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"45c74e8c0e756778ed33151b681e97dff69eef71","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"(ditto for the other substitutions)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Some manual fixups were required after, which pre-commit highlighted :)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Change-Id: I8c96b337f32148f8f5899c9b87af331b1fa41424"},{"line_number":40,"context_line":"Signed-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_afe4d9df","line":37,"range":{"start_line":37,"start_character":40,"end_line":37,"end_character":71},"updated":"2019-12-12 13:06:34.000000000","message":"what a shameless plug :)","commit_id":"7ae1a1091326292b02d879ae5410d5e7e78d3997"}],"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b68e28d06e04dbc721e4ea618d62fd12b1d42370","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self._wait_for_server_parameter("},{"line_number":96,"context_line":"            admin_api, server, {\u0027status\u0027: expected_status}, max_retries)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _build_minimal_create_server_request(self, api, name\u003dNone,"},{"line_number":99,"context_line":"                                             image_uuid\u003dNone, flavor_id\u003dNone,"},{"line_number":100,"context_line":"                                             networks\u003dNone, az\u003dNone,"},{"line_number":101,"context_line":"                                             host\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_3de01cf8","side":"PARENT","line":98,"range":{"start_line":98,"start_character":51,"end_line":98,"end_character":54},"updated":"2019-12-12 17:15:05.000000000","message":"Removing this is a problem for any tests doing multi-tenant testing, e.g.:\n\nhttps://review.opendev.org/#/c/697331/4/nova/tests/functional/test_scheduler.py\n\nSo we\u0027re going to need to add an api kwarg back onto this or something.","commit_id":"aff95de32a26b457b99b3e5a0de4ae35b25fa5f0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"beb89a14901fce9d4db41d036d5ec6e78b32c52c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self._wait_for_server_parameter("},{"line_number":96,"context_line":"            admin_api, server, {\u0027status\u0027: expected_status}, max_retries)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _build_minimal_create_server_request(self, api, name\u003dNone,"},{"line_number":99,"context_line":"                                             image_uuid\u003dNone, flavor_id\u003dNone,"},{"line_number":100,"context_line":"                                             networks\u003dNone, az\u003dNone,"},{"line_number":101,"context_line":"                                             host\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_0cf3b06e","side":"PARENT","line":98,"range":{"start_line":98,"start_character":51,"end_line":98,"end_character":54},"in_reply_to":"3fa7e38b_3de01cf8","updated":"2019-12-12 22:42:15.000000000","message":"https://review.opendev.org/#/c/698813/","commit_id":"aff95de32a26b457b99b3e5a0de4ae35b25fa5f0"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d0831f4e20f821c51a06ea077950219c34cb78aa","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _wait_for_server_parameter("},{"line_number":78,"context_line":"            self, server, expected_params, max_retries\u003d10, api\u003dNone):"},{"line_number":79,"context_line":"        api \u003d api or getattr(self, \u0027admin_api\u0027, self.api)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        retry_count \u003d 0"},{"line_number":82,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e6a9e5dc","line":79,"updated":"2019-12-06 18:29:12.000000000","message":"Are we ever actually testing that _wait_for_server_parameter doesn\u0027t work for the user api?","commit_id":"7ae1a1091326292b02d879ae5410d5e7e78d3997"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fc3661365388071b5dfe0923bc0adbb94c0190bb","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def _wait_for_server_parameter("},{"line_number":78,"context_line":"            self, server, expected_params, max_retries\u003d10, api\u003dNone):"},{"line_number":79,"context_line":"        api \u003d api or getattr(self, \u0027admin_api\u0027, self.api)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        retry_count \u003d 0"},{"line_number":82,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a6bc4db5","line":79,"in_reply_to":"3fa7e38b_e6a9e5dc","updated":"2019-12-06 18:42:56.000000000","message":"There is one caller somewhere that need this, yes. Let me go find it.\n\nLater: yup, see [1]. That fails if we use the admin API since it\u0027s making sure the returned response doesn\u0027t include admin-only APIs. Personally, I\u0027d like to rework things so that \u0027self.api\u0027 is *always* a user API and do things like create instances with that unless we needed to use the admin one, just to make sure users can actually use what we\u0027re providing if we expect them to. However, this is a *huge* change that I\u0027ve kicked to touch for now.\n\n[1] https://review.opendev.org/#/c/697694/1/nova/tests/functional/test_server_faults.py@87","commit_id":"7ae1a1091326292b02d879ae5410d5e7e78d3997"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d0831f4e20f821c51a06ea077950219c34cb78aa","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # NOTE(takashin): In API version 2.36, image APIs were deprecated."},{"line_number":108,"context_line":"            # In API version 2.36 or greater, self.api.get_images() returns"},{"line_number":109,"context_line":"            # a 404 error. In that case, \u0027image_uuid\u0027 should be specified."},{"line_number":110,"context_line":"            image_uuid \u003d self.api.get_images()[0][\u0027id\u0027]"},{"line_number":111,"context_line":"        server[\u0027imageRef\u0027] \u003d image_uuid"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if not name:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_267dbd6c","line":110,"range":{"start_line":110,"start_character":25,"end_line":110,"end_character":33},"updated":"2019-12-06 18:29:12.000000000","message":"well, if this didn\u0027t break tests, I\u0027m good with it.","commit_id":"7ae1a1091326292b02d879ae5410d5e7e78d3997"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d0831f4e20f821c51a06ea077950219c34cb78aa","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        \"\"\"Polls the instance action events for the given instance, action,"},{"line_number":158,"context_line":"        event, and event result until it finds the event."},{"line_number":159,"context_line":"        \"\"\""},{"line_number":160,"context_line":"        api \u003d getattr(self, \u0027admin_api\u0027, self.api)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        actions \u003d []"},{"line_number":163,"context_line":"        events \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_868b5167","line":160,"range":{"start_line":160,"start_character":8,"end_line":160,"end_character":50},"updated":"2019-12-06 18:29:12.000000000","message":"ditto L79","commit_id":"7ae1a1091326292b02d879ae5410d5e7e78d3997"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d0831f4e20f821c51a06ea077950219c34cb78aa","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            # The API returns the newest event first"},{"line_number":167,"context_line":"            for action in actions:"},{"line_number":168,"context_line":"                if action[\u0027action\u0027] !\u003d action_name:"},{"line_number":169,"context_line":"                    continue"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"                events \u003d api.api_get("},{"line_number":172,"context_line":"                    \u0027/servers/%s/os-instance-actions/%s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_06ed2123","line":169,"updated":"2019-12-06 18:29:12.000000000","message":"this piece seems unrelated","commit_id":"7ae1a1091326292b02d879ae5410d5e7e78d3997"}]}
