)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0946e7aaf3742fb470efbc67aa981f40c761da1a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"(volumes, servers) [0]. Lack of resource idempotency is likely"},{"line_number":14,"context_line":"compounding waiter issues."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"So this patchset resolves the issue by creating a volume/server"},{"line_number":17,"context_line":"per test and removing the shared class-wide versions. It also"},{"line_number":18,"context_line":"adds a `wait_for_server_volume_swap` call to"},{"line_number":19,"context_line":"`test_update_volume_attachment` which was previously missing"},{"line_number":20,"context_line":"even though the test does a volume swap."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_41b4e582","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":53},"updated":"2018-06-15 00:35:07.000000000","message":"i think that will be more expensive than shared resource. can we just add wait for shared resource somewhere in setUp() so that they are in good state before test start.","commit_id":"ae44e5161aa6c9b15dafb685f64ccc848ae2a7a7"}],"patrole_tempest_plugin/tests/api/compute/test_server_volume_attachments_rbac.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0946e7aaf3742fb470efbc67aa981f40c761da1a","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        rule\u003d\"os_compute_api:os-volumes-attachments:create\")"},{"line_number":92,"context_line":"    @decorators.idempotent_id(\u002721c2c3fd-fbe8-41b1-8ef8-115ec47d54c1\u0027)"},{"line_number":93,"context_line":"    def test_create_volume_attachment(self):"},{"line_number":94,"context_line":"        volume \u003d self.create_volume()"},{"line_number":95,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":98,"context_line":"            self.servers_client.attach_volume(server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_815f5d4c","line":95,"range":{"start_line":94,"start_character":0,"end_line":95,"end_character":61},"updated":"2018-06-15 00:35:07.000000000","message":"I think sharing these among tests is more optimized way.","commit_id":"ae44e5161aa6c9b15dafb685f64ccc848ae2a7a7"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0946e7aaf3742fb470efbc67aa981f40c761da1a","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        volume \u003d self.create_volume()"},{"line_number":95,"context_line":"        server \u003d self.create_test_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":98,"context_line":"            self.servers_client.attach_volume(server[\u0027id\u0027],"},{"line_number":99,"context_line":"                                              volumeId\u003dvolume[\u0027id\u0027])"},{"line_number":100,"context_line":"        # On teardown detach the volume and wait for it to be available. This"},{"line_number":101,"context_line":"        # is so we don\u0027t error out when trying to delete the volume during"},{"line_number":102,"context_line":"        # teardown."},{"line_number":103,"context_line":"        self.addCleanup(waiters.wait_for_volume_resource_status,"},{"line_number":104,"context_line":"                        self.volumes_client, volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":105,"context_line":"        # Ignore 404s on detach in case the server is deleted or the volume"},{"line_number":106,"context_line":"        # is already detached."},{"line_number":107,"context_line":"        self.addCleanup(self._detach_volume, server, volume)"},{"line_number":108,"context_line":"        waiters.wait_for_volume_resource_status(self.volumes_client,"},{"line_number":109,"context_line":"                                                volume[\u0027id\u0027], \u0027in-use\u0027)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @rbac_rule_validation.action("},{"line_number":112,"context_line":"        service\u003d\"nova\","}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_e1a4114e","line":109,"range":{"start_line":97,"start_character":0,"end_line":109,"end_character":71},"updated":"2018-06-15 00:35:07.000000000","message":"+1 on this.","commit_id":"ae44e5161aa6c9b15dafb685f64ccc848ae2a7a7"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"578fb8a2e110197d33596edb0197c1f3cd824e80","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                                        cls.volume[\u0027id\u0027],"},{"line_number":69,"context_line":"                                                        \u0027available\u0027)"},{"line_number":70,"context_line":"        except lib_exc.TimeoutException:"},{"line_number":71,"context_line":"            # If all else fails, reset the volume status to available"},{"line_number":72,"context_line":"            # with attach_status of \u0027detached\u0027."},{"line_number":73,"context_line":"            cls.volumes_client.reset_volume_status("},{"line_number":74,"context_line":"                cls.volume[\u0027id\u0027], status\u003d\u0027available\u0027,"},{"line_number":75,"context_line":"                attach_status\u003d\u0027detached\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_17ac4b86","line":72,"range":{"start_line":71,"start_character":12,"end_line":72,"end_character":47},"updated":"2018-06-22 21:10:06.000000000","message":"is there a chance that there are any attachments at this point?","commit_id":"f4cca660823df07663d0bd2d9550dec8388c428e"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"cc7da6d4b2b2085fc1990808bdc28ddfd0599a20","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                                                        cls.volume[\u0027id\u0027],"},{"line_number":69,"context_line":"                                                        \u0027available\u0027)"},{"line_number":70,"context_line":"        except lib_exc.TimeoutException:"},{"line_number":71,"context_line":"            # If all else fails, reset the volume status to available"},{"line_number":72,"context_line":"            # with attach_status of \u0027detached\u0027."},{"line_number":73,"context_line":"            cls.volumes_client.reset_volume_status("},{"line_number":74,"context_line":"                cls.volume[\u0027id\u0027], status\u003d\u0027available\u0027,"},{"line_number":75,"context_line":"                attach_status\u003d\u0027detached\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_c94ef894","line":72,"range":{"start_line":71,"start_character":12,"end_line":72,"end_character":47},"in_reply_to":"5f7c97a3_17ac4b86","updated":"2018-06-26 21:31:22.000000000","message":"Maybe, though I don\u0027t think Tempest currently has an attachments API service client allowing for additional attempts at deleting lingering attachments. https://developer.openstack.org/api-ref/block-storage/v3/index.html#attachments","commit_id":"f4cca660823df07663d0bd2d9550dec8388c428e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cc0b71e5d4986a04972b95512d67ff8dd67c8c06","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"},{"line_number":56,"context_line":"    def resource_cleanup(cls):"},{"line_number":57,"context_line":"        cls._restore_volume_status()"},{"line_number":58,"context_line":"        super(ServerVolumeAttachmentRbacTest, cls).resource_cleanup()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_fbd587ed","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":36},"updated":"2018-10-31 16:03:52.000000000","message":"this is called as class level and this class volumes are not used beyond this class, so why we need this in resource_cleanup?","commit_id":"7995444a26f0e7bdd10a080ea46fa9362221860d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"adb1e8cf24f247c988935c7d479a4be5fd6c2dff","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @classmethod"},{"line_number":56,"context_line":"    def resource_cleanup(cls):"},{"line_number":57,"context_line":"        cls._restore_volume_status()"},{"line_number":58,"context_line":"        super(ServerVolumeAttachmentRbacTest, cls).resource_cleanup()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_77752aff","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":36},"in_reply_to":"3f79a3b5_fbd587ed","updated":"2018-11-12 23:30:36.000000000","message":"Done","commit_id":"7995444a26f0e7bdd10a080ea46fa9362221860d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cc0b71e5d4986a04972b95512d67ff8dd67c8c06","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        except lib_exc.TimeoutException:"},{"line_number":75,"context_line":"            # If all else fails, reset the volume status to available"},{"line_number":76,"context_line":"            # with attach_status of \u0027detached\u0027."},{"line_number":77,"context_line":"            cls.volumes_client.reset_volume_status("},{"line_number":78,"context_line":"                cls.volume[\u0027id\u0027], status\u003d\u0027available\u0027,"},{"line_number":79,"context_line":"                attach_status\u003d\u0027detached\u0027)"},{"line_number":80,"context_line":"            waiters.wait_for_volume_resource_status("}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_9b31f3f1","line":77,"range":{"start_line":77,"start_character":31,"end_line":77,"end_character":50},"updated":"2018-10-31 16:03:52.000000000","message":"this API reset the status in DB only and does not actually detached the volume.\n\nand testing with volume having DB state as \u0027available\u0027 and there is actual attachment can be more difficult to figure out. \n\nHow about recreating the volume in this condition?","commit_id":"7995444a26f0e7bdd10a080ea46fa9362221860d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"adb1e8cf24f247c988935c7d479a4be5fd6c2dff","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        except lib_exc.TimeoutException:"},{"line_number":75,"context_line":"            # If all else fails, reset the volume status to available"},{"line_number":76,"context_line":"            # with attach_status of \u0027detached\u0027."},{"line_number":77,"context_line":"            cls.volumes_client.reset_volume_status("},{"line_number":78,"context_line":"                cls.volume[\u0027id\u0027], status\u003d\u0027available\u0027,"},{"line_number":79,"context_line":"                attach_status\u003d\u0027detached\u0027)"},{"line_number":80,"context_line":"            waiters.wait_for_volume_resource_status("}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_177ab6ee","line":77,"range":{"start_line":77,"start_character":31,"end_line":77,"end_character":50},"in_reply_to":"3f79a3b5_9b31f3f1","updated":"2018-11-12 23:30:36.000000000","message":"Done","commit_id":"7995444a26f0e7bdd10a080ea46fa9362221860d"}]}
