)]}'
{"tempest/api/image/v2/test_images.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cf61e02282588c6b029d0f71aced7157d32157b5","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":37,"context_line":"    def test_image_import_inject_metadata(self):"},{"line_number":38,"context_line":"        \"\"\"Here we test these functionalities"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        Create image, stage image data, import image and verify"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_4861d6a8","line":37,"updated":"2020-07-16 14:50:09.000000000","message":"I think you should s/_inject_metadata// and make this just an import test for the reason below. Also, don\u0027t you need to probe the API to see if glance is deployed with import enabled? If not, this test should skip I think.","commit_id":"2fdf78f75c170111f23a054e1f3e063454d8dd39"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0709dbb4b88f2a6646ab45539d611c9ebef4ae61","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":37,"context_line":"    def test_image_import_inject_metadata(self):"},{"line_number":38,"context_line":"        \"\"\"Here we test these functionalities"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        Create image, stage image data, import image and verify"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_db192ed1","line":37,"in_reply_to":"bf51134e_4861d6a8","updated":"2020-07-16 16:03:33.000000000","message":"Import workflow is enabled by default. We have removed config option which used to check if import workflow is enabled or not.\n\nhttps://review.opendev.org/#/c/572534/","commit_id":"2fdf78f75c170111f23a054e1f3e063454d8dd39"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2fbf78168c8cea500f5419ee95e729a6e607a7ed","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":37,"context_line":"    def test_image_import_inject_metadata(self):"},{"line_number":38,"context_line":"        \"\"\"Here we test these functionalities"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        Create image, stage image data, import image and verify"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_7ef0d0fd","line":37,"in_reply_to":"bf51134e_5e7eac69","updated":"2020-07-16 16:34:24.000000000","message":"No, we don\u0027t","commit_id":"2fdf78f75c170111f23a054e1f3e063454d8dd39"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"aa421cd95775fbe1829ab77c095f0a0073742ee0","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":37,"context_line":"    def test_image_import_inject_metadata(self):"},{"line_number":38,"context_line":"        \"\"\"Here we test these functionalities"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        Create image, stage image data, import image and verify"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_9ed8447f","line":37,"in_reply_to":"bf51134e_5e7eac69","updated":"2020-07-16 16:34:50.000000000","message":"This:\n\n https://docs.openstack.org/api-ref/image/v2/index.html?expanded\u003dimport-methods-and-values-discovery-detail#import-methods-and-values-discovery\n\nGlance should be able to not expose any methods if it\u0027s running in wsgi mode. Does it not do that?","commit_id":"2fdf78f75c170111f23a054e1f3e063454d8dd39"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bb64d01587fba3afd494f51038d924330b69bc25","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":37,"context_line":"    def test_image_import_inject_metadata(self):"},{"line_number":38,"context_line":"        \"\"\"Here we test these functionalities"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        Create image, stage image data, import image and verify"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_3e6138aa","line":37,"in_reply_to":"bf51134e_9ed8447f","updated":"2020-07-16 16:46:28.000000000","message":"We can also make devstack set enabled_import_methods\u003d\"\" if that\u0027s the way, but it seems like if glance knows that these will never work with wsgi mode, it should refuse to expose them if/when it\u0027s deployed like that.","commit_id":"2fdf78f75c170111f23a054e1f3e063454d8dd39"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d5b86a4dceda524772820121cf40e76afcb41a6b","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":36,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":37,"context_line":"    def test_image_import_inject_metadata(self):"},{"line_number":38,"context_line":"        \"\"\"Here we test these functionalities"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        Create image, stage image data, import image and verify"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_5e7eac69","line":37,"in_reply_to":"bf51134e_db192ed1","updated":"2020-07-16 16:30:48.000000000","message":"If glance is in uwsgi mode then import will not work. This test can\u0027t fail in that case, because tempest has no control over how the deployment was configured. That\u0027s why this is failing on all the stable jobs.\n\nDoesn\u0027t glance expose a capability via the API that the client uses to determine if import is possible?","commit_id":"2fdf78f75c170111f23a054e1f3e063454d8dd39"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cf61e02282588c6b029d0f71aced7157d32157b5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self.client.image_import(image[\u0027id\u0027])"},{"line_number":74,"context_line":"        self.client.wait_for_resource_activation(image[\u0027id\u0027])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # Check metadata is injected to image"},{"line_number":77,"context_line":"        body \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":78,"context_line":"        self.assertEqual(\u0027active\u0027, body[\u0027status\u0027])"},{"line_number":79,"context_line":"        self.assertEqual(\u0027doyouseeme?\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_c84b2628","line":76,"updated":"2020-07-16 14:50:09.000000000","message":"Since this is config-based, I think you probably should not depend on this from a tempest test. If someone runs this against their own deployment without the same config that I added in that job, it will fail.","commit_id":"2fdf78f75c170111f23a054e1f3e063454d8dd39"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0709dbb4b88f2a6646ab45539d611c9ebef4ae61","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self.client.image_import(image[\u0027id\u0027])"},{"line_number":74,"context_line":"        self.client.wait_for_resource_activation(image[\u0027id\u0027])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # Check metadata is injected to image"},{"line_number":77,"context_line":"        body \u003d self.client.show_image(image[\u0027id\u0027])"},{"line_number":78,"context_line":"        self.assertEqual(\u0027active\u0027, body[\u0027status\u0027])"},{"line_number":79,"context_line":"        self.assertEqual(\u0027doyouseeme?\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_1b7d66e6","line":76,"in_reply_to":"bf51134e_c84b2628","updated":"2020-07-16 16:03:33.000000000","message":"Makes sense","commit_id":"2fdf78f75c170111f23a054e1f3e063454d8dd39"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"04cb012442110a0895c47890dd1b869a8785d349","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def test_image_import(self):"},{"line_number":37,"context_line":"        \"\"\"Here we test these functionalities"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        Create image, stage image data, import image and verify"},{"line_number":40,"context_line":"        metadata is injected to image."},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        body \u003d self.client.info_import()"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_720b9f2a","line":40,"range":{"start_line":39,"start_character":57,"end_line":40,"end_character":37},"updated":"2020-07-21 21:50:20.000000000","message":"can we verify it via API? or updating images or adding tags should be ok to verify if image is imported fine ?","commit_id":"3663bfaf0fe0a168bd2114eb23f834ea315b8f21"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"297754b62b6175462889be2b8a17eae58e8aed9d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def test_image_import(self):"},{"line_number":37,"context_line":"        \"\"\"Here we test these functionalities"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        Create image, stage image data, import image and verify"},{"line_number":40,"context_line":"        metadata is injected to image."},{"line_number":41,"context_line":"        \"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        body \u003d self.client.info_import()"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_208b9268","line":40,"range":{"start_line":39,"start_character":57,"end_line":40,"end_character":37},"in_reply_to":"bf51134e_720b9f2a","updated":"2020-07-21 21:59:30.000000000","message":"This was left over from a previous discussion I had with Abhi where I explained we can\u0027t really depend on the job\u0027s metadata injection here. We were going to remove it, we just haven\u0027t yet.\n\nBut, as we just discussed on IRC, if the image goes from queued-\u003eactive then we know the import worked.","commit_id":"3663bfaf0fe0a168bd2114eb23f834ea315b8f21"}],"tempest/lib/services/image/v2/images_client.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"04cb012442110a0895c47890dd1b869a8785d349","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        body \u003d json.loads(body)"},{"line_number":190,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def image_import(self, image_id, method\u003d\u0027glance-direct\u0027):"},{"line_number":193,"context_line":"        \"\"\"Import data from staging area to glance store."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_c3c3c737","line":192,"range":{"start_line":192,"start_character":59,"end_line":192,"end_character":61},"updated":"2020-07-21 21:50:20.000000000","message":"let\u0027s take **kwargs also for other optional request body parameter like \u0027all_stores\u0027 \u0027stores\u0027 etc","commit_id":"3663bfaf0fe0a168bd2114eb23f834ea315b8f21"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"6b2b6db9cd29de820c8c8a234915ae5e3e08b211","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            \"method\": {"},{"line_number":203,"context_line":"                \"name\": method"},{"line_number":204,"context_line":"            },"},{"line_number":205,"context_line":"            \"all_stores\": stores \u003d\u003d None,"},{"line_number":206,"context_line":"            \"all_stores_must_succeed\": all_stores_must_succeed,"},{"line_number":207,"context_line":"        }"},{"line_number":208,"context_line":"        if stores:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_c93921f3","line":205,"updated":"2020-07-22 03:38:33.000000000","message":"pep8: E711 comparison to None should be \u0027if cond is None:\u0027","commit_id":"821fda02f182bd5d42d5e44313e041f8216a6e81"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"9fade6ca678ee6f6c9af7b519bd26d689de7eea2","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            \"method\": {"},{"line_number":203,"context_line":"                \"name\": method"},{"line_number":204,"context_line":"            },"},{"line_number":205,"context_line":"            \"all_stores\": stores \u003d\u003d None,"},{"line_number":206,"context_line":"            \"all_stores_must_succeed\": all_stores_must_succeed,"},{"line_number":207,"context_line":"        }"},{"line_number":208,"context_line":"        if stores:"},{"line_number":209,"context_line":"            data[\"stores\"] \u003d stores"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf51134e_6f90d543","line":206,"range":{"start_line":205,"start_character":12,"end_line":206,"end_character":63},"updated":"2020-07-22 06:56:23.000000000","message":"This needs to be pass in body only if enabled_backends is set in glance-api.conf. We can find it by running discover call stores-info.\n\nOtherwise it will always return 400 BadRequest","commit_id":"821fda02f182bd5d42d5e44313e041f8216a6e81"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4cb9f38e358408f9936dbeac2fb548f00aa0c0d2","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            }"},{"line_number":231,"context_line":"            \"all_stores\": all_stores if all_stores else stores is None,"},{"line_number":232,"context_line":"        }"},{"line_number":233,"context_line":"        if self._check_multistore():"},{"line_number":234,"context_line":"            if stores:"},{"line_number":235,"context_line":"                data[\"stores\"] \u003d stores"},{"line_number":236,"context_line":"            if all_stores_must_succeed is None:"},{"line_number":237,"context_line":"                all_stores_must_succeed \u003d True"},{"line_number":238,"context_line":"            data[\u0027all_stores_must_succeed\u0027] \u003d all_stores_must_succeed"},{"line_number":239,"context_line":"        else:"},{"line_number":240,"context_line":"            exc \u003d lib_exc.InvalidConfiguration("},{"line_number":241,"context_line":"                \u0027Server does not support multiple stores\u0027)"},{"line_number":242,"context_line":"            if stores is not None or all_stores_must_succeed is not None:"},{"line_number":243,"context_line":"                raise exc"},{"line_number":244,"context_line":"        data \u003d json.dumps(data)"},{"line_number":245,"context_line":"        headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":246,"context_line":"        resp, _ \u003d self.post(url, data, headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf51134e_59b94ac9","line":243,"range":{"start_line":233,"start_character":0,"end_line":243,"end_character":25},"updated":"2020-07-22 18:09:35.000000000","message":"we can just pass to API what test want to pass and return what API return. and test side we can control if they are passing all_stores_must_succeed based on glance backends configuration.","commit_id":"bf89a61c354de8bace32394d6df93529cb249625"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"87f8ec4c179aa0a0f818e4287e3d1aa0e96e3b50","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        body \u003d json.loads(body)"},{"line_number":190,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def has_multistore(self):"},{"line_number":193,"context_line":"        \"\"\"Check (once) to see if server has multistore enabled."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        :returns: Boolean indicating multi-store support"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf51134e_191b52ca","line":192,"range":{"start_line":192,"start_character":8,"end_line":192,"end_character":22},"updated":"2020-07-22 18:18:18.000000000","message":"info_store() ? as it will return the resp body","commit_id":"eb9fa0b079f566e526771fe442f256c59c6d6a58"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"87f8ec4c179aa0a0f818e4287e3d1aa0e96e3b50","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        if hasattr(self, \u0027_has_multistore\u0027):"},{"line_number":198,"context_line":"            return self._has_multistore"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        resp, body \u003d self.get(\u0027info/import\u0027)"},{"line_number":201,"context_line":"        body \u003d json.loads(body)"},{"line_number":202,"context_line":"        self._has_multistore \u003d len(body[\u0027stores\u0027]) \u003e 0"},{"line_number":203,"context_line":"        return self._has_multistore"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf51134e_19ed12b7","line":200,"range":{"start_line":200,"start_character":31,"end_line":200,"end_character":42},"updated":"2020-07-22 18:18:18.000000000","message":"info/stores","commit_id":"eb9fa0b079f566e526771fe442f256c59c6d6a58"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"87f8ec4c179aa0a0f818e4287e3d1aa0e96e3b50","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        resp, body \u003d self.get(\u0027info/import\u0027)"},{"line_number":201,"context_line":"        body \u003d json.loads(body)"},{"line_number":202,"context_line":"        self._has_multistore \u003d len(body[\u0027stores\u0027]) \u003e 0"},{"line_number":203,"context_line":"        return self._has_multistore"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def image_import(self, image_id, method\u003d\u0027glance-direct\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf51134e_79124eb6","line":202,"range":{"start_line":202,"start_character":31,"end_line":202,"end_character":54},"updated":"2020-07-22 18:18:18.000000000","message":"let\u0027s return body here as copy-image tests need what all stores are enabled to verify if image is copied or not","commit_id":"eb9fa0b079f566e526771fe442f256c59c6d6a58"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"116d08ec2e90bcd5cd7e59c8884255b4adc78b8b","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def info_stores(self):"},{"line_number":193,"context_line":"        \"\"\"Return information about server-supported stores.\"\"\""},{"line_number":194,"context_line":"        url \u003d \u0027info/import\u0027"},{"line_number":195,"context_line":"        resp, body \u003d self.get()"},{"line_number":196,"context_line":"        body \u003d json.loads(body)"},{"line_number":197,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf51134e_19f7d25b","line":194,"range":{"start_line":194,"start_character":15,"end_line":194,"end_character":26},"updated":"2020-07-22 18:22:54.000000000","message":"url for store is \u0027info/stores\u0027","commit_id":"dbf89e6373a0dde7a56c4fb285fbdf43d913ff62"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"751235988a8733f946afbd047ed16842251a970e","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    def info_stores(self):"},{"line_number":193,"context_line":"        \"\"\"Return information about server-supported stores.\"\"\""},{"line_number":194,"context_line":"        url \u003d \u0027info/stores\u0027"},{"line_number":195,"context_line":"        resp, body \u003d self.get()"},{"line_number":196,"context_line":"        body \u003d json.loads(body)"},{"line_number":197,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_ed6a1819","line":195,"range":{"start_line":195,"start_character":29,"end_line":195,"end_character":31},"updated":"2020-07-22 22:06:51.000000000","message":"url is missing here.","commit_id":"f75ab80a9e9d24906c15bac11d22d45eacef627b"}]}
