d54326ff7c
Depends-On: I8facf9112a6b09e6b7aed9956c0a87fb5f1fc31f Partially-Implements: blueprint transfer-share-between-project Change-Id: I3d5d0a57574edd350dc79a52879aa67016122f56
86 lines
3.5 KiB
Python
86 lines
3.5 KiB
Python
# Copyright (c) 2022 China Telecom Digital Intelligence.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from manilaclient.tests.functional.osc import base
|
|
|
|
|
|
class TransfersCLITest(base.OSCClientTestBase):
|
|
|
|
def setUp(self):
|
|
super(TransfersCLITest, self).setUp()
|
|
self.share_type = self.create_share_type()
|
|
|
|
def test_transfer_create_list_show_delete(self):
|
|
share = self.create_share(share_type=self.share_type['name'],
|
|
wait_for_status='available',
|
|
client=self.user_client)
|
|
# create share transfer
|
|
self.create_share_transfer(share['id'], name='transfer_test')
|
|
self._wait_for_object_status('share', share['id'], 'awaiting_transfer')
|
|
|
|
# Get all transfers
|
|
transfers = self.listing_result(
|
|
'share', 'transfer list', client=self.user_client)
|
|
# We must have at least one transfer
|
|
self.assertTrue(len(transfers) > 0)
|
|
self.assertTableStruct(transfers, [
|
|
'ID',
|
|
'Name',
|
|
'Resource Type',
|
|
'Resource Id',
|
|
])
|
|
|
|
# grab the transfer we created
|
|
transfer = [transfer for transfer in transfers
|
|
if transfer['Resource Id'] == share['id']]
|
|
self.assertEqual(1, len(transfer))
|
|
|
|
show_transfer = self.dict_result('share',
|
|
f'transfer show {transfer[0]["ID"]}')
|
|
self.assertEqual(transfer[0]['ID'], show_transfer['id'])
|
|
expected_keys = (
|
|
'id', 'created_at', 'name', 'resource_type', 'resource_id',
|
|
'source_project_id', 'destination_project_id', 'accepted',
|
|
'expires_at',
|
|
)
|
|
for key in expected_keys:
|
|
self.assertIn(key, show_transfer)
|
|
|
|
# filtering by Resource ID
|
|
filtered_transfers = self.listing_result(
|
|
'share',
|
|
f'transfer list --resource-id {share["id"]}',
|
|
client=self.user_client)
|
|
self.assertEqual(1, len(filtered_transfers))
|
|
self.assertEqual(show_transfer['resource_id'], share["id"])
|
|
|
|
# finally delete transfer and share
|
|
self.openstack(f'share transfer delete {show_transfer["id"]}')
|
|
self._wait_for_object_status('share', share['id'], 'available')
|
|
|
|
def test_transfer_accept(self):
|
|
share = self.create_share(share_type=self.share_type['name'],
|
|
wait_for_status='available',
|
|
client=self.user_client)
|
|
# create share transfer
|
|
transfer = self.create_share_transfer(share['id'],
|
|
name='transfer_test')
|
|
self._wait_for_object_status('share', share['id'], 'awaiting_transfer')
|
|
|
|
# accept share transfer
|
|
self.openstack(
|
|
f'share transfer accept {transfer["id"]} {transfer["auth_key"]}')
|
|
self._wait_for_object_status('share', share['id'], 'available')
|