)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"391b040d7de3fe67c762e0ce20ea88c2aa145537","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Sofia Enriquez \u003clsofia.enriquez@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-08-13 02:02:32 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement project personas for groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change implements default roles for the group APIs. Future changes"},{"line_number":10,"context_line":"will incorporate system-scope once cinder has the plumbing for it."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"522d7eb6_650a5fae","line":7,"updated":"2021-09-01 18:28:36.000000000","message":"This patch affects group_actions policies. I mention this because I\u0027m working on a separate patch for groups and group_types.","commit_id":"a95c8b49c18a112f0455239c38eea94ae3372156"}],"cinder/policies/group_actions.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"608ef5068e57891185e6a843f74b2463c4e7cd1f","unresolved":true,"context_lines":[{"line_number":27,"context_line":"DELETE_POLICY \u003d \u0027group:delete\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"DEPRECATED_REASON \u003d \"\"\""},{"line_number":30,"context_line":"The group API is now aware of scope types and default roles."},{"line_number":31,"context_line":"\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"deprecated_delete_group \u003d policy.DeprecatedRule("}],"source_content_type":"text/x-python","patch_set":5,"id":"84efc745_e94a79aa","line":30,"range":{"start_line":30,"start_character":30,"end_line":30,"end_character":45},"updated":"2021-02-17 19:25:08.000000000","message":"nit: remove this since we pulled out the system-scope checks.","commit_id":"cd9206a44fa65843773eb64e0bb98b159146fccd"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1347042c2da4b1a997e7a420cdee198da0b3397e","unresolved":true,"context_lines":[{"line_number":56,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":57,"context_line":"        name\u003dDELETE_POLICY,"},{"line_number":58,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN_OR_PROJECT_MEMBER,"},{"line_number":59,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":60,"context_line":"        description\u003d\"Delete group.\","},{"line_number":61,"context_line":"        operations\u003d["},{"line_number":62,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":13,"id":"a75086a1_3ef67d6b","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":42},"updated":"2021-08-30 15:13:57.000000000","message":"we are not adding scope_types for xena","commit_id":"e088100b79436a1e317b5b0196d62596fef7c576"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1347042c2da4b1a997e7a420cdee198da0b3397e","unresolved":true,"context_lines":[{"line_number":77,"context_line":"                \u0027path\u0027: \u0027/groups/{group_id}/action (reset_status)\u0027"},{"line_number":78,"context_line":"            }"},{"line_number":79,"context_line":"        ],"},{"line_number":80,"context_line":"        deprecated_rule\u003ddeprecated_reset_status,"},{"line_number":81,"context_line":"    ),"},{"line_number":82,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":83,"context_line":"        name\u003dENABLE_REP,"}],"source_content_type":"text/x-python","patch_set":13,"id":"92734a0f_55ce57fe","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":48},"updated":"2021-08-30 15:13:57.000000000","message":"we are not deprecating admin only policies","commit_id":"e088100b79436a1e317b5b0196d62596fef7c576"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4b11545b9ff8af7db7cb7452c9d4549f587de202","unresolved":true,"context_lines":[{"line_number":114,"context_line":"    ),"},{"line_number":115,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":116,"context_line":"        name\u003dLIST_REP,"},{"line_number":117,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN_OR_PROJECT_MEMBER,"},{"line_number":118,"context_line":"        description\u003d\"List failover replication.\","},{"line_number":119,"context_line":"        operations\u003d["},{"line_number":120,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":15,"id":"419dad70_1a1f1d80","line":117,"range":{"start_line":117,"start_character":23,"end_line":117,"end_character":53},"updated":"2021-08-30 21:32:26.000000000","message":"This is technically a read-only API, but it\u0027s invoked via POST, right?\n\nWhat\u0027s our stance on that? Are we going to allow project-readers to access POST API if they\u0027re implemented via that \u0027actions\u0027 pattern and they are essentially read-only?","commit_id":"11585fcd1f9eb7a1ef4e900a93981be4131e1d86"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"d8c69e3e45b8017589c30a54164f8544c0dd58b0","unresolved":true,"context_lines":[{"line_number":46,"context_line":"    name\u003dLIST_REP,"},{"line_number":47,"context_line":"    check_str\u003dbase.RULE_ADMIN_OR_OWNER"},{"line_number":48,"context_line":")"},{"line_number":49,"context_line":"deprecated_reset_status \u003d base.CinderDeprecatedRule("},{"line_number":50,"context_line":"    name\u003dRESET_STATUS,"},{"line_number":51,"context_line":"    check_str\u003dbase.RULE_ADMIN_API"},{"line_number":52,"context_line":")"}],"source_content_type":"text/x-python","patch_set":17,"id":"15f197e5_66679c7f","line":49,"updated":"2021-09-03 12:47:12.000000000","message":"This rule is not necessary because we\u0027re not deprecating the current rule in Xena","commit_id":"a8aa701830f0e15460934d31f2b8c3b7ef947c4e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"255d2d2fbf9f3a097148f494d967720afc3ea423","unresolved":true,"context_lines":[{"line_number":45,"context_line":"deprecated_list_replication \u003d base.CinderDeprecatedRule("},{"line_number":46,"context_line":"    name\u003dLIST_REP,"},{"line_number":47,"context_line":"    check_str\u003dbase.RULE_ADMIN_OR_OWNER"},{"line_number":48,"context_line":")"},{"line_number":49,"context_line":"# TODO(enriquetaso): update the following in Yoga."},{"line_number":50,"context_line":"# We\u0027re not deprecating the reset rule in Xena."},{"line_number":51,"context_line":"# deprecated_reset_status \u003d base.CinderDeprecatedRule("}],"source_content_type":"text/x-python","patch_set":20,"id":"1ed245df_990db5e0","line":48,"updated":"2021-09-03 18:45:17.000000000","message":"One thing I\u0027ve learned going through and proposing patches like that is that it can be easier to compare the deprecation to the new values (to make sure they make sense) when the deprecation is inline with the rules below:\n\n  policy.DocumentedRuleDefault(\n      name\u003dDELETE_POLICY,\n      check_str\u003dbase.SYSTEM_ADMIN_OR_PROJECT_MEMBER,\n      description\u003d\u0027Delete group.\u0027,\n      \u003csnip\u003e\n      deprecated_rule\u003dbase.CinderDeprecatedRule(\n          name\u003dDELETE_POLICY,\n          check_str\u003dbase.RULE_ADMIN_OR_OWNER\n      )\n  )\n\nNot that you need to respin this based on that alone, but it can help readers reviewing these changes since everything contextually is within 10 lines. Maybe something to do with future changes if folks find it useful.","commit_id":"3d5335c455022a1b76772949725a91cccf6e23d9"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"de91708d95b3c45353f111beffc78bb80c4a914a","unresolved":true,"context_lines":[{"line_number":45,"context_line":"deprecated_list_replication \u003d base.CinderDeprecatedRule("},{"line_number":46,"context_line":"    name\u003dLIST_REP,"},{"line_number":47,"context_line":"    check_str\u003dbase.RULE_ADMIN_OR_OWNER"},{"line_number":48,"context_line":")"},{"line_number":49,"context_line":"# TODO(enriquetaso): update the following in Yoga."},{"line_number":50,"context_line":"# We\u0027re not deprecating the reset rule in Xena."},{"line_number":51,"context_line":"# deprecated_reset_status \u003d base.CinderDeprecatedRule("}],"source_content_type":"text/x-python","patch_set":20,"id":"44b9a345_f88aaeb0","line":48,"in_reply_to":"1ed245df_990db5e0","updated":"2021-09-03 18:53:18.000000000","message":"I agree it might have been better if the team adopted a pattern like this, rather than declaring a bunch of new deprecated_XXX variables.\n\nI actually wouldn\u0027t mind taking on the task of updating all patches (in review) to follow this alternative approach, which I like. But I also don\u0027t want to churn the patches if there\u0027s a chance that some people prefer seeing the deprecated_XXX variables.","commit_id":"3d5335c455022a1b76772949725a91cccf6e23d9"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"4460add4948b7109190c25061ffafd6c69b507a7","unresolved":true,"context_lines":[{"line_number":117,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":118,"context_line":"        name\u003dLIST_REP,"},{"line_number":119,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN_OR_PROJECT_MEMBER,"},{"line_number":120,"context_line":"        description\u003d\"List failover replication.\","},{"line_number":121,"context_line":"        operations\u003d["},{"line_number":122,"context_line":"            {"},{"line_number":123,"context_line":"                \u0027method\u0027: \u0027POST\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"d69ca265_bf9ee783","line":120,"range":{"start_line":120,"start_character":20,"end_line":120,"end_character":49},"updated":"2021-09-09 20:40:34.000000000","message":"This should be Lists replication targets for a group.\n\n\nhttps://docs.openstack.org/api-ref/block-storage/v3/?expanded\u003ddelete-attachment-detail,roll-back-volume-status-to-in-use-detail,extend-a-volume-size-detail,failover-replication-detail,list-replication-targets-detail#group-replication-groups-action","commit_id":"2f62286a9953c0d060450edc42fe84697cd22820"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2238abcd860616cb65f15f80736e57142cb925dd","unresolved":true,"context_lines":[{"line_number":47,"context_line":"    check_str\u003dbase.RULE_ADMIN_OR_OWNER"},{"line_number":48,"context_line":")"},{"line_number":49,"context_line":"# TODO(enriquetaso): update the following in Yoga."},{"line_number":50,"context_line":"# We\u0027re not deprecating the reset rule in Xena."},{"line_number":51,"context_line":"# deprecated_reset_status \u003d base.CinderDeprecatedRule("},{"line_number":52,"context_line":"#     name\u003dRESET_STATUS,"},{"line_number":53,"context_line":"#     check_str\u003dbase.RULE_ADMIN_API"}],"source_content_type":"text/x-python","patch_set":25,"id":"e13e4c6b_7ad8e523","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":47},"updated":"2021-09-14 09:19:34.000000000","message":"we could\u0027ve also mention the reason being we are leaving RULE_ADMIN_API policies as it is and will be deprecating them in yoga","commit_id":"c217dd4464104dbf305394aeb81ca3498c121f04"}],"cinder/tests/unit/policies/test_group_actions.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d3f6dba44ee575f22393b0a4d730fdb80bcd0718","unresolved":true,"context_lines":[{"line_number":91,"context_line":"                                             \u0027group_type_name\u0027,"},{"line_number":92,"context_line":"                                             {\u0027key3\u0027: \u0027value3\u0027},"},{"line_number":93,"context_line":"                                             is_public\u003dTrue)"},{"line_number":94,"context_line":"        # not surprisingly, to do a group action you need to get a"},{"line_number":95,"context_line":"        # group, so relax the group:get policy so that these tests"},{"line_number":96,"context_line":"        # will check the group action policy we\u0027re interested in"},{"line_number":97,"context_line":"        self.policy.set_rules({\"group:get\": \"\"},"},{"line_number":98,"context_line":"                              overwrite\u003dFalse)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def _create_group(self, group_status\u003dfields.GroupStatus.AVAILABLE):"},{"line_number":101,"context_line":"        volume_type \u003d test_utils.create_volume_type(self.project_admin_context,"}],"source_content_type":"text/x-python","patch_set":25,"id":"bed2425b_63e105ec","line":98,"range":{"start_line":94,"start_character":0,"end_line":98,"end_character":46},"updated":"2021-09-14 02:26:39.000000000","message":"Note: this is needed because Change I4216a0c1d562fca1b99027fdd67f8f3aaa134514 removed the overriding definition of \"group:get\": \"\" from tests/unit/policy.yaml","commit_id":"c217dd4464104dbf305394aeb81ca3498c121f04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2238abcd860616cb65f15f80736e57142cb925dd","unresolved":true,"context_lines":[{"line_number":117,"context_line":"                                             mock_enable_replication):"},{"line_number":118,"context_line":"        \"\"\"Test enable group replication policy.\"\"\""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        # FIXME: this is a very fragile approach"},{"line_number":121,"context_line":"        def fake_enable_rep(context, group):"},{"line_number":122,"context_line":"            context.authorize(group_policies.ENABLE_REP, target_obj\u003dgroup)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        volume_type \u003d test_utils.create_volume_type(self.project_admin_context,"},{"line_number":125,"context_line":"                                                    name\u003d\u0027test_group_policy\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"9c5d7b90_bc29cbc5","line":122,"range":{"start_line":120,"start_character":8,"end_line":122,"end_character":74},"updated":"2021-09-14 09:19:34.000000000","message":"I understand that the purpose of these tests are to check policy authorization but somehow they\u0027re also providing some sort of unit test coverage and we shouldn\u0027t avoid that. Having said that, given the amount of things we need to mock in this call, this looks acceptable.","commit_id":"c217dd4464104dbf305394aeb81ca3498c121f04"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2238abcd860616cb65f15f80736e57142cb925dd","unresolved":true,"context_lines":[{"line_number":226,"context_line":"        volume_type \u003d test_utils.create_volume_type(self.project_admin_context,"},{"line_number":227,"context_line":"                                                    name\u003d\u0027test_group_policy\u0027)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        group_1 \u003d test_utils.create_group(self.project_admin_context,"},{"line_number":230,"context_line":"                                          status\u003dfields.GroupStatus.AVAILABLE,"},{"line_number":231,"context_line":"                                          group_type_id\u003dself.group_type.id,"},{"line_number":232,"context_line":"                                          volume_type_ids\u003d[volume_type.id])"}],"source_content_type":"text/x-python","patch_set":25,"id":"88ed84ab_fe5c3343","line":229,"range":{"start_line":229,"start_character":8,"end_line":229,"end_character":15},"updated":"2021-09-14 09:19:34.000000000","message":"The variable name is OK but looks weird to use group_1 without any \"group\" variable already being declared","commit_id":"c217dd4464104dbf305394aeb81ca3498c121f04"}]}
