diff --git a/manilaclient/tests/functional/osc/base.py b/manilaclient/tests/functional/osc/base.py index d86322f6c..ac42015a7 100644 --- a/manilaclient/tests/functional/osc/base.py +++ b/manilaclient/tests/functional/osc/base.py @@ -145,7 +145,7 @@ class OSCClientTestBase(base.ClientTestBase): snapshot_id=None, properties=None, share_network=None, description=None, public=False, share_type=None, availability_zone=None, share_group=None, - add_cleanup=True, client=None, + add_cleanup=True, client=None, wait=None, wait_for_status='available'): name = name or data_utils.rand_name('autotest_share_name') @@ -174,6 +174,8 @@ class OSCClientTestBase(base.ClientTestBase): cmd = cmd + ' --availability-zone %s' % availability_zone if share_group: cmd = cmd + ' --share-group %s' % share_group + if wait: + cmd = cmd + ' --wait' share_object = self.dict_result('share', cmd, client=client) self._wait_for_object_status( diff --git a/manilaclient/tests/functional/osc/test_share_snapshot_instances.py b/manilaclient/tests/functional/osc/test_share_snapshot_instances.py new file mode 100644 index 000000000..1fa91811a --- /dev/null +++ b/manilaclient/tests/functional/osc/test_share_snapshot_instances.py @@ -0,0 +1,75 @@ +# 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 ShareSnapshotInstancesCLITest(base.OSCClientTestBase): + + def test_openstack_share_snapshot_instance_list(self): + share = self.create_share() + snapshot = self.create_snapshot(share['id']) + share_snapshot_instances_list = self.listing_result( + 'share snapshot instance', 'list --detailed') + self.assertTableStruct(share_snapshot_instances_list, [ + 'ID', + 'Snapshot ID', + 'Status', + 'Created At', + 'Updated At', + 'Share ID', + 'Share Instance ID', + 'Progress', + 'Provider Location' + ]) + self.assertIn(snapshot['id'], + [item['Snapshot ID'] for item in ( + share_snapshot_instances_list)]) + + def test_openstack_share_snapshot_instance_show(self): + share = self.create_share() + snapshot = self.create_snapshot(share['id'], wait=True) + + share_snapshot_instance = self.listing_result( + "share snapshot instance", f'list --snapshot {snapshot["id"]}') + result = self.dict_result('share snapshot instance', + f'show {share_snapshot_instance[0]["ID"]}') + + self.assertEqual(share_snapshot_instance[0]['ID'], result['id']) + self.assertEqual(share_snapshot_instance[0]['Snapshot ID'], + result['snapshot_id']) + + listing_result = self.listing_result( + 'share snapshot instance', f'show ' + f'{share_snapshot_instance[0]["ID"]}') + self.assertTableStruct(listing_result, [ + 'Field', + 'Value' + ]) + + def test_openstack_share_snapshot_instance_set(self): + share = self.create_share() + snapshot = self.create_snapshot(share['id'], wait=True) + share_snapshot_instance = self.listing_result( + "share snapshot instance", f'list --snapshot {snapshot["id"]}') + result1 = self.dict_result('share snapshot instance', + f'show {share_snapshot_instance[0]["ID"]}') + self.assertEqual(share_snapshot_instance[0]['ID'], result1['id']) + self.assertEqual(snapshot['id'], result1['snapshot_id']) + self.assertEqual('available', result1['status']) + + self.openstack('share snapshot instance set ' + f'{share_snapshot_instance[0]["ID"]} --status error') + result2 = self.dict_result('share snapshot instance', + f'show {share_snapshot_instance[0]["ID"]}') + self.assertEqual(share_snapshot_instance[0]["ID"], result2['id']) + self.assertEqual('error', result2['status'])