)]}'
{"glance_store/_drivers/swift/store.py":[{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"aac3f55c22bed1172ba1bd4f75147575551b75b4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":"import math"},{"line_number":21,"context_line":"try:"},{"line_number":22,"context_line":"    from keystoneclient import service_catalog as keystone_sc"},{"line_number":23,"context_line":"except ImportError:"},{"line_number":24,"context_line":"    keystone_sc \u003d None"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_6d834205","line":22,"updated":"2016-01-29 00:57:48.000000000","message":"You may want to add keystoneclient to the optional dependency.","commit_id":"51b8466edae343af07af40d97265d83274035c57"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"504404c45737e98f795a8dd0889eda2fc12874f1","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":"import math"},{"line_number":21,"context_line":"try:"},{"line_number":22,"context_line":"    from keystoneclient import service_catalog as keystone_sc"},{"line_number":23,"context_line":"except ImportError:"},{"line_number":24,"context_line":"    keystone_sc \u003d None"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_6a96baf1","line":22,"in_reply_to":"7a5de9d1_6d834205","updated":"2016-01-29 08:52:41.000000000","message":"Will do, thanks!","commit_id":"51b8466edae343af07af40d97265d83274035c57"},{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"aac3f55c22bed1172ba1bd4f75147575551b75b4","unresolved":false,"context_lines":[{"line_number":875,"context_line":"                                                   reason\u003dreason)"},{"line_number":876,"context_line":"        self.storage_url \u003d self.conf_endpoint"},{"line_number":877,"context_line":"        if not self.storage_url:"},{"line_number":878,"context_line":"            if callable(hasattr(context.service_catalog, \"url_for\")):"},{"line_number":879,"context_line":"                self.storage_url \u003d context.service_catalog.url_for("},{"line_number":880,"context_line":"                    service_type\u003dself.service_type, region_name\u003dself.region,"},{"line_number":881,"context_line":"                    endpoint_type\u003dself.endpoint_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_adb7fad6","line":878,"updated":"2016-01-29 00:57:48.000000000","message":"If we are sure about the service catalog not being the keystoneclient.service_catalog.ServiceCatalogV2, why do we need this check ? We could just do the latter.","commit_id":"51b8466edae343af07af40d97265d83274035c57"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"504404c45737e98f795a8dd0889eda2fc12874f1","unresolved":false,"context_lines":[{"line_number":875,"context_line":"                                                   reason\u003dreason)"},{"line_number":876,"context_line":"        self.storage_url \u003d self.conf_endpoint"},{"line_number":877,"context_line":"        if not self.storage_url:"},{"line_number":878,"context_line":"            if callable(hasattr(context.service_catalog, \"url_for\")):"},{"line_number":879,"context_line":"                self.storage_url \u003d context.service_catalog.url_for("},{"line_number":880,"context_line":"                    service_type\u003dself.service_type, region_name\u003dself.region,"},{"line_number":881,"context_line":"                    endpoint_type\u003dself.endpoint_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_5d9ceabf","line":878,"in_reply_to":"7a5de9d1_adb7fad6","updated":"2016-01-29 08:52:41.000000000","message":"I was thinking about that.\nI would like to implement the following approach:\n1. Make glance_store support both ServiceCatalog and simple list with service endpoints. We need to be backward compatible because users can upgrade glance_store but do not upgrade glance. So he will get errors if we will accept ServiceCatalog only.\n2. Implement ServiceCatalog in glance.\n3. Cap glance_store version in glance requirements.\n4. Remove support of simple list from glance.\nWDYT about that?","commit_id":"51b8466edae343af07af40d97265d83274035c57"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"8640e1babea4d58a08ace55e56ad94c1ddd17937","unresolved":false,"context_lines":[{"line_number":884,"context_line":"                    endpoint_type\u003dself.endpoint_type)"},{"line_number":885,"context_line":"            else:"},{"line_number":886,"context_line":"                sc \u003d {\u0027serviceCatalog\u0027: context.service_catalog}"},{"line_number":887,"context_line":"                self.storage_url \u003d keystone_sc.ServiceCatalogV2(sc).url_for("},{"line_number":888,"context_line":"                    service_type\u003dself.service_type, region_name\u003dself.region,"},{"line_number":889,"context_line":"                    endpoint_type\u003dself.endpoint_type)"},{"line_number":890,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_ef48ce2f","line":887,"updated":"2016-02-10 13:04:56.000000000","message":"ServiceCatalog is in V2 format: so it should be safe:\nhttps://github.com/openstack/keystonemiddleware/blob/a52eb9860cb4ce69857eb97d19a54dce95e3e8a0/keystonemiddleware/auth_token/_request.py#L176","commit_id":"5f63f7a0e62471c5925ef096feaf2f745359c11c"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"494359b056411cdb37906766a51b4b624da9bcbe","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":"import math"},{"line_number":21,"context_line":"try:"},{"line_number":22,"context_line":"    from keystoneclient import service_catalog as keystone_sc"},{"line_number":23,"context_line":"except ImportError:"},{"line_number":24,"context_line":"    keystone_sc \u003d None"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a57f1b5_946285d7","line":22,"updated":"2016-02-10 13:20:37.000000000","message":"Why do we need this? Do we expect keystoneclient not to be installed? Do we really want to keep this as an optional dependency?","commit_id":"2b3c171d3ee69d05e34b093a892e3a656af4d8a5"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"c75f5e2923ed21527ad4f23c99e430e0f81c3d19","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import logging"},{"line_number":20,"context_line":"import math"},{"line_number":21,"context_line":"try:"},{"line_number":22,"context_line":"    from keystoneclient import service_catalog as keystone_sc"},{"line_number":23,"context_line":"except ImportError:"},{"line_number":24,"context_line":"    keystone_sc \u003d None"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a57f1b5_dad82756","line":22,"in_reply_to":"3a57f1b5_946285d7","updated":"2016-02-10 13:48:28.000000000","message":"I think we can make it required (not optional).","commit_id":"2b3c171d3ee69d05e34b093a892e3a656af4d8a5"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"494359b056411cdb37906766a51b4b624da9bcbe","unresolved":false,"context_lines":[{"line_number":884,"context_line":"                    endpoint_type\u003dself.endpoint_type)"},{"line_number":885,"context_line":"            else:"},{"line_number":886,"context_line":"                sc \u003d {\u0027serviceCatalog\u0027: context.service_catalog}"},{"line_number":887,"context_line":"                self.storage_url \u003d keystone_sc.ServiceCatalogV2(sc).url_for("},{"line_number":888,"context_line":"                    service_type\u003dself.service_type, region_name\u003dself.region,"},{"line_number":889,"context_line":"                    endpoint_type\u003dself.endpoint_type)"},{"line_number":890,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a57f1b5_742b4983","line":887,"updated":"2016-02-10 13:20:37.000000000","message":"We should check that `keystone_sc` is not `None`","commit_id":"2b3c171d3ee69d05e34b093a892e3a656af4d8a5"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"c75f5e2923ed21527ad4f23c99e430e0f81c3d19","unresolved":false,"context_lines":[{"line_number":884,"context_line":"                    endpoint_type\u003dself.endpoint_type)"},{"line_number":885,"context_line":"            else:"},{"line_number":886,"context_line":"                sc \u003d {\u0027serviceCatalog\u0027: context.service_catalog}"},{"line_number":887,"context_line":"                self.storage_url \u003d keystone_sc.ServiceCatalogV2(sc).url_for("},{"line_number":888,"context_line":"                    service_type\u003dself.service_type, region_name\u003dself.region,"},{"line_number":889,"context_line":"                    endpoint_type\u003dself.endpoint_type)"},{"line_number":890,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a57f1b5_bac76b11","line":887,"in_reply_to":"3a57f1b5_742b4983","updated":"2016-02-10 13:48:28.000000000","message":"Not required in the new PS.","commit_id":"2b3c171d3ee69d05e34b093a892e3a656af4d8a5"}],"glance_store/tests/unit/test_swift_store.py":[{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"6133913ad74f465e9e873f45b6b0b3e605bc5415","unresolved":false,"context_lines":[{"line_number":1489,"context_line":"    def test_multi_tenant_location_http(self):"},{"line_number":1490,"context_line":"        store \u003d swift.MultiTenantStore(self.conf)"},{"line_number":1491,"context_line":"        store.configure()"},{"line_number":1492,"context_line":"        self.ctxt.service_catalog[0][\u0027endpoints\u0027][0][\u0027publicURL\u0027] \u003d \\"},{"line_number":1493,"context_line":"            \u0027http://some_endpoint\u0027"},{"line_number":1494,"context_line":"        location \u003d store.create_location(\u0027image-id\u0027, context\u003dself.ctxt)"},{"line_number":1495,"context_line":"        self.assertEqual(\u0027swift+http\u0027, location.scheme)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a57f1b5_479c45c0","line":1492,"updated":"2016-02-10 21:34:44.000000000","message":"Nit:  \u0027\\\u0027, really ? :D","commit_id":"8677f9287761d848d529aed9ecf2cb2800b5418c"}]}
