)]}'
{"oslo_limit/limit.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"609155788d314d1bb7d4a7bf285d1999a10d75f4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                ksa_exceptions.MissingRequiredOptions,"},{"line_number":42,"context_line":"                ksa_exceptions.MissingAuthPlugin,"},{"line_number":43,"context_line":"                ksa_exceptions.DiscoveryFailure,"},{"line_number":44,"context_line":"                ksa_exceptions.BadRequest,"},{"line_number":45,"context_line":"                ksa_exceptions.Unauthorized) as e:"},{"line_number":46,"context_line":"            msg \u003d \u0027Unable to initialize OpenStackSDK session: %s\u0027 % e"},{"line_number":47,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_8bbd6803","line":44,"updated":"2019-06-27 22:51:41.000000000","message":"Why would we ever be sending a bad request?","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5a09474df94fd6b717b466236cd88c273e42e5d4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                ksa_exceptions.MissingRequiredOptions,"},{"line_number":42,"context_line":"                ksa_exceptions.MissingAuthPlugin,"},{"line_number":43,"context_line":"                ksa_exceptions.DiscoveryFailure,"},{"line_number":44,"context_line":"                ksa_exceptions.BadRequest,"},{"line_number":45,"context_line":"                ksa_exceptions.Unauthorized) as e:"},{"line_number":46,"context_line":"            msg \u003d \u0027Unable to initialize OpenStackSDK session: %s\u0027 % e"},{"line_number":47,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_cd326ff2","line":44,"in_reply_to":"9fb8cfa7_8bbd6803","updated":"2019-07-01 16:25:14.000000000","message":"No - probably not. I pulled this from another implementation of this patch. I\u0027ll remove.","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"609155788d314d1bb7d4a7bf285d1999a10d75f4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        :param deltas: An dictionary containing resource names as keys and"},{"line_number":78,"context_line":"                       requests resource quantities as values."},{"line_number":79,"context_line":"        :type deltas: dictionary"},{"line_number":80,"context_line":"        :param resource_filters: A list of strings containing the resource"},{"line_number":81,"context_line":"                                 names to filter the return values of the"},{"line_number":82,"context_line":"                                 usage_callback. This is a performance"},{"line_number":83,"context_line":"                                 optimization in the event the caller doesn\u0027t"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_abb86c10","line":80,"updated":"2019-06-27 22:51:41.000000000","message":"Kind of unrelated?","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5a09474df94fd6b717b466236cd88c273e42e5d4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        :param deltas: An dictionary containing resource names as keys and"},{"line_number":78,"context_line":"                       requests resource quantities as values."},{"line_number":79,"context_line":"        :type deltas: dictionary"},{"line_number":80,"context_line":"        :param resource_filters: A list of strings containing the resource"},{"line_number":81,"context_line":"                                 names to filter the return values of the"},{"line_number":82,"context_line":"                                 usage_callback. This is a performance"},{"line_number":83,"context_line":"                                 optimization in the event the caller doesn\u0027t"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_ad513b10","line":80,"in_reply_to":"9fb8cfa7_abb86c10","updated":"2019-07-01 16:25:14.000000000","message":"Agreed - I\u0027ll make this its own change.","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"72c64d10a4f40b3b272c7cc1ad97d67b20f8d46f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    return _SDK_CONNECTION"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class Enforcer(object):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def __init__(self, usage_callback):"},{"line_number":55,"context_line":"        \"\"\"An object for checking usage against resource limits and requests."}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_98835e03","line":52,"updated":"2019-08-21 13:56:23.000000000","message":"Forgive my ignorance here. I assume multiple instances of this object are created, hence the above can\u0027t simply be done as part of \u0027__init__\u0027?","commit_id":"52e2a22cd86bcd338b25d9bc9c24e8dd7d35f013"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"f0ca8faa90f6c3490a6c4f6a79be76de3c0b19af","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if not isinstance(deltas, dict):"},{"line_number":92,"context_line":"            msg \u003d \u0027deltas must be a dictionary.\u0027"},{"line_number":93,"context_line":"            raise ValueError(msg)"},{"line_number":94,"context_line":"        if resource_filters and not isinstance(resource_filters, list):"},{"line_number":95,"context_line":"            msg \u003d \u0027resource_filters must be a list.\u0027"},{"line_number":96,"context_line":"            raise ValueError(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_0c15c23d","line":94,"updated":"2019-11-27 17:41:11.000000000","message":"This change looks unrelated and is removed in the next patch, can we undo it here to avoid cluttering up the history?","commit_id":"c02c025a66f1ad64a9626d9cefb962c51d5eedb7"}],"oslo_limit/opts.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"609155788d314d1bb7d4a7bf285d1999a10d75f4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_options \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_cbdcc0e5","line":28,"updated":"2019-06-27 22:51:41.000000000","message":"It is difficult for config management tools to use IDs in config, can we change this to a name?","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"5b7f3354859578aeae5295c1507bb2076275333f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_options \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_86230a58","line":28,"in_reply_to":"3fa7e38b_2417b5a5","updated":"2019-11-22 18:16:30.000000000","message":"Reading my old comment it seems I was on board with that. I would say let\u0027s go with region and service and if we find a more elegant way to do this later we can always switch.","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4f321c6cae4e51092109488baae02b97f89ff381","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_options \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_765c707c","line":28,"in_reply_to":"9fb8cfa7_6d002367","updated":"2019-07-01 20:33:27.000000000","message":"Interesting. I\u0027m curious if others have thoughts on if there is a way to make that a little better.","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"381455685c60c3a951ff0aa48c00404615818a9b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_options \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_9b47bb4d","line":28,"in_reply_to":"9fb8cfa7_765c707c","updated":"2019-07-02 16:54:30.000000000","message":"One observation on Colleen\u0027s deployment flow is that I don\u0027t think this wouldn\u0027t require a keystone restart. It would be set on the other service\u0027s (nova, cinder, etc.) side, so as long as keystone is up before the other services are deployed (which I think is normally the case), the deployment tool could query keystone for this id before it generates the service\u0027s config. Which is still added complexity, but not _quite_ as bad as having to do multiple restarts.\n\nRegion and service name would be easier to statically configure though. Any deployment tool should have those values easily available.","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"08a1b2f17b5437fb0c658cbba9cd8af10cddcaf0","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_options \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_6d002367","line":28,"in_reply_to":"9fb8cfa7_8d85575c","updated":"2019-07-01 16:47:16.000000000","message":"Hmm, I guess it makes sense from that perspective.\n\nConfig management tools are often not great at orchestrating their run in such a way that they can know the ID of a resource at the time they are creating config files. This is what would need to happen to set this endpoint ID in keystone.conf:\n\n1. keystone.conf needs to exist with some basic config to start with\n2. db sync/bootstrap happens\n3. keystone service is started\n4. endpoint gets created in keystone through the API\n5. API request to get the ID of the endpoint\n6. update keystone.conf with the ID\n7. restart the keystone service\n\nWith declarative systems like puppet or chef, changing keystone.conf after it\u0027s already set is tricky. For all config management systems, having to restart the keystone service more than once is a problem.\n\nWe don\u0027t have to solve this in this patch, I just happened to notice it here since I didn\u0027t review the original change.","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"30a772cf4da04d1f5be9023d3a19b72aa49ec8f9","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_options \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_2417b5a5","line":28,"in_reply_to":"9fb8cfa7_9b47bb4d","updated":"2019-11-22 14:38:03.000000000","message":"So... I think colleen is right here, region and service type are what we want here.\n\nIf we think about fast forward upgrade, we (the config management) already know the service type and region, as we created the endpoint in the first place. But we never bothered making a note of the service ID, but in skip level, the API is off, so there is no way to fetch the service ID... it all gets very complicated.\n\nKolla-ansible creates the endpoints here, as an example:\nhttps://github.com/openstack/kolla-ansible/blob/master/ansible/roles/service-ks-register/tasks/main.yml","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5a09474df94fd6b717b466236cd88c273e42e5d4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"_options \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_8d85575c","line":28,"in_reply_to":"9fb8cfa7_cbdcc0e5","updated":"2019-07-01 16:25:14.000000000","message":"Why is that? Endpoints don\u0027t have a name. If we were to do this, we\u0027d probably need to include parameters for region and service.\n\nI want to say I vaguely remember that getting brought up in the initial design and people suggested using endpoint instead of region+service so operators only needed to set one thing instead of two. I could be wrong, it\u0027s been a while.","commit_id":"07f3e2045ce9be046817406cda240681ecfde143"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"2c0d4e647df4d0fe52d5c04841c5fb6c49a8c573","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_02d34903","line":27,"updated":"2019-11-27 20:05:35.000000000","message":"Are we going to switch from endpoint_id to region/service as a followup? It seems like we\u0027re all in agreement that id is non-optimal for deployment tools.","commit_id":"c02c025a66f1ad64a9626d9cefb962c51d5eedb7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"63433a5c6fb4aad2ca42080825cc61f7fbb09cd8","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_406b5685","line":27,"in_reply_to":"3fa7e38b_02d34903","updated":"2019-12-02 10:08:26.000000000","message":"yes, although I didn\u0027t want to distract from these bits that are blocking development. I should do that patch soon.","commit_id":"c02c025a66f1ad64a9626d9cefb962c51d5eedb7"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"cd025e5a0e5d4201af1dae420a007d6fe6ee928c","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"endpoint_id \u003d cfg.StrOpt("},{"line_number":28,"context_line":"    \u0027endpoint_id\u0027,"},{"line_number":29,"context_line":"    help\u003d_(\"The service\u0027s endpoint id which is registered in Keystone.\"))"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_c9dc4e19","line":27,"in_reply_to":"3fa7e38b_406b5685","updated":"2019-12-02 15:54:16.000000000","message":"Sounds good, thanks.","commit_id":"c02c025a66f1ad64a9626d9cefb962c51d5eedb7"}]}
