)]}'
{"glance/api/policy.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"32d5438ea44bcd61d1ae0986f5abc8bc020aca4a","unresolved":false,"context_lines":[{"line_number":477,"context_line":"        return super(MetadefNamespaceRepoProxy, self).remove(namespace)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"class MetadefNamespaceFactoryProxy("},{"line_number":481,"context_line":"        glance.domain.proxy.MetadefNamespaceFactory):"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    def __init__(self, meta_namespace_factory, context, policy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_e1403a07","line":480,"range":{"start_line":480,"start_character":6,"end_line":480,"end_character":34},"updated":"2018-07-26 02:03:16.000000000","message":"So this one I think should also have a policy for delete_tags, just like there is one for add_tags on L704 (as well as list which is for getting all tags). See: https://developer.openstack.org/api-ref/image/v2/metadefs-index.html#delete-all-tag-definitions\n\nHowever, this delete_tags method I think has to be done in this class. See: http://git.openstack.org/cgit/openstack/glance/tree/glance/api/v2/metadef_namespaces.py#n346 which corresponds to API: http://git.openstack.org/cgit/openstack/glance/tree/glance/api/v2/router.py#n363\nwhich corresponds to the API documentation link above.","commit_id":"e0268ed343880d2e335eeab0201d346d895daad8"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"2f3f97a45429e55130e133210e3bf08bf3d5fdb9","unresolved":false,"context_lines":[{"line_number":477,"context_line":"        return super(MetadefNamespaceRepoProxy, self).remove(namespace)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"class MetadefNamespaceFactoryProxy("},{"line_number":481,"context_line":"        glance.domain.proxy.MetadefNamespaceFactory):"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    def __init__(self, meta_namespace_factory, context, policy):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_443006ea","line":480,"range":{"start_line":480,"start_character":6,"end_line":480,"end_character":34},"in_reply_to":"5f7c97a3_e1403a07","updated":"2018-07-26 19:37:02.000000000","message":"Thanks for the review and links. Implemented in the next PS","commit_id":"e0268ed343880d2e335eeab0201d346d895daad8"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"32d5438ea44bcd61d1ae0986f5abc8bc020aca4a","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        self.policy.enforce(self.context, \u0027add_metadef_tags\u0027, {})"},{"line_number":706,"context_line":"        return super(MetadefTagRepoProxy, self).add_tags(meta_tags)"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    def remove(self, *args, **kwargs):"},{"line_number":709,"context_line":"        self.policy.enforce(self.context, \u0027delete_metadef_tag\u0027, {})"},{"line_number":710,"context_line":"        return super(MetadefTagRepoProxy, self).remove(*args, **kwargs)"},{"line_number":711,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_e15fda0d","line":708,"range":{"start_line":708,"start_character":21,"end_line":708,"end_character":36},"updated":"2018-07-26 02:03:16.000000000","message":"nit: This only takes one argument, meta_tag: http://git.openstack.org/cgit/openstack/glance/tree/glance/domain/proxy.py#n544\n\nI suspect this is true elsewhere as well.","commit_id":"e0268ed343880d2e335eeab0201d346d895daad8"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"2f3f97a45429e55130e133210e3bf08bf3d5fdb9","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        self.policy.enforce(self.context, \u0027add_metadef_tags\u0027, {})"},{"line_number":706,"context_line":"        return super(MetadefTagRepoProxy, self).add_tags(meta_tags)"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    def remove(self, *args, **kwargs):"},{"line_number":709,"context_line":"        self.policy.enforce(self.context, \u0027delete_metadef_tag\u0027, {})"},{"line_number":710,"context_line":"        return super(MetadefTagRepoProxy, self).remove(*args, **kwargs)"},{"line_number":711,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_c9ac2f8a","line":708,"range":{"start_line":708,"start_character":21,"end_line":708,"end_character":36},"in_reply_to":"5f7c97a3_e15fda0d","updated":"2018-07-26 19:37:02.000000000","message":"Thanks for catching this.","commit_id":"e0268ed343880d2e335eeab0201d346d895daad8"}],"glance/tests/unit/test_policy.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8be3418428797c1f23858b46b7f4c96e1712e564","unresolved":false,"context_lines":[{"line_number":802,"context_line":"                 \u0027modify_metadef_tag\u0027: False,"},{"line_number":803,"context_line":"                 \u0027add_metadef_tag\u0027: False,"},{"line_number":804,"context_line":"                 \u0027add_metadef_tags\u0027: False,"},{"line_number":805,"context_line":"                 \u0027delete_metadef_tag\u0027: False}"},{"line_number":806,"context_line":"        self.policy.set_rules(rules)"},{"line_number":807,"context_line":"        mdtag_repo \u003d glance.api.policy.MetadefTagRepoProxy("},{"line_number":808,"context_line":"            MdTagRepoStub(), {}, self.policy)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_11932d01","line":805,"updated":"2018-07-26 23:05:52.000000000","message":"Missing delete_metadef_tags","commit_id":"74211c9ed3daf615036cc22a06a4dc353f794070"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8be3418428797c1f23858b46b7f4c96e1712e564","unresolved":false,"context_lines":[{"line_number":821,"context_line":"                 \u0027modify_metadef_tag\u0027: True,"},{"line_number":822,"context_line":"                 \u0027add_metadef_tag\u0027: True,"},{"line_number":823,"context_line":"                 \u0027add_metadef_tags\u0027: True,"},{"line_number":824,"context_line":"                 \u0027delete_metadef_tag\u0027: True}"},{"line_number":825,"context_line":"        self.policy.set_rules(rules)"},{"line_number":826,"context_line":"        mdtag_repo \u003d glance.api.policy.MetadefTagRepoProxy("},{"line_number":827,"context_line":"            MdTagRepoStub(), {}, self.policy)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_b199191f","line":824,"updated":"2018-07-26 23:05:52.000000000","message":"Missing delete_metadef_tags","commit_id":"74211c9ed3daf615036cc22a06a4dc353f794070"}],"releasenotes/notes/add_policy_enforcement_for_metadef_delete_apis-95d2b16cc444840a.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"940e562c0707ba6843d553fa0a63de8845da55e6","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Policy enforcement for several Metadata Definition delete APIs is"},{"line_number":5,"context_line":"    added in the Rocky release. The following actions are enforced"},{"line_number":6,"context_line":"    and added to the policy.json:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    - ``delete_metadef_namespace``"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3f79a3b5_4f055279","line":5,"range":{"start_line":5,"start_character":17,"end_line":5,"end_character":22},"updated":"2018-09-05 12:40:18.000000000","message":"This needs to be updated for Stein.","commit_id":"fea19b6488703befe1aa428cdb692ff00507d85b"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"050850e71d13e510c6f533f1a5abbc1463484ae2","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Policy enforcement for several Metadata Definition delete APIs is"},{"line_number":5,"context_line":"    added in the Rocky release. The following actions are enforced"},{"line_number":6,"context_line":"    and added to the policy.json:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    - ``delete_metadef_namespace``"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3f79a3b5_3738f5d2","line":5,"range":{"start_line":5,"start_character":17,"end_line":5,"end_character":22},"in_reply_to":"3f79a3b5_4f055279","updated":"2018-09-11 15:29:40.000000000","message":"Done","commit_id":"fea19b6488703befe1aa428cdb692ff00507d85b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d75d4d4935261880cdb09023f74a1cdd667e02f3","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Policy enforcement for several Metadata Definition delete APIs is"},{"line_number":5,"context_line":"    added in the Stein release. The following actions are enforced"},{"line_number":6,"context_line":"    and added to the policy.json:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    - ``delete_metadef_namespace``"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_e052be68","line":5,"range":{"start_line":5,"start_character":17,"end_line":5,"end_character":22},"updated":"2019-08-07 12:18:03.000000000","message":"Unfortunately this needs an update now.\n\nActually best not to include the release name in the text as the generated release notes are done by version anyway. That makes it more flexible for things like backporting too.","commit_id":"e96bdc828ed13835b1730f49b37c9982b810f378"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"4aa0bd20ef5ddc9e0cd8e87f601a2fa30adfb334","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Policy enforcement for several Metadata Definition delete APIs is"},{"line_number":5,"context_line":"    added in the Stein release. The following actions are enforced"},{"line_number":6,"context_line":"    and added to the policy.json:"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    - ``delete_metadef_namespace``"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_cf128761","line":5,"range":{"start_line":5,"start_character":17,"end_line":5,"end_character":22},"in_reply_to":"7faddb67_e052be68","updated":"2019-09-04 18:54:20.000000000","message":"Updated in the next PS. Thanks","commit_id":"e96bdc828ed13835b1730f49b37c9982b810f378"}]}
