)]}'
{"barbican/api/controllers/acls.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"ff59d667db06f5e2b725b152c813e35ba03e21b6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    @controllers.handle_exceptions(u._(\u0027SecretACL(s) creation\u0027))"},{"line_number":98,"context_line":"    @controllers.enforce_rbac(\u0027secret_acls:post\u0027)"},{"line_number":99,"context_line":"    @controllers.enforce_content_types([\u0027application/json\u0027])"},{"line_number":100,"context_line":"    def on_post(self, external_project_id, **kwargs):"},{"line_number":101,"context_line":"        \"\"\"Handles secret acls creation request."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        Once a set of ACLs exists for a given secret, it can only be updated"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad8896b_ee2a1fe7","line":100,"updated":"2015-05-11 16:48:25.000000000","message":"In last week\u0027s API working group meeting, they provided guidance on POST vs PUT. In general if the resource API changes after a call (such as requring a unique UUID to reference it) then POST should be used. Otherwise PUT should be used. \n\nSince the URI after \u0027.../acl\u0027 doesn\u0027t change, I think we could use PUTs instead of POSTs now, so this on_post method could be removed.","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"ca28e013ca5cad950acf70d0ddb1e5e4492d19ea","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    @controllers.handle_exceptions(u._(\u0027SecretACL(s) creation\u0027))"},{"line_number":98,"context_line":"    @controllers.enforce_rbac(\u0027secret_acls:post\u0027)"},{"line_number":99,"context_line":"    @controllers.enforce_content_types([\u0027application/json\u0027])"},{"line_number":100,"context_line":"    def on_post(self, external_project_id, **kwargs):"},{"line_number":101,"context_line":"        \"\"\"Handles secret acls creation request."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        Once a set of ACLs exists for a given secret, it can only be updated"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ad58531_d62a5a7e","line":100,"in_reply_to":"5ad58531_0d48d15a","updated":"2015-05-11 20:38:23.000000000","message":"today I learned something :D\n\nBut I guess it makes sense. Since the ACL would not be an entity per-se, but... you could call it an attribute of the secret. If we\u0027re not returning anything relevant, I would be alright with a 204.","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":1091,"name":"Arun Kant","email":"arukant@cisco.com","username":"arunkant-uws"},"change_message_id":"b461700a80b4a962ca90a6c944e0491083995bdc","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    @controllers.handle_exceptions(u._(\u0027SecretACL(s) creation\u0027))"},{"line_number":98,"context_line":"    @controllers.enforce_rbac(\u0027secret_acls:post\u0027)"},{"line_number":99,"context_line":"    @controllers.enforce_content_types([\u0027application/json\u0027])"},{"line_number":100,"context_line":"    def on_post(self, external_project_id, **kwargs):"},{"line_number":101,"context_line":"        \"\"\"Handles secret acls creation request."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        Once a set of ACLs exists for a given secret, it can only be updated"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ad58531_0d48d15a","line":100,"in_reply_to":"7ad8896b_ee2a1fe7","updated":"2015-05-11 19:20:14.000000000","message":"John: Thanks for finding that out. I always thought POST is used for sub-resource creation but looked into \u0027PUT\u0027 in http rfc.  It can be used for creation if resource does not exist. So as you mentioned, will remove POST call. As per RFC (https://tools.ietf.org/html/rfc7231#section-4.3.4), PUT should return 201 when resource is created. Is it okay (API-wg perspective) to return 201 in case of new resource and 200 in case of full update. The other option is just to return 204 (No Content) as we are not returning any useful response in PUT/PATCH response.","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"ff59d667db06f5e2b725b152c813e35ba03e21b6","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        }"},{"line_number":235,"context_line":"        \"\"\""},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        count \u003d self.acl_repo.get_count(self.secret.id)"},{"line_number":238,"context_line":"        LOG.debug(\u0027Count of existing ACL on_secret is [%s] \u0027"},{"line_number":239,"context_line":"                  \u0027 for secret-ID %s:\u0027, count, self.secret.id)"},{"line_number":240,"context_line":"        if count \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad8896b_31b9aa2f","line":237,"updated":"2015-05-11 16:48:25.000000000","message":"No need to count if just on_put() (and no on_post() call).","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":1091,"name":"Arun Kant","email":"arukant@cisco.com","username":"arunkant-uws"},"change_message_id":"b461700a80b4a962ca90a6c944e0491083995bdc","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        }"},{"line_number":235,"context_line":"        \"\"\""},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        count \u003d self.acl_repo.get_count(self.secret.id)"},{"line_number":238,"context_line":"        LOG.debug(\u0027Count of existing ACL on_secret is [%s] \u0027"},{"line_number":239,"context_line":"                  \u0027 for secret-ID %s:\u0027, count, self.secret.id)"},{"line_number":240,"context_line":"        if count \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ad58531_ed81054f","line":237,"in_reply_to":"7ad8896b_31b9aa2f","updated":"2015-05-11 19:20:14.000000000","message":"Yes. I will remove count check.","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"ff59d667db06f5e2b725b152c813e35ba03e21b6","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        result \u003d self.acl_repo.get_by_secret_id(secret_id)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if not result:"},{"line_number":283,"context_line":"            _acls_not_found(\"secret\")"},{"line_number":284,"context_line":"        else:"},{"line_number":285,"context_line":"            acls_data \u003d {}"},{"line_number":286,"context_line":"            for acl in result:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad8896b_b1c91aaf","line":283,"updated":"2015-05-11 16:48:25.000000000","message":"I guess we could also return an empty dict? If only PUTs/PATCHs are needed for the /acl resource, then you should probably always be able to GET from it even if no actual info ?","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":1091,"name":"Arun Kant","email":"arukant@cisco.com","username":"arunkant-uws"},"change_message_id":"b461700a80b4a962ca90a6c944e0491083995bdc","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        result \u003d self.acl_repo.get_by_secret_id(secret_id)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if not result:"},{"line_number":283,"context_line":"            _acls_not_found(\"secret\")"},{"line_number":284,"context_line":"        else:"},{"line_number":285,"context_line":"            acls_data \u003d {}"},{"line_number":286,"context_line":"            for acl in result:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ad58531_cd09a9df","line":283,"in_reply_to":"7ad8896b_b1c91aaf","updated":"2015-05-11 19:20:14.000000000","message":"In Barbican, I have seen some of GET calls returns 404. But here I agree, we can return empty dict for GET calls. Will make that change.","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"ff59d667db06f5e2b725b152c813e35ba03e21b6","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    @controllers.handle_exceptions(u._(\u0027ContainerACL(s) creation\u0027))"},{"line_number":323,"context_line":"    @controllers.enforce_rbac(\u0027container_acls:post\u0027)"},{"line_number":324,"context_line":"    @controllers.enforce_content_types([\u0027application/json\u0027])"},{"line_number":325,"context_line":"    def on_post(self, external_project_id, **kwargs):"},{"line_number":326,"context_line":"        \"\"\"Handles container acls creation request."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        Once a set of ACLs exists for a given container, it can only be updated"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad8896b_71f972c8","line":325,"updated":"2015-05-11 16:48:25.000000000","message":"Same comment as above regarding removing the on_post() call.","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":1091,"name":"Arun Kant","email":"arukant@cisco.com","username":"arunkant-uws"},"change_message_id":"b461700a80b4a962ca90a6c944e0491083995bdc","unresolved":false,"context_lines":[{"line_number":322,"context_line":"    @controllers.handle_exceptions(u._(\u0027ContainerACL(s) creation\u0027))"},{"line_number":323,"context_line":"    @controllers.enforce_rbac(\u0027container_acls:post\u0027)"},{"line_number":324,"context_line":"    @controllers.enforce_content_types([\u0027application/json\u0027])"},{"line_number":325,"context_line":"    def on_post(self, external_project_id, **kwargs):"},{"line_number":326,"context_line":"        \"\"\"Handles container acls creation request."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        Once a set of ACLs exists for a given container, it can only be updated"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ad58531_2d038dba","line":325,"in_reply_to":"7ad8896b_71f972c8","updated":"2015-05-11 19:20:14.000000000","message":"Will remove it.","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"}],"etc/barbican/policy.json":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"ff59d667db06f5e2b725b152c813e35ba03e21b6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    \"certificate_authority:get_global_preferred\": \"rule:all_users\","},{"line_number":59,"context_line":"    \"certificate_authority:get_preferred_ca\": \"rule:all_users\","},{"line_number":60,"context_line":"    \"secret_acls:post\": \"rule:admin_or_creator_role and rule:secret_project_match\","},{"line_number":61,"context_line":"    \"secret_acls:put_patch\": \"rule:admin_or_creator_role and rule:secret_project_match\","},{"line_number":62,"context_line":"    \"secret_acls:delete\": \"rule:admin_or_creator_role and rule:secret_project_match\","},{"line_number":63,"context_line":"    \"secret_acls:get\": \"rule:all_but_audit and rule:secret_project_match\","},{"line_number":64,"context_line":"    \"container_acls:post\": \"rule:admin_or_creator_role and rule:container_project_match\","}],"source_content_type":"application/json","patch_set":1,"id":"7ad8896b_f1c68215","line":61,"updated":"2015-05-11 16:48:25.000000000","message":"So these \u0027post\u0027 policy lines could go as well.","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":1091,"name":"Arun Kant","email":"arukant@cisco.com","username":"arunkant-uws"},"change_message_id":"b461700a80b4a962ca90a6c944e0491083995bdc","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    \"certificate_authority:get_global_preferred\": \"rule:all_users\","},{"line_number":59,"context_line":"    \"certificate_authority:get_preferred_ca\": \"rule:all_users\","},{"line_number":60,"context_line":"    \"secret_acls:post\": \"rule:admin_or_creator_role and rule:secret_project_match\","},{"line_number":61,"context_line":"    \"secret_acls:put_patch\": \"rule:admin_or_creator_role and rule:secret_project_match\","},{"line_number":62,"context_line":"    \"secret_acls:delete\": \"rule:admin_or_creator_role and rule:secret_project_match\","},{"line_number":63,"context_line":"    \"secret_acls:get\": \"rule:all_but_audit and rule:secret_project_match\","},{"line_number":64,"context_line":"    \"container_acls:post\": \"rule:admin_or_creator_role and rule:container_project_match\","}],"source_content_type":"application/json","patch_set":1,"id":"5ad58531_ad253d5d","line":61,"in_reply_to":"7ad8896b_f1c68215","updated":"2015-05-11 19:20:14.000000000","message":"Yes. Will remove it.","commit_id":"35923d1120dbc05513315d5977b0a31a86226810"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"b54bd61ba70800100babc1fcc9e21e9908e3daa2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \"secret_project_admin\": \"rule:admin and rule:secret_project_match\","},{"line_number":24,"context_line":"    \"secret_project_creator\": \"rule:creator_role and rule:secret_project_match and rule:secret_creator_user\","},{"line_number":25,"context_line":"    \"container_project_admin\": \"rule:admin and rule:container_project_match\","},{"line_number":26,"context_line":"    \"container_project_creator\": \"rule:creator_role and rule:container_project_match and rule:container_creator_user\",    "},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    \"version:get\": \"@\","},{"line_number":29,"context_line":"    \"secret:decrypt\": \"rule:secret_decrypt_non_private_read or rule:secret_creator_user or rule:secret_acl_read\","}],"source_content_type":"application/json","patch_set":2,"id":"5afe65bd_9c48505d","line":26,"updated":"2015-06-02 15:19:02.000000000","message":"whitespace at end ..","commit_id":"e1d51232d4fd8691d6f6950c3dca118f356f3103"}]}
