)]}'
{"tempest/api/image/v2/test_images.py":[{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"ecb6383d1122840d4edb97384206395a50f66ad0","unresolved":true,"context_lines":[{"line_number":122,"context_line":"        test that distributed image import works (i.e. proxies the import"},{"line_number":123,"context_line":"        request to the proper worker)."},{"line_number":124,"context_line":"        \"\"\""},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            self.os_primary.image_client_remote.list_images()"},{"line_number":127,"context_line":"        except lib_exc.EndpointNotFound:"},{"line_number":128,"context_line":"            raise self.skipException(\u0027No image_remote service to test against\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"07363d8e_5eac6154","line":125,"range":{"start_line":125,"start_character":1,"end_line":125,"end_character":12},"updated":"2021-02-15 15:56:19.000000000","message":"as lines 125-128 are identical with the ones in the other test (153-166) maybe this part of the code could be put to a shared private method? oh, I see it\u0027s the same also in test_image_glance_direct_import, so maybe it\u0027s time to make it reusable.","commit_id":"149fb7a4bcb176c4a5544e0eb97398ec6dfb08a3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99e7e4aa6047d81813674a7ea7e341505a57516c","unresolved":true,"context_lines":[{"line_number":122,"context_line":"        test that distributed image import works (i.e. proxies the import"},{"line_number":123,"context_line":"        request to the proper worker)."},{"line_number":124,"context_line":"        \"\"\""},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            self.os_primary.image_client_remote.list_images()"},{"line_number":127,"context_line":"        except lib_exc.EndpointNotFound:"},{"line_number":128,"context_line":"            raise self.skipException(\u0027No image_remote service to test against\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f04cf721_c4062c33","line":125,"range":{"start_line":125,"start_character":1,"end_line":125,"end_character":12},"in_reply_to":"07363d8e_5eac6154","updated":"2021-02-15 15:59:45.000000000","message":"Sure, I can do that","commit_id":"149fb7a4bcb176c4a5544e0eb97398ec6dfb08a3"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"ecb6383d1122840d4edb97384206395a50f66ad0","unresolved":true,"context_lines":[{"line_number":130,"context_line":"        image \u003d self._create_image()"},{"line_number":131,"context_line":"        # Stage image data"},{"line_number":132,"context_line":"        file_content \u003d data_utils.random_bytes()"},{"line_number":133,"context_line":"        image_file \u003d six.BytesIO(file_content)"},{"line_number":134,"context_line":"        self.client.stage_image_file(image[\u0027id\u0027], image_file)"},{"line_number":135,"context_line":"        # Check image status is \u0027uploading\u0027"},{"line_number":136,"context_line":"        body \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"38eb34d4_442df5fd","line":133,"range":{"start_line":133,"start_character":21,"end_line":133,"end_character":32},"updated":"2021-02-15 15:56:19.000000000","message":"there are ongoing changes for six removal, could you write this without six in py3 way please, I think it\u0027s io.BytesIO","commit_id":"149fb7a4bcb176c4a5544e0eb97398ec6dfb08a3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99e7e4aa6047d81813674a7ea7e341505a57516c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        image \u003d self._create_image()"},{"line_number":131,"context_line":"        # Stage image data"},{"line_number":132,"context_line":"        file_content \u003d data_utils.random_bytes()"},{"line_number":133,"context_line":"        image_file \u003d six.BytesIO(file_content)"},{"line_number":134,"context_line":"        self.client.stage_image_file(image[\u0027id\u0027], image_file)"},{"line_number":135,"context_line":"        # Check image status is \u0027uploading\u0027"},{"line_number":136,"context_line":"        body \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"c4fd29e7_aaa9451a","line":133,"range":{"start_line":133,"start_character":21,"end_line":133,"end_character":32},"in_reply_to":"38eb34d4_442df5fd","updated":"2021-02-15 15:59:45.000000000","message":"Ack","commit_id":"149fb7a4bcb176c4a5544e0eb97398ec6dfb08a3"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"ecb6383d1122840d4edb97384206395a50f66ad0","unresolved":true,"context_lines":[{"line_number":158,"context_line":"        image \u003d self._create_image()"},{"line_number":159,"context_line":"        # Stage image data"},{"line_number":160,"context_line":"        file_content \u003d data_utils.random_bytes()"},{"line_number":161,"context_line":"        image_file \u003d six.BytesIO(file_content)"},{"line_number":162,"context_line":"        self.client.stage_image_file(image[\u0027id\u0027], image_file)"},{"line_number":163,"context_line":"        # Check image status is \u0027uploading\u0027"},{"line_number":164,"context_line":"        body \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"b1174064_a2cf9858","line":161,"range":{"start_line":161,"start_character":21,"end_line":161,"end_character":32},"updated":"2021-02-15 15:56:19.000000000","message":"ditto","commit_id":"149fb7a4bcb176c4a5544e0eb97398ec6dfb08a3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99e7e4aa6047d81813674a7ea7e341505a57516c","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        image \u003d self._create_image()"},{"line_number":159,"context_line":"        # Stage image data"},{"line_number":160,"context_line":"        file_content \u003d data_utils.random_bytes()"},{"line_number":161,"context_line":"        image_file \u003d six.BytesIO(file_content)"},{"line_number":162,"context_line":"        self.client.stage_image_file(image[\u0027id\u0027], image_file)"},{"line_number":163,"context_line":"        # Check image status is \u0027uploading\u0027"},{"line_number":164,"context_line":"        body \u003d self.client.show_image(image[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"2f9008f3_22c5a4d5","line":161,"range":{"start_line":161,"start_character":21,"end_line":161,"end_character":32},"in_reply_to":"b1174064_a2cf9858","updated":"2021-02-15 15:59:45.000000000","message":"Ack","commit_id":"149fb7a4bcb176c4a5544e0eb97398ec6dfb08a3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ae835a601e7f478725b944601e552fe317f875f5","unresolved":true,"context_lines":[{"line_number":74,"context_line":"        if method not in self.available_import_methods:"},{"line_number":75,"context_line":"            raise self.skipException(\u0027Server does not support \u0027"},{"line_number":76,"context_line":"                                     \u0027%s import method\u0027 % method)"},{"line_number":77,"context_line":"        if needs_remote:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                self.os_primary.image_client_remote.list_images()"},{"line_number":80,"context_line":"            except lib_exc.EndpointNotFound:"},{"line_number":81,"context_line":"                raise self.skipException(\u0027No image_remote service to test \u0027"},{"line_number":82,"context_line":"                                         \u0027against\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":85,"context_line":"    def test_image_glance_direct_import(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"f124137c_21d4f178","line":82,"range":{"start_line":77,"start_character":0,"end_line":82,"end_character":51},"updated":"2021-02-16 16:48:53.000000000","message":"we do not need this sanity check as auth will take care of it and raise EndpointNotFound if no corresponding endpoint is found.\n\nhttps://github.com/openstack/tempest/blob/9b6f441fdc2a970410ea631dc1318896349e010f/tempest/lib/auth.py#L557-L576","commit_id":"c90f8aa5a002678139b7a6596265559487265864"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"adbe372e01d1180600a33c8d9bcd4c193c87c568","unresolved":true,"context_lines":[{"line_number":74,"context_line":"        if method not in self.available_import_methods:"},{"line_number":75,"context_line":"            raise self.skipException(\u0027Server does not support \u0027"},{"line_number":76,"context_line":"                                     \u0027%s import method\u0027 % method)"},{"line_number":77,"context_line":"        if needs_remote:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                self.os_primary.image_client_remote.list_images()"},{"line_number":80,"context_line":"            except lib_exc.EndpointNotFound:"},{"line_number":81,"context_line":"                raise self.skipException(\u0027No image_remote service to test \u0027"},{"line_number":82,"context_line":"                                         \u0027against\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":85,"context_line":"    def test_image_glance_direct_import(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"0bad9061_9673dcc7","line":82,"range":{"start_line":77,"start_character":0,"end_line":82,"end_character":51},"in_reply_to":"f124137c_21d4f178","updated":"2021-02-16 16:58:25.000000000","message":"Discussed in IRC, this check is good to skip early. and we can make  /v2/info/import  APi call for fast response. \n\n\n----------------------------\n\u003cdansmith\u003e Dan Smith it\u0027s the other \"sanity check\" comment I\u0027m not sure about\n10:53 AM \u003cgmann\u003e Ghanshyam Mann ah\n10:54 AM dansmith: if you making import call on new endpoint then auth will take care the exception https://github.com/openstack/tempest/blob/9b6f441fdc2a970410ea631dc1318896349e010f/tempest/lib/auth.py#L557-L576\n10:54 AM dansmith: or you want early skip? \n10:54 AM so that we do not create image etc at all\n10:55 AM \u003cdansmith\u003e Dan Smith gmann: right... I could just do all the setup and then find out at the last minute that it\u0027s going to fail, but for an expected reaso,\n10:55 AM but everything else seems to skip early if we\u0027re not configured for something\n10:55 AM more efficient that way anyway\n10:56 AM gmann: that \"_require_import_method\" was my attempt to answer feedback from kopecmartin about a couple duplicated lines of initial checking,\n10:56 AM \u003cgmann\u003e Ghanshyam Mann dansmith: ok, +1. in that case we can query /v2/info/import or any other fast APi\n10:56 AM \u003cdansmith\u003e Dan Smith which I\u0027m not sure was really worth it for this reason since it pulls the context away, but..\n10:57 AM gmann: ah sure, that makes sense","commit_id":"c90f8aa5a002678139b7a6596265559487265864"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"648ac2ce2a177193aad75bae0989edaa6cdf85d0","unresolved":true,"context_lines":[{"line_number":74,"context_line":"        if method not in self.available_import_methods:"},{"line_number":75,"context_line":"            raise self.skipException(\u0027Server does not support \u0027"},{"line_number":76,"context_line":"                                     \u0027%s import method\u0027 % method)"},{"line_number":77,"context_line":"        if needs_remote:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                self.os_primary.image_client_remote.list_images()"},{"line_number":80,"context_line":"            except lib_exc.EndpointNotFound:"},{"line_number":81,"context_line":"                raise self.skipException(\u0027No image_remote service to test \u0027"},{"line_number":82,"context_line":"                                         \u0027against\u0027)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":85,"context_line":"    def test_image_glance_direct_import(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ab3e7f7_5eab0667","line":82,"range":{"start_line":77,"start_character":0,"end_line":82,"end_character":51},"in_reply_to":"f124137c_21d4f178","updated":"2021-02-16 16:58:36.000000000","message":"Talked about this with gmann on IRC. The desire in this code is to check for the alternate endpoint early and avoid doing any work if it\u0027s not there (common case). He pointed out that I should query something simpler here which will be (potentially) faster, so I\u0027ll do that.","commit_id":"c90f8aa5a002678139b7a6596265559487265864"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ae835a601e7f478725b944601e552fe317f875f5","unresolved":true,"context_lines":[{"line_number":144,"context_line":"        self.assertEqual(image[\u0027id\u0027], body[\u0027id\u0027])"},{"line_number":145,"context_line":"        self.assertEqual(\u0027uploading\u0027, body[\u0027status\u0027])"},{"line_number":146,"context_line":"        # import image from staging to backend, but on the alternate worker"},{"line_number":147,"context_line":"        self.os_primary.image_client_remote.image_import("},{"line_number":148,"context_line":"            image[\u0027id\u0027], method\u003d\u0027glance-direct\u0027)"},{"line_number":149,"context_line":"        self.client.wait_for_resource_activation(image[\u0027id\u0027])"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    @decorators.idempotent_id(\u002744d60544-1524-42f7-8899-315301105dd8\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"f38842ad_48aaa5b2","line":148,"range":{"start_line":147,"start_character":0,"end_line":148,"end_character":48},"updated":"2021-02-16 16:48:53.000000000","message":"For reviewer, this work fine in glance patch which enable the new endpoint.\n\nI can see new endpoint call (http://127.0.0.1:60998/v2) for GET and import API call and rest all on separate image endpoint- https://zuul.opendev.org/t/openstack/build/83e68c60b4294a689f8ec6eb91cdb159/log/controller/logs/tempest_log.txt#63100-63130","commit_id":"c90f8aa5a002678139b7a6596265559487265864"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"31f683b95a1513dee2a02a2e722516d59e2aa2d7","unresolved":true,"context_lines":[{"line_number":73,"context_line":"    def _require_import_method(self, method):"},{"line_number":74,"context_line":"        if method not in self.available_import_methods:"},{"line_number":75,"context_line":"            raise self.skipException(\u0027Server does not support \u0027"},{"line_number":76,"context_line":"                                     \u0027%s import method\u0027 % method)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":79,"context_line":"    def test_image_glance_direct_import(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7d24b741_45dcc6c0","line":76,"updated":"2021-02-16 19:16:04.000000000","message":"I thought that this method could have also the following common code:\n```\n     image \u003d self._create_image()\n     # Stage image data\n     file_content \u003d data_utils.random_bytes()\n     image_file \u003d six.BytesIO(file_content)\n     self.client.stage_image_file(image[\u0027id\u0027], image_file)\n     # Check image status is \u0027uploading\u0027\n     body \u003d self.client.show_image(image[\u0027id\u0027])\n     self.assertEqual(image[\u0027id\u0027], body[\u0027id\u0027])\n     self.assertEqual(\u0027uploading\u0027, body[\u0027status\u0027])\n     return image[\u0027id\u0027]\n```\nbecause basically test_image_glance_direct_import, test_remote_import and test_remote_delete are almost the same in terms of the prep - create image, stage image data and check for uploading status","commit_id":"1528bca66cea8f0e8a8cc71e0a67a9d49def5da7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"885254bb09c63b14e9e15b03ca45af7941a155a9","unresolved":true,"context_lines":[{"line_number":73,"context_line":"    def _require_import_method(self, method):"},{"line_number":74,"context_line":"        if method not in self.available_import_methods:"},{"line_number":75,"context_line":"            raise self.skipException(\u0027Server does not support \u0027"},{"line_number":76,"context_line":"                                     \u0027%s import method\u0027 % method)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @decorators.idempotent_id(\u002732ca0c20-e16f-44ac-8590-07869c9b4cc2\u0027)"},{"line_number":79,"context_line":"    def test_image_glance_direct_import(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"8f099c2b_23d3d285","line":76,"in_reply_to":"7d24b741_45dcc6c0","updated":"2021-02-16 19:28:00.000000000","message":"Sorry, I see what you were originally asking for now. I think the quoting caused me to thing you were specifically looking for something else.","commit_id":"1528bca66cea8f0e8a8cc71e0a67a9d49def5da7"}],"tempest/clients.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ae835a601e7f478725b944601e552fe317f875f5","unresolved":true,"context_lines":[{"line_number":88,"context_line":"                self.image_v2.NamespacePropertiesClient()"},{"line_number":89,"context_line":"            self.namespace_tags_client \u003d self.image_v2.NamespaceTagsClient()"},{"line_number":90,"context_line":"            self.image_versions_client \u003d self.image_v2.VersionsClient()"},{"line_number":91,"context_line":"            self.image_client_remote \u003d self.image_v2.ImagesClient("},{"line_number":92,"context_line":"                service\u003d\u0027image_remote\u0027)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _set_compute_clients(self):"},{"line_number":95,"context_line":"        self.agents_client \u003d self.compute.AgentsClient()"}],"source_content_type":"text/x-python","patch_set":4,"id":"90d2de28_d5bf65e6","line":92,"range":{"start_line":91,"start_character":39,"end_line":92,"end_character":39},"updated":"2021-02-16 16:48:53.000000000","message":"passing service direct here is ok for me but usually we can register this new endpoint as new service client module in services/clients.py[1] that way it is consistent and easy to expand the clients on this endpoint. But as this is very first feature (import via remote api server) in glance for remote server passing the endpoint info directly here is ok. If in future we have more remote-workable APIs operation in glance then we can think of doing it in services/clients.py#L46\n\n[1] https://github.com/openstack/tempest/blob/9b6f441fdc2a970410ea631dc1318896349e010f/tempest/lib/services/clients.py#L46","commit_id":"c90f8aa5a002678139b7a6596265559487265864"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ae835a601e7f478725b944601e552fe317f875f5","unresolved":true,"context_lines":[{"line_number":89,"context_line":"            self.namespace_tags_client \u003d self.image_v2.NamespaceTagsClient()"},{"line_number":90,"context_line":"            self.image_versions_client \u003d self.image_v2.VersionsClient()"},{"line_number":91,"context_line":"            self.image_client_remote \u003d self.image_v2.ImagesClient("},{"line_number":92,"context_line":"                service\u003d\u0027image_remote\u0027)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _set_compute_clients(self):"},{"line_number":95,"context_line":"        self.agents_client \u003d self.compute.AgentsClient()"}],"source_content_type":"text/x-python","patch_set":4,"id":"ee539642_3cd275c3","line":92,"range":{"start_line":92,"start_character":16,"end_line":92,"end_character":38},"updated":"2021-02-16 16:48:53.000000000","message":"this work fine on devstack installation where new endpoint with this name is created but not on any other env where endpoint name can vary. We need to make it configurable along with the service name (catalog_type), region, and endpoint_type like done for any other service endpoint\n- https://github.com/openstack/tempest/blob/2e54442af0c5ed5fb895fb53a112a6f241b740e8/tempest/config.py#L646-L655\n\nThese are used by auth to select the appropriate endpoint to make API call.","commit_id":"c90f8aa5a002678139b7a6596265559487265864"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4d1faf06e1fa2b6659ffe67dc312ab24d43021d4","unresolved":true,"context_lines":[{"line_number":89,"context_line":"            self.namespace_tags_client \u003d self.image_v2.NamespaceTagsClient()"},{"line_number":90,"context_line":"            self.image_versions_client \u003d self.image_v2.VersionsClient()"},{"line_number":91,"context_line":"            self.image_client_remote \u003d self.image_v2.ImagesClient("},{"line_number":92,"context_line":"                service\u003d\u0027image_remote\u0027)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _set_compute_clients(self):"},{"line_number":95,"context_line":"        self.agents_client \u003d self.compute.AgentsClient()"}],"source_content_type":"text/x-python","patch_set":4,"id":"08e89c24_0d020de9","line":92,"range":{"start_line":92,"start_character":16,"end_line":92,"end_character":38},"in_reply_to":"617a89a3_c6860bbc","updated":"2021-02-16 17:35:57.000000000","message":"yes, region and endpoint_type also can be with default as for image and other services.","commit_id":"c90f8aa5a002678139b7a6596265559487265864"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"648ac2ce2a177193aad75bae0989edaa6cdf85d0","unresolved":true,"context_lines":[{"line_number":89,"context_line":"            self.namespace_tags_client \u003d self.image_v2.NamespaceTagsClient()"},{"line_number":90,"context_line":"            self.image_versions_client \u003d self.image_v2.VersionsClient()"},{"line_number":91,"context_line":"            self.image_client_remote \u003d self.image_v2.ImagesClient("},{"line_number":92,"context_line":"                service\u003d\u0027image_remote\u0027)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _set_compute_clients(self):"},{"line_number":95,"context_line":"        self.agents_client \u003d self.compute.AgentsClient()"}],"source_content_type":"text/x-python","patch_set":4,"id":"617a89a3_c6860bbc","line":92,"range":{"start_line":92,"start_character":16,"end_line":92,"end_character":38},"in_reply_to":"ee539642_3cd275c3","updated":"2021-02-16 16:58:36.000000000","message":"Okay, I\u0027ll make the remote name configurable in tempest. Devstack can remain opinionated about the name and just configure tempest for \"image_remote\" right?","commit_id":"c90f8aa5a002678139b7a6596265559487265864"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c78c8f6e614cad09bd3d0eef0b25f38718efa447","unresolved":true,"context_lines":[{"line_number":93,"context_line":"            # If your test needs to know if these are different, check the"},{"line_number":94,"context_line":"            # config option to see if the alternate_image_endpoint is set."},{"line_number":95,"context_line":"            self.image_client_remote \u003d self.image_v2.ImagesClient("},{"line_number":96,"context_line":"                service\u003dCONF.image_feature_enabled.alternate_image_endpoint)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def _set_compute_clients(self):"},{"line_number":99,"context_line":"        self.agents_client \u003d self.compute.AgentsClient()"}],"source_content_type":"text/x-python","patch_set":8,"id":"277cc1ab_bea610d5","line":96,"range":{"start_line":96,"start_character":75,"end_line":96,"end_character":76},"updated":"2021-03-03 22:50:36.000000000","message":"and here we can pass region and endpoint_type from config.","commit_id":"4316f8b97040f7cfc8dcb4d75bc92d1daf03d540"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6ac87fb0881d2cafceb8c5b6589a74241e8590e9","unresolved":true,"context_lines":[{"line_number":94,"context_line":"            # config option to see if the alternate_image_endpoint is set."},{"line_number":95,"context_line":"            self.image_client_remote \u003d self.image_v2.ImagesClient("},{"line_number":96,"context_line":"                service\u003dCONF.image.alternate_image_endpoint,"},{"line_number":97,"context_line":"                endpoint_type\u003dCONF.image.alternate_image_endpoint_type)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def _set_compute_clients(self):"},{"line_number":100,"context_line":"        self.agents_client \u003d self.compute.AgentsClient()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9937eb74_bd85cbba","line":97,"range":{"start_line":97,"start_character":70,"end_line":97,"end_character":71},"updated":"2021-03-05 13:32:10.000000000","message":"let\u0027s pass CONF.identity.regionat least in case few env has different region for glance where this new remote glance will be there.","commit_id":"d4bc9a8b64cb03508856f174f3e07d8bdc143260"}],"tempest/config.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c78c8f6e614cad09bd3d0eef0b25f38718efa447","unresolved":true,"context_lines":[{"line_number":713,"context_line":"    cfg.BoolOpt(\u0027os_glance_reserved\u0027,"},{"line_number":714,"context_line":"                default\u003dFalse,"},{"line_number":715,"context_line":"                help\u003d\"Should we check that os_glance namespace is reserved\"),"},{"line_number":716,"context_line":"    cfg.StrOpt(\u0027alternate_image_endpoint\u0027,"},{"line_number":717,"context_line":"               default\u003dNone,"},{"line_number":718,"context_line":"               help\u003d\"Alternate endpoint name for cross-worker testing\"),"},{"line_number":719,"context_line":"]"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"network_group \u003d cfg.OptGroup(name\u003d\u0027network\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"8a08c34b_d048d904","line":718,"range":{"start_line":716,"start_character":0,"end_line":718,"end_character":72},"updated":"2021-03-03 22:50:36.000000000","message":"also add all these new config option in \u0027image\u0027 group at L659 where primary glance endpoints config options are.","commit_id":"4316f8b97040f7cfc8dcb4d75bc92d1daf03d540"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c78c8f6e614cad09bd3d0eef0b25f38718efa447","unresolved":true,"context_lines":[{"line_number":715,"context_line":"                help\u003d\"Should we check that os_glance namespace is reserved\"),"},{"line_number":716,"context_line":"    cfg.StrOpt(\u0027alternate_image_endpoint\u0027,"},{"line_number":717,"context_line":"               default\u003dNone,"},{"line_number":718,"context_line":"               help\u003d\"Alternate endpoint name for cross-worker testing\"),"},{"line_number":719,"context_line":"]"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"network_group \u003d cfg.OptGroup(name\u003d\u0027network\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"e95c8346_9e7e5828","line":718,"range":{"start_line":718,"start_character":71,"end_line":718,"end_character":72},"updated":"2021-03-03 22:50:36.000000000","message":"let\u0027s add region and endpoint_type also for this in case any env has multiple endpoints for this alternate server and want to query on specific endpoint. Currently default region is \u0027RegionOne\u0027 and endpoint_type is \u0027publicURL\u0027 and if they do not match then very first endpoint will be picked. We can keep them with default value same as L649, L655 and do not need to set form devstack.\n\nsomething like below:\n    alternate_image_region \n    alternate_image_endpoint_type","commit_id":"4316f8b97040f7cfc8dcb4d75bc92d1daf03d540"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d71e1ba3798daaaa1cddead62950640a47e29e47","unresolved":false,"context_lines":[{"line_number":713,"context_line":"    cfg.BoolOpt(\u0027os_glance_reserved\u0027,"},{"line_number":714,"context_line":"                default\u003dFalse,"},{"line_number":715,"context_line":"                help\u003d\"Should we check that os_glance namespace is reserved\"),"},{"line_number":716,"context_line":"    cfg.StrOpt(\u0027alternate_image_endpoint\u0027,"},{"line_number":717,"context_line":"               default\u003dNone,"},{"line_number":718,"context_line":"               help\u003d\"Alternate endpoint name for cross-worker testing\"),"},{"line_number":719,"context_line":"]"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"network_group \u003d cfg.OptGroup(name\u003d\u0027network\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fce693b_02c85080","line":718,"range":{"start_line":716,"start_character":0,"end_line":718,"end_character":72},"in_reply_to":"8a08c34b_d048d904","updated":"2021-03-03 22:54:08.000000000","message":"Ack","commit_id":"4316f8b97040f7cfc8dcb4d75bc92d1daf03d540"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d71e1ba3798daaaa1cddead62950640a47e29e47","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                help\u003d\"Should we check that os_glance namespace is reserved\"),"},{"line_number":716,"context_line":"    cfg.StrOpt(\u0027alternate_image_endpoint\u0027,"},{"line_number":717,"context_line":"               default\u003dNone,"},{"line_number":718,"context_line":"               help\u003d\"Alternate endpoint name for cross-worker testing\"),"},{"line_number":719,"context_line":"]"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"network_group \u003d cfg.OptGroup(name\u003d\u0027network\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ee3ea8bf_cc5a5e1a","line":718,"range":{"start_line":718,"start_character":71,"end_line":718,"end_character":72},"in_reply_to":"e95c8346_9e7e5828","updated":"2021-03-03 22:54:08.000000000","message":"Ack","commit_id":"4316f8b97040f7cfc8dcb4d75bc92d1daf03d540"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"51beb7595b2c38c5121488f361ef91601b849eef","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                help\u003d\"Should we check that os_glance namespace is reserved\"),"},{"line_number":716,"context_line":"    cfg.StrOpt(\u0027alternate_image_endpoint\u0027,"},{"line_number":717,"context_line":"               default\u003dNone,"},{"line_number":718,"context_line":"               help\u003d\"Alternate endpoint name for cross-worker testing\"),"},{"line_number":719,"context_line":"]"},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"network_group \u003d cfg.OptGroup(name\u003d\u0027network\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"36ffff3e_326b9682","line":718,"range":{"start_line":718,"start_character":71,"end_line":718,"end_character":72},"in_reply_to":"ee3ea8bf_cc5a5e1a","updated":"2021-03-03 23:05:33.000000000","message":"Coming back to this, I guess it probably doesn\u0027t hurt, but... does it make sense to let this differ by region? The test/feature only works if the two glance endpoints we\u0027re hitting are backed by the same glance DB (i.e. they are the *same* glance). If you have a glance in each region, they\u0027re (or should be) different databases and fully independent, which will mean we can\u0027t import across them anyway.\n\nI will just add endpoint_type for now, until you review this and I\u0027ll add region if you say it makes sense.","commit_id":"4316f8b97040f7cfc8dcb4d75bc92d1daf03d540"}]}
