)]}'
{"nova/api/metadata/vendordata_dynamic.py":[{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"8272ecc296d073f1ba4395a13556ba24af9f9fd6","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            return {}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        except tuple(KEYSTONEAUTH_EXCEPTIONS) as e:"},{"line_number":96,"context_line":"            LOG.warning(_LW(\u0027Error from dynamic vendordata service \u0027"},{"line_number":97,"context_line":"                            \u0027%(service_name)s at %(url)s: %(error)s\u0027),"},{"line_number":98,"context_line":"                        {\u0027service_name\u0027: service_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_19bba10f","line":95,"range":{"start_line":95,"start_character":0,"end_line":95,"end_character":51},"updated":"2017-01-04 12:21:59.000000000","message":"Python 3 expects exception type here, as ML said we need filter out non-exceptions here.","commit_id":"020fcfdfdeb14bcd7ba05b8719b31485dd82b240"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"64589824529125961806c2b42614b49bdfc1995c","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # Either an authenticated session, or just a requests session depending"},{"line_number":43,"context_line":"        # on what is configured."},{"line_number":44,"context_line":"        self.auth \u003d ks_loading.load_auth_from_conf_options("},{"line_number":45,"context_line":"            CONF, nova.conf.vendordata.vendordata_group.name)"},{"line_number":46,"context_line":"        self.session \u003d ks_loading.load_session_from_conf_options("},{"line_number":47,"context_line":"            CONF, nova.conf.vendordata.vendordata_group.name,"},{"line_number":48,"context_line":"            auth\u003dself.auth)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        if not self.auth:"},{"line_number":51,"context_line":"            LOG.warning(_LW(\u0027Passing insecure dynamic vendordata requests \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_fd29d338","line":48,"range":{"start_line":44,"start_character":8,"end_line":48,"end_character":27},"updated":"2017-01-18 19:13:53.000000000","message":"So we really need to cache these objects, and only create them if they don\u0027t exist.\n\nIts important, because otherwise we generate way more keystone tokens than actually required.\n\nThere is an overly complicated example here:\nhttps://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L121","commit_id":"bd4346842c2b60a1e1e957fda82ad79f35dcb436"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2e73fc6a0b540cbd9bc75b4a38bf2a29a4b1e4de","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # Either an authenticated session, or just a requests session depending"},{"line_number":43,"context_line":"        # on what is configured."},{"line_number":44,"context_line":"        self.auth \u003d ks_loading.load_auth_from_conf_options("},{"line_number":45,"context_line":"            CONF, nova.conf.vendordata.vendordata_group.name)"},{"line_number":46,"context_line":"        self.session \u003d ks_loading.load_session_from_conf_options("},{"line_number":47,"context_line":"            CONF, nova.conf.vendordata.vendordata_group.name,"},{"line_number":48,"context_line":"            auth\u003dself.auth)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        if not self.auth:"},{"line_number":51,"context_line":"            LOG.warning(_LW(\u0027Passing insecure dynamic vendordata requests \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_dc814e91","line":48,"range":{"start_line":44,"start_character":8,"end_line":48,"end_character":27},"in_reply_to":"7a3c09a3_fd29d338","updated":"2017-01-26 10:28:10.000000000","message":"Done","commit_id":"bd4346842c2b60a1e1e957fda82ad79f35dcb436"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f0a171497c1b3a913c386fa07588e0888bd9a751","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    if not _SESSION:"},{"line_number":55,"context_line":"        _SESSION \u003d ks_loading.load_session_from_conf_options("},{"line_number":56,"context_line":"            conf, nova.conf.vendordata.vendordata_group.name,"},{"line_number":57,"context_line":"            auth\u003d_ADMIN_AUTH)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    return _ADMIN_AUTH, _SESSION"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a461143_113818d3","line":57,"updated":"2017-01-26 13:18:17.000000000","message":"Nit: if you add the auth into the session here, I assume you only really need to return the keystone session?\n\nMaybe could rename it to _get_ks_session or something?","commit_id":"a45143b7ac8f3049e0f6496738425ab1f7a3d58c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e77e8d1d93b834b3b76fb85f419c662db3f250b5","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    if not _SESSION:"},{"line_number":55,"context_line":"        _SESSION \u003d ks_loading.load_session_from_conf_options("},{"line_number":56,"context_line":"            conf, nova.conf.vendordata.vendordata_group.name,"},{"line_number":57,"context_line":"            auth\u003d_ADMIN_AUTH)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    return _ADMIN_AUTH, _SESSION"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a461143_cc0ef633","line":57,"in_reply_to":"3a461143_113818d3","updated":"2017-01-26 13:40:06.000000000","message":"Done","commit_id":"a45143b7ac8f3049e0f6496738425ab1f7a3d58c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2cb766ac8a9894701c666451703b9bd6bf6302ab","unresolved":false,"context_lines":[{"line_number":33,"context_line":"_ADMIN_AUTH \u003d None"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def _load_ks_session(conf):"},{"line_number":37,"context_line":"    \"\"\"Load session."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    This is either an authenticated session or a requests session, depending on"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa31d9ce_0cb9d3cb","line":36,"updated":"2017-02-17 16:56:44.000000000","message":"None of this is unit tested as far as knowing if we store the global admin auth or session.","commit_id":"1f53bfcc7998f63f130a2cedaf15b41a4506c568"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2cb766ac8a9894701c666451703b9bd6bf6302ab","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            conf, nova.conf.vendordata.vendordata_group.name)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    if not _ADMIN_AUTH:"},{"line_number":50,"context_line":"        LOG.warning(_LW(\u0027Passing insecure dynamic vendordata requests \u0027"},{"line_number":51,"context_line":"                        \u0027because of missing or incorrect service account \u0027"},{"line_number":52,"context_line":"                        \u0027configuration.\u0027))"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa31d9ce_4c858b05","line":50,"updated":"2017-02-17 16:56:44.000000000","message":"This is spamming the logs in our CI runs, see bug 1665693.","commit_id":"1f53bfcc7998f63f130a2cedaf15b41a4506c568"}],"nova/conf/vendordata.py":[{"author":{"_account_id":7662,"name":"Rob Crittenden","email":"rcritten@redhat.com","username":"rcritten"},"change_message_id":"ec92f394969454510aeed3788747d30026870069","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def list_opts():"},{"line_number":34,"context_line":"    # TODO(mikal): how does this work for cinder? The auth flags aren\u0027t in"},{"line_number":35,"context_line":"    # the cinder_opts variable, so does that mean we\u0027re just not returning"},{"line_number":36,"context_line":"    # them in a list_opts() call?"},{"line_number":37,"context_line":"    return {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_4c9f7bb4","line":36,"updated":"2017-01-09 20:55:23.000000000","message":"I believe you can configure this in setup.cfg, add a new entrypoint option under oslo.config.opts.\n\nvendordata-auth \u003d nova.conf.vendordata:list_opts\n\nlist_opts would be something like:\n\nreturn [(\u0027service_credentials\u0027, (\n        ks_loading.get_auth_common_conf_options() +\n        ks_loading.get_auth_plugin_conf_options(\u0027password\u0027)))]\n\nThis would put the options into a new config section, [service_credentials]. Not sure where you intended to store them.","commit_id":"bd4346842c2b60a1e1e957fda82ad79f35dcb436"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2e73fc6a0b540cbd9bc75b4a38bf2a29a4b1e4de","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def list_opts():"},{"line_number":34,"context_line":"    # TODO(mikal): how does this work for cinder? The auth flags aren\u0027t in"},{"line_number":35,"context_line":"    # the cinder_opts variable, so does that mean we\u0027re just not returning"},{"line_number":36,"context_line":"    # them in a list_opts() call?"},{"line_number":37,"context_line":"    return {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_6247d4bb","line":36,"in_reply_to":"7a3c09a3_1d677feb","updated":"2017-01-26 10:28:10.000000000","message":"I\u0027m going to address this is a follow-up patch, just in case it takes a while :)","commit_id":"bd4346842c2b60a1e1e957fda82ad79f35dcb436"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"37a3dec5e5b5032c9201a04fbaa3bde40bbfbfd7","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def list_opts():"},{"line_number":34,"context_line":"    # TODO(mikal): how does this work for cinder? The auth flags aren\u0027t in"},{"line_number":35,"context_line":"    # the cinder_opts variable, so does that mean we\u0027re just not returning"},{"line_number":36,"context_line":"    # them in a list_opts() call?"},{"line_number":37,"context_line":"    return {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_beb60588","line":36,"in_reply_to":"ba5201f7_4c9f7bb4","updated":"2017-01-11 05:50:35.000000000","message":"I can\u0027t see where we do this for cinder in setup.cfg either. I think I\u0027d like to handle this thing as a separate problem...","commit_id":"bd4346842c2b60a1e1e957fda82ad79f35dcb436"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"79b0c12d75dd070164897552ef0af7e288c3286f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def list_opts():"},{"line_number":34,"context_line":"    # TODO(mikal): how does this work for cinder? The auth flags aren\u0027t in"},{"line_number":35,"context_line":"    # the cinder_opts variable, so does that mean we\u0027re just not returning"},{"line_number":36,"context_line":"    # them in a list_opts() call?"},{"line_number":37,"context_line":"    return {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a3c09a3_1d677feb","line":36,"in_reply_to":"ba5201f7_beb60588","updated":"2017-01-18 19:10:28.000000000","message":"So Cinder is broken, you can follow the Neutron pattern:\nhttps://github.com/openstack/nova/blob/master/nova/conf/neutron.py#L110\n\nBut thats a documentation follow on I guess, if needed.","commit_id":"bd4346842c2b60a1e1e957fda82ad79f35dcb436"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f0a171497c1b3a913c386fa07588e0888bd9a751","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    # TODO(mikal): how does this work for cinder? The auth flags aren\u0027t in"},{"line_number":35,"context_line":"    # the cinder_opts variable, so does that mean we\u0027re just not returning"},{"line_number":36,"context_line":"    # them in a list_opts() call?"},{"line_number":37,"context_line":"    return {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a461143_d1469022","line":37,"updated":"2017-01-26 13:18:17.000000000","message":"I was expecting to see this more like Neutron:\nhttps://github.com/openstack/nova/blob/master/nova/conf/neutron.py#L110\n\nCinder is broken, and cinder doesn\u0027t today have any admin or service credentials, it only uses the users token (which breaks auto-confirm-resize and similar things, but thats a different discussion / patch set)","commit_id":"a45143b7ac8f3049e0f6496738425ab1f7a3d58c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e77e8d1d93b834b3b76fb85f419c662db3f250b5","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    # TODO(mikal): how does this work for cinder? The auth flags aren\u0027t in"},{"line_number":35,"context_line":"    # the cinder_opts variable, so does that mean we\u0027re just not returning"},{"line_number":36,"context_line":"    # them in a list_opts() call?"},{"line_number":37,"context_line":"    return {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a461143_0cf63e8f","line":37,"in_reply_to":"3a461143_d1469022","updated":"2017-01-26 13:40:06.000000000","message":"Done...I think","commit_id":"a45143b7ac8f3049e0f6496738425ab1f7a3d58c"}],"releasenotes/notes/vendordata-service-tokens-876505167395a56d.yaml":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f0a171497c1b3a913c386fa07588e0888bd9a751","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    the metadata server on first boot to determine configuration information."},{"line_number":10,"context_line":"    Refer to the blueprints at"},{"line_number":11,"context_line":"    http://specs.openstack.org/openstack/nova-specs/specs/ocata/approved/vendordata-reboot-ocata.html"},{"line_number":12,"context_line":"    for more information."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3a461143_891780a2","line":12,"updated":"2017-01-26 13:18:17.000000000","message":"It would be good to say about the added configuration options, well really just need to mention the group name.","commit_id":"a45143b7ac8f3049e0f6496738425ab1f7a3d58c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e77e8d1d93b834b3b76fb85f419c662db3f250b5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    the metadata server on first boot to determine configuration information."},{"line_number":10,"context_line":"    Refer to the blueprints at"},{"line_number":11,"context_line":"    http://specs.openstack.org/openstack/nova-specs/specs/ocata/approved/vendordata-reboot-ocata.html"},{"line_number":12,"context_line":"    for more information."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3a461143_8c65ce46","line":12,"in_reply_to":"3a461143_891780a2","updated":"2017-01-26 13:40:06.000000000","message":"Done","commit_id":"a45143b7ac8f3049e0f6496738425ab1f7a3d58c"}]}
