Files
python-manilaclient/manilaclient/tests/functional/osc/test_share_snapshots.py
Maari Tamm 17d560931a [OSC] Add functional tests for share snapshots
Add functional tests (positive scenarios) for the
'openstack share snapshot' commands.

Change-Id: If6109da26d69689bddee135e40fd1e7736d9e0bb
2022-07-26 14:55:09 +00:00

230 lines
7.6 KiB
Python

# 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.
import json
from manilaclient.tests.functional.osc import base
class ShareSnapshotCLITest(base.OSCClientTestBase):
"""Functional tests for share snpshot."""
def test_share_snapshot_create(self):
share = self.create_share()
snapshot = self.create_snapshot(
share=share['id'],
name='Snap',
description='Description')
self.assertEqual(share["id"], snapshot["share_id"])
self.assertEqual('Snap', snapshot["name"])
self.assertEqual('Description', snapshot["description"])
self.assertEqual('available', snapshot["status"])
snapshots_list = self.listing_result('share snapshot', 'list')
self.assertIn(snapshot['id'],
[item['ID'] for item in snapshots_list])
def test_share_snapshot_delete(self):
share = self.create_share()
snapshot_1 = self.create_snapshot(
share=share['id'], add_cleanup=False)
snapshot_2 = self.create_snapshot(
share=share['id'], add_cleanup=False)
self.openstack(
f'share snapshot delete {snapshot_1["id"]} {snapshot_2["id"]} '
'--wait')
self.check_object_deleted('share snapshot', snapshot_1["id"])
self.check_object_deleted('share snapshot', snapshot_2["id"])
snapshot_3 = self.create_snapshot(
share=share['id'], add_cleanup=False)
self.openstack(
f'share snapshot set {snapshot_3["id"]} '
'--status creating')
self.openstack(
f'share snapshot delete {snapshot_3["id"]} --wait --force')
self.check_object_deleted('share snapshot', snapshot_3["id"])
def test_share_snapshot_show(self):
share = self.create_share()
snapshot = self.create_snapshot(
share=share['id'],
name='Snap',
description='Description')
show_result = self.dict_result(
'share snapshot', f'show {snapshot["id"]}')
self.assertEqual(snapshot["id"], show_result["id"])
self.assertEqual('Snap', show_result["name"])
self.assertEqual('Description', show_result["description"])
def test_share_snapshot_set(self):
share = self.create_share()
snapshot = self.create_snapshot(share=share['id'])
self.openstack(
f'share snapshot set {snapshot["id"]} '
f'--name Snap --description Description')
show_result = self.dict_result(
'share snapshot ', f'show {snapshot["id"]}')
self.assertEqual(snapshot['id'], show_result["id"])
self.assertEqual('Snap', show_result["name"])
self.assertEqual('Description', show_result["description"])
def test_share_snapshot_unset(self):
share = self.create_share()
snapshot = self.create_snapshot(
share=share['id'],
name='Snap',
description='Description')
self.openstack(
f'share snapshot unset {snapshot["id"]} --name --description')
show_result = json.loads(self.openstack(
f'share snapshot show -f json {snapshot["id"]}'))
self.assertEqual(snapshot['id'], show_result["id"])
self.assertIsNone(show_result["name"])
self.assertIsNone(show_result["description"])
def test_share_snapshot_list(self):
share = self.create_share()
snapshot_1 = self.create_snapshot(share=share['id'])
snapshot_2 = self.create_snapshot(
share=share['id'],
description='Description')
snapshots_list = self.listing_result(
'share snapshot', f'list --name {snapshot_2["name"]} '
f'--description {snapshot_2["description"]} --all-projects'
)
self.assertTableStruct(snapshots_list, [
'ID',
'Name',
'Project ID'
])
self.assertIn(snapshot_2["name"],
[snap["Name"] for snap in snapshots_list])
self.assertEqual(1, len(snapshots_list))
snapshots_list = self.listing_result(
'share snapshot', f'list --share {share["name"]}')
self.assertTableStruct(snapshots_list, [
'ID',
'Name'
])
id_list = [snap["ID"] for snap in snapshots_list]
self.assertIn(snapshot_1["id"], id_list)
self.assertIn(snapshot_2["id"], id_list)
snapshots_list = self.listing_result(
'share snapshot',
f'list --name~ {snapshot_2["name"][-3:]} '
'--description~ Des --detail')
self.assertTableStruct(snapshots_list, [
'ID',
'Name',
'Status',
'Description',
'Created At',
'Size',
'Share ID',
'Share Proto',
'Share Size',
'User ID'
])
self.assertIn(snapshot_2["name"],
[snap["Name"] for snap in snapshots_list])
self.assertEqual(
snapshot_2["description"], snapshots_list[0]['Description'])
self.assertEqual(1, len(snapshots_list))
def test_share_snapshot_export_location_list(self):
share = self.create_share()
snapshot = self.create_snapshot(share=share['id'])
export_location_list = self.listing_result(
'share snapshot export location', f' list {snapshot["id"]}')
self.assertTableStruct(export_location_list, [
'ID',
'Path'
])
def test_share_snapshot_export_location_show(self):
share = self.create_share()
snapshot = self.create_snapshot(share=share['id'])
export_location_list = self.listing_result(
'share snapshot export location', f'list {snapshot["id"]}')
export_location = self.dict_result(
'share snapshot export location',
f'show {snapshot["id"]} {export_location_list[0]["ID"]}')
self.assertIn('id', export_location)
self.assertIn('created_at', export_location)
self.assertIn('is_admin_only', export_location)
self.assertIn('path', export_location)
self.assertIn('share_snapshot_instance_id', export_location)
self.assertIn('updated_at', export_location)
def test_share_snapshot_abandon_adopt(self):
share = self.create_share()
snapshot = self.create_snapshot(
share=share['id'], add_cleanup=False)
self.openstack(
f'share snapshot abandon {snapshot["id"]} --wait')
snapshots_list = self.listing_result('share snapshot', 'list')
self.assertNotIn(snapshot['id'],
[item['ID'] for item in snapshots_list])
snapshot = self.dict_result(
'share snapshot',
f'adopt {share["id"]} 10.0.0.1:/foo/path '
f'--name Snap --description Zorilla --wait')
snapshots_list = self.listing_result('share snapshot', 'list')
self.assertIn(snapshot['id'],
[item['ID'] for item in snapshots_list])
self.addCleanup(
self.openstack,
f'share snapshot delete {snapshot["id"]} --force --wait')