)]}'
{"nova/api/openstack/placement/handlers/usage.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f4d9e8dfc3abf279aeed161753f7628ddbd433a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    Return 404 Not Found if the wanted microversion does not match."},{"line_number":91,"context_line":"    \"\"\""},{"line_number":92,"context_line":"    context \u003d req.environ[\u0027placement.context\u0027]"},{"line_number":93,"context_line":"    context.can(policies.TOTAL_USAGES)"},{"line_number":94,"context_line":"    want_version \u003d req.environ[microversion.MICROVERSION_ENVIRON]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    util.validate_query_params(req, schema.GET_USAGES_SCHEMA_1_9)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_723c5f92","line":93,"updated":"2018-05-16 16:32:05.000000000","message":"In talking with lbragstad about this:\n\nhttp://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2018-05-16.log.html#t2018-05-16T15:56:48\n\nAnd I think it comes down to, we can/should set scope_types\u003d[\u0027project\u0027] for the GET /usages policy and then pass the project_id from the query parameter to context.can() as the target. The scenario in my head is:\n\nA non-admin user in project A shouldn\u0027t be able to query usages for project B.\n\nRight now, we default to rule:admin_api (role:admin) so no non-admin users can call GET /usages, so maybe this is just a TODO for later when we want to support non-admins and also build in the testing for that scenario.","commit_id":"7a1ee2be3bd84e6e8956c0111f541f3a8dd40fd9"}],"nova/api/openstack/placement/policies/usage.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1a5ead52de04d3b181302231e3ec4b64f6c1edfc","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"PROVIDER_USAGES \u003d \u0027placement:resource_providers:usages\u0027"},{"line_number":20,"context_line":"TOTAL_USAGES \u003d \u0027placement:total_usages\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"rules \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_cbe9791a","line":20,"range":{"start_line":20,"start_character":26,"end_line":20,"end_character":33},"updated":"2018-05-24 22:44:00.000000000","message":"probably better to just have:\n\n placement:usages\n\nsince total_usages isn\u0027t really needed to differentiate from:\n\n placement:resource_providers:usages","commit_id":"96a9850ded7df4964947fb6d032eb90a48df7f3c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"71e323d33d6e3d226b4dca7334adbb51f3bfdfc1","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"PROVIDER_USAGES \u003d \u0027placement:resource_providers:usages\u0027"},{"line_number":20,"context_line":"TOTAL_USAGES \u003d \u0027placement:total_usages\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"rules \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_7453666c","line":20,"range":{"start_line":20,"start_character":26,"end_line":20,"end_character":33},"in_reply_to":"5f7c97a3_cbe9791a","updated":"2018-05-25 05:44:09.000000000","message":"True, I struggled a bit with what to name this one. I\u0027ll update it.","commit_id":"96a9850ded7df4964947fb6d032eb90a48df7f3c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"def0eb21595553d959b7e71d596b1c48d6d519b7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        # in the actual policy enforcement check in the handler code."},{"line_number":39,"context_line":"        TOTAL_USAGES,"},{"line_number":40,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":41,"context_line":"        \"List total resource usages for a given project.\","},{"line_number":42,"context_line":"        ["},{"line_number":43,"context_line":"            {"},{"line_number":44,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_7ef69791","line":41,"range":{"start_line":41,"start_character":48,"end_line":41,"end_character":55},"updated":"2018-05-31 07:18:31.000000000","message":"....for a given project and user.\n\nas per - https://github.com/openstack/nova/blob/856351980f529f897ff83dd7c4abc9dd758ae296/nova/api/openstack/placement/handlers/usage.py#L98","commit_id":"f22f6d1443587c6070e8c0f470621dce3223961b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"04aa643e69f4c4a5b37e161af534d5815ce6910e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        # in the actual policy enforcement check in the handler code."},{"line_number":39,"context_line":"        TOTAL_USAGES,"},{"line_number":40,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":41,"context_line":"        \"List total resource usages for a given project.\","},{"line_number":42,"context_line":"        ["},{"line_number":43,"context_line":"            {"},{"line_number":44,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_98693e26","line":41,"range":{"start_line":41,"start_character":48,"end_line":41,"end_character":55},"in_reply_to":"5f7c97a3_7ef69791","updated":"2018-05-31 18:04:45.000000000","message":"The user is optional, which is why I left it out here.\n\nhttps://developer.openstack.org/api-ref/placement/#list-usages","commit_id":"f22f6d1443587c6070e8c0f470621dce3223961b"}]}
