)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b7b5a4874b2c2eb5fb2cdcc0f094e7ac2a012e6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"are official service types, values are lists of aliases in order of"},{"line_number":23,"context_line":"fallback preference)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"There is also a component of the aliase process that deals with"},{"line_number":26,"context_line":"requested version matching (so that \"block-storage (2, 0)\" would return"},{"line_number":27,"context_line":"volumev2 and not volumev3 if both are in the catalog). That will be"},{"line_number":28,"context_line":"added when new version discovery is added. For now, this should work"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f044301_dc720de4","line":25,"range":{"start_line":25,"start_character":33,"end_line":25,"end_character":39},"updated":"2017-05-03 19:45:58.000000000","message":"alias","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"}],"keystoneauth1/access/service_catalog.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"de657736cccea38f15dc840de046d087a9c4c14d","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            # further filter the list."},{"line_number":254,"context_line":"            return endpoints"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        found_types \u003d endpoints.keys()"},{"line_number":257,"context_line":"        if len(found_types) \u003c 2:"},{"line_number":258,"context_line":"            # There is only one type found from the initial pass through"},{"line_number":259,"context_line":"            # the catalog. Nothing further to do."}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_5ff62a5f","line":256,"range":{"start_line":256,"start_character":8,"end_line":256,"end_character":38},"updated":"2018-04-13 15:15:38.000000000","message":"nit: you don\u0027t need this (and getting rid of it is more efficient in py2).  Both `len(a_dict)` and `key in a_dict` work as you want them to.","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3ce73e9e25ecac21eb3d7550ca83c913e22c3bde","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            # further filter the list."},{"line_number":254,"context_line":"            return endpoints"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        found_types \u003d endpoints.keys()"},{"line_number":257,"context_line":"        if len(found_types) \u003c 2:"},{"line_number":258,"context_line":"            # There is only one type found from the initial pass through"},{"line_number":259,"context_line":"            # the catalog. Nothing further to do."}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_fd4e266d","line":256,"range":{"start_line":256,"start_character":8,"end_line":256,"end_character":38},"in_reply_to":"bf659307_5ff62a5f","updated":"2018-04-13 15:41:24.000000000","message":"Done","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"de657736cccea38f15dc840de046d087a9c4c14d","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        found_types \u003d endpoints.keys()"},{"line_number":257,"context_line":"        if len(found_types) \u003c 2:"},{"line_number":258,"context_line":"            # There is only one type found from the initial pass through"},{"line_number":259,"context_line":"            # the catalog. Nothing further to do."},{"line_number":260,"context_line":"            return endpoints"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_5f8b8abe","line":258,"range":{"start_line":258,"start_character":23,"end_line":258,"end_character":36},"updated":"2018-04-13 15:15:38.000000000","message":"At most one?\n\nCan we ever get here with an empty endpoints dict?  Sorta looks like it.","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3ce73e9e25ecac21eb3d7550ca83c913e22c3bde","unresolved":false,"context_lines":[{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        found_types \u003d endpoints.keys()"},{"line_number":257,"context_line":"        if len(found_types) \u003c 2:"},{"line_number":258,"context_line":"            # There is only one type found from the initial pass through"},{"line_number":259,"context_line":"            # the catalog. Nothing further to do."},{"line_number":260,"context_line":"            return endpoints"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_5d2e328c","line":258,"range":{"start_line":258,"start_character":23,"end_line":258,"end_character":36},"in_reply_to":"bf659307_5f8b8abe","updated":"2018-04-13 15:41:24.000000000","message":"Done","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"de657736cccea38f15dc840de046d087a9c4c14d","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        # and there is data for it. There might not be data for this match"},{"line_number":269,"context_line":"        # if there are other filters that excluded it from consideration"},{"line_number":270,"context_line":"        # after we accepted it as an alias."},{"line_number":271,"context_line":"        if requested in found_types and endpoints[requested]:"},{"line_number":272,"context_line":"            return {requested: endpoints[requested]}"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        # We\u0027ve matched something that isn\u0027t exactly what the user requested."}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_1f68b2f2","line":271,"range":{"start_line":271,"start_character":11,"end_line":271,"end_character":60},"updated":"2018-04-13 15:15:38.000000000","message":"or\n\n if endpoints.get(requested):\n\n...unless endpoints isn\u0027t really a dict?","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3ce73e9e25ecac21eb3d7550ca83c913e22c3bde","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        # and there is data for it. There might not be data for this match"},{"line_number":269,"context_line":"        # if there are other filters that excluded it from consideration"},{"line_number":270,"context_line":"        # after we accepted it as an alias."},{"line_number":271,"context_line":"        if requested in found_types and endpoints[requested]:"},{"line_number":272,"context_line":"            return {requested: endpoints[requested]}"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        # We\u0027ve matched something that isn\u0027t exactly what the user requested."}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_9d384ad3","line":271,"range":{"start_line":271,"start_character":11,"end_line":271,"end_character":60},"in_reply_to":"bf659307_1f68b2f2","updated":"2018-04-13 15:41:24.000000000","message":"Done","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"de657736cccea38f15dc840de046d087a9c4c14d","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        # Look at the possible types for this service in order or priority and"},{"line_number":276,"context_line":"        # return the first match."},{"line_number":277,"context_line":"        for alias in discover._STM.get_all_types(requested):"},{"line_number":278,"context_line":"            if alias in endpoints.keys() and endpoints[alias]:"},{"line_number":279,"context_line":"                # Return the first one found in the order listed."},{"line_number":280,"context_line":"                return {alias: endpoints[alias]}"},{"line_number":281,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_ff1b7e7d","line":278,"range":{"start_line":278,"start_character":12,"end_line":278,"end_character":61},"updated":"2018-04-13 15:15:38.000000000","message":"or\n\n if endpoints.get(alias):","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3ce73e9e25ecac21eb3d7550ca83c913e22c3bde","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        # Look at the possible types for this service in order or priority and"},{"line_number":276,"context_line":"        # return the first match."},{"line_number":277,"context_line":"        for alias in discover._STM.get_all_types(requested):"},{"line_number":278,"context_line":"            if alias in endpoints.keys() and endpoints[alias]:"},{"line_number":279,"context_line":"                # Return the first one found in the order listed."},{"line_number":280,"context_line":"                return {alias: endpoints[alias]}"},{"line_number":281,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_dd57a200","line":278,"range":{"start_line":278,"start_character":12,"end_line":278,"end_character":61},"in_reply_to":"bf659307_ff1b7e7d","updated":"2018-04-13 15:41:24.000000000","message":"Done","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2bbc30e86b6990d08ebdf8fb039152b00fdf60fd","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        # return the first match."},{"line_number":276,"context_line":"        for alias in discover._SERVICE_TYPES.get_all_types(requested):"},{"line_number":277,"context_line":"            if endpoints.get(alias):"},{"line_number":278,"context_line":"                # Return the first one found in the order listed."},{"line_number":279,"context_line":"                return {alias: endpoints[alias]}"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # We should never get here - it\u0027s a programming logic error on our"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_a84ffe68","line":278,"range":{"start_line":278,"start_character":51,"end_line":278,"end_character":65},"updated":"2018-04-25 14:58:20.000000000","message":"Can we guarantee this is always going to be ordered? It looks like the ordering is done by something else.","commit_id":"96ff58b0dbefb5529fcbcc31fe8c36f288465e47"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"0526c61f2da9a0460b043f535b2e392e8c667b64","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        # return the first match."},{"line_number":276,"context_line":"        for alias in discover._SERVICE_TYPES.get_all_types(requested):"},{"line_number":277,"context_line":"            if endpoints.get(alias):"},{"line_number":278,"context_line":"                # Return the first one found in the order listed."},{"line_number":279,"context_line":"                return {alias: endpoints[alias]}"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # We should never get here - it\u0027s a programming logic error on our"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_3d03dc0f","line":278,"range":{"start_line":278,"start_character":51,"end_line":278,"end_character":65},"in_reply_to":"9f6a8fd7_2d8e652e","updated":"2018-04-30 12:02:32.000000000","message":"Yup!","commit_id":"96ff58b0dbefb5529fcbcc31fe8c36f288465e47"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f3aee179a15ae86da33972beaf92e9ef3ab6c8c9","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        # return the first match."},{"line_number":276,"context_line":"        for alias in discover._SERVICE_TYPES.get_all_types(requested):"},{"line_number":277,"context_line":"            if endpoints.get(alias):"},{"line_number":278,"context_line":"                # Return the first one found in the order listed."},{"line_number":279,"context_line":"                return {alias: endpoints[alias]}"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # We should never get here - it\u0027s a programming logic error on our"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_2d8e652e","line":278,"range":{"start_line":278,"start_character":51,"end_line":278,"end_character":65},"in_reply_to":"9f6a8fd7_4d1b9972","updated":"2018-04-27 19:10:05.000000000","message":"Oh - so this is always done by the service-types-authority, not us.","commit_id":"96ff58b0dbefb5529fcbcc31fe8c36f288465e47"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"42c120ab1b6db12f51fb8d2bb7c5805bd124c8ff","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        # return the first match."},{"line_number":276,"context_line":"        for alias in discover._SERVICE_TYPES.get_all_types(requested):"},{"line_number":277,"context_line":"            if endpoints.get(alias):"},{"line_number":278,"context_line":"                # Return the first one found in the order listed."},{"line_number":279,"context_line":"                return {alias: endpoints[alias]}"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # We should never get here - it\u0027s a programming logic error on our"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_4d1b9972","line":278,"range":{"start_line":278,"start_character":51,"end_line":278,"end_character":65},"in_reply_to":"9f6a8fd7_a84ffe68","updated":"2018-04-27 19:08:41.000000000","message":"Yes. The ordering is significant from the service-types-authority and is ordered in order of preference.","commit_id":"96ff58b0dbefb5529fcbcc31fe8c36f288465e47"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"6e1ad302c347b1a456d06e263b5941ea86dce97c","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                # Return the first one found in the order listed."},{"line_number":279,"context_line":"                return {alias: endpoints[alias]}"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # We should never get here - it\u0027s a programming logic error on our"},{"line_number":282,"context_line":"        # part if we do. Raise this so that we can panic in unit tests."},{"line_number":283,"context_line":"        raise ValueError(\"Programming error choosing an endpoint.\")"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def get_endpoints(self, service_type\u003dNone, interface\u003dNone,"},{"line_number":286,"context_line":"                      region_name\u003dNone, service_name\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_f07b2fbb","line":283,"range":{"start_line":281,"start_character":0,"end_line":283,"end_character":67},"updated":"2018-04-18 19:25:39.000000000","message":"Thanks for the comment. This helps see the \"why would we ever change and allow a raise\" answer.","commit_id":"96ff58b0dbefb5529fcbcc31fe8c36f288465e47"}],"keystoneauth1/access/service_type_aliases.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b7b5a4874b2c2eb5fb2cdcc0f094e7ac2a012e6","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from keystoneauth1.access import service_type_data"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class ServiceTypeAliases(object):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def __init__(self):"},{"line_number":21,"context_line":"        self._set_aliases(service_type_data._OFFICIAL_ALIASES)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_dff43fd2","line":18,"range":{"start_line":18,"start_character":6,"end_line":18,"end_character":24},"updated":"2017-05-03 19:45:58.000000000","message":"If this is going to be a singleton (as implied by get_service_type_aliases() below), make it private.","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b7b5a4874b2c2eb5fb2cdcc0f094e7ac2a012e6","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def _get_official_type(self, requested):"},{"line_number":56,"context_line":"        if requested in self._reverse.keys():"},{"line_number":57,"context_line":"            # The user requsted an alias"},{"line_number":58,"context_line":"            return self._reverse[requested]"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            # The user requested an official type"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_dc5b2d52","line":57,"range":{"start_line":57,"start_character":23,"end_line":57,"end_character":31},"updated":"2017-05-03 19:45:58.000000000","message":"requested","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b7b5a4874b2c2eb5fb2cdcc0f094e7ac2a012e6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            return requested"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _is_known_type(self, requested):"},{"line_number":64,"context_line":"        return requested in (self._aliases.keys() + self._reverse.keys())"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def filter_best_endpoints_by_type(self, requested, sc):"},{"line_number":67,"context_line":"        \"\"\"Get the approrpriate endpoints from the list of given endpoints."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_3c133169","line":64,"range":{"start_line":64,"start_character":15,"end_line":64,"end_character":73},"updated":"2017-05-03 19:45:58.000000000","message":"More efficient as\n\n requested in self._aliases or requested in self._reverse\n\n(don\u0027t have to build the .keys() list, and each \u0027in\u0027 is a hash lookup rather than a list traversal)","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b7b5a4874b2c2eb5fb2cdcc0f094e7ac2a012e6","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        :param dict sc: A dictionary keyed by found service_type. Values are"},{"line_number":84,"context_line":"                        opaque to this method."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        :returns: Dict of service_type/endpoints filtered for the appropriate"},{"line_number":87,"context_line":"                  service_type based on alias matching rules."},{"line_number":88,"context_line":"        \"\"\""},{"line_number":89,"context_line":"        if not requested or not self._is_known_type(requested):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_9f18f775","line":86,"range":{"start_line":86,"start_character":39,"end_line":86,"end_character":48},"updated":"2017-05-03 19:45:58.000000000","message":"Looks like the dict value is a list when it comes from sc, but single values in your filtered returns below.  It needs to be consistently the same type.","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b7b5a4874b2c2eb5fb2cdcc0f094e7ac2a012e6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            # There is no requested type or there is only one found. Alter"},{"line_number":98,"context_line":"            # the key to match the requested key, in case it was found via"},{"line_number":99,"context_line":"            # alias lookup."},{"line_number":100,"context_line":"            return {requested: sc.values()[0]}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        # At this point, the user has requested a type, we do know things"},{"line_number":103,"context_line":"        # about aliases for that type, and we\u0027ve found more than one match."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_1f5e27e6","line":100,"updated":"2017-05-03 19:45:58.000000000","message":"See above - this should be e.g.:\n\n return {requested: [sc.values()[0]]}\n\nSame throughout.","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"}],"keystoneauth1/access/service_type_data.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b7b5a4874b2c2eb5fb2cdcc0f094e7ac2a012e6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":3,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":4,"context_line":"# You may obtain a copy of the License at"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_bfef33e8","line":1,"updated":"2017-05-03 19:45:58.000000000","message":"So at a glance [pun intended], there\u0027s stuff missing here, like ironic \u0026 glance, that at least the consuming code in nova would expect to find.  Assume that is an issue with service-types-authority?","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b7b5a4874b2c2eb5fb2cdcc0f094e7ac2a012e6","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# This content is synced from the OpenStack Service Types Authority at"},{"line_number":15,"context_line":"# https://git.openstack.org/openstack/service-types-authority. The data"},{"line_number":16,"context_line":"# there should be considered authoritative. If this data is out of date,"},{"line_number":17,"context_line":"# the keystoneauth library may be updated, or alternatively a similar"},{"line_number":18,"context_line":"# dictionary may be passed in to the Session constructor."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# This data should not be edited by hand. See tools/sync-service-type-data.py"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_7fd2cb36","line":17,"range":{"start_line":17,"start_character":2,"end_line":17,"end_character":41},"updated":"2017-05-03 19:45:58.000000000","message":"eh?","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"b90c382969d79b0c53e991e94f32d0af230af9c3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# the keystoneauth library may be updated, or alternatively a similar"},{"line_number":18,"context_line":"# dictionary may be passed in to the Session constructor."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# This data should not be edited by hand. See tools/sync-service-type-data.py"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"_OFFICIAL_ALIASES \u003d {"},{"line_number":23,"context_line":"    \u0027resource-cluster\u0027: ["}],"source_content_type":"text/x-python","patch_set":1,"id":"5ff73747_d572b2e3","line":20,"range":{"start_line":20,"start_character":2,"end_line":20,"end_character":77},"updated":"2017-05-03 17:00:35.000000000","message":"How about we make this data a dependency we control from the authoritative repository (and likewise) simply ensure the new dep (pip-install) is *just* this dataset [no transitive dependencies].\n\nI dislike \"util\" sync scritps/methods with this type of comment.","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"84d15cba2ab3e71fa14685d0ebe3402578f66f71","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# the keystoneauth library may be updated, or alternatively a similar"},{"line_number":18,"context_line":"# dictionary may be passed in to the Session constructor."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# This data should not be edited by hand. See tools/sync-service-type-data.py"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"_OFFICIAL_ALIASES \u003d {"},{"line_number":23,"context_line":"    \u0027resource-cluster\u0027: ["}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_89fb3477","line":20,"range":{"start_line":20,"start_character":2,"end_line":20,"end_character":77},"in_reply_to":"5ff73747_d572b2e3","updated":"2018-04-13 13:57:06.000000000","message":"Done. :)","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"}],"keystoneauth1/discover.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"de657736cccea38f15dc840de046d087a9c4c14d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"_LOGGER \u003d utils.get_logger(__name__)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LATEST \u003d float(\u0027inf\u0027)"},{"line_number":38,"context_line":"_STM \u003d os_service_types.ServiceTypes()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def _str_or_latest(val):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_df831aca","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":4},"updated":"2018-04-13 15:15:38.000000000","message":"What\u0027s the M for?\n\nDid you make this private so that external consumers of ksa wouldn\u0027t use it?","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"3ce73e9e25ecac21eb3d7550ca83c913e22c3bde","unresolved":false,"context_lines":[{"line_number":35,"context_line":"_LOGGER \u003d utils.get_logger(__name__)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LATEST \u003d float(\u0027inf\u0027)"},{"line_number":38,"context_line":"_STM \u003d os_service_types.ServiceTypes()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def _str_or_latest(val):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_5d43923f","line":38,"range":{"start_line":38,"start_character":0,"end_line":38,"end_character":4},"in_reply_to":"bf659307_df831aca","updated":"2018-04-13 15:41:24.000000000","message":"Yes - private so that external consumers wouldn\u0027t use it.\n\nI think \"M\" is for \"Manager\" - even though that doesn\u0027t match the class name. Let\u0027s rename it to _SERVICE_TYPES ?","commit_id":"5fb8a029826fac1c54f6639e733ddd4aaf122539"}],"releasenotes/notes/serice-type-aliases-249454829c57f39a.yaml":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2bbc30e86b6990d08ebdf8fb039152b00fdf60fd","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for service-type aliases as defined in the Service Types"},{"line_number":5,"context_line":"    Authority when doing catalog lookups."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f6a8fd7_68f1e600","line":5,"updated":"2018-04-25 14:58:20.000000000","message":"Do we need docs describing how to use service types/aliases with ksa? If so, we should link to them here.","commit_id":"96ff58b0dbefb5529fcbcc31fe8c36f288465e47"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"42c120ab1b6db12f51fb8d2bb7c5805bd124c8ff","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for service-type aliases as defined in the Service Types"},{"line_number":5,"context_line":"    Authority when doing catalog lookups."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f6a8fd7_4dc87973","line":5,"in_reply_to":"9f6a8fd7_68f1e600","updated":"2018-04-27 19:08:41.000000000","message":"I don\u0027t think so?","commit_id":"96ff58b0dbefb5529fcbcc31fe8c36f288465e47"}],"tools/sync-service-type-data.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7b7b5a4874b2c2eb5fb2cdcc0f094e7ac2a012e6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"# limitations under the License."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# This content is synced from the OpenStack Service Types Authority at"},{"line_number":43,"context_line":"# {git_repo}. The data"},{"line_number":44,"context_line":"# there should be considered authoritative. If this data is out of date,"},{"line_number":45,"context_line":"# the keystoneauth library may be updated, or alternatively a similar"},{"line_number":46,"context_line":"# dictionary may be passed in to the Session constructor."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_bf9df367","line":43,"updated":"2017-05-03 19:45:58.000000000","message":"May want a newline here, so pep8 doesn\u0027t ding ya if the repo URL is too long (though that only saves you a little bit).","commit_id":"061e953ba90b5219a77d86bc2867308ae7510349"}]}
