)]}'
{"keystone/catalog/backends/templated.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7b8ffbe3082b52e9285fa618b2b2a208828366f8","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                service \u003d region[service_name]"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"                service_v3 \u003d {"},{"line_number":136,"context_line":"                    \u0027id\u0027: \u0027%s-%s\u0027 % (region_name, service_name),"},{"line_number":137,"context_line":"                    \u0027type\u0027: service_name,"},{"line_number":138,"context_line":"                }"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FBWI%3D","line":136,"updated":"2014-02-17 16:06:01.000000000","message":"i\u0027m not sure if it\u0027s out of scope or not, but service IDs and endpoint IDs should never have been exposed to the user-facing catalog, as they\u0027re not attributes that end users can actually work with or care about. making up a bunch of IDs here seems to drive the point home (they\u0027re completely meaningless!); further, you can\u0027t do a GET /v3/services/{region_name}-{service_name} anyway","commit_id":"93eb3daabbd8d980aeb88eccf2819f37962b3370"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81f3999ff9e09634e7e18c67f8e9ee28dbf3a687","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"                service_endpoints_v3 \u003d []"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"                if \u0027publicURL\u0027 in service:"},{"line_number":139,"context_line":"                    service_endpoints_v3.append({"},{"line_number":140,"context_line":"                        \u0027interface\u0027: \u0027public\u0027,"},{"line_number":141,"context_line":"                        \u0027id\u0027: \u0027%s-%s-%s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2F2cc%3D","line":138,"updated":"2014-03-03 19:59:26.000000000","message":"Should these three if statements be one if elif statement for each case? Since according to the documents you can only have one of the three options? https://github.com/openstack/identity-api/blob/master/openstack-identity-api/v3/src/markdown/identity-api-v3.md#endpoints-v3endpoints","commit_id":"25390dd7cc26a8430a441f650850814e3198736e"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"621356c989d0df76c3fc025e3af57dad7a52f40a","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"                service_endpoints_v3 \u003d []"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"                if \u0027publicURL\u0027 in service:"},{"line_number":139,"context_line":"                    service_endpoints_v3.append({"},{"line_number":140,"context_line":"                        \u0027interface\u0027: \u0027public\u0027,"},{"line_number":141,"context_line":"                        \u0027id\u0027: \u0027%s-%s-%s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FhxA%3D","line":138,"in_reply_to":"AAAAVn%2F%2F2W8%3D","updated":"2014-03-05 15:48:58.000000000","message":"enabled shouldn\u0027t be part of the catalog at all, as it should always be true anyway","commit_id":"25390dd7cc26a8430a441f650850814e3198736e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2ed7ebf6346f4eff0f80a91edb6ef4f19163c073","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"                service_endpoints_v3 \u003d []"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"                if \u0027publicURL\u0027 in service:"},{"line_number":139,"context_line":"                    service_endpoints_v3.append({"},{"line_number":140,"context_line":"                        \u0027interface\u0027: \u0027public\u0027,"},{"line_number":141,"context_line":"                        \u0027id\u0027: \u0027%s-%s-%s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2F2W8%3D","line":138,"in_reply_to":"AAAAVn%2F%2F2cc%3D","updated":"2014-03-03 20:05:52.000000000","message":"Lance - This code is taking the v2 catalog that\u0027s returned by get_catalog and converting it to a v3 catalog. The v2 catalog has services like\n\n publicURL\u003d\u0027xxx\u0027 internalURL\u003d\u0027xxx\u0027 adminURL\u003d\u0027xxx\n\nNow that I\u0027ve looked at the catalog code some more, I think that there can be different types of endpoints too, so this should be more dynamic.\n\nAlso, I need to add the enabled field!","commit_id":"25390dd7cc26a8430a441f650850814e3198736e"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a498926e3a13bd10e7d5ed4c8d5ef15f6ef9e688","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        v2_catalog \u003d self.get_catalog(user_id, tenant_id, metadata\u003dmetadata)"},{"line_number":125,"context_line":"        ret \u003d []"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        for region_name in v2_catalog:"},{"line_number":128,"context_line":"            region \u003d v2_catalog[region_name]"},{"line_number":129,"context_line":"            for service_name in region:"},{"line_number":130,"context_line":"                service \u003d region[service_name]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BLDM%3D","line":127,"updated":"2014-03-28 16:32:45.000000000","message":"use iteritems","commit_id":"2abdd3b2ac343ca2c0ae1696f6df1e4183477e32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c7506a427ee483fe619bdbeee3ca031fa7d275ba","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        v2_catalog \u003d self.get_catalog(user_id, tenant_id, metadata\u003dmetadata)"},{"line_number":125,"context_line":"        ret \u003d []"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        for region_name in v2_catalog:"},{"line_number":128,"context_line":"            region \u003d v2_catalog[region_name]"},{"line_number":129,"context_line":"            for service_name in region:"},{"line_number":130,"context_line":"                service \u003d region[service_name]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FxgI%3D","line":127,"in_reply_to":"AAAAWH%2F%2BLDM%3D","updated":"2014-04-10 14:00:47.000000000","message":"Done","commit_id":"2abdd3b2ac343ca2c0ae1696f6df1e4183477e32"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a498926e3a13bd10e7d5ed4c8d5ef15f6ef9e688","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        for region_name in v2_catalog:"},{"line_number":128,"context_line":"            region \u003d v2_catalog[region_name]"},{"line_number":129,"context_line":"            for service_name in region:"},{"line_number":130,"context_line":"                service \u003d region[service_name]"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"                service_v3 \u003d {"},{"line_number":133,"context_line":"                    \u0027type\u0027: service_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BLCs%3D","line":130,"updated":"2014-03-28 16:32:45.000000000","message":"same","commit_id":"2abdd3b2ac343ca2c0ae1696f6df1e4183477e32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c7506a427ee483fe619bdbeee3ca031fa7d275ba","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        for region_name in v2_catalog:"},{"line_number":128,"context_line":"            region \u003d v2_catalog[region_name]"},{"line_number":129,"context_line":"            for service_name in region:"},{"line_number":130,"context_line":"                service \u003d region[service_name]"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"                service_v3 \u003d {"},{"line_number":133,"context_line":"                    \u0027type\u0027: service_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FxgE%3D","line":130,"in_reply_to":"AAAAWH%2F%2BLCs%3D","updated":"2014-04-10 14:00:47.000000000","message":"Done","commit_id":"2abdd3b2ac343ca2c0ae1696f6df1e4183477e32"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a498926e3a13bd10e7d5ed4c8d5ef15f6ef9e688","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"                for endpoint in service:"},{"line_number":139,"context_line":"                    # endpoint is like \u0027publicURL\u0027, \u0027internalURL\u0027"},{"line_number":140,"context_line":"                    v3_interface \u003d endpoint[:-3]  # strip of URL"},{"line_number":141,"context_line":"                    service_endpoints_v3.append({"},{"line_number":142,"context_line":"                        \u0027interface\u0027: v3_interface,"},{"line_number":143,"context_line":"                        \u0027region\u0027: region_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BLCk%3D","line":140,"updated":"2014-03-28 16:32:45.000000000","message":"off \"URL\"","commit_id":"2abdd3b2ac343ca2c0ae1696f6df1e4183477e32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c7506a427ee483fe619bdbeee3ca031fa7d275ba","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"                for endpoint in service:"},{"line_number":139,"context_line":"                    # endpoint is like \u0027publicURL\u0027, \u0027internalURL\u0027"},{"line_number":140,"context_line":"                    v3_interface \u003d endpoint[:-3]  # strip of URL"},{"line_number":141,"context_line":"                    service_endpoints_v3.append({"},{"line_number":142,"context_line":"                        \u0027interface\u0027: v3_interface,"},{"line_number":143,"context_line":"                        \u0027region\u0027: region_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FxgA%3D","line":140,"in_reply_to":"AAAAWH%2F%2BLCk%3D","updated":"2014-04-10 14:00:47.000000000","message":"Done","commit_id":"2abdd3b2ac343ca2c0ae1696f6df1e4183477e32"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"af30bd3f85dc54676078215b29012361642de6ad","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_v3_catalog(self, user_id, tenant_id, metadata\u003dNone):"},{"line_number":124,"context_line":"        v2_catalog \u003d self.get_catalog(user_id, tenant_id, metadata\u003dmetadata)"},{"line_number":125,"context_line":"        ret \u003d []"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        for region_name, region in six.iteritems(v2_catalog):"},{"line_number":128,"context_line":"            for service_name, service in six.iteritems(region):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_e0725bac","line":125,"updated":"2014-05-02 14:22:51.000000000","message":"v3_catalog \u003d []","commit_id":"61e8f5b4be956c1c8fd4c8a456159e4d24851ca0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f58a9baa067b9a4a5c603636af00f4e4e5a0deed","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_v3_catalog(self, user_id, tenant_id, metadata\u003dNone):"},{"line_number":124,"context_line":"        v2_catalog \u003d self.get_catalog(user_id, tenant_id, metadata\u003dmetadata)"},{"line_number":125,"context_line":"        ret \u003d []"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        for region_name, region in six.iteritems(v2_catalog):"},{"line_number":128,"context_line":"            for service_name, service in six.iteritems(region):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7adec928_41876dd7","line":125,"in_reply_to":"9ad9bd40_e0725bac","updated":"2014-05-23 14:32:25.000000000","message":"Done","commit_id":"61e8f5b4be956c1c8fd4c8a456159e4d24851ca0"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"af30bd3f85dc54676078215b29012361642de6ad","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        for region_name, region in six.iteritems(v2_catalog):"},{"line_number":128,"context_line":"            for service_name, service in six.iteritems(region):"},{"line_number":129,"context_line":"                service_v3 \u003d {"},{"line_number":130,"context_line":"                    \u0027type\u0027: service_name,"},{"line_number":131,"context_line":"                    \u0027endpoints\u0027: []"},{"line_number":132,"context_line":"                }"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_0042df3d","line":130,"updated":"2014-05-02 14:22:51.000000000","message":"name !\u003d type","commit_id":"61e8f5b4be956c1c8fd4c8a456159e4d24851ca0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f58a9baa067b9a4a5c603636af00f4e4e5a0deed","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        for region_name, region in six.iteritems(v2_catalog):"},{"line_number":128,"context_line":"            for service_name, service in six.iteritems(region):"},{"line_number":129,"context_line":"                service_v3 \u003d {"},{"line_number":130,"context_line":"                    \u0027type\u0027: service_name,"},{"line_number":131,"context_line":"                    \u0027endpoints\u0027: []"},{"line_number":132,"context_line":"                }"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7adec928_616d4932","line":130,"in_reply_to":"9ad9bd40_0042df3d","updated":"2014-05-23 14:32:25.000000000","message":"Done","commit_id":"61e8f5b4be956c1c8fd4c8a456159e4d24851ca0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3c8d811b9420e83c02cb68617c0c2c3cb0b368d6","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"                for attr, value in six.iteritems(service):"},{"line_number":135,"context_line":"                    # Attributes that end in URL are interfaces."},{"line_number":136,"context_line":"                    if attr.endswith(\u0027URL\u0027):"},{"line_number":137,"context_line":"                        v3_interface \u003d attr[:-len(\u0027URL\u0027)]"},{"line_number":138,"context_line":"                        service_v3[\u0027endpoints\u0027].append({"},{"line_number":139,"context_line":"                            \u0027interface\u0027: v3_interface,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ae8d1ca_63babfc1","line":136,"updated":"2014-05-29 04:42:34.000000000","message":"nit: might want to elaborate on this, and give an example:\n\nif it were:\n  publicURL\u003d\"http://localhost:8774/v1.1/34a82e\"\nthen\n  interface \u003d \"public\" (after stripping off URL)\n  url \u003d \"http://localhost:8774/v1.1/34a82e\"\n  region -\u003e grabbed before\n\nor mention that the only expected values that should end in URL are publicURL, internalURL and adminURL.","commit_id":"f537cd45563f36a73d4bd405af72487ef4e527bd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9cb52c6a1aa3db11dd3a8dcedcb4f0f8d4efaf24","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"                for attr, value in six.iteritems(service):"},{"line_number":135,"context_line":"                    # Attributes that end in URL are interfaces."},{"line_number":136,"context_line":"                    if attr.endswith(\u0027URL\u0027):"},{"line_number":137,"context_line":"                        v3_interface \u003d attr[:-len(\u0027URL\u0027)]"},{"line_number":138,"context_line":"                        service_v3[\u0027endpoints\u0027].append({"},{"line_number":139,"context_line":"                            \u0027interface\u0027: v3_interface,"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_a15dfa4a","line":136,"in_reply_to":"3ae8d1ca_63babfc1","updated":"2014-05-29 21:58:19.000000000","message":"Done","commit_id":"f537cd45563f36a73d4bd405af72487ef4e527bd"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"04cfa82bfa004c088aca639f17a68344b2d4ab3e","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        return o"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_v3_catalog(self, user_id, tenant_id, metadata\u003dNone):"},{"line_number":124,"context_line":"        v2_catalog \u003d self.get_catalog(user_id, tenant_id, metadata\u003dmetadata)"},{"line_number":125,"context_line":"        v3_catalog \u003d []"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_9d9e9655","line":123,"updated":"2014-05-30 04:22:19.000000000","message":"Does that mean, if you are using templated catalog, all the endpoints should  be  registered using v2 syntax.?\n\nWhy do we want to register v3 identity endpoint using v2 syntax in templated catalog?\n\nCan you please add a test case where we have identity v3 and v2 endpoint in the catalog?","commit_id":"76596b06ce76a0b9a6e08e51cc2dfdc534205a51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"82fc6ae9d5468e53ce6a5937107f612c012b4969","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        return o"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_v3_catalog(self, user_id, tenant_id, metadata\u003dNone):"},{"line_number":124,"context_line":"        v2_catalog \u003d self.get_catalog(user_id, tenant_id, metadata\u003dmetadata)"},{"line_number":125,"context_line":"        v3_catalog \u003d []"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_3202846f","line":123,"in_reply_to":"1ae5cdf2_00d8da79","updated":"2014-06-04 00:31:34.000000000","message":"Done","commit_id":"76596b06ce76a0b9a6e08e51cc2dfdc534205a51"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"8d7d1b05edfed96e6b5c7f9c353e6a9d6f8fdddd","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        return o"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_v3_catalog(self, user_id, tenant_id, metadata\u003dNone):"},{"line_number":124,"context_line":"        v2_catalog \u003d self.get_catalog(user_id, tenant_id, metadata\u003dmetadata)"},{"line_number":125,"context_line":"        v3_catalog \u003d []"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_00d8da79","line":123,"in_reply_to":"1ae5cdf2_2141c139","updated":"2014-06-03 22:03:32.000000000","message":"I wonder if this code should move up to the driver as it is common to all the backends. We are basically translating v2 catalog into v3 catalog.","commit_id":"76596b06ce76a0b9a6e08e51cc2dfdc534205a51"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"d93ba69995c57c75dd5c67149ff8503b4c5b7330","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        return o"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_v3_catalog(self, user_id, tenant_id, metadata\u003dNone):"},{"line_number":124,"context_line":"        v2_catalog \u003d self.get_catalog(user_id, tenant_id, metadata\u003dmetadata)"},{"line_number":125,"context_line":"        v3_catalog \u003d []"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_2141c139","line":123,"in_reply_to":"1ae5cdf2_5413ee5b","updated":"2014-05-30 20:37:48.000000000","message":"Thanks. Got it","commit_id":"76596b06ce76a0b9a6e08e51cc2dfdc534205a51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3dd82388e7160894347a43d8555304de05b53442","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        return o"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def get_v3_catalog(self, user_id, tenant_id, metadata\u003dNone):"},{"line_number":124,"context_line":"        v2_catalog \u003d self.get_catalog(user_id, tenant_id, metadata\u003dmetadata)"},{"line_number":125,"context_line":"        v3_catalog \u003d []"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_5413ee5b","line":123,"in_reply_to":"1ae5cdf2_9d9e9655","updated":"2014-05-30 18:47:23.000000000","message":"The teplate for the catalog is like this: http://git.openstack.org/cgit/openstack/keystone/tree/etc/default_catalog.templates\n\nThere\u0027s nothing v2 or v3 about the endpoints in there. You can put whatever endpoints you like.","commit_id":"76596b06ce76a0b9a6e08e51cc2dfdc534205a51"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"37ccaadf733767f1c0d497c308a05f12dc0513c2","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                    # For example, \u003cregion_name\u003e.publicURL\u003d\u003cURL\u003e in the V2"},{"line_number":138,"context_line":"                    # catalog becomes the V3 interface for the service:"},{"line_number":139,"context_line":"                    # { \u0027interface\u0027: \u0027public\u0027, \u0027url\u0027: \u0027\u003cURL\u003e\u0027, \u0027region\u0027:"},{"line_number":140,"context_line":"                    #   \u0027region: \u0027\u003cregion_name\u003e\u0027 }"},{"line_number":141,"context_line":"                    if attr.endswith(\u0027URL\u0027):"},{"line_number":142,"context_line":"                        v3_interface \u003d attr[:-len(\u0027URL\u0027)]"},{"line_number":143,"context_line":"                        service_v3[\u0027endpoints\u0027].append({"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_699aec15","line":140,"updated":"2014-05-30 08:17:57.000000000","message":"Wouldn\u0027t it be better if this part was in the documentation of the class?","commit_id":"76596b06ce76a0b9a6e08e51cc2dfdc534205a51"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3dd82388e7160894347a43d8555304de05b53442","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                    # For example, \u003cregion_name\u003e.publicURL\u003d\u003cURL\u003e in the V2"},{"line_number":138,"context_line":"                    # catalog becomes the V3 interface for the service:"},{"line_number":139,"context_line":"                    # { \u0027interface\u0027: \u0027public\u0027, \u0027url\u0027: \u0027\u003cURL\u003e\u0027, \u0027region\u0027:"},{"line_number":140,"context_line":"                    #   \u0027region: \u0027\u003cregion_name\u003e\u0027 }"},{"line_number":141,"context_line":"                    if attr.endswith(\u0027URL\u0027):"},{"line_number":142,"context_line":"                        v3_interface \u003d attr[:-len(\u0027URL\u0027)]"},{"line_number":143,"context_line":"                        service_v3[\u0027endpoints\u0027].append({"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_14588631","line":140,"in_reply_to":"1ae5cdf2_699aec15","updated":"2014-05-30 18:47:23.000000000","message":"There is class documentation for this already.","commit_id":"76596b06ce76a0b9a6e08e51cc2dfdc534205a51"}],"keystone/catalog/core.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7be6d227a542d56b9f154f50e2dd5cb1b4fd7946","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                        service_v3[\u0027endpoints\u0027].append({"},{"line_number":387,"context_line":"                            \u0027interface\u0027: v3_interface,"},{"line_number":388,"context_line":"                            \u0027region\u0027: region_name,"},{"line_number":389,"context_line":"                            \u0027url\u0027: value,"},{"line_number":390,"context_line":"                        })"},{"line_number":391,"context_line":"                        continue"},{"line_number":392,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_820cd33c","line":389,"updated":"2014-06-04 13:23:05.000000000","message":"endpoint ID?","commit_id":"8b9580456aa4223184f612330c31077624dbf0ff"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7be6d227a542d56b9f154f50e2dd5cb1b4fd7946","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                        })"},{"line_number":391,"context_line":"                        continue"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"                    # Other attributes are copied to the service."},{"line_number":394,"context_line":"                    service_v3[attr] \u003d value"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"                v3_catalog.append(service_v3)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_c2497b32","line":393,"updated":"2014-06-04 13:23:05.000000000","message":"such as service ID and service name? why not restrict this to:\n\n  if attr in (\u0027id, \u0027name\u0027):\n\nso that it\u0027s self-documenting. is there anything else you\u0027re trying to support?","commit_id":"8b9580456aa4223184f612330c31077624dbf0ff"}],"keystone/tests/test_backend_kvs.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"7be6d227a542d56b9f154f50e2dd5cb1b4fd7946","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    def test_get_v3_catalog_endpoint_disabled(self):"},{"line_number":227,"context_line":"        # There\u0027s no need to have disabled endpoints in the kvs catalog. Those"},{"line_number":228,"context_line":"        # endpoints should just be removed from the store. This just tests"},{"line_number":229,"context_line":"        # what happens currently when the super impl is called."},{"line_number":230,"context_line":"        f \u003d super(KvsCatalog, self).test_get_v3_catalog_endpoint_disabled"},{"line_number":231,"context_line":"        self.assertRaises(exception.NotFound, f)"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_42548bfe","line":229,"updated":"2014-06-04 13:23:05.000000000","message":"that\u0027s true for templated, but why shouldn\u0027t you be able to enable \u0026 disable endpoints in a KVS backend?","commit_id":"8b9580456aa4223184f612330c31077624dbf0ff"}],"keystone/token/providers/common.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"af30bd3f85dc54676078215b29012361642de6ad","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                    user_id, project_id)"},{"line_number":311,"context_line":"            except exception.NotImplemented:"},{"line_number":312,"context_line":"                service_catalog \u003d {}"},{"line_number":313,"context_line":"            # TODO(gyee): v3 service catalog is not quite completed yet"},{"line_number":314,"context_line":"            # TODO(ayoung): Enforce Endpoints for trust"},{"line_number":315,"context_line":"            token_data[\u0027catalog\u0027] \u003d service_catalog"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_00b01f42","side":"PARENT","line":313,"updated":"2014-05-02 14:22:51.000000000","message":"YAY","commit_id":"d4c4a9654ad8f3ad722dccbfae00460cef962b73"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"8d7d1b05edfed96e6b5c7f9c353e6a9d6f8fdddd","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            try:"},{"line_number":309,"context_line":"                service_catalog \u003d self.catalog_api.get_v3_catalog("},{"line_number":310,"context_line":"                    user_id, project_id)"},{"line_number":311,"context_line":"            except exception.NotImplemented:"},{"line_number":312,"context_line":"                service_catalog \u003d {}"},{"line_number":313,"context_line":"            # TODO(gyee): v3 service catalog is not quite completed yet"},{"line_number":314,"context_line":"            # TODO(ayoung): Enforce Endpoints for trust"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_bd53cd37","side":"PARENT","line":311,"updated":"2014-06-03 22:03:32.000000000","message":"this is still applicable right, if say kvs backend is configured?\n\nhttps://github.com/openstack/keystone/blob/master/keystone/catalog/backends/kvs.py#L143\n\nNot that anybody would use kvs backend in production but nevertheless we still need to support it.","commit_id":"6ed054951e5d78ce803b4f2932d576dcc9210d2b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"82fc6ae9d5468e53ce6a5937107f612c012b4969","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            try:"},{"line_number":309,"context_line":"                service_catalog \u003d self.catalog_api.get_v3_catalog("},{"line_number":310,"context_line":"                    user_id, project_id)"},{"line_number":311,"context_line":"            except exception.NotImplemented:"},{"line_number":312,"context_line":"                service_catalog \u003d {}"},{"line_number":313,"context_line":"            # TODO(gyee): v3 service catalog is not quite completed yet"},{"line_number":314,"context_line":"            # TODO(ayoung): Enforce Endpoints for trust"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_f232dc5d","side":"PARENT","line":311,"in_reply_to":"1ae5cdf2_bd53cd37","updated":"2014-06-04 00:31:34.000000000","message":"Done","commit_id":"6ed054951e5d78ce803b4f2932d576dcc9210d2b"}]}
