)]}'
{"tempest/api/volume/test_volume_transfers.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e8f9c1d123b7f04a327b946f63404ba28f7a4e64","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def _delete_volume(self, volume_id, owner):"},{"line_number":39,"context_line":"        # Delete the specified volume using the provided client"},{"line_number":40,"context_line":"        # There\u0027s a risk that if the transfer failed the \u0027owner\u0027"},{"line_number":41,"context_line":"        # won\u0027t be able to delete the client and the volume"},{"line_number":42,"context_line":"        # resource will leak"},{"line_number":43,"context_line":"        owner.delete_volume(volume_id)"},{"line_number":44,"context_line":"        owner.wait_for_resource_deletion(volume_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_06294c9e","line":41,"updated":"2016-06-01 10:46:47.000000000","message":"s/client/volume/ ?","commit_id":"db63e5ebf683d876ca62014fe045f0c7f6dc9c23"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"b138e6972f17e2e646bc4f970ab22e7dad77cda1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def setup_clients(cls):"},{"line_number":32,"context_line":"        super(VolumesV2TransfersTest, cls).setup_clients()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        cls.client \u003d cls.volumes_client"},{"line_number":35,"context_line":"        cls.alt_client \u003d cls.os_alt.volumes_client"},{"line_number":36,"context_line":"        cls.alt_tenant_id \u003d cls.alt_client.tenant_id"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_2336c2e7","line":34,"updated":"2016-06-02 08:56:04.000000000","message":"The clients are aliased to the volumes_clients","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fd370e095d3c210a9969d958fde630e2790f59ea","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # There\u0027s a risk that if the transfer failed the \u0027owner\u0027"},{"line_number":41,"context_line":"        # won\u0027t be able to delete the volume, and the volume"},{"line_number":42,"context_line":"        # resource will leak"},{"line_number":43,"context_line":"        owner.delete_volume(volume_id)"},{"line_number":44,"context_line":"        owner.wait_for_resource_deletion(volume_id)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @test.idempotent_id(\u00274d75b645-a478-48b1-97c8-503f64242f1a\u0027)"},{"line_number":47,"context_line":"    def test_create_get_list_accept_volume_transfer(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_eca9d57c","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":51},"updated":"2016-06-07 12:43:04.000000000","message":"if we want to remove the admin client from here then we should have more safer code here - \n- try to delete with alt_client\n- accept 404 if thrown then, try with self.client\n\nwhich make sure either the owner of volume, it will get deleted.\n\nlike-\n        try:\n            self.alt_client.delete_volume(volume_id)\n            self.alt_client.wait_for_resource_deletion(volume_id)\n        except lib_exc.NotFound:\n            self.client.delete_volume(volume_id)\n            self.client.wait_for_resource_deletion(volume_id)","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"},{"author":{"_account_id":14103,"name":"wangtianfa","email":"wang.tianfa@99cloud.net","username":"wangtianfa"},"change_message_id":"2c216c48b3ef31fa0f6e3773328378c714ee3a2f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # There\u0027s a risk that if the transfer failed the \u0027owner\u0027"},{"line_number":41,"context_line":"        # won\u0027t be able to delete the volume, and the volume"},{"line_number":42,"context_line":"        # resource will leak"},{"line_number":43,"context_line":"        owner.delete_volume(volume_id)"},{"line_number":44,"context_line":"        owner.wait_for_resource_deletion(volume_id)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @test.idempotent_id(\u00274d75b645-a478-48b1-97c8-503f64242f1a\u0027)"},{"line_number":47,"context_line":"    def test_create_get_list_accept_volume_transfer(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_07f35ad7","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":51},"in_reply_to":"7aa08908_eca9d57c","updated":"2016-06-07 12:47:30.000000000","message":"I think so.To study the.","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a376f5fa2abb529c6a2599f68360b1ba6136789a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # Create a volume first"},{"line_number":49,"context_line":"        volume \u003d self.create_volume()"},{"line_number":50,"context_line":"        # On successful transfer, alt tenant should own volume"},{"line_number":51,"context_line":"        self.addCleanup(self._delete_volume, volume[\u0027id\u0027], self.alt_client)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Create a volume transfer"},{"line_number":54,"context_line":"        transfer \u003d self.client.create_volume_transfer("}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_0e349047","line":51,"range":{"start_line":51,"start_character":59,"end_line":51,"end_character":74},"updated":"2016-06-02 03:36:56.000000000","message":"I am a little confused..\nThe volume is created with cls.volumes_client in the above create_volume().\nWhy should we specify self.alt_client instead of self.volumes_client?","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"2ce4559dabfd4aedaaad87fe0b6913c5dd4a9c16","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        # On successful transfer, alt tenant should own volume"},{"line_number":51,"context_line":"        self.addCleanup(self._delete_volume, volume[\u0027id\u0027], self.alt_client)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Create a volume transfer"},{"line_number":54,"context_line":"        transfer \u003d self.client.create_volume_transfer("},{"line_number":55,"context_line":"            volume_id\u003dvolume[\u0027id\u0027])[\u0027transfer\u0027]"},{"line_number":56,"context_line":"        transfer_id \u003d transfer[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_78e4f5ab","line":53,"updated":"2016-06-02 08:54:47.000000000","message":"oomichi, in this block a volume transfer is created, which sets up ownership transfer","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fd370e095d3c210a9969d958fde630e2790f59ea","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        self.addCleanup(self._delete_volume, volume[\u0027id\u0027], self.alt_client)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        # Create a volume transfer"},{"line_number":54,"context_line":"        transfer \u003d self.client.create_volume_transfer("},{"line_number":55,"context_line":"            volume_id\u003dvolume[\u0027id\u0027])[\u0027transfer\u0027]"},{"line_number":56,"context_line":"        transfer_id \u003d transfer[\u0027id\u0027]"},{"line_number":57,"context_line":"        auth_key \u003d transfer[\u0027auth_key\u0027]"},{"line_number":58,"context_line":"        waiters.wait_for_volume_status(self.client,"},{"line_number":59,"context_line":"                                       volume[\u0027id\u0027], \u0027awaiting-transfer\u0027)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        # Get a volume transfer"},{"line_number":62,"context_line":"        body \u003d self.client.show_volume_transfer(transfer_id)[\u0027transfer\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_c59af562","line":59,"range":{"start_line":54,"start_character":0,"end_line":59,"end_character":73},"updated":"2016-06-07 12:43:04.000000000","message":"If volume transfer is failed or it before transfer accepted by alt tenant then, ownership is still with cls.volumes_client and it will fail on _delete_volume with 404.","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"2ce4559dabfd4aedaaad87fe0b6913c5dd4a9c16","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        body \u003d self.client.list_volume_transfers()[\u0027transfers\u0027]"},{"line_number":68,"context_line":"        self.assertThat(len(body), matchers.GreaterThan(0))"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Accept a volume transfer by alt_tenant"},{"line_number":71,"context_line":"        body \u003d self.alt_client.accept_volume_transfer("},{"line_number":72,"context_line":"            transfer_id, auth_key\u003dauth_key)[\u0027transfer\u0027]"},{"line_number":73,"context_line":"        waiters.wait_for_volume_status(self.alt_client,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_d8a2414b","line":70,"updated":"2016-06-02 08:54:47.000000000","message":"In this block the transfer is accepted. This means the alt_client now owns the volume, and the original client can not delete it.","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a376f5fa2abb529c6a2599f68360b1ba6136789a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # Create a volume first"},{"line_number":79,"context_line":"        volume \u003d self.create_volume()"},{"line_number":80,"context_line":"        # After successful delete, original tenant should own volume"},{"line_number":81,"context_line":"        self.addCleanup(self._delete_volume, volume[\u0027id\u0027], self.client)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # Create a volume transfer"},{"line_number":84,"context_line":"        body \u003d self.client.create_volume_transfer("}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_ee366c4f","line":81,"range":{"start_line":81,"start_character":59,"end_line":81,"end_character":70},"updated":"2016-06-02 03:36:56.000000000","message":"ditto","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"2ce4559dabfd4aedaaad87fe0b6913c5dd4a9c16","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.addCleanup(self._delete_volume, volume[\u0027id\u0027], self.client)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # Create a volume transfer"},{"line_number":84,"context_line":"        body \u003d self.client.create_volume_transfer("},{"line_number":85,"context_line":"            volume_id\u003dvolume[\u0027id\u0027])[\u0027transfer\u0027]"},{"line_number":86,"context_line":"        transfer_id \u003d body[\u0027id\u0027]"},{"line_number":87,"context_line":"        waiters.wait_for_volume_status(self.client,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_38af0d2d","line":84,"updated":"2016-06-02 08:54:47.000000000","message":"Again, a volume transfer is created.","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"2ce4559dabfd4aedaaad87fe0b6913c5dd4a9c16","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            self.fail(\u0027Transfer not found for volume %s\u0027 % volume[\u0027id\u0027])"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # Delete a volume transfer"},{"line_number":99,"context_line":"        self.client.delete_volume_transfer(transfer_id)"},{"line_number":100,"context_line":"        waiters.wait_for_volume_status(self.client, volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_185a0951","line":98,"updated":"2016-06-02 08:54:47.000000000","message":"But then it is deleted, and the alt_client can not own the volume.","commit_id":"b34032525317acc55b718e81dc6694a7e129419c"}]}
