)]}'
{"patrole_tempest_plugin/tests/api/volume/test_groups_rbac.py":[{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"f2a77e4346991041ee4816091b2c107ac7144daa","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def setup_clients(cls):"},{"line_number":35,"context_line":"        super(GroupsV3RbacTest, cls).setup_clients()"},{"line_number":36,"context_line":"        cls.admin_groups_client \u003d cls.os_admin.groups_v3_client"},{"line_number":37,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_v3_client"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_0a6ac67f","line":36,"updated":"2017-11-03 20:29:29.000000000","message":"Is there a reason this is using the admin client instead of the regular groups client? These resources are being created before the switch to rbac_role","commit_id":"de8ff746d68ce2887f4e625af5681ab2c72de558"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a5c6b0da022998a7de6ec68953d603a3eec67870","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def setup_clients(cls):"},{"line_number":35,"context_line":"        super(GroupsV3RbacTest, cls).setup_clients()"},{"line_number":36,"context_line":"        cls.admin_groups_client \u003d cls.os_admin.groups_v3_client"},{"line_number":37,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_v3_client"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_15e4293b","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":63},"updated":"2017-11-17 01:30:23.000000000","message":"any reason of using admin group client ? self.groups_client should be able to do all operation in this test.","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e983e7c450f2cc8dea8c24400b2faaed8a0eb411","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def setup_clients(cls):"},{"line_number":35,"context_line":"        super(GroupsV3RbacTest, cls).setup_clients()"},{"line_number":36,"context_line":"        cls.admin_groups_client \u003d cls.os_admin.groups_v3_client"},{"line_number":37,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_v3_client"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_dfef69e7","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":63},"in_reply_to":"1f485f77_15e4293b","updated":"2017-11-20 19:44:29.000000000","message":"Yes, it\u0027s used on L54,60,64 for clean up/waiting inside the scope of the test (after switch role).\n\nFor example, on L54-55, we use admin_groups_client to wait which calls GET policy, but the test is for POST policy, so we to isolate the POST policy by using admin for GET policy.\n\nOne way to clean this up that I proposed is to use context manager to provide better isolation to avoid this sort of thing, but that PS is a WIP.","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"947a065ba90efbdce3ce7b5f3bf6f057ed12ecf6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def setup_clients(cls):"},{"line_number":35,"context_line":"        super(GroupsV3RbacTest, cls).setup_clients()"},{"line_number":36,"context_line":"        cls.admin_groups_client \u003d cls.os_admin.groups_v3_client"},{"line_number":37,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_v3_client"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_3af063fe","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":63},"in_reply_to":"ff82abbf_dfef69e7","updated":"2017-11-25 16:33:47.000000000","message":"i see now, thanks.","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a5c6b0da022998a7de6ec68953d603a3eec67870","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":59,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":60,"context_line":"        vols \u003d self.admin_volumes_client.list_volumes("},{"line_number":61,"context_line":"            detail\u003dTrue)[\u0027volumes\u0027]"},{"line_number":62,"context_line":"        for vol in vols:"},{"line_number":63,"context_line":"            if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":64,"context_line":"                self.admin_volumes_client.wait_for_resource_deletion("}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_f58bcd64","line":61,"range":{"start_line":60,"start_character":41,"end_line":61,"end_character":35},"updated":"2017-11-17 01:30:23.000000000","message":"You need to pass \u0027all_tenants\u0027 filter to get all volumes belong to all tenant otherwise it will return admin volumes only.","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e983e7c450f2cc8dea8c24400b2faaed8a0eb411","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":59,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":60,"context_line":"        vols \u003d self.admin_volumes_client.list_volumes("},{"line_number":61,"context_line":"            detail\u003dTrue)[\u0027volumes\u0027]"},{"line_number":62,"context_line":"        for vol in vols:"},{"line_number":63,"context_line":"            if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":64,"context_line":"                self.admin_volumes_client.wait_for_resource_deletion("}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_8a88bd1f","line":61,"range":{"start_line":60,"start_character":41,"end_line":61,"end_character":35},"in_reply_to":"1f485f77_f58bcd64","updated":"2017-11-20 19:44:29.000000000","message":"I don\u0027t think this is a valid filter: https://developer.openstack.org/api-ref/block-storage/v3/index.html#list-accessible-volumes-with-details","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"798bab5a02873550c622ed5e89c3821418504b60","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":59,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":60,"context_line":"        vols \u003d self.admin_volumes_client.list_volumes("},{"line_number":61,"context_line":"            detail\u003dTrue)[\u0027volumes\u0027]"},{"line_number":62,"context_line":"        for vol in vols:"},{"line_number":63,"context_line":"            if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":64,"context_line":"                self.admin_volumes_client.wait_for_resource_deletion("}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_9dd5e6e7","line":61,"range":{"start_line":60,"start_character":41,"end_line":61,"end_character":35},"in_reply_to":"ff82abbf_3a8b836e","updated":"2017-11-26 23:35:02.000000000","message":"I see, I will check code next time :/","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"947a065ba90efbdce3ce7b5f3bf6f057ed12ecf6","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":59,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":60,"context_line":"        vols \u003d self.admin_volumes_client.list_volumes("},{"line_number":61,"context_line":"            detail\u003dTrue)[\u0027volumes\u0027]"},{"line_number":62,"context_line":"        for vol in vols:"},{"line_number":63,"context_line":"            if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":64,"context_line":"                self.admin_volumes_client.wait_for_resource_deletion("}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_3a8b836e","line":61,"range":{"start_line":60,"start_character":41,"end_line":61,"end_character":35},"in_reply_to":"ff82abbf_8a88bd1f","updated":"2017-11-25 16:33:47.000000000","message":"it is valid because showing all volumes to admin by default is not something correct way.\n\nMost of the cinder API-ref are incorrect . This filter is being taken care in code - https://github.com/openstack/cinder/blob/92d9f19f9947780a32bf81bec4a7c04c6d01fa73/cinder/volume/api.py#L559","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0658b1aed62046726c415753d523a1b855f1663c","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":59,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":60,"context_line":"        vols \u003d self.admin_volumes_client.list_volumes("},{"line_number":61,"context_line":"            detail\u003dTrue)[\u0027volumes\u0027]"},{"line_number":62,"context_line":"        for vol in vols:"},{"line_number":63,"context_line":"            if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":64,"context_line":"                self.admin_volumes_client.wait_for_resource_deletion("}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_3b8ce234","line":61,"range":{"start_line":60,"start_character":41,"end_line":61,"end_character":35},"in_reply_to":"ff82abbf_9dd5e6e7","updated":"2017-11-27 06:09:33.000000000","message":":) i know that is not good practice as QA member but we do not have great api-ref as of now and only way to confirm the things is code.","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a5c6b0da022998a7de6ec68953d603a3eec67870","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":59,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":60,"context_line":"        vols \u003d self.admin_volumes_client.list_volumes("},{"line_number":61,"context_line":"            detail\u003dTrue)[\u0027volumes\u0027]"},{"line_number":62,"context_line":"        for vol in vols:"},{"line_number":63,"context_line":"            if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":64,"context_line":"                self.admin_volumes_client.wait_for_resource_deletion("},{"line_number":65,"context_line":"                    vol[\u0027id\u0027])"},{"line_number":66,"context_line":"        self.admin_groups_client.wait_for_resource_deletion(group_id)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @decorators.idempotent_id(\u002743235328-66ae-424f-bc7f-f709c0ca268c\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f485f77_f52f4d85","line":65,"range":{"start_line":60,"start_character":0,"end_line":65,"end_character":30},"updated":"2017-11-17 01:30:23.000000000","message":"can we move this before L59 so that group deletion will be done immediately on request.","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e983e7c450f2cc8dea8c24400b2faaed8a0eb411","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":59,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":60,"context_line":"        vols \u003d self.admin_volumes_client.list_volumes("},{"line_number":61,"context_line":"            detail\u003dTrue)[\u0027volumes\u0027]"},{"line_number":62,"context_line":"        for vol in vols:"},{"line_number":63,"context_line":"            if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":64,"context_line":"                self.admin_volumes_client.wait_for_resource_deletion("},{"line_number":65,"context_line":"                    vol[\u0027id\u0027])"},{"line_number":66,"context_line":"        self.admin_groups_client.wait_for_resource_deletion(group_id)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @decorators.idempotent_id(\u002743235328-66ae-424f-bc7f-f709c0ca268c\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_4a707573","line":65,"range":{"start_line":60,"start_character":0,"end_line":65,"end_character":30},"in_reply_to":"1f485f77_f52f4d85","updated":"2017-11-20 19:44:29.000000000","message":"This is the same implementation as: https://github.com/openstack/tempest/blob/ce5f6094a139b652a9dc380e1392e412e92197aa/tempest/api/volume/admin/test_groups.py#L28","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"947a065ba90efbdce3ce7b5f3bf6f057ed12ecf6","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":59,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":60,"context_line":"        vols \u003d self.admin_volumes_client.list_volumes("},{"line_number":61,"context_line":"            detail\u003dTrue)[\u0027volumes\u0027]"},{"line_number":62,"context_line":"        for vol in vols:"},{"line_number":63,"context_line":"            if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":64,"context_line":"                self.admin_volumes_client.wait_for_resource_deletion("},{"line_number":65,"context_line":"                    vol[\u0027id\u0027])"},{"line_number":66,"context_line":"        self.admin_groups_client.wait_for_resource_deletion(group_id)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @decorators.idempotent_id(\u002743235328-66ae-424f-bc7f-f709c0ca268c\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_ba96b392","line":65,"range":{"start_line":60,"start_character":0,"end_line":65,"end_character":30},"in_reply_to":"ff82abbf_4a707573","updated":"2017-11-25 16:33:47.000000000","message":"yea its not so optimized on tempest side but we can do here but no big deal.","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"798bab5a02873550c622ed5e89c3821418504b60","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _delete_group(self, group_id, delete_volumes\u003dTrue):"},{"line_number":59,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":60,"context_line":"        vols \u003d self.admin_volumes_client.list_volumes("},{"line_number":61,"context_line":"            detail\u003dTrue)[\u0027volumes\u0027]"},{"line_number":62,"context_line":"        for vol in vols:"},{"line_number":63,"context_line":"            if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":64,"context_line":"                self.admin_volumes_client.wait_for_resource_deletion("},{"line_number":65,"context_line":"                    vol[\u0027id\u0027])"},{"line_number":66,"context_line":"        self.admin_groups_client.wait_for_resource_deletion(group_id)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @decorators.idempotent_id(\u002743235328-66ae-424f-bc7f-f709c0ca268c\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_3d085a90","line":65,"range":{"start_line":60,"start_character":0,"end_line":65,"end_character":30},"in_reply_to":"ff82abbf_ba96b392","updated":"2017-11-26 23:35:02.000000000","message":"I put that comment before because \"before L59\" doesn\u0027t make sense. I think you mean put the waiter on L66 on L60?","commit_id":"b2c1e6ff195d1cf925a228580e462d01d3c9f29f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0658b1aed62046726c415753d523a1b855f1663c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":67,"context_line":"                    self.volumes_client.wait_for_resource_deletion("},{"line_number":68,"context_line":"                        vol[\u0027id\u0027])"},{"line_number":69,"context_line":"        self.addCleanup(_clean_volumes)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":72,"context_line":"        self.admin_groups_client.wait_for_resource_deletion(group_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff82abbf_6ce4ee3c","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":39},"updated":"2017-11-27 06:09:33.000000000","message":"do we need it in addCleanup ? if so then wait for group deletion stays same as original code means no volume deletion  confirmation before waiting for group deletion","commit_id":"46a4b662b0ff646277ec8c3a8e866cfa081cb5c2"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9f6e74e61abc71fd7317ce1e059792c0e1364bc","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                if vol[\u0027group_id\u0027] \u003d\u003d group_id:"},{"line_number":67,"context_line":"                    self.volumes_client.wait_for_resource_deletion("},{"line_number":68,"context_line":"                        vol[\u0027id\u0027])"},{"line_number":69,"context_line":"        self.addCleanup(_clean_volumes)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        self.groups_client.delete_group(group_id, delete_volumes)"},{"line_number":72,"context_line":"        self.admin_groups_client.wait_for_resource_deletion(group_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff82abbf_ba445a48","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":39},"in_reply_to":"ff82abbf_6ce4ee3c","updated":"2017-11-27 18:35:23.000000000","message":"No, don\u0027t have to, I\u0027ll make it use admin client instead.","commit_id":"46a4b662b0ff646277ec8c3a8e866cfa081cb5c2"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"798bab5a02873550c622ed5e89c3821418504b60","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                   volume_types\u003d[self.volume_type_id])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":133,"context_line":"        self._delete_group(group[\u0027id\u0027])"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"class GroupTypesV3RbacTest(rbac_base.BaseVolumeRbacTest):"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff82abbf_fd80b2c1","line":133,"range":{"start_line":133,"start_character":8,"end_line":133,"end_character":39},"updated":"2017-11-26 23:35:02.000000000","message":"This was another source of this issue because before there was no waiter. Ran this 30 times locally in a loop and worked every time after this change (before failed about 10% of times).","commit_id":"46a4b662b0ff646277ec8c3a8e866cfa081cb5c2"}]}
