)]}'
{"patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"00e883e74633956b44dd0d1641056dd03ffb3b9d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    min_microversion \u003d \u00273.20\u0027"},{"line_number":133,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def setUp(self):"},{"line_number":136,"context_line":"        super(GroupsV320RbacTest, self).setUp()"},{"line_number":137,"context_line":"        self.volume_type_id \u003d self.create_volume_type()[\u0027id\u0027]"},{"line_number":138,"context_line":"        self.group_type_id \u003d self.create_group_type()[\u0027id\u0027]"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _create_group(self, name\u003dNone, ignore_notfound\u003dFalse, **kwargs):"},{"line_number":141,"context_line":"        group_name \u003d name or data_utils.rand_name("},{"line_number":142,"context_line":"            self.__class__.__name__ + \u0027-Group\u0027)"},{"line_number":143,"context_line":"        group \u003d self.groups_client.create_group(name\u003dgroup_name, **kwargs)["},{"line_number":144,"context_line":"            \u0027group\u0027]"},{"line_number":145,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":146,"context_line":"            self.groups_client, group[\u0027id\u0027], \u0027available\u0027)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        if ignore_notfound:"},{"line_number":149,"context_line":"            self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":150,"context_line":"                            self._delete_group, group[\u0027id\u0027])"},{"line_number":151,"context_line":"        else:"},{"line_number":152,"context_line":"            self.addCleanup(self._delete_group, group[\u0027id\u0027])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        return group"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":157,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":158,"context_line":"        self.groups_client.wait_for_resource_deletion(group_id)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    @decorators.idempotent_id(\u0027b849c1d4-3215-4f9d-b1e6-0aeb4b2b65ac\u0027)"},{"line_number":161,"context_line":"    @rbac_rule_validation.action("}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_e1c23459","line":158,"range":{"start_line":135,"start_character":0,"end_line":158,"end_character":63},"updated":"2017-12-08 17:02:25.000000000","message":"May you follow the pattern in Tempest: https://github.com/openstack/tempest/blob/f801213ff1adc73704cdc31ab6749c249a3ff6d4/tempest/api/volume/admin/test_groups.py\n\n1) Create BaseGroupsRbacTest that contains setUp, _create_group and _delete_group\n2) Change GroupsV320RbacTest to inherit from BaseGroupsRbacTest \n3) Change GroupsV3RbacTest to inherit from BaseGroupsRbacTest","commit_id":"2fd3c30bb2b1a968c7816c825b5e22b37b2d2be8"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"00e883e74633956b44dd0d1641056dd03ffb3b9d","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                                   group_type\u003dself.group_type_id,"},{"line_number":167,"context_line":"                                   volume_types\u003d[self.volume_type_id])"},{"line_number":168,"context_line":"        status \u003d \u0027available\u0027"},{"line_number":169,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":170,"context_line":"        self.groups_client.reset_group_status(group[\u0027id\u0027],"},{"line_number":171,"context_line":"                                              status)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"class GroupTypesV3RbacTest(rbac_base.BaseVolumeRbacTest):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_e10b14d3","line":171,"range":{"start_line":169,"start_character":8,"end_line":171,"end_character":53},"updated":"2017-12-08 17:02:25.000000000","message":"May we refactor this to (see recent change: https://review.openstack.org/#/c/521703/)\n\nwith self.rbac_utils.override_role():\n    self.groups_client.reset_group_status(group[\u0027id\u0027], status)\nwaiters.wait_for_volume_resource_status(\n    self.groups_client, group[\u0027id\u0027], status)","commit_id":"2fd3c30bb2b1a968c7816c825b5e22b37b2d2be8"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f42de41082909fe8b2e3e4a8fd5f407cfb92c6ac","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                                   group_type\u003dself.group_type_id,"},{"line_number":167,"context_line":"                                   volume_types\u003d[self.volume_type_id])"},{"line_number":168,"context_line":"        status \u003d \u0027available\u0027"},{"line_number":169,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":170,"context_line":"        self.groups_client.reset_group_status(group[\u0027id\u0027],"},{"line_number":171,"context_line":"                                              status)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"class GroupTypesV3RbacTest(rbac_base.BaseVolumeRbacTest):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_f5b09bdf","line":171,"range":{"start_line":169,"start_character":8,"end_line":171,"end_character":53},"in_reply_to":"df87a7cf_e10b14d3","updated":"2017-12-10 18:11:45.000000000","message":"Sorry, example above should be:\n\n    with self.rbac_utils.override_role(self):\n        ...","commit_id":"2fd3c30bb2b1a968c7816c825b5e22b37b2d2be8"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b7aad243abd51038363d514fe61ecf2d4f6a4ac5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def setup_clients(cls):"},{"line_number":34,"context_line":"        super(GroupsV3RbacTest, cls).setup_clients()"},{"line_number":35,"context_line":"        cls.admin_groups_client \u003d cls.os_admin.groups_v3_client"},{"line_number":36,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_v3_client"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def setUp(self):"},{"line_number":39,"context_line":"        super(GroupsV3RbacTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_c78d72d4","side":"PARENT","line":36,"range":{"start_line":35,"start_character":8,"end_line":36,"end_character":65},"updated":"2017-12-12 22:11:19.000000000","message":"Still need to use this here and on L54,59,61,65 below since we aren\u0027t using override_role everywhere yet. Once we change this file to override_role we can remove this stuff once and for all.","commit_id":"1dec9ce91e54b70e014da7a78beecd7bfc024de6"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b7aad243abd51038363d514fe61ecf2d4f6a4ac5","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    min_microversion \u003d \u00273.14\u0027"},{"line_number":61,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @decorators.idempotent_id(\u002743235328-66ae-424f-bc7f-f709c0ca268c\u0027)"},{"line_number":66,"context_line":"    @rbac_rule_validation.action("}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_e78676bb","line":63,"range":{"start_line":63,"start_character":4,"end_line":63,"end_character":38},"updated":"2017-12-12 22:11:19.000000000","message":"This should be move to L27 above.\n\nWe only need credentials \u003d [\u0027primary\u0027, \u0027admin\u0027] when we use os_admin credentials. But we still need them in Base for waiters until we switch to override_role for all the tests.","commit_id":"c7bf9331187f36958ce16bb3081eb55911bcea32"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b7aad243abd51038363d514fe61ecf2d4f6a4ac5","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                                   volume_types\u003d[self.volume_type_id])"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        self.groups_client.show_group(group[\u0027id\u0027])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @decorators.idempotent_id(\u0027db43841b-a173-4317-acfc-f83e4e48e4ee\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_a7fb8e45","line":84,"updated":"2017-12-12 22:11:19.000000000","message":"nit: Don\u0027t need newline here.","commit_id":"c7bf9331187f36958ce16bb3081eb55911bcea32"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"38076f95caa650099e557f985a71a7b4b9591996","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    min_microversion \u003d \u00273.14\u0027"},{"line_number":68,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @decorators.idempotent_id(\u002743235328-66ae-424f-bc7f-f709c0ca268c\u0027)"},{"line_number":73,"context_line":"    @rbac_rule_validation.action("}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_31f9e54c","line":70,"range":{"start_line":70,"start_character":4,"end_line":70,"end_character":38},"updated":"2017-12-13 16:05:10.000000000","message":"nit: Can remove this, plus it\u0027s in base anyway so this is redundant.","commit_id":"bed248d34a7d160ce5ffc82e1ff6e8f6fe077113"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"38076f95caa650099e557f985a71a7b4b9591996","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                   volume_types\u003d[self.volume_type_id])"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        self.groups_client.show_group(group[\u0027id\u0027])"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u0027db43841b-a173-4317-acfc-f83e4e48e4ee\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_919d510c","line":91,"updated":"2017-12-13 16:05:10.000000000","message":"nit: Can remove this newline","commit_id":"bed248d34a7d160ce5ffc82e1ff6e8f6fe077113"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"38076f95caa650099e557f985a71a7b4b9591996","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        service\u003d\"cinder\","},{"line_number":143,"context_line":"        rule\u003d\"group:reset_status\")"},{"line_number":144,"context_line":"    def test_reset_group_status(self):"},{"line_number":145,"context_line":"        group \u003d self._create_group(ignore_notfound\u003dTrue,"},{"line_number":146,"context_line":"                                   group_type\u003dself.group_type_id,"},{"line_number":147,"context_line":"                                   volume_types\u003d[self.volume_type_id])"},{"line_number":148,"context_line":"        status \u003d \u0027available\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_f1f37d72","line":145,"range":{"start_line":145,"start_character":51,"end_line":145,"end_character":55},"updated":"2017-12-13 16:05:10.000000000","message":"False","commit_id":"bed248d34a7d160ce5ffc82e1ff6e8f6fe077113"}]}
