)]}'
{"etc/gnocchi/policy.json":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"a70a182917706d64e2d7b33077da76b15b390a18","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"admin_or_owner\": \"role:admin or project_id:%(project_id)s\","},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"    \"get measures\":  \"rule:admin_or_owner\","}],"source_content_type":"application/json","patch_set":3,"id":"5a890539_0fce6a83","line":1,"updated":"2014-11-21 14:59:59.000000000","message":"Julien, could you please explain this a little? It\u0027s clear with \u0027admin\u0027 but for project_id... Who is \"Owner\" and why it is determined with project_id? Sorry if the question is stupid but I need to know :)","commit_id":"cf9087660f29b47bff9a8a8bb684c0d8bb7f51ca"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"27e0d24b900727855db1e59e105c2c04843ed2db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"admin_or_owner\": \"role:admin or project_id:%(project_id)s\","},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"    \"get measures\":  \"rule:admin_or_owner\","}],"source_content_type":"application/json","patch_set":3,"id":"5a890539_8a188885","line":1,"in_reply_to":"5a890539_0fce6a83","updated":"2014-11-21 15:36:24.000000000","message":"owner is defined as \"the user\u0027s project_id matches the target project_id\". :) That\u0027s what the rule means.","commit_id":"cf9087660f29b47bff9a8a8bb684c0d8bb7f51ca"}],"gnocchi/rest/__init__.py":[{"author":{"_account_id":12022,"name":"Romain Soufflet","email":"romain@soufflet.io","username":"Gentux"},"change_message_id":"bd20de234f78b0ceaa6af83578121fcc5f4e0129","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        return entity"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def enforce_entity(self, rule):"},{"line_number":291,"context_line":"        entity \u003d pecan.request.indexer.get_resource(\u0027entity\u0027, self.entity_id)"},{"line_number":292,"context_line":"        if entity is None:"},{"line_number":293,"context_line":"            pecan.abort(404, storage.EntityDoesNotExist(self.entity_id))"},{"line_number":294,"context_line":"        enforce(rule, entity)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_1d24f1ad","line":291,"updated":"2014-11-21 09:31:43.000000000","message":"WDYT about using get_entity instead of get_resource with \u0027entity\u0027 as parameter ?","commit_id":"d32d31e5dfbc0379e836e18f37e33b58bdee1231"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bebe0254272ca0457504beb815ce9e5e41cf0bbb","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        return entity"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def enforce_entity(self, rule):"},{"line_number":291,"context_line":"        entity \u003d pecan.request.indexer.get_resource(\u0027entity\u0027, self.entity_id)"},{"line_number":292,"context_line":"        if entity is None:"},{"line_number":293,"context_line":"            pecan.abort(404, storage.EntityDoesNotExist(self.entity_id))"},{"line_number":294,"context_line":"        enforce(rule, entity)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_bd883d23","line":291,"in_reply_to":"5a890539_1d24f1ad","updated":"2014-11-21 09:40:38.000000000","message":"Good idea, I\u0027ll change that.","commit_id":"d32d31e5dfbc0379e836e18f37e33b58bdee1231"}]}
