)]}'
{"patrole_tempest_plugin/tests/api/volume/test_volumes_manage_rbac.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"31fc3618cf7d237e0f3d801d8abd5437a9076a75","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @classmethod"},{"line_number":42,"context_line":"    def setup_clients(cls):"},{"line_number":43,"context_line":"        super(VolumesManageRbacTest, cls).setup_clients()"},{"line_number":44,"context_line":"        cls.volume_manage_client \u003d cls.os.volume_manage_v2_client"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _manage_volume(self, org_volume):"},{"line_number":47,"context_line":"        # Manage volume"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_c21a2616","line":44,"range":{"start_line":44,"start_character":39,"end_line":44,"end_character":41},"updated":"2017-05-03 20:23:54.000000000","message":"os_primary\n\nThis is identical to \"os\" except that \"os\" is being deprecated in Pike because \"os_primary\" is easier to infer.","commit_id":"694738ed2f03a05337adec4c6e76ccbadbb69985"},{"author":{"_account_id":19391,"name":"Chi Lo","email":"cl566n@att.com","username":"cl566n"},"change_message_id":"8ea69d2d4000a272269927e6b4e1c49f974ace34","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @classmethod"},{"line_number":42,"context_line":"    def setup_clients(cls):"},{"line_number":43,"context_line":"        super(VolumesManageRbacTest, cls).setup_clients()"},{"line_number":44,"context_line":"        cls.volume_manage_client \u003d cls.os.volume_manage_v2_client"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _manage_volume(self, org_volume):"},{"line_number":47,"context_line":"        # Manage volume"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_a2727a10","line":44,"range":{"start_line":44,"start_character":39,"end_line":44,"end_character":41},"in_reply_to":"3f044301_c21a2616","updated":"2017-05-03 20:32:57.000000000","message":"Will fix.","commit_id":"694738ed2f03a05337adec4c6e76ccbadbb69985"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"31fc3618cf7d237e0f3d801d8abd5437a9076a75","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            self._manage_volume(volume)"},{"line_number":86,"context_line":"        except exceptions.Forbidden as e:"},{"line_number":87,"context_line":"            # Since the test role under test does not have permission to"},{"line_number":88,"context_line":"            # manage the volume, Forbidden exception is thrown and the"},{"line_number":89,"context_line":"            # manageable list will not be cleaned up. Therefore, we need to"},{"line_number":90,"context_line":"            # re-manage the volume at the end of the test case for proper"},{"line_number":91,"context_line":"            # resource clean up."},{"line_number":92,"context_line":"            self.addCleanup(self._manage_volume, volume)"},{"line_number":93,"context_line":"            raise exceptions.Forbidden(e)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @rbac_rule_validation.action("},{"line_number":96,"context_line":"        service\u003d\"cinder\","}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_c2d90623","line":93,"range":{"start_line":86,"start_character":8,"end_line":93,"end_character":41},"updated":"2017-05-03 20:23:54.000000000","message":"I\u0027m wondering whether we can use a class-wide volume in resource_setup then do self._manage_volume(self.volume) in tearDown if the volume isn\u0027t in \u0027available\u0027 status.","commit_id":"694738ed2f03a05337adec4c6e76ccbadbb69985"},{"author":{"_account_id":19391,"name":"Chi Lo","email":"cl566n@att.com","username":"cl566n"},"change_message_id":"8ea69d2d4000a272269927e6b4e1c49f974ace34","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            self._manage_volume(volume)"},{"line_number":86,"context_line":"        except exceptions.Forbidden as e:"},{"line_number":87,"context_line":"            # Since the test role under test does not have permission to"},{"line_number":88,"context_line":"            # manage the volume, Forbidden exception is thrown and the"},{"line_number":89,"context_line":"            # manageable list will not be cleaned up. Therefore, we need to"},{"line_number":90,"context_line":"            # re-manage the volume at the end of the test case for proper"},{"line_number":91,"context_line":"            # resource clean up."},{"line_number":92,"context_line":"            self.addCleanup(self._manage_volume, volume)"},{"line_number":93,"context_line":"            raise exceptions.Forbidden(e)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @rbac_rule_validation.action("},{"line_number":96,"context_line":"        service\u003d\"cinder\","}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_a2f95a4e","line":93,"range":{"start_line":86,"start_character":8,"end_line":93,"end_character":41},"in_reply_to":"3f044301_c2d90623","updated":"2017-05-03 20:32:57.000000000","message":"A class-wide volume is not possible.  The side effect of un-managing a volume is that the volume will be deleted.  Manage volume will use the deleted/original volume information to create a new volume.  Therefore, a class scope volume in resource_setup will not be re-used by multiple test cases.","commit_id":"694738ed2f03a05337adec4c6e76ccbadbb69985"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"31fc3618cf7d237e0f3d801d8abd5437a9076a75","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        self._unmanage_volume(volume)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # In order to clean up the manageable list, we need to re-manage the"},{"line_number":107,"context_line":"        # volume after the test.  The _manage_voulme method will set up the"},{"line_number":108,"context_line":"        # proper resource cleanup"},{"line_number":109,"context_line":"        self.addCleanup(self._manage_volume, volume)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_e29e4253","line":107,"range":{"start_line":107,"start_character":46,"end_line":107,"end_character":52},"updated":"2017-05-03 20:23:54.000000000","message":"volume","commit_id":"694738ed2f03a05337adec4c6e76ccbadbb69985"},{"author":{"_account_id":19391,"name":"Chi Lo","email":"cl566n@att.com","username":"cl566n"},"change_message_id":"8ea69d2d4000a272269927e6b4e1c49f974ace34","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        self._unmanage_volume(volume)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # In order to clean up the manageable list, we need to re-manage the"},{"line_number":107,"context_line":"        # volume after the test.  The _manage_voulme method will set up the"},{"line_number":108,"context_line":"        # proper resource cleanup"},{"line_number":109,"context_line":"        self.addCleanup(self._manage_volume, volume)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f044301_2260aa32","line":107,"range":{"start_line":107,"start_character":46,"end_line":107,"end_character":52},"in_reply_to":"3f044301_e29e4253","updated":"2017-05-03 20:32:57.000000000","message":"Will fix.","commit_id":"694738ed2f03a05337adec4c6e76ccbadbb69985"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"66d01da363053a7281383be95bfa609d80c9440f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        rule\u003d\"volume_extension:volume_manage\")"},{"line_number":74,"context_line":"    @decorators.idempotent_id(\u0027114f9708-939b-407e-aeac-d21ebfabaad3\u0027)"},{"line_number":75,"context_line":"    def test_volume_manage(self):"},{"line_number":76,"context_line":"        volume_id \u003d self.create_volume()[\u0027id\u0027]"},{"line_number":77,"context_line":"        volume \u003d self.volumes_client.show_volume(volume_id)[\u0027volume\u0027]"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # By default, the volume is managed after creation.  We need to"},{"line_number":80,"context_line":"        # unmanage the volume first before testing manage volume."}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_84609134","line":77,"range":{"start_line":76,"start_character":8,"end_line":77,"end_character":69},"updated":"2017-05-04 14:44:15.000000000","message":"is it possible just to do:\n\nvolume \u003d self.create_volume()","commit_id":"2297aa1e08522650841ad18697811efd6735ef78"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"eb1ce72b0af4bdece06142b0bcdb475228d32055","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        rule\u003d\"volume_extension:volume_manage\")"},{"line_number":74,"context_line":"    @decorators.idempotent_id(\u0027114f9708-939b-407e-aeac-d21ebfabaad3\u0027)"},{"line_number":75,"context_line":"    def test_volume_manage(self):"},{"line_number":76,"context_line":"        volume_id \u003d self.create_volume()[\u0027id\u0027]"},{"line_number":77,"context_line":"        volume \u003d self.volumes_client.show_volume(volume_id)[\u0027volume\u0027]"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # By default, the volume is managed after creation.  We need to"},{"line_number":80,"context_line":"        # unmanage the volume first before testing manage volume."}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_7fd06e51","line":77,"range":{"start_line":76,"start_character":8,"end_line":77,"end_character":69},"in_reply_to":"3f044301_7f0d0e36","updated":"2017-05-04 14:54:09.000000000","message":"oh ok good to know, thank you for the explanation.","commit_id":"2297aa1e08522650841ad18697811efd6735ef78"},{"author":{"_account_id":19391,"name":"Chi Lo","email":"cl566n@att.com","username":"cl566n"},"change_message_id":"dcb7dd6992d53bb444af2a0a04b90fd497b0d78c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        rule\u003d\"volume_extension:volume_manage\")"},{"line_number":74,"context_line":"    @decorators.idempotent_id(\u0027114f9708-939b-407e-aeac-d21ebfabaad3\u0027)"},{"line_number":75,"context_line":"    def test_volume_manage(self):"},{"line_number":76,"context_line":"        volume_id \u003d self.create_volume()[\u0027id\u0027]"},{"line_number":77,"context_line":"        volume \u003d self.volumes_client.show_volume(volume_id)[\u0027volume\u0027]"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # By default, the volume is managed after creation.  We need to"},{"line_number":80,"context_line":"        # unmanage the volume first before testing manage volume."}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_7f0d0e36","line":77,"range":{"start_line":76,"start_character":8,"end_line":77,"end_character":69},"in_reply_to":"3f044301_84609134","updated":"2017-05-04 14:50:27.000000000","message":"It is not possible to do just create_volume() because the volume object returned does not have \u0027os-vol-host-attr:host\u0027 attribute as seen in line#53.  As a result, there will be key error when line#53 is executed.  To access that attribute, an extra show_volume call is needed which will return all volume\u0027s attribute.","commit_id":"2297aa1e08522650841ad18697811efd6735ef78"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"536a3c3ed635e3eff4472cc6f1f320033e33ecd1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            self._manage_volume(volume)"},{"line_number":86,"context_line":"        except exceptions.Forbidden as e:"},{"line_number":87,"context_line":"            # Since the test role under test does not have permission to"},{"line_number":88,"context_line":"            # manage the volume, Forbidden exception is thrown and the"},{"line_number":89,"context_line":"            # manageable list will not be cleaned up. Therefore, we need to"},{"line_number":90,"context_line":"            # re-manage the volume at the end of the test case for proper"},{"line_number":91,"context_line":"            # resource clean up."},{"line_number":92,"context_line":"            self.addCleanup(self._manage_volume, volume)"},{"line_number":93,"context_line":"            raise exceptions.Forbidden(e)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @rbac_rule_validation.action("},{"line_number":96,"context_line":"        service\u003d\"cinder\","}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_305b502f","line":93,"range":{"start_line":86,"start_character":8,"end_line":93,"end_character":41},"updated":"2017-05-03 21:23:21.000000000","message":"Is it possible to just delete the volume outright during clean up either with self.volumes_client.delete_volume or force-deleting? Doesn\u0027t seem like there\u0027s a need to manage the volume only to then have it deleted. Wastes time.","commit_id":"2297aa1e08522650841ad18697811efd6735ef78"},{"author":{"_account_id":19391,"name":"Chi Lo","email":"cl566n@att.com","username":"cl566n"},"change_message_id":"e08bab51965978033c3a100fec53a0b5cf381395","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            self._manage_volume(volume)"},{"line_number":86,"context_line":"        except exceptions.Forbidden as e:"},{"line_number":87,"context_line":"            # Since the test role under test does not have permission to"},{"line_number":88,"context_line":"            # manage the volume, Forbidden exception is thrown and the"},{"line_number":89,"context_line":"            # manageable list will not be cleaned up. Therefore, we need to"},{"line_number":90,"context_line":"            # re-manage the volume at the end of the test case for proper"},{"line_number":91,"context_line":"            # resource clean up."},{"line_number":92,"context_line":"            self.addCleanup(self._manage_volume, volume)"},{"line_number":93,"context_line":"            raise exceptions.Forbidden(e)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @rbac_rule_validation.action("},{"line_number":96,"context_line":"        service\u003d\"cinder\","}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_309d9059","line":93,"range":{"start_line":86,"start_character":8,"end_line":93,"end_character":41},"in_reply_to":"3f044301_305b502f","updated":"2017-05-03 21:36:03.000000000","message":"After un-managing the volume, the volume is deleted and its \"reference\" can be seen in the manageable-list. If an user does not have permission to re-manage the volume, the manageable-list will have that reference entry.  There is no way that manageable-list entry can be removed since there is no client API available, not even a CLI I can find.  The only way to clean up the manageable-list is to manage the volume again.  The base class will then delete the volume.  By default, when the volume is deleted, the manageable-list entry will be removed. This is really about cleaning up the manageable-entry, not as much as cleaning the volume.","commit_id":"2297aa1e08522650841ad18697811efd6735ef78"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0b7aeac791a6ecb849eb774ff980951398da988c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            self._manage_volume(volume)"},{"line_number":86,"context_line":"        except exceptions.Forbidden as e:"},{"line_number":87,"context_line":"            # Since the test role under test does not have permission to"},{"line_number":88,"context_line":"            # manage the volume, Forbidden exception is thrown and the"},{"line_number":89,"context_line":"            # manageable list will not be cleaned up. Therefore, we need to"},{"line_number":90,"context_line":"            # re-manage the volume at the end of the test case for proper"},{"line_number":91,"context_line":"            # resource clean up."},{"line_number":92,"context_line":"            self.addCleanup(self._manage_volume, volume)"},{"line_number":93,"context_line":"            raise exceptions.Forbidden(e)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @rbac_rule_validation.action("},{"line_number":96,"context_line":"        service\u003d\"cinder\","}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_7873ec81","line":93,"range":{"start_line":86,"start_character":8,"end_line":93,"end_character":41},"in_reply_to":"3f044301_309d9059","updated":"2017-05-04 12:59:49.000000000","message":"Thanks for the explanation. Then this is the only way to do this.","commit_id":"2297aa1e08522650841ad18697811efd6735ef78"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"536a3c3ed635e3eff4472cc6f1f320033e33ecd1","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)"},{"line_number":104,"context_line":"        self._unmanage_volume(volume)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # In order to clean up the manageable list, we need to re-manage the"},{"line_number":107,"context_line":"        # volume after the test.  The _manage_volume method will set up the"},{"line_number":108,"context_line":"        # proper resource cleanup"},{"line_number":109,"context_line":"        self.addCleanup(self._manage_volume, volume)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"class VolumesManageV3RbacTest(VolumesManageRbacTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f044301_10405435","line":109,"range":{"start_line":106,"start_character":8,"end_line":109,"end_character":52},"updated":"2017-05-03 21:23:21.000000000","message":"See above.","commit_id":"2297aa1e08522650841ad18697811efd6735ef78"}]}
