)]}'
{"nova/api/openstack/identity.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b03b359f05411c1ab4d7d3d3632dacac8a3743d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # we got access, and we know this project is not there"},{"line_number":52,"context_line":"        if DANGER_URL in resp.url:"},{"line_number":53,"context_line":"            LOG.error(_LE("},{"line_number":54,"context_line":"                \"Keystone identity service looks suspicious %s: v2.0/v3 was \""},{"line_number":55,"context_line":"                \"found in the returned url. Keystone must be reconfigured \""},{"line_number":56,"context_line":"                \"so the identity endpoint points to the unversioned \""},{"line_number":57,"context_line":"                \"endpoint.\") % resp.url)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_29ec3729","line":54,"range":{"start_line":54,"start_character":64,"end_line":54,"end_character":71},"updated":"2017-02-24 19:14:16.000000000","message":"This could be %s with your DANGER_URL.","commit_id":"673312664706709524100132ab5cc39626ace6ab"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b03b359f05411c1ab4d7d3d3632dacac8a3743d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # we got access, and we know this project is not there"},{"line_number":52,"context_line":"        if DANGER_URL in resp.url:"},{"line_number":53,"context_line":"            LOG.error(_LE("},{"line_number":54,"context_line":"                \"Keystone identity service looks suspicious %s: v2.0/v3 was \""},{"line_number":55,"context_line":"                \"found in the returned url. Keystone must be reconfigured \""},{"line_number":56,"context_line":"                \"so the identity endpoint points to the unversioned \""},{"line_number":57,"context_line":"                \"endpoint.\") % resp.url)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_a9e0272a","line":54,"range":{"start_line":54,"start_character":62,"end_line":54,"end_character":63},"updated":"2017-02-24 19:14:16.000000000","message":"s/:/;/","commit_id":"673312664706709524100132ab5cc39626ace6ab"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b03b359f05411c1ab4d7d3d3632dacac8a3743d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                \"Keystone identity service looks suspicious %s: v2.0/v3 was \""},{"line_number":55,"context_line":"                \"found in the returned url. Keystone must be reconfigured \""},{"line_number":56,"context_line":"                \"so the identity endpoint points to the unversioned \""},{"line_number":57,"context_line":"                \"endpoint.\") % resp.url)"},{"line_number":58,"context_line":"        raise webob.exc.HTTPBadRequest("},{"line_number":59,"context_line":"            explanation\u003d_(\"Project ID %s is not a valid project.\") %"},{"line_number":60,"context_line":"            project_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_09b93315","line":57,"range":{"start_line":57,"start_character":29,"end_line":57,"end_character":30},"updated":"2017-02-24 19:14:16.000000000","message":"s/%/,/","commit_id":"673312664706709524100132ab5cc39626ace6ab"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"39ef581cb41e9e9972e698df54e01f84d53d2260","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            \"Keystone identity service version 3.0 was not found. This might \""},{"line_number":46,"context_line":"            \"be because your endpoint points to the v2.0 versioned endpoint \""},{"line_number":47,"context_line":"            \"which is not supported. Please fix this.\"))"},{"line_number":48,"context_line":"        raise failure"},{"line_number":49,"context_line":"    except kse.ClientException:"},{"line_number":50,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":51,"context_line":"        # we\u0027ll take the pass and default to everything being ok."}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_029f455f","line":48,"updated":"2017-02-25 02:08:02.000000000","message":"arguably this might be appropriate to return a 500 here, because the admin is going to need to fix the configuration and put the right identity service configuration in place.","commit_id":"66f7c2b1dee695b54533416c60eac2aa4af6d9ec"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"47b781b8fdbbc896c58904e40fba003c1dbd3d12","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            \"Keystone identity service version 3.0 was not found. This might \""},{"line_number":46,"context_line":"            \"be because your endpoint points to the v2.0 versioned endpoint \""},{"line_number":47,"context_line":"            \"which is not supported. Please fix this.\"))"},{"line_number":48,"context_line":"        raise failure"},{"line_number":49,"context_line":"    except kse.ClientException:"},{"line_number":50,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":51,"context_line":"        # we\u0027ll take the pass and default to everything being ok."}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_c6f0dccb","line":48,"updated":"2017-02-25 12:49:23.000000000","message":"basically the only question here is if this is a server 500 error.","commit_id":"f7ba74428f011fccd56d0bdd449652a6fc87cbec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b84a7e617fed6ab55ca48f3f746ba751238286e1","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            \"Keystone identity service version 3.0 was not found. This might \""},{"line_number":46,"context_line":"            \"be because your endpoint points to the v2.0 versioned endpoint \""},{"line_number":47,"context_line":"            \"which is not supported. Please fix this.\"))"},{"line_number":48,"context_line":"        raise failure"},{"line_number":49,"context_line":"    except kse.ClientException:"},{"line_number":50,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":51,"context_line":"        # we\u0027ll take the pass and default to everything being ok."}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_4b14e84b","line":48,"updated":"2017-02-26 23:40:29.000000000","message":"So you do want to start making this a hard failure? Because before you\u0027d just log an error but return True so we didn\u0027t go from passing to failing. I\u0027m fine with it, just making sure.","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"981a4838975ddb1a5ec71d2fb3188abad8d73a19","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            \"Keystone identity service version 3.0 was not found. This might \""},{"line_number":46,"context_line":"            \"be because your endpoint points to the v2.0 versioned endpoint \""},{"line_number":47,"context_line":"            \"which is not supported. Please fix this.\"))"},{"line_number":48,"context_line":"        raise failure"},{"line_number":49,"context_line":"    except kse.ClientException:"},{"line_number":50,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":51,"context_line":"        # we\u0027ll take the pass and default to everything being ok."}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_d60875da","line":48,"in_reply_to":"da36d5c6_433da329","updated":"2017-05-26 18:08:20.000000000","message":"(1:06:38 PM) mriedem: so with that patch of yours,\n(1:06:54 PM) mriedem: they go from a 400 (because of endpoint not found) to a 404 (Because endpoint not found)\n(1:07:00 PM) mriedem: but with a helpful message\n(1:07:23 PM) sdague: actually, they wouldn\u0027t get a 404\n(1:07:24 PM) mriedem: or does ksa actually do magic to find the right v3 endpoint?\n(1:07:30 PM) sdague: yep, it does\n(1:07:35 PM) mriedem: oh well that\u0027s neat","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"537bebe9068c49a0ba25f7500df04e44211952bc","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            \"Keystone identity service version 3.0 was not found. This might \""},{"line_number":46,"context_line":"            \"be because your endpoint points to the v2.0 versioned endpoint \""},{"line_number":47,"context_line":"            \"which is not supported. Please fix this.\"))"},{"line_number":48,"context_line":"        raise failure"},{"line_number":49,"context_line":"    except kse.ClientException:"},{"line_number":50,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":51,"context_line":"        # we\u0027ll take the pass and default to everything being ok."}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_433da329","line":48,"in_reply_to":"da36d5c6_4b14e84b","updated":"2017-02-27 11:55:20.000000000","message":"EndpointNotFound is the exception that we\u0027ll get if keystone can\u0027t find version 3 on the endpoint (like the trippleo case).","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"67298e094f38d26000f1d6b303f47b12cc7aefd5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            \"which is not supported. Please fix this.\")"},{"line_number":48,"context_line":"        raise failure"},{"line_number":49,"context_line":"    except kse.ClientException:"},{"line_number":50,"context_line":"        # something is wrong, like there isn\u0027t a keystone v3 endpoint,"},{"line_number":51,"context_line":"        # we\u0027ll take the pass and default to everything being ok."},{"line_number":52,"context_line":"        LOG.exception(\"Unable to contact keystone to verify project_id\")"},{"line_number":53,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":10,"id":"df140735_c5a2eb9a","line":50,"range":{"start_line":50,"start_character":30,"end_line":50,"end_character":70},"updated":"2017-05-30 19:27:47.000000000","message":"We should change this comment because the above additional case cover this..","commit_id":"3cb9401a922ed7d4bcede752ad809dbb14707d28"}],"nova/tests/unit/api/openstack/compute/test_quotas.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b84a7e617fed6ab55ca48f3f746ba751238286e1","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # We need to stub out verify_project_id so that it doesn\u0027t"},{"line_number":59,"context_line":"        # generate an EndpointNotFound exception and result in a"},{"line_number":60,"context_line":"        # server error."},{"line_number":61,"context_line":"        self.stub_out(\u0027nova.api.openstack.identity.verify_project_id\u0027,"},{"line_number":62,"context_line":"                      lambda ctx, project_id: True)"},{"line_number":63,"context_line":"        self._setup_controller()"},{"line_number":64,"context_line":"        self.default_quotas \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_cb00d804","line":61,"updated":"2017-02-26 23:40:29.000000000","message":"Can we just do this in BaseQuotaSetsTest? Then we wouldn\u0027t have to copy this in three test classes. Maybe you don\u0027t like that idea since it \"hides\" it in the base class.","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"537bebe9068c49a0ba25f7500df04e44211952bc","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # We need to stub out verify_project_id so that it doesn\u0027t"},{"line_number":59,"context_line":"        # generate an EndpointNotFound exception and result in a"},{"line_number":60,"context_line":"        # server error."},{"line_number":61,"context_line":"        self.stub_out(\u0027nova.api.openstack.identity.verify_project_id\u0027,"},{"line_number":62,"context_line":"                      lambda ctx, project_id: True)"},{"line_number":63,"context_line":"        self._setup_controller()"},{"line_number":64,"context_line":"        self.default_quotas \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_23050f45","line":61,"in_reply_to":"da36d5c6_cb00d804","updated":"2017-02-27 11:55:20.000000000","message":"It also didn\u0027t yet have a setup. I can go either way.","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"}],"nova/tests/unit/test_identity.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b84a7e617fed6ab55ca48f3f746ba751238286e1","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class IdentityValidationTest(test.NoDBTestCase):"},{"line_number":46,"context_line":"    \"\"\"Unit tests for our validation of keystone projects."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    There are times when Nova stores keystone project_id and user_id"},{"line_number":49,"context_line":"    in our database as strings. Until the Pike release none of this"}],"source_content_type":"text/x-python","patch_set":6,"id":"da36d5c6_6b11ab51","line":46,"updated":"2017-02-26 23:40:29.000000000","message":"PTG docstring goodness in action. :)","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c936473ef6706e9ce289fee57854cf09cf15dc56","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        EndpointNotFound will be made when the keystone v3 API is not"},{"line_number":148,"context_line":"        found in the service catalog, or if the v2.0 endpoint was"},{"line_number":149,"context_line":"        registered as the root endpoint. We treat this the same as 404."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        \"\"\""},{"line_number":152,"context_line":"        get.side_effect \u003d kse.EndpointNotFound()"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_5147cfbd","line":149,"range":{"start_line":149,"start_character":67,"end_line":149,"end_character":70},"updated":"2017-05-26 18:58:11.000000000","message":"404 from Keystone.","commit_id":"9405b1f9a6290b0fb20a2d8c565fed8f7c900528"}],"releasenotes/notes/project_id_validation-568d31c13c3ef735.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c0da9d17b4fc7a13ab849b6222d0e22168be9d03","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    API calls to /os-quota-sets/* will now attempt to validate the"},{"line_number":5,"context_line":"    project_id being opperated on with keystone. If the user has"},{"line_number":6,"context_line":"    enough permissions in user, and the keystone project does not"},{"line_number":7,"context_line":"    exist, a 400 will be returned to prevent invalidate quota data"},{"line_number":8,"context_line":"    from being put in the Nova database. This fixes an effective"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"da36d5c6_4b46a87b","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":30},"updated":"2017-02-26 23:30:07.000000000","message":"Let\u0027s fix the spelling on this while you\u0027re in here.","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6bc9577d96aa52598d05daa3729cfddd6bf6a4a4","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    from being put in the Nova database. This fixes an effective"},{"line_number":9,"context_line":"    silent error where this would be stored even if this was not a"},{"line_number":10,"context_line":"    valid project_id in the system."},{"line_number":11,"context_line":"upgrade:"},{"line_number":12,"context_line":"  - |"},{"line_number":13,"context_line":"    When updating quotas we are now checking against keystone. This"},{"line_number":14,"context_line":"    will erroneously return errors if the keystone identity endpoint"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff0f0b1f_d63195a4","line":11,"updated":"2017-05-26 18:09:06.000000000","message":"Let\u0027s make this a separate release note, and it seems it should be \"fixes\" now instead of \"upgrade\"?","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b84a7e617fed6ab55ca48f3f746ba751238286e1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    valid project_id in the system."},{"line_number":11,"context_line":"upgrade:"},{"line_number":12,"context_line":"  - |"},{"line_number":13,"context_line":"    When updating quotas we are now checking against keystone. This"},{"line_number":14,"context_line":"    will erroneously return errors if the keystone identity endpoint"},{"line_number":15,"context_line":"    points to the /v2.0 version specific endpoint. You must make sure"},{"line_number":16,"context_line":"    keystone identity server points to the top level unversioned endpoint."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"da36d5c6_eb52fb11","line":14,"range":{"start_line":13,"start_character":63,"end_line":14,"end_character":34},"updated":"2017-02-26 23:40:29.000000000","message":"This reads oddly - it reads to me like it\u0027s introducing a bug or some kind of erroneous check, which it\u0027s not. I think you can just drop \"erroneously\" and it makes sense for what you\u0027re trying to say - you get an error now if keystone v3 isn\u0027t available or isn\u0027t configured properly.","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"537bebe9068c49a0ba25f7500df04e44211952bc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    valid project_id in the system."},{"line_number":11,"context_line":"upgrade:"},{"line_number":12,"context_line":"  - |"},{"line_number":13,"context_line":"    When updating quotas we are now checking against keystone. This"},{"line_number":14,"context_line":"    will erroneously return errors if the keystone identity endpoint"},{"line_number":15,"context_line":"    points to the /v2.0 version specific endpoint. You must make sure"},{"line_number":16,"context_line":"    keystone identity server points to the top level unversioned endpoint."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"da36d5c6_e310575b","line":14,"range":{"start_line":13,"start_character":63,"end_line":14,"end_character":34},"in_reply_to":"da36d5c6_eb52fb11","updated":"2017-02-27 11:55:20.000000000","message":"ack","commit_id":"83857c3d51ad9aeecdabaea7ac6d07c5810a25c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c936473ef6706e9ce289fee57854cf09cf15dc56","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    silent error where the project_id would be stored even if it was not a"},{"line_number":11,"context_line":"    valid project_id in the system."},{"line_number":12,"context_line":"  - |"},{"line_number":13,"context_line":"    Be more accepting of how the identity endpoint is configured in"},{"line_number":14,"context_line":"    production. This will now support both versioned as well as"},{"line_number":15,"context_line":"    unversioned endpoints for keystone as long as there is a"},{"line_number":16,"context_line":"    functional v3 keystone API available."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff0f0b1f_51e34fa5","line":16,"range":{"start_line":13,"start_character":4,"end_line":16,"end_character":41},"updated":"2017-05-26 18:58:11.000000000","message":"This shows up as a separate release note bullet and therefore doesn\u0027t have any context for what you\u0027re talking about.\n\nAlso, we should probably make this a separate release note on it\u0027s own since the first one went out in the pike-1 tag, and this one will be in the p-2 tag.\n\nI had thought that the os-quota-sets stuff happened in Ocata for some reason, but apparently it didn\u0027t. Therefore, your original patch to have this in the \u0027upgrade\u0027 section is probably the correct one as it\u0027s a warning that if you don\u0027t have the identity service configured correctly, or keystone v3 available, then there are going to be issues.","commit_id":"9405b1f9a6290b0fb20a2d8c565fed8f7c900528"}]}
