)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7152fe1d21c7160a8abbb174adf2338cdcfd2872","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-05-09 22:21:05 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add keystone_client default interfaceURL"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I49b33a69ec99d2a91568ce27ef89dc80b75e7091"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dfbec78f_56f45986","line":8,"updated":"2019-05-09 14:26:09.000000000","message":"Is this fixing a bug? Why do this otherwise? This commit message could use some more explanation.","commit_id":"0e77ce3064103e55166fb883d89a1f7126339be6"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"7730920d529594fa0813bd85a3fdaf2cb4c5d2c8","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-05-09 22:21:05 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add keystone_client default interfaceURL"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I49b33a69ec99d2a91568ce27ef89dc80b75e7091"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dfbec78f_d02b602d","line":8,"in_reply_to":"dfbec78f_56f45986","updated":"2019-05-10 06:22:12.000000000","message":"In our company, we need to modify type of keystone endpointURL. I think this param should be configurable for Watcher users. I will update this commit message, thanks.","commit_id":"0e77ce3064103e55166fb883d89a1f7126339be6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8c611b51587c7f821b749a43090da2d0dcb82813","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-05-09 22:21:05 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add keystone_client default interfaceURL"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I49b33a69ec99d2a91568ce27ef89dc80b75e7091"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dfbec78f_a70c5941","line":8,"in_reply_to":"dfbec78f_d02b602d","updated":"2019-05-11 23:20:36.000000000","message":"Sure, yup, that\u0027s common, you want services communicating with each other over the internal interface or admin interface rather than public, and maybe in different regions, etc.","commit_id":"0e77ce3064103e55166fb883d89a1f7126339be6"}],"releasenotes/notes/support-keystoneclient-option-b30d1ff45f86a2e7.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc061f46a86e7752fdd9f7a2313ec8c92b3995c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add keystone_client Group for user to config \u0027interface\u0027 and \u0027region_name\u0027"},{"line_number":5,"context_line":"    by watcher.conf. The default value of \u0027interface\u0027 is \u0027public\u0027. User can use"},{"line_number":6,"context_line":"    this group to create a keystoneclient."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dfbec78f_b6669fc0","line":4,"range":{"start_line":4,"start_character":8,"end_line":4,"end_character":29},"updated":"2019-05-14 23:29:00.000000000","message":"``keystone_client`` configuration option group","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc061f46a86e7752fdd9f7a2313ec8c92b3995c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add keystone_client Group for user to config \u0027interface\u0027 and \u0027region_name\u0027"},{"line_number":5,"context_line":"    by watcher.conf. The default value of \u0027interface\u0027 is \u0027public\u0027. User can use"},{"line_number":6,"context_line":"    this group to create a keystoneclient."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dfbec78f_565723cb","line":4,"range":{"start_line":4,"start_character":42,"end_line":4,"end_character":48},"updated":"2019-05-14 23:29:00.000000000","message":"configure","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"51fb80a19b71266513b4826dcc43a11ba9312942","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add keystone_client Group for user to config \u0027interface\u0027 and \u0027region_name\u0027"},{"line_number":5,"context_line":"    by watcher.conf. The default value of \u0027interface\u0027 is \u0027public\u0027. User can use"},{"line_number":6,"context_line":"    this group to create a keystoneclient."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dfbec78f_84c30a89","line":4,"range":{"start_line":4,"start_character":8,"end_line":4,"end_character":29},"in_reply_to":"dfbec78f_b6669fc0","updated":"2019-05-16 08:17:47.000000000","message":"Done","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc061f46a86e7752fdd9f7a2313ec8c92b3995c5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add keystone_client Group for user to config \u0027interface\u0027 and \u0027region_name\u0027"},{"line_number":5,"context_line":"    by watcher.conf. The default value of \u0027interface\u0027 is \u0027public\u0027. User can use"},{"line_number":6,"context_line":"    this group to create a keystoneclient."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dfbec78f_16752b64","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":21},"updated":"2019-05-14 23:29:00.000000000","message":"nit: this is implied so you could just remove this","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc061f46a86e7752fdd9f7a2313ec8c92b3995c5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add keystone_client Group for user to config \u0027interface\u0027 and \u0027region_name\u0027"},{"line_number":5,"context_line":"    by watcher.conf. The default value of \u0027interface\u0027 is \u0027public\u0027. User can use"},{"line_number":6,"context_line":"    this group to create a keystoneclient."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dfbec78f_d66a337f","line":6,"range":{"start_line":5,"start_character":67,"end_line":6,"end_character":42},"updated":"2019-05-14 23:29:00.000000000","message":"Technically you can already (and do) create a keystoneclient in watcher, but this allows you to override the interace and region_name. You could maybe remove this sentence to avoid confusion.","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"51fb80a19b71266513b4826dcc43a11ba9312942","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add keystone_client Group for user to config \u0027interface\u0027 and \u0027region_name\u0027"},{"line_number":5,"context_line":"    by watcher.conf. The default value of \u0027interface\u0027 is \u0027public\u0027. User can use"},{"line_number":6,"context_line":"    this group to create a keystoneclient."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dfbec78f_44b99212","line":6,"range":{"start_line":5,"start_character":67,"end_line":6,"end_character":42},"in_reply_to":"dfbec78f_d66a337f","updated":"2019-05-16 08:17:47.000000000","message":"Done","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"40ada8eba60ea3d595a66b747e57260f7e8ee190","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add keystone_client Group for user to configure \u0027interface\u0027 and \u0027region_name\u0027"},{"line_number":5,"context_line":"    by watcher.conf. The default value of \u0027interface\u0027 is \u0027admin\u0027."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bfb3d3c7_080dc78f","line":4,"range":{"start_line":4,"start_character":8,"end_line":4,"end_character":29},"updated":"2019-05-16 18:24:08.000000000","message":"nit: ``keystone_client`` configuration option group","commit_id":"6480c3617c985b1905d8bb50f76f45e4dc155fc4"}],"watcher/conf/keystone_client.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7152fe1d21c7160a8abbb174adf2338cdcfd2872","unresolved":false,"context_lines":[{"line_number":21,"context_line":"keystone_client \u003d cfg.OptGroup(name\u003d\u0027keystone_client\u0027,"},{"line_number":22,"context_line":"                           title\u003d\u0027Configuration Options for Keystone\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"KEYSTONE_CLIENT_OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_d60e098c","line":24,"updated":"2019-05-09 14:26:09.000000000","message":"It would be a lot more complete to load the options from keystoneauth1 where you\u0027d get interface and region_name automatically, see how nova does this:\n\nhttps://github.com/openstack/nova/blob/master/nova/conf/keystone.py","commit_id":"0e77ce3064103e55166fb883d89a1f7126339be6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7354fecfbcfa270ae575e2350a8f46df92dc8568","unresolved":false,"context_lines":[{"line_number":21,"context_line":"keystone_client \u003d cfg.OptGroup(name\u003d\u0027keystone_client\u0027,"},{"line_number":22,"context_line":"                           title\u003d\u0027Configuration Options for Keystone\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"KEYSTONE_CLIENT_OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_d651d3da","line":24,"in_reply_to":"dfbec78f_a4ebe9d9","updated":"2019-05-14 23:17:42.000000000","message":"OK I learned today that watcher uses a common set of configuration options for the service clients:\n\nhttps://docs.openstack.org/watcher/latest/configuration/watcher.html#watcher-clients-auth\n\nI didn\u0027t realize that. So the common values for auth all go there and then you have per-service overrides for interface and region.\n\nSeems like at some point you\u0027d want to allow these to be fully configurable per service but I guess it\u0027s not a big deal until someone asks for that - and if it does come up you could probably just as easily move to using the openstacksdk and clouds.yaml for common configuration.","commit_id":"0e77ce3064103e55166fb883d89a1f7126339be6"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"7730920d529594fa0813bd85a3fdaf2cb4c5d2c8","unresolved":false,"context_lines":[{"line_number":21,"context_line":"keystone_client \u003d cfg.OptGroup(name\u003d\u0027keystone_client\u0027,"},{"line_number":22,"context_line":"                           title\u003d\u0027Configuration Options for Keystone\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"KEYSTONE_CLIENT_OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_b0dd8c43","line":24,"in_reply_to":"dfbec78f_d60e098c","updated":"2019-05-10 06:22:12.000000000","message":"Ok, i will read.","commit_id":"0e77ce3064103e55166fb883d89a1f7126339be6"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"b30208a6b084fc23d60504a21805c1791c400e71","unresolved":false,"context_lines":[{"line_number":21,"context_line":"keystone_client \u003d cfg.OptGroup(name\u003d\u0027keystone_client\u0027,"},{"line_number":22,"context_line":"                           title\u003d\u0027Configuration Options for Keystone\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"KEYSTONE_CLIENT_OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_a4ebe9d9","line":24,"in_reply_to":"dfbec78f_d60e098c","updated":"2019-05-13 11:43:22.000000000","message":"Thank you for letting me learn the difference between nova and watcher. For now, i think we can continue to follow this style. If there is time later, we can propose a spec to optimize them.","commit_id":"0e77ce3064103e55166fb883d89a1f7126339be6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0fa0cdb1a89b54d66ad7434cea60b3ae46259e93","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def list_opts():"},{"line_number":41,"context_line":"    return [(\u0027keystone_client\u0027, KEYSTONE_CLIENT_OPTS)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_966df133","line":41,"updated":"2019-05-09 14:26:35.000000000","message":"Would be good to have a release note for the new config options being added.","commit_id":"0e77ce3064103e55166fb883d89a1f7126339be6"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"7730920d529594fa0813bd85a3fdaf2cb4c5d2c8","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def list_opts():"},{"line_number":41,"context_line":"    return [(\u0027keystone_client\u0027, KEYSTONE_CLIENT_OPTS)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_301c3c11","line":41,"in_reply_to":"dfbec78f_966df133","updated":"2019-05-10 06:22:12.000000000","message":"yep","commit_id":"0e77ce3064103e55166fb883d89a1f7126339be6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc061f46a86e7752fdd9f7a2313ec8c92b3995c5","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"KEYSTONE_CLIENT_OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is public.\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_1623eb57","line":26,"updated":"2019-05-14 23:29:00.000000000","message":"For backward compatibility you should default to \u0027admin\u0027 because that\u0027s what keystoneclient defaults to:\n\nhttps://github.com/openstack/python-keystoneclient/blob/3.15.0/keystoneclient/httpclient.py#L251","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"17c1101dbc297c199f92cbdfd7210b9e0c113f23","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"KEYSTONE_CLIENT_OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is public.\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_49de8bda","line":26,"in_reply_to":"dfbec78f_1623eb57","updated":"2019-05-16 08:02:30.000000000","message":"Yes, this default value should be \u0027admin\u0027","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc061f46a86e7752fdd9f7a2313ec8c92b3995c5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is public.\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027Region in Identity service catalog to use for \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_762a672c","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":65},"updated":"2019-05-14 23:29:00.000000000","message":"I think this is actually completely free-form, I don\u0027t think keystone enforces this, otherwise you could use:\n\nchoices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027]\n\nBut it looks like valid_interfaces in KSA is restricted:\n\nhttps://opendev.org/openstack/keystoneauth/src/branch/master/keystoneauth1/loading/adapter.py#L46\n\nI\u0027m asking the keystone cores:\n\n(6:25:21 PM) mriedem: lbragstad: keystone interface is completely free-form isn\u0027t it? i.e. internal, admin and public are not hard-coded?\n(6:26:38 PM) mriedem: cmurphy: ^\n(6:27:18 PM) mriedem: or am i wrong? https://opendev.org/openstack/keystoneauth/src/branch/master/keystoneauth1/loading/adapter.py#L46","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0f7a79cd37780926cc7d51d57220420f943d9f84","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is public.\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027Region in Identity service catalog to use for \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_b6be9fb1","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":65},"in_reply_to":"dfbec78f_762a672c","updated":"2019-05-14 23:44:41.000000000","message":"OK so I guess we should stick to these 3 options:\n\n(6:29:16 PM) cmurphy: mriedem: keystone doesn\u0027t assume anything but keystoneauth and keystonemiddleware do\n(6:30:34 PM) cmurphy: had this conversation with sdague a long time ago https://review.opendev.org/433246\n(6:31:22 PM) mriedem: so in https://review.opendev.org/#/c/658102/8/watcher/conf/keystone_client.py i\u0027m correct in saying \u0027interface\u0027 is completely free-form for the deployment\n(6:31:24 PM) mriedem: right?\n(6:31:55 PM) mriedem: and when i say keystone i mean keystone* (auth)\n(6:37:15 PM) cmurphy: no i wouldn\u0027t agree with that, there are at least two places where we constrict the interface https://opendev.org/openstack/keystoneauth/src/branch/master/keystoneauth1/loading/adapter.py#L238 https://opendev.org/openstack/python-keystoneclient/src/branch/master/keystoneclient/v3/endpoints.py#L22\n(6:37:46 PM) mriedem: in this case watcher isn\u0027t using valid_interfaces\n(6:37:59 PM) mriedem: they are constructing keystoneclient with the interface kwarg, which i realize is deprecated in favor of valid_interfaces\n(6:38:20 PM) mriedem: so i guess in that light, it\u0027s best to just say interface should be restricted to those choices since you\u0027d have to use them with valid_interfaces anyway, right?\n(6:38:34 PM) mriedem: i.e. if/when interface as a kwarg is dropped\n(6:41:58 PM) cmurphy: i would say that there are enough assumptions throughout openstack about interface names that it is best to stick with those three\n\nGiven that, can you change this to use the choices kwarg?","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"17c1101dbc297c199f92cbdfd7210b9e0c113f23","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is public.\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027Region in Identity service catalog to use for \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_e9c09fe3","line":28,"range":{"start_line":28,"start_character":21,"end_line":28,"end_character":65},"in_reply_to":"dfbec78f_b6be9fb1","updated":"2019-05-16 08:02:30.000000000","message":"Although it seems that there are no constraints on the interface, the file https://opendev.org/openstack/python-keystoneclient/src/branch/master/keystoneclient/v3/endpoints.py#L62-L63 shows that we should tell the user that there are only three of these options.\n\nI read the url what your had given above and trace the initialization of the interface, https://opendev.org/openstack/keystoneauth/src/branch/master/keystoneauth1/adapter.py#L135. and there is no saying in this place that it will be abandoned. \nIMO, this style is consistent with other clients, such as cinder、neutron and so, i think it\u0027s be ok here.","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc061f46a86e7752fdd9f7a2313ec8c92b3995c5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is public.\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027Region in Identity service catalog to use for \u0027"},{"line_number":32,"context_line":"                    \u0027communication with the OpenStack service.\u0027)]"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_d6ff93a8","line":29,"range":{"start_line":29,"start_character":20,"end_line":29,"end_character":44},"updated":"2019-05-14 23:29:00.000000000","message":"This is redundant since it already shows up in the config option help output:\n\nhttp://logs.openstack.org/02/658102/8/check/openstack-tox-docs/dffcccd/html/configuration/watcher.html#keystone-client","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"17c1101dbc297c199f92cbdfd7210b9e0c113f23","unresolved":false,"context_lines":[{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is public.\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027Region in Identity service catalog to use for \u0027"},{"line_number":32,"context_line":"                    \u0027communication with the OpenStack service.\u0027)]"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfbec78f_d80a4b1e","line":29,"range":{"start_line":29,"start_character":20,"end_line":29,"end_character":44},"in_reply_to":"dfbec78f_d6ff93a8","updated":"2019-05-16 08:02:30.000000000","message":"Hello mriedem, these descriptions are generated by these defitinations which are not redundant.","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d465a134e9152b5a4cb6b9450fda2c60ea5ff4f7","unresolved":false,"context_lines":[{"line_number":26,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is public.\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027Region in Identity service catalog to use for \u0027"},{"line_number":32,"context_line":"                    \u0027communication with the OpenStack service.\u0027)]"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfb3d3c7_e83ab332","line":29,"range":{"start_line":29,"start_character":20,"end_line":29,"end_character":44},"in_reply_to":"dfbec78f_d80a4b1e","updated":"2019-05-16 18:20:06.000000000","message":"No I mean if you look at this:\n\nhttp://logs.openstack.org/02/658102/8/check/openstack-tox-docs/dffcccd/html/configuration/watcher.html#keystone-client\n\nThere is a Type and a Default, and the default value is \"public\" in there. So saying the default in the help is redundant.\n\n\ninterface\n\n    Type\n\n        string\n    Default\n\n        public\n\n    Type of endpoint to use in keystoneclient. Supported values: internal, public, admin. The default is public.","commit_id":"56fbfde8f4c46eeb520b88832201b97d0bccf1fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"40ada8eba60ea3d595a66b747e57260f7e8ee190","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027admin\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is admin.\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027Region in Identity service catalog to use for \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfb3d3c7_e8687322","line":28,"range":{"start_line":28,"start_character":39,"end_line":28,"end_character":62},"updated":"2019-05-16 18:24:08.000000000","message":"Why not restrict the value to these if they are the supported values, i.e. define the option with this kwarg:\n\nchoices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027]\n\nThat way if someone fat-fingers (typo) the value they will find out immediately what is wrong when starting the service.","commit_id":"6480c3617c985b1905d8bb50f76f45e4dc155fc4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"40ada8eba60ea3d595a66b747e57260f7e8ee190","unresolved":false,"context_lines":[{"line_number":26,"context_line":"               default\u003d\u0027admin\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Type of endpoint to use in keystoneclient. \u0027"},{"line_number":28,"context_line":"                    \u0027Supported values: internal, public, admin. \u0027"},{"line_number":29,"context_line":"                    \u0027The default is admin.\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027Region in Identity service catalog to use for \u0027"},{"line_number":32,"context_line":"                    \u0027communication with the OpenStack service.\u0027)]"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfb3d3c7_a81d9bbe","line":29,"range":{"start_line":29,"start_character":20,"end_line":29,"end_character":43},"updated":"2019-05-16 18:24:08.000000000","message":"nit: again, this is redundant since oslo.config will generate the docs for the option with the default called out:\n\nhttp://logs.openstack.org/02/658102/9/check/openstack-tox-docs/bcbf73e/html/configuration/watcher.html#keystone_client.interface\n\n\ninterface\n\n    Type\n\n        string\n    Default\n\n        admin\n\n    Type of endpoint to use in keystoneclient. Supported values: internal, public, admin. The default is admin.","commit_id":"6480c3617c985b1905d8bb50f76f45e4dc155fc4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4c439ecead25dff04f2f2292302162fa9c477d16","unresolved":false,"context_lines":[{"line_number":20,"context_line":"                               title\u003d\u0027Configuration Options for Keystone\u0027)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"KEYSTONE_CLIENT_OPTS \u003d ["},{"line_number":23,"context_line":"    cfg.StrOpt(\u0027interface\u0027,"},{"line_number":24,"context_line":"               default\u003d\u0027admin\u0027,"},{"line_number":25,"context_line":"               choices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027]),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bfb3d3c7_fad9fc21","line":23,"range":{"start_line":23,"start_character":8,"end_line":23,"end_character":14},"updated":"2019-05-18 18:35:52.000000000","message":"We still want the help for the description:\n\nhelp\u003d\u0027Type of endpoint to use in keystoneclient.\u0027","commit_id":"d50b791f9a11bb230fa163a30daf6e9e8a0ace00"}]}
