)]}'
{"nova/conf/cinder.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c64021c3b6d901e3d518a42e5bcf62d2789e39da","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    cfg.StrOpt(\u0027catalog_info\u0027,"},{"line_number":27,"context_line":"               default\u003d\u0027volumev3:cinderv3:publicURL\u0027,"},{"line_number":28,"context_line":"               regex\u003d\u0027(\\w+):(\\w+):(.*?)\u0027,"},{"line_number":29,"context_line":"               help\u003d\"\"\""},{"line_number":30,"context_line":"Info to match when looking for cinder in the service catalog."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_405a352a","line":29,"updated":"2017-04-26 00:22:06.000000000","message":"just FYI, try to avoid style-only changes like the above (or keep them to a separate patch). It adds cognitive load for reviewers because we need to figure out what changed and why :)","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    cfg.StrOpt(\u0027catalog_info\u0027,"},{"line_number":27,"context_line":"               default\u003d\u0027volumev3:cinderv3:publicURL\u0027,"},{"line_number":28,"context_line":"               regex\u003d\u0027(\\w+):(\\w+):(.*?)\u0027,"},{"line_number":29,"context_line":"               help\u003d\"\"\""},{"line_number":30,"context_line":"Info to match when looking for cinder in the service catalog."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_7aeb62db","line":29,"in_reply_to":"5ff73747_405a352a","updated":"2017-05-01 22:47:49.000000000","message":"Yup, sorry, my IDE flags these pep8 issues that nova bypasses, hard to resist ;-)  Will revert.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"}],"nova/conf/endpoint.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c6f4e1d6fd3085a189f11329e4d9f70e104b4aba","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                   help\u003d\"Key into the service catalog for endpoint lookup. \""},{"line_number":54,"context_line":"                        \"If not specified, a list of service types \""},{"line_number":55,"context_line":"                        \"appropriate to the conf group will be tried.\"),"},{"line_number":56,"context_line":"        cfg.StrOpt(\"service_interface\","},{"line_number":57,"context_line":"                   choices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027],"},{"line_number":58,"context_line":"                   help\u003d\"Interface for endpoint lookup.  If not specified, \""},{"line_number":59,"context_line":"                        \"\u0027internal\u0027, \u0027public\u0027, and \u0027admin\u0027 will be tried in \""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_83bcd4dc","line":56,"updated":"2017-04-25 17:26:45.000000000","message":"This should be \"interface\" - not \"service_interface\" - the config value for keystone is interface - and that\u0027s also what the value in the service catalog is.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                   help\u003d\"Key into the service catalog for endpoint lookup. \""},{"line_number":54,"context_line":"                        \"If not specified, a list of service types \""},{"line_number":55,"context_line":"                        \"appropriate to the conf group will be tried.\"),"},{"line_number":56,"context_line":"        cfg.StrOpt(\"service_interface\","},{"line_number":57,"context_line":"                   choices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027],"},{"line_number":58,"context_line":"                   help\u003d\"Interface for endpoint lookup.  If not specified, \""},{"line_number":59,"context_line":"                        \"\u0027internal\u0027, \u0027public\u0027, and \u0027admin\u0027 will be tried in \""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_e6fe0637","line":56,"in_reply_to":"5ff73747_83bcd4dc","updated":"2017-04-25 18:08:06.000000000","message":"I did have it that way earlier, but \"interface\" is a pretty generic/ambiguous term by itself, and we\u0027re slapping it into multiple conf groups.  I did this to give some forward assurance of disambiguity.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                   help\u003d\"Key into the service catalog for endpoint lookup. \""},{"line_number":54,"context_line":"                        \"If not specified, a list of service types \""},{"line_number":55,"context_line":"                        \"appropriate to the conf group will be tried.\"),"},{"line_number":56,"context_line":"        cfg.StrOpt(\"service_interface\","},{"line_number":57,"context_line":"                   choices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027],"},{"line_number":58,"context_line":"                   help\u003d\"Interface for endpoint lookup.  If not specified, \""},{"line_number":59,"context_line":"                        \"\u0027internal\u0027, \u0027public\u0027, and \u0027admin\u0027 will be tried in \""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_373c7edf","line":56,"in_reply_to":"5ff73747_e6fe0637","updated":"2017-05-01 22:47:49.000000000","message":"Done (getting it from keystoneauth1.adapter.Adapter).","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f1b94098d08df2e2b6a05cc22a9c2112a534589b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                   choices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027],"},{"line_number":58,"context_line":"                   help\u003d\"Interface for endpoint lookup.  If not specified, \""},{"line_number":59,"context_line":"                        \"\u0027internal\u0027, \u0027public\u0027, and \u0027admin\u0027 will be tried in \""},{"line_number":60,"context_line":"                        \"that order.\")"},{"line_number":61,"context_line":"    ]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Include these within the cfg opt(s) being replaced by endpoint opts."}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_a384710d","line":60,"updated":"2017-04-25 17:02:00.000000000","message":"What about service_name and region? And maybe override URL?","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c6f4e1d6fd3085a189f11329e4d9f70e104b4aba","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                   choices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027],"},{"line_number":58,"context_line":"                   help\u003d\"Interface for endpoint lookup.  If not specified, \""},{"line_number":59,"context_line":"                        \"\u0027internal\u0027, \u0027public\u0027, and \u0027admin\u0027 will be tried in \""},{"line_number":60,"context_line":"                        \"that order.\")"},{"line_number":61,"context_line":"    ]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Include these within the cfg opt(s) being replaced by endpoint opts."}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_e3e158fe","line":60,"in_reply_to":"5ff73747_a384710d","updated":"2017-04-25 17:26:45.000000000","message":"I agree about region - region is super important. I\u0027d like to disagree about name, since it _shouldn\u0027t_ have meaning - but it turns out reality is not the same as my fantasy.\n\nI also agree with endpoint_override - it shouldn\u0027t be needed - but it\u0027s a standard option for keystoneauth Adapters.\n\nActually - what this should be is a method on keystoneauth.loading: \"register_adapter_conf_options\" that we call here. These are all common ksa adapter options - that ksa doens\u0027t have a register_adapter_conf_options is a bug that should be easy to remedy. (that way we can keep them consistent like we do with register_session_conf_options)","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                   choices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027],"},{"line_number":58,"context_line":"                   help\u003d\"Interface for endpoint lookup.  If not specified, \""},{"line_number":59,"context_line":"                        \"\u0027internal\u0027, \u0027public\u0027, and \u0027admin\u0027 will be tried in \""},{"line_number":60,"context_line":"                        \"that order.\")"},{"line_number":61,"context_line":"    ]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Include these within the cfg opt(s) being replaced by endpoint opts."}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_c3cadd18","line":60,"in_reply_to":"5ff73747_a384710d","updated":"2017-04-25 18:08:06.000000000","message":"In the BP, reviews thereof, and IRC discussions, it was concluded (as much as anything is ever concluded) that we didn\u0027t want the service_name.\n\nThe region would I think be part of the keystone auth business, which is config\u0027d separately (but about which I do still have questions).\n\nAnd override URL I thought was kinda the whole thing we were trying to get rid of here.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                   choices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027],"},{"line_number":58,"context_line":"                   help\u003d\"Interface for endpoint lookup.  If not specified, \""},{"line_number":59,"context_line":"                        \"\u0027internal\u0027, \u0027public\u0027, and \u0027admin\u0027 will be tried in \""},{"line_number":60,"context_line":"                        \"that order.\")"},{"line_number":61,"context_line":"    ]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Include these within the cfg opt(s) being replaced by endpoint opts."}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_f72176b5","line":60,"in_reply_to":"5ff73747_c9355bdc","updated":"2017-05-01 22:47:49.000000000","message":"Done (getting it from keystoneauth1.adapter.Adapter).","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                   choices\u003d[\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027],"},{"line_number":58,"context_line":"                   help\u003d\"Interface for endpoint lookup.  If not specified, \""},{"line_number":59,"context_line":"                        \"\u0027internal\u0027, \u0027public\u0027, and \u0027admin\u0027 will be tried in \""},{"line_number":60,"context_line":"                        \"that order.\")"},{"line_number":61,"context_line":"    ]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Include these within the cfg opt(s) being replaced by endpoint opts."}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_c9355bdc","line":60,"in_reply_to":"5ff73747_e3e158fe","updated":"2017-04-25 18:08:06.000000000","message":"So wait - do we want service_name after all?\n\nregister_adapter_conf_options - what\u0027s an \u0027adapter\u0027?  Is that related to an \u0027auth\u0027 (cause we have register_auth_conf_options).\n\nAnd are you suggesting that the service_type/interface options should be in there as well?  (It did occur to me that that might be a tidier place for them; but I didn\u0027t know how much leeway we had over external libs/projects like keystoneauth1.)","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"}],"nova/conf/glance.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"4aa439495972d987332e2ee4a046d87852302b2c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    # service catalog, however we don\u0027t have a good path there atm."},{"line_number":28,"context_line":"    # TODO(raj_singh): Add \"required\u003dTrue\" flag to this option."},{"line_number":29,"context_line":"    cfg.ListOpt(\u0027api_servers\u0027,"},{"line_number":30,"context_line":"                help\u003d\"\"\""},{"line_number":31,"context_line":"List of glance api servers endpoints available to nova."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"https is used for ssl-based glance api servers."}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_83b5f5cf","line":30,"range":{"start_line":30,"start_character":8,"end_line":30,"end_character":16},"updated":"2017-04-25 17:05:29.000000000","message":"nit: we spent a lot of time making these conf files have a consistent layout. Changing the indentation style is not only an unrelated whitespace change, it makes this file inconsistent, and should not be done.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    # service catalog, however we don\u0027t have a good path there atm."},{"line_number":28,"context_line":"    # TODO(raj_singh): Add \"required\u003dTrue\" flag to this option."},{"line_number":29,"context_line":"    cfg.ListOpt(\u0027api_servers\u0027,"},{"line_number":30,"context_line":"                help\u003d\"\"\""},{"line_number":31,"context_line":"List of glance api servers endpoints available to nova."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"https is used for ssl-based glance api servers."}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_b7276ec7","line":30,"range":{"start_line":30,"start_character":8,"end_line":30,"end_character":16},"in_reply_to":"5ff73747_2393c1fc","updated":"2017-05-01 22:47:49.000000000","message":"Done","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    # service catalog, however we don\u0027t have a good path there atm."},{"line_number":28,"context_line":"    # TODO(raj_singh): Add \"required\u003dTrue\" flag to this option."},{"line_number":29,"context_line":"    cfg.ListOpt(\u0027api_servers\u0027,"},{"line_number":30,"context_line":"                help\u003d\"\"\""},{"line_number":31,"context_line":"List of glance api servers endpoints available to nova."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"https is used for ssl-based glance api servers."}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_2393c1fc","line":30,"range":{"start_line":30,"start_character":8,"end_line":30,"end_character":16},"in_reply_to":"5ff73747_83b5f5cf","updated":"2017-04-25 18:08:06.000000000","message":"Noted - sorry - my IDE still complains about this pep8 rule.  Will revert.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"76d9b04c4e26f48479664490026901ec750e0544","unresolved":false,"context_lines":[{"line_number":37,"context_line":"* A list of any fully qualified url of the form \"scheme://hostname:port[/path]\""},{"line_number":38,"context_line":"  (i.e. \"http://10.0.1.0:9292\" or \"https://my.glance.server/image\")."},{"line_number":39,"context_line":"\"\"\","},{"line_number":40,"context_line":"                **endpoint.deprecation_kwargs),"},{"line_number":41,"context_line":"    cfg.BoolOpt(\u0027api_insecure\u0027,"},{"line_number":42,"context_line":"        default\u003dFalse,"},{"line_number":43,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_a3359148","line":40,"updated":"2017-04-25 17:05:44.000000000","message":"If you get rid of this though, what are you replacing it with?","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":37,"context_line":"* A list of any fully qualified url of the form \"scheme://hostname:port[/path]\""},{"line_number":38,"context_line":"  (i.e. \"http://10.0.1.0:9292\" or \"https://my.glance.server/image\")."},{"line_number":39,"context_line":"\"\"\","},{"line_number":40,"context_line":"                **endpoint.deprecation_kwargs),"},{"line_number":41,"context_line":"    cfg.BoolOpt(\u0027api_insecure\u0027,"},{"line_number":42,"context_line":"        default\u003dFalse,"},{"line_number":43,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_b7008e03","line":40,"in_reply_to":"5ff73747_295a7f29","updated":"2017-05-01 22:47:49.000000000","message":"Gave up trying to be clever here.  Including deprecation text explicitly.  Once we work through more confs, maybe we\u0027ll figure a way to pull it out.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"* A list of any fully qualified url of the form \"scheme://hostname:port[/path]\""},{"line_number":38,"context_line":"  (i.e. \"http://10.0.1.0:9292\" or \"https://my.glance.server/image\")."},{"line_number":39,"context_line":"\"\"\","},{"line_number":40,"context_line":"                **endpoint.deprecation_kwargs),"},{"line_number":41,"context_line":"    cfg.BoolOpt(\u0027api_insecure\u0027,"},{"line_number":42,"context_line":"        default\u003dFalse,"},{"line_number":43,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_295a7f29","line":40,"in_reply_to":"5ff73747_43e7ece5","updated":"2017-04-25 18:08:06.000000000","message":"Yeah, via endpoint_opts - see below.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c6f4e1d6fd3085a189f11329e4d9f70e104b4aba","unresolved":false,"context_lines":[{"line_number":37,"context_line":"* A list of any fully qualified url of the form \"scheme://hostname:port[/path]\""},{"line_number":38,"context_line":"  (i.e. \"http://10.0.1.0:9292\" or \"https://my.glance.server/image\")."},{"line_number":39,"context_line":"\"\"\","},{"line_number":40,"context_line":"                **endpoint.deprecation_kwargs),"},{"line_number":41,"context_line":"    cfg.BoolOpt(\u0027api_insecure\u0027,"},{"line_number":42,"context_line":"        default\u003dFalse,"},{"line_number":43,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_43e7ece5","line":40,"in_reply_to":"5ff73747_a3359148","updated":"2017-04-25 17:26:45.000000000","message":"It should be being replaced with the set of adapter_conf_options- service_type, service_name, interface, version, endpoint_override, region, yeah?","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"76d9b04c4e26f48479664490026901ec750e0544","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This setting can be used to turn off verification of the glance server"},{"line_number":47,"context_line":"certificate against the certificate authorities."},{"line_number":48,"context_line":"\"\"\"),"},{"line_number":49,"context_line":"    cfg.IntOpt(\u0027num_retries\u0027,"},{"line_number":50,"context_line":"        default\u003d0,"},{"line_number":51,"context_line":"        min\u003d0,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_e314b9a2","line":48,"updated":"2017-04-25 17:05:44.000000000","message":"Hmm, not sure if we need this everywhere too, seems strange here.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This setting can be used to turn off verification of the glance server"},{"line_number":47,"context_line":"certificate against the certificate authorities."},{"line_number":48,"context_line":"\"\"\"),"},{"line_number":49,"context_line":"    cfg.IntOpt(\u0027num_retries\u0027,"},{"line_number":50,"context_line":"        default\u003d0,"},{"line_number":51,"context_line":"        min\u003d0,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_a6711e0f","line":48,"in_reply_to":"5ff73747_a3a7d0a7","updated":"2017-04-25 18:08:06.000000000","message":"register_session_conf_options isn\u0027t (yet) used herein - see other glance-related comments.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This setting can be used to turn off verification of the glance server"},{"line_number":47,"context_line":"certificate against the certificate authorities."},{"line_number":48,"context_line":"\"\"\"),"},{"line_number":49,"context_line":"    cfg.IntOpt(\u0027num_retries\u0027,"},{"line_number":50,"context_line":"        default\u003d0,"},{"line_number":51,"context_line":"        min\u003d0,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_3a0a231f","line":48,"in_reply_to":"5ff73747_a6711e0f","updated":"2017-05-01 22:47:49.000000000","message":"register_session_conf_options is now being used.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c6f4e1d6fd3085a189f11329e4d9f70e104b4aba","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This setting can be used to turn off verification of the glance server"},{"line_number":47,"context_line":"certificate against the certificate authorities."},{"line_number":48,"context_line":"\"\"\"),"},{"line_number":49,"context_line":"    cfg.IntOpt(\u0027num_retries\u0027,"},{"line_number":50,"context_line":"        default\u003d0,"},{"line_number":51,"context_line":"        min\u003d0,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_a3a7d0a7","line":48,"in_reply_to":"5ff73747_e314b9a2","updated":"2017-04-25 17:26:45.000000000","message":"SSL options come from the keystone Session - there should already be ssl related options that come from register_session_conf_options","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"This setting can be used to turn off verification of the glance server"},{"line_number":47,"context_line":"certificate against the certificate authorities."},{"line_number":48,"context_line":"\"\"\"),"},{"line_number":49,"context_line":"    cfg.IntOpt(\u0027num_retries\u0027,"},{"line_number":50,"context_line":"        default\u003d0,"},{"line_number":51,"context_line":"        min\u003d0,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_435b6d53","line":48,"in_reply_to":"5ff73747_e314b9a2","updated":"2017-04-25 18:08:06.000000000","message":"There\u0027s a separate change working on this: https://review.openstack.org/#/c/412634/26/nova/conf/glance.py","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"}],"nova/image/glance.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"4aa439495972d987332e2ee4a046d87852302b2c","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                api_server \u003d \u0027http://\u0027 + api_server"},{"line_number":121,"context_line":"                # NOTE(sdague): remove in O."},{"line_number":122,"context_line":"                LOG.warning("},{"line_number":123,"context_line":"                    _LW(\"No protocol specified in for api_server \u0027%s\u0027, \""},{"line_number":124,"context_line":"                        \"please update [glance] api_servers with fully \""},{"line_number":125,"context_line":"                        \"qualified url including scheme (http / https)\"),"},{"line_number":126,"context_line":"                    api_server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_433a4d34","line":123,"range":{"start_line":123,"start_character":20,"end_line":123,"end_character":24},"updated":"2017-04-25 17:05:29.000000000","message":"You should probably remove the log translation, as we aren\u0027t doing that anymore.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                api_server \u003d \u0027http://\u0027 + api_server"},{"line_number":121,"context_line":"                # NOTE(sdague): remove in O."},{"line_number":122,"context_line":"                LOG.warning("},{"line_number":123,"context_line":"                    _LW(\"No protocol specified in for api_server \u0027%s\u0027, \""},{"line_number":124,"context_line":"                        \"please update [glance] api_servers with fully \""},{"line_number":125,"context_line":"                        \"qualified url including scheme (http / https)\"),"},{"line_number":126,"context_line":"                    api_server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_e38f182c","line":123,"range":{"start_line":123,"start_character":20,"end_line":123,"end_character":24},"in_reply_to":"5ff73747_433a4d34","updated":"2017-04-25 18:08:06.000000000","message":"Done.  (Wasn\u0027t sure to what extent or under what circumstances we should be removing translation from existing code.)","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"e2517c04408cac70264f1cc9f387af38fc07b4d2","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                api_server \u003d \u0027http://\u0027 + api_server"},{"line_number":121,"context_line":"                # NOTE(sdague): remove in O."},{"line_number":122,"context_line":"                LOG.warning("},{"line_number":123,"context_line":"                    _LW(\"No protocol specified in for api_server \u0027%s\u0027, \""},{"line_number":124,"context_line":"                        \"please update [glance] api_servers with fully \""},{"line_number":125,"context_line":"                        \"qualified url including scheme (http / https)\"),"},{"line_number":126,"context_line":"                    api_server)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_1fe807b2","line":123,"range":{"start_line":123,"start_character":20,"end_line":123,"end_character":24},"in_reply_to":"5ff73747_e38f182c","updated":"2017-04-26 06:22:28.000000000","message":"some info in commit msg\n4032d6950f3b2e0e78d6749ad44a45d95caf9ad4","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"}],"nova/utils.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"05c3d2bd238d9e06e90b638a1ac884f54a2a2c1a","unresolved":false,"context_lines":[{"line_number":1535,"context_line":""},{"line_number":1536,"context_line":""},{"line_number":1537,"context_line":"def get_service_url(group):"},{"line_number":1538,"context_line":"    \"\"\"Find the endpoint URL for"},{"line_number":1539,"context_line":"    :param group: String name of a conf group whose service endpoint is to be"},{"line_number":1540,"context_line":"                  returned.  The conf must present appropriate keystone auth"},{"line_number":1541,"context_line":"                  options."}],"source_content_type":"text/x-python","patch_set":1,"id":"7ffa3b31_bf48c886","line":1538,"updated":"2017-04-19 22:22:22.000000000","message":"fix this doc","commit_id":"21b8f0c9f5068892b8f4129c3932399da827d55f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ced12713e99a09820e49fa410bce2028e511286b","unresolved":false,"context_lines":[{"line_number":1540,"context_line":"                  returned.  The conf must present appropriate keystone auth"},{"line_number":1541,"context_line":"                  options."},{"line_number":1542,"context_line":"    :return: String endpoint URL for the service type corresponding to the"},{"line_number":1543,"context_line":"             conf_group.  If multiple URLs exist for the service type,"},{"line_number":1544,"context_line":"             successive calls to this method return them in random order."},{"line_number":1545,"context_line":"    :raise: ServiceNotFound if no endpoint URL could be found for the given"},{"line_number":1546,"context_line":"            service_type."},{"line_number":1547,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7ffa3b31_df6f11fa","line":1544,"range":{"start_line":1543,"start_character":26,"end_line":1544,"end_character":73},"updated":"2017-04-20 01:21:59.000000000","message":"Whereas ServiceCatalog seems to support multiple URLs, the keystone Session doesn\u0027t appear to.  So can we even support e.g. what\u0027s done by [glance]api_servers?","commit_id":"21b8f0c9f5068892b8f4129c3932399da827d55f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c6f4e1d6fd3085a189f11329e4d9f70e104b4aba","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                  to be returned."},{"line_number":1506,"context_line":"    :return: A list of service_type strings for the given conf group."},{"line_number":1507,"context_line":"    \"\"\""},{"line_number":1508,"context_line":"    # TODO(efried): Use service-type-authority or os-client-config"},{"line_number":1509,"context_line":"    return {"},{"line_number":1510,"context_line":"        # TODO(efried): Get a correct and comprehensive list of these"},{"line_number":1511,"context_line":"        \u0027glance\u0027: [\u0027image\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_e3bcb9dd","line":1508,"updated":"2017-04-25 17:26:45.000000000","message":"I recommend os-client-config. It\u0027s a library already and has a method you can just use.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                  to be returned."},{"line_number":1506,"context_line":"    :return: A list of service_type strings for the given conf group."},{"line_number":1507,"context_line":"    \"\"\""},{"line_number":1508,"context_line":"    # TODO(efried): Use service-type-authority or os-client-config"},{"line_number":1509,"context_line":"    return {"},{"line_number":1510,"context_line":"        # TODO(efried): Get a correct and comprehensive list of these"},{"line_number":1511,"context_line":"        \u0027glance\u0027: [\u0027image\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_ba15133f","line":1508,"in_reply_to":"5ff73747_a329109c","updated":"2017-05-01 22:47:49.000000000","message":"Agreed to do it this way for now, and swap over to o-c-c/service-types-authority/whatever in future change sets.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                  to be returned."},{"line_number":1506,"context_line":"    :return: A list of service_type strings for the given conf group."},{"line_number":1507,"context_line":"    \"\"\""},{"line_number":1508,"context_line":"    # TODO(efried): Use service-type-authority or os-client-config"},{"line_number":1509,"context_line":"    return {"},{"line_number":1510,"context_line":"        # TODO(efried): Get a correct and comprehensive list of these"},{"line_number":1511,"context_line":"        \u0027glance\u0027: [\u0027image\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_a329109c","line":1508,"in_reply_to":"5ff73747_e3bcb9dd","updated":"2017-04-25 18:08:06.000000000","message":"Is it ready for primetime use?  I got the impression from IRC discussions that it maybe wasn\u0027t fully populated yet.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c64021c3b6d901e3d518a42e5bcf62d2789e39da","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"        \u0027glance\u0027: [\u0027image\u0027],"},{"line_number":1512,"context_line":"        \u0027cinder\u0027: [\u0027block-storage\u0027, \u0027volumev3\u0027, \u0027volumev2\u0027, \u0027volume\u0027],"},{"line_number":1513,"context_line":"        \u0027ironic\u0027: [\u0027baremetal\u0027]"},{"line_number":1514,"context_line":"    }[group]"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":""},{"line_number":1517,"context_line":"@lockutils.synchronized(\u0027_KS_AUTHS\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_2041693a","line":1514,"updated":"2017-04-26 00:22:06.000000000","message":"++ on this method. this is precisely what I was thinking of when I described it on IRC. As for using os-client-config, hey, if it has a corresponding method, cool. :)","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"        \u0027glance\u0027: [\u0027image\u0027],"},{"line_number":1512,"context_line":"        \u0027cinder\u0027: [\u0027block-storage\u0027, \u0027volumev3\u0027, \u0027volumev2\u0027, \u0027volume\u0027],"},{"line_number":1513,"context_line":"        \u0027ironic\u0027: [\u0027baremetal\u0027]"},{"line_number":1514,"context_line":"    }[group]"},{"line_number":1515,"context_line":""},{"line_number":1516,"context_line":""},{"line_number":1517,"context_line":"@lockutils.synchronized(\u0027_KS_AUTHS\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_5a204f9b","line":1514,"in_reply_to":"5ff73747_2041693a","updated":"2017-05-01 22:47:49.000000000","message":"Could still use some help filling this out, but that can be done on a per-group basis as those are integrated.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c6f4e1d6fd3085a189f11329e4d9f70e104b4aba","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"    # TODO(efried): We ought to have one auth, and one place we look for auth"},{"line_number":1528,"context_line":"    # TODO(efried): options.  I don\u0027t think each conf group should need to"},{"line_number":1529,"context_line":"    # TODO(efried): have separate auth.  But where should those be?"},{"line_number":1530,"context_line":"    # TODO(efried): PoC (for testing): my env has creds in \u0027placement\u0027"},{"line_number":1531,"context_line":"    group \u003d \u0027placement\u0027"},{"line_number":1532,"context_line":""},{"line_number":1533,"context_line":"    if group not in _KS_AUTHS:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_8384d45f","line":1530,"updated":"2017-04-25 17:26:45.000000000","message":"There can be multiple auths in a cloud - and also depending on execution context. there is (sadly) nothing stopping a cloud admin from making a different service user for nova to use to talk to cinder and to talk to glance and to talk to neutron. (seems like a lot of work to me, but it\u0027s there) Also - for some requests the API call is made to the other service using the auth constructed from the context from the user - but then in still other places it\u0027s made using the user\u0027s auth but with an auth wrapper that allows a nova admin account to fetch a new token from keystone on behalf of the user if the user\u0027s token expires mid-operation.\n\nMostly saying, much as I agree with the sentiment, we can\u0027t actually have only one auth.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c64021c3b6d901e3d518a42e5bcf62d2789e39da","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"    # TODO(efried): We ought to have one auth, and one place we look for auth"},{"line_number":1528,"context_line":"    # TODO(efried): options.  I don\u0027t think each conf group should need to"},{"line_number":1529,"context_line":"    # TODO(efried): have separate auth.  But where should those be?"},{"line_number":1530,"context_line":"    # TODO(efried): PoC (for testing): my env has creds in \u0027placement\u0027"},{"line_number":1531,"context_line":"    group \u003d \u0027placement\u0027"},{"line_number":1532,"context_line":""},{"line_number":1533,"context_line":"    if group not in _KS_AUTHS:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_003c2dbd","line":1530,"updated":"2017-04-26 00:22:06.000000000","message":"Yeah, what mordred said. Besides that, though, generally you want to do caching at the caller level, not here. In other words, when the scheduler report client creates a keystoneauth session for the placement service, then the scheduler report client should be responsible for caching (or not caching, depending on what the caller\u0027s preference is). Here, just focus on returning the correctly-constructed keystoneauth session from the available configuration file options.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"    # TODO(efried): We ought to have one auth, and one place we look for auth"},{"line_number":1528,"context_line":"    # TODO(efried): options.  I don\u0027t think each conf group should need to"},{"line_number":1529,"context_line":"    # TODO(efried): have separate auth.  But where should those be?"},{"line_number":1530,"context_line":"    # TODO(efried): PoC (for testing): my env has creds in \u0027placement\u0027"},{"line_number":1531,"context_line":"    group \u003d \u0027placement\u0027"},{"line_number":1532,"context_line":""},{"line_number":1533,"context_line":"    if group not in _KS_AUTHS:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_da333ff5","line":1530,"in_reply_to":"5ff73747_003c2dbd","updated":"2017-05-01 22:47:49.000000000","message":"Done.  Getting auth/session opts from keystoneauth1.loading.  And get_service_url is now supporting caching at various levels by letting you pass in your own auth/session/adapter.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":1527,"context_line":"    # TODO(efried): We ought to have one auth, and one place we look for auth"},{"line_number":1528,"context_line":"    # TODO(efried): options.  I don\u0027t think each conf group should need to"},{"line_number":1529,"context_line":"    # TODO(efried): have separate auth.  But where should those be?"},{"line_number":1530,"context_line":"    # TODO(efried): PoC (for testing): my env has creds in \u0027placement\u0027"},{"line_number":1531,"context_line":"    group \u003d \u0027placement\u0027"},{"line_number":1532,"context_line":""},{"line_number":1533,"context_line":"    if group not in _KS_AUTHS:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_c6b8aa2b","line":1530,"in_reply_to":"5ff73747_8384d45f","updated":"2017-04-25 18:08:06.000000000","message":"Boo.\n\nOkay, so I\u0027ll have to make sure that all conf groups containing the new option *also* contain keystone auth options.  For at least glance, those will be adds, making the glance config much more obtrusive.  (Without that, it\u0027s, \"get rid of api_servers and you don\u0027t need to do anything else,\" which I can sell; now it\u0027s, \"get rid of api_servers and add in all these auth options.\")  I\u0027m not saying we don\u0027t do that; just want to make sure the implications are understood and accepted.\n\nAs for the token refresh business, I think that\u0027s part of [1], which I assume will be done in separate change sets, but may overlap with this work.\n\n[1] https://blueprints.launchpad.net/nova/+spec/use-service-tokens-pike","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c6f4e1d6fd3085a189f11329e4d9f70e104b4aba","unresolved":false,"context_lines":[{"line_number":1561,"context_line":"    service_types \u003d [svctyp] if svctyp else _default_service_types(group)"},{"line_number":1562,"context_line":"    interface \u003d getattr(conf_group, \u0027service_interface\u0027, None)"},{"line_number":1563,"context_line":"    interfaces \u003d [interface] if interface else [\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027]"},{"line_number":1564,"context_line":"    auth, session \u003d ks_auth or get_keystone_auth(group)"},{"line_number":1565,"context_line":"    sc \u003d auth.get_auth_ref(session).service_catalog"},{"line_number":1566,"context_line":""},{"line_number":1567,"context_line":"    for st in service_types:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_a3d111d0","line":1564,"updated":"2017-04-25 17:26:45.000000000","message":"Rather than getting an auth object and then the catalog - just use the get_endpoint method on the Session. It does the appropriate things with caching the catalog and discovery urls and whatnot. for instance:\n\n\u003e\u003e\u003e c.keystone_session\n\u003ckeystoneauth1.session.Session object at 0x7f24a8509350\u003e\n\u003e\u003e\u003e c.keystone_session.get_endpoint(service_type\u003d\u0027image\u0027)\nu\u0027https://image-ca-ymq-1.vexxhost.net\u0027\n\u003e\u003e\u003e c.keystone_session.get_endpoint(service_type\u003d\u0027volumev3\u0027)\nkeystoneauth1.exceptions.catalog.EndpointNotFound: public endpoint for volumev3 service not found\n\u003e\u003e\u003e c.keystone_session.get_endpoint(service_type\u003d\u0027volumev2\u0027)\nu\u0027https://block-storage-ca-ymq-1.vexxhost.net/v2/db92b20496ae4fbda850a689ea9d563f\u0027\n\nHowever, the more we can combine this effort into os-client-config and not explicitly in nova will be better long term. There is a _ton_ of complexity in endpoint discovery (sadly) that we\u0027re working on writing up and then improving. If we put the logic directly into nova, then it\u0027ll be much more work for nova to take advantage of improvements as we\u0027re able to roll them out.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":1561,"context_line":"    service_types \u003d [svctyp] if svctyp else _default_service_types(group)"},{"line_number":1562,"context_line":"    interface \u003d getattr(conf_group, \u0027service_interface\u0027, None)"},{"line_number":1563,"context_line":"    interfaces \u003d [interface] if interface else [\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027]"},{"line_number":1564,"context_line":"    auth, session \u003d ks_auth or get_keystone_auth(group)"},{"line_number":1565,"context_line":"    sc \u003d auth.get_auth_ref(session).service_catalog"},{"line_number":1566,"context_line":""},{"line_number":1567,"context_line":"    for st in service_types:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_a6435eaf","line":1564,"in_reply_to":"5ff73747_a3d111d0","updated":"2017-04-25 18:08:06.000000000","message":"Yeah, I did it this way for glance, which seems to support multiple URLs (load balancing?).  ServiceCatalog.get_urls() was the only API I could find that returns *all* the URLs, whereas get_endpoint() in its various forms only ever returns the first one (from the service catalog, incidentally).\n\nIf it\u0027s truly the case that the service catalog will never contain more than one URL for a given service, I\u0027m good with changing as you suggest.  (But why does ServiceCatalog.get_urls() exist if that\u0027s true?  And will we get in trouble if we regress glance\u0027s ability to use multiple endpoints?)","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":1561,"context_line":"    service_types \u003d [svctyp] if svctyp else _default_service_types(group)"},{"line_number":1562,"context_line":"    interface \u003d getattr(conf_group, \u0027service_interface\u0027, None)"},{"line_number":1563,"context_line":"    interfaces \u003d [interface] if interface else [\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027]"},{"line_number":1564,"context_line":"    auth, session \u003d ks_auth or get_keystone_auth(group)"},{"line_number":1565,"context_line":"    sc \u003d auth.get_auth_ref(session).service_catalog"},{"line_number":1566,"context_line":""},{"line_number":1567,"context_line":"    for st in service_types:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_ba2e3389","line":1564,"in_reply_to":"5ff73747_a6435eaf","updated":"2017-05-01 22:47:49.000000000","message":"Per ML discussion, this method now just gets the one URL; and glance will continue to support api_servers with the whole random-cycle thing.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c6f4e1d6fd3085a189f11329e4d9f70e104b4aba","unresolved":false,"context_lines":[{"line_number":1577,"context_line":"                st, interface, urls)"},{"line_number":1578,"context_line":"            if get_all:"},{"line_number":1579,"context_line":"                return urls"},{"line_number":1580,"context_line":"            random.shuffle(urls)"},{"line_number":1581,"context_line":"            return urls[0]"},{"line_number":1582,"context_line":"    raise exception.ServiceNotFound(service_id\u003d\u0027url for group %s\u0027 % group)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_2308612a","line":1580,"updated":"2017-04-25 17:26:45.000000000","message":"This should not be a thing that exists. session.get_endpoint() will return one url for a given service_type/interface combo - I\u0027d remove the get_all parameter and the shuffle since there should never be more than one.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":1577,"context_line":"                st, interface, urls)"},{"line_number":1578,"context_line":"            if get_all:"},{"line_number":1579,"context_line":"                return urls"},{"line_number":1580,"context_line":"            random.shuffle(urls)"},{"line_number":1581,"context_line":"            return urls[0]"},{"line_number":1582,"context_line":"    raise exception.ServiceNotFound(service_id\u003d\u0027url for group %s\u0027 % group)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_e6228601","line":1580,"in_reply_to":"5ff73747_2308612a","updated":"2017-04-25 18:08:06.000000000","message":"See above.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a50013eb02235eab217d0939f5fbc55831196985","unresolved":false,"context_lines":[{"line_number":1559,"context_line":"    svctyp \u003d ks_adapter.service_type"},{"line_number":1560,"context_line":"    service_types \u003d [svctyp] if svctyp else _default_service_types(groupname)"},{"line_number":1561,"context_line":"    interface \u003d ks_adapter.interface"},{"line_number":1562,"context_line":"    interfaces \u003d [interface] if interface else [\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027]"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"    # NOTE(efried); If conf set service_type and/or interface, the respective"},{"line_number":1565,"context_line":"    # loop will be singular, and the respective get_endpoint kwarg will be"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_9ac22185","line":1562,"range":{"start_line":1562,"start_character":47,"end_line":1562,"end_character":78},"updated":"2017-05-04 18:32:54.000000000","message":"internal, admin, public\n\nhttp://eavesdrop.openstack.org/irclogs/%23openstack-operators/%23openstack-operators.2017-05-04.log.html#t2017-05-04T18:23:15","commit_id":"6a2ee5545685a0e959be7e6b7a83baf251a27505"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8c3e95c73fb712304a03790a7c7d0561ae6880dd","unresolved":false,"context_lines":[{"line_number":1559,"context_line":"    svctyp \u003d ks_adapter.service_type"},{"line_number":1560,"context_line":"    service_types \u003d [svctyp] if svctyp else _default_service_types(groupname)"},{"line_number":1561,"context_line":"    interface \u003d ks_adapter.interface"},{"line_number":1562,"context_line":"    interfaces \u003d [interface] if interface else [\u0027internal\u0027, \u0027public\u0027, \u0027admin\u0027]"},{"line_number":1563,"context_line":""},{"line_number":1564,"context_line":"    # NOTE(efried); If conf set service_type and/or interface, the respective"},{"line_number":1565,"context_line":"    # loop will be singular, and the respective get_endpoint kwarg will be"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_29096d30","line":1562,"range":{"start_line":1562,"start_character":47,"end_line":1562,"end_character":78},"in_reply_to":"3f044301_9ac22185","updated":"2017-05-05 19:28:44.000000000","message":"Done","commit_id":"6a2ee5545685a0e959be7e6b7a83baf251a27505"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a6d2347dae439405c23f5ab0eb9316fc22c33c7d","unresolved":false,"context_lines":[{"line_number":1495,"context_line":"    return missing"},{"line_number":1496,"context_line":""},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"def _default_service_types(groupname):"},{"line_number":1499,"context_line":"    \"\"\"For a given conf group, return the list of possible service_types."},{"line_number":1500,"context_line":""},{"line_number":1501,"context_line":"    :param groupname: String name of a conf group for which the service"}],"source_content_type":"text/x-python","patch_set":8,"id":"df140735_37d8c651","line":1498,"updated":"2017-05-30 15:47:29.000000000","message":"This method can go away once we have service-type-aliases implemented in ksa.","commit_id":"21dee41c8ceb8fda674860b1d6eaceb51ef057fb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"a6d2347dae439405c23f5ab0eb9316fc22c33c7d","unresolved":false,"context_lines":[{"line_number":1556,"context_line":"        ks_adapter \u003d ks_loading.load_adapter_from_conf_options("},{"line_number":1557,"context_line":"            CONF, groupname, session\u003dks_session, auth\u003dks_auth)"},{"line_number":1558,"context_line":""},{"line_number":1559,"context_line":"    svctyp \u003d ks_adapter.service_type"},{"line_number":1560,"context_line":"    service_types \u003d [svctyp] if svctyp else _default_service_types(groupname)"},{"line_number":1561,"context_line":"    interface \u003d ks_adapter.interface"},{"line_number":1562,"context_line":"    interfaces \u003d [interface] if interface else [\u0027internal\u0027, \u0027admin\u0027, \u0027public\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"df140735_57d33a39","line":1559,"updated":"2017-05-30 15:47:29.000000000","message":"Once https://review.openstack.org/#/q/topic:version-discovery is done, this from here on down should be replaceable by a single call to session.get_endpoint. Or even by just passing version information to the load_adapter_from_conf_options call above.","commit_id":"21dee41c8ceb8fda674860b1d6eaceb51ef057fb"}],"nova/volume/cinder.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c49c95d34b884d6a1af911388e96376778697fb0","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    auth \u003d service_auth.get_auth_plugin(context)"},{"line_number":71,"context_line":"    service_type, service_name, interface \u003d CONF.cinder.catalog_info.split(\u0027:\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    service_parameters \u003d {\u0027service_type\u0027: service_type,"},{"line_number":74,"context_line":"                          \u0027service_name\u0027: service_name,"},{"line_number":75,"context_line":"                          \u0027interface\u0027: interface,"},{"line_number":76,"context_line":"                          \u0027region_name\u0027: CONF.cinder.os_region_name}"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_43c7ed46","line":73,"updated":"2017-04-25 17:03:16.000000000","message":"Its basically making these consistent across everywhere, I think.\n\nNot sure I like the \":\" based signal conf option, I prefer the way you are suggesting with separate configs.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c6f4e1d6fd3085a189f11329e4d9f70e104b4aba","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    auth \u003d service_auth.get_auth_plugin(context)"},{"line_number":71,"context_line":"    service_type, service_name, interface \u003d CONF.cinder.catalog_info.split(\u0027:\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    service_parameters \u003d {\u0027service_type\u0027: service_type,"},{"line_number":74,"context_line":"                          \u0027service_name\u0027: service_name,"},{"line_number":75,"context_line":"                          \u0027interface\u0027: interface,"},{"line_number":76,"context_line":"                          \u0027region_name\u0027: CONF.cinder.os_region_name}"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_23f620fb","line":73,"in_reply_to":"5ff73747_43c7ed46","updated":"2017-04-25 17:26:45.000000000","message":"I strongly strongly dislike the catalog_info parameter with the \":\"s. I suppose it\u0027s in nova already- but it\u0027s not a config concept that exists anywhere for other API consumption.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"299c0089eec20fd2704084df80344f88e7e4154d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    auth \u003d service_auth.get_auth_plugin(context)"},{"line_number":71,"context_line":"    service_type, service_name, interface \u003d CONF.cinder.catalog_info.split(\u0027:\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    service_parameters \u003d {\u0027service_type\u0027: service_type,"},{"line_number":74,"context_line":"                          \u0027service_name\u0027: service_name,"},{"line_number":75,"context_line":"                          \u0027interface\u0027: interface,"},{"line_number":76,"context_line":"                          \u0027region_name\u0027: CONF.cinder.os_region_name}"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_e35a784e","line":73,"in_reply_to":"5ff73747_43c7ed46","updated":"2017-04-25 18:08:06.000000000","message":"So my main question here is how far to take the change.\n\nRight now AFAICT, I could get this \u0027url\u0027 param with a call to the new get_service_url() - no problem.  At that point, should I *always* set endpoint_override?\n\nBut the catalog_info is also being used to provide these service_parameters, which are passed into the cinder_client.Client constructor.  The blueprint direction doesn\u0027t provide an answer for that (I think we start to defeat the purpose if we start down the path of a generic get_service_parameters()).  So I guess what I\u0027d really like to know is: are those catalog_info-based service_parameters actually necessary if endpoint_override is set?  The help string in the cinder conf implies that they\u0027re not.  If that\u0027s the case, life gets pretty easy.  But I need confirmation there.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"226c260d7138d406da5fd27a4e273b208f800886","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    auth \u003d service_auth.get_auth_plugin(context)"},{"line_number":71,"context_line":"    service_type, service_name, interface \u003d CONF.cinder.catalog_info.split(\u0027:\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    service_parameters \u003d {\u0027service_type\u0027: service_type,"},{"line_number":74,"context_line":"                          \u0027service_name\u0027: service_name,"},{"line_number":75,"context_line":"                          \u0027interface\u0027: interface,"},{"line_number":76,"context_line":"                          \u0027region_name\u0027: CONF.cinder.os_region_name}"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ff73747_1a43e743","line":73,"in_reply_to":"5ff73747_e35a784e","updated":"2017-05-01 22:47:49.000000000","message":"Leaving cinder for a future change set.","commit_id":"1274ed7bf493de6b977fa24e2c2ec479f2668006"}]}
