Clean things up somewhat. Change-Id: I868f496fc8285a28e8fd551377f2ae6228051d19 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
		
			
				
	
	
		
			271 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			271 lines
		
	
	
		
			8.0 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.
 | 
						|
 | 
						|
from openstack.block_storage.v3 import group as _group
 | 
						|
from openstack.block_storage.v3 import group_snapshot as _group_snapshot
 | 
						|
from openstack.test import fakes as sdk_fakes
 | 
						|
from osc_lib import exceptions
 | 
						|
 | 
						|
from openstackclient.tests.unit.volume.v3 import fakes as volume_fakes
 | 
						|
from openstackclient.volume.v3 import volume_group_snapshot
 | 
						|
 | 
						|
 | 
						|
class TestVolumeGroupSnapshotCreate(volume_fakes.TestVolume):
 | 
						|
    fake_volume_group = sdk_fakes.generate_fake_resource(_group.Group)
 | 
						|
    fake_volume_group_snapshot = sdk_fakes.generate_fake_resource(
 | 
						|
        _group_snapshot.GroupSnapshot,
 | 
						|
    )
 | 
						|
 | 
						|
    columns = (
 | 
						|
        'ID',
 | 
						|
        'Status',
 | 
						|
        'Name',
 | 
						|
        'Description',
 | 
						|
        'Group',
 | 
						|
        'Group Type',
 | 
						|
    )
 | 
						|
    data = (
 | 
						|
        fake_volume_group_snapshot.id,
 | 
						|
        fake_volume_group_snapshot.status,
 | 
						|
        fake_volume_group_snapshot.name,
 | 
						|
        fake_volume_group_snapshot.description,
 | 
						|
        fake_volume_group_snapshot.group_id,
 | 
						|
        fake_volume_group_snapshot.group_type_id,
 | 
						|
    )
 | 
						|
 | 
						|
    def setUp(self):
 | 
						|
        super().setUp()
 | 
						|
 | 
						|
        self.volume_sdk_client.find_group.return_value = self.fake_volume_group
 | 
						|
        self.volume_sdk_client.create_group_snapshot.return_value = (
 | 
						|
            self.fake_volume_group_snapshot
 | 
						|
        )
 | 
						|
        self.volume_sdk_client.find_group_snapshot.return_value = (
 | 
						|
            self.fake_volume_group_snapshot
 | 
						|
        )
 | 
						|
 | 
						|
        self.cmd = volume_group_snapshot.CreateVolumeGroupSnapshot(
 | 
						|
            self.app, None
 | 
						|
        )
 | 
						|
 | 
						|
    def test_volume_group_snapshot_create(self):
 | 
						|
        self.set_volume_api_version('3.14')
 | 
						|
 | 
						|
        arglist = [
 | 
						|
            self.fake_volume_group.id,
 | 
						|
        ]
 | 
						|
        verifylist = [
 | 
						|
            ('volume_group', self.fake_volume_group.id),
 | 
						|
            ('name', None),
 | 
						|
            ('description', None),
 | 
						|
        ]
 | 
						|
        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
 | 
						|
 | 
						|
        columns, data = self.cmd.take_action(parsed_args)
 | 
						|
 | 
						|
        self.volume_sdk_client.find_group.assert_called_once_with(
 | 
						|
            self.fake_volume_group.id,
 | 
						|
            ignore_missing=False,
 | 
						|
            details=False,
 | 
						|
        )
 | 
						|
        self.volume_sdk_client.create_group_snapshot.assert_called_once_with(
 | 
						|
            group_id=self.fake_volume_group.id,
 | 
						|
            name=None,
 | 
						|
            description=None,
 | 
						|
        )
 | 
						|
        self.assertEqual(self.columns, columns)
 | 
						|
        self.assertCountEqual(self.data, data)
 | 
						|
 | 
						|
    def test_volume_group_snapshot_create_with_options(self):
 | 
						|
        self.set_volume_api_version('3.14')
 | 
						|
 | 
						|
        arglist = [
 | 
						|
            self.fake_volume_group.id,
 | 
						|
            '--name',
 | 
						|
            'foo',
 | 
						|
            '--description',
 | 
						|
            'hello, world',
 | 
						|
        ]
 | 
						|
        verifylist = [
 | 
						|
            ('volume_group', self.fake_volume_group.id),
 | 
						|
            ('name', 'foo'),
 | 
						|
            ('description', 'hello, world'),
 | 
						|
        ]
 | 
						|
        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
 | 
						|
 | 
						|
        columns, data = self.cmd.take_action(parsed_args)
 | 
						|
 | 
						|
        self.volume_sdk_client.find_group.assert_called_once_with(
 | 
						|
            self.fake_volume_group.id,
 | 
						|
            ignore_missing=False,
 | 
						|
            details=False,
 | 
						|
        )
 | 
						|
        self.volume_sdk_client.create_group_snapshot.assert_called_once_with(
 | 
						|
            group_id=self.fake_volume_group.id,
 | 
						|
            name='foo',
 | 
						|
            description='hello, world',
 | 
						|
        )
 | 
						|
        self.assertEqual(self.columns, columns)
 | 
						|
        self.assertCountEqual(self.data, data)
 | 
						|
 | 
						|
    def test_volume_group_snapshot_create_pre_v314(self):
 | 
						|
        self.set_volume_api_version('3.13')
 | 
						|
 | 
						|
        arglist = [
 | 
						|
            self.fake_volume_group.id,
 | 
						|
        ]
 | 
						|
        verifylist = [
 | 
						|
            ('volume_group', self.fake_volume_group.id),
 | 
						|
            ('name', None),
 | 
						|
            ('description', None),
 | 
						|
        ]
 | 
						|
        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
 | 
						|
 | 
						|
        exc = self.assertRaises(
 | 
						|
            exceptions.CommandError,
 | 
						|
            self.cmd.take_action,
 | 
						|
            parsed_args,
 | 
						|
        )
 | 
						|
        self.assertIn(
 | 
						|
            '--os-volume-api-version 3.14 or greater is required',
 | 
						|
            str(exc),
 | 
						|
        )
 | 
						|
 | 
						|
 | 
						|
class TestVolumeGroupSnapshotDelete(volume_fakes.TestVolume):
 | 
						|
    fake_volume_group_snapshot = sdk_fakes.generate_fake_resource(
 | 
						|
        _group_snapshot.GroupSnapshot,
 | 
						|
    )
 | 
						|
 | 
						|
    def setUp(self):
 | 
						|
        super().setUp()
 | 
						|
 | 
						|
        self.volume_sdk_client.find_group_snapshot.return_value = (
 | 
						|
            self.fake_volume_group_snapshot
 | 
						|
        )
 | 
						|
        self.volume_sdk_client.delete_group_snapshot.return_value = None
 | 
						|
 | 
						|
        self.cmd = volume_group_snapshot.DeleteVolumeGroupSnapshot(
 | 
						|
            self.app, None
 | 
						|
        )
 | 
						|
 | 
						|
    def test_volume_group_snapshot_delete(self):
 | 
						|
        self.set_volume_api_version('3.14')
 | 
						|
 | 
						|
        arglist = [
 | 
						|
            self.fake_volume_group_snapshot.id,
 | 
						|
        ]
 | 
						|
        verifylist = [
 | 
						|
            ('snapshot', self.fake_volume_group_snapshot.id),
 | 
						|
        ]
 | 
						|
        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
 | 
						|
 | 
						|
        result = self.cmd.take_action(parsed_args)
 | 
						|
 | 
						|
        self.volume_sdk_client.delete_group_snapshot.assert_called_once_with(
 | 
						|
            self.fake_volume_group_snapshot.id,
 | 
						|
        )
 | 
						|
        self.assertIsNone(result)
 | 
						|
 | 
						|
    def test_volume_group_snapshot_delete_pre_v314(self):
 | 
						|
        self.set_volume_api_version('3.13')
 | 
						|
 | 
						|
        arglist = [
 | 
						|
            self.fake_volume_group_snapshot.id,
 | 
						|
        ]
 | 
						|
        verifylist = [
 | 
						|
            ('snapshot', self.fake_volume_group_snapshot.id),
 | 
						|
        ]
 | 
						|
        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
 | 
						|
 | 
						|
        exc = self.assertRaises(
 | 
						|
            exceptions.CommandError,
 | 
						|
            self.cmd.take_action,
 | 
						|
            parsed_args,
 | 
						|
        )
 | 
						|
        self.assertIn(
 | 
						|
            '--os-volume-api-version 3.14 or greater is required',
 | 
						|
            str(exc),
 | 
						|
        )
 | 
						|
 | 
						|
 | 
						|
class TestVolumeGroupSnapshotList(volume_fakes.TestVolume):
 | 
						|
    fake_volume_group_snapshots = list(
 | 
						|
        sdk_fakes.generate_fake_resources(
 | 
						|
            _group_snapshot.GroupSnapshot,
 | 
						|
            count=3,
 | 
						|
        )
 | 
						|
    )
 | 
						|
 | 
						|
    columns = (
 | 
						|
        'ID',
 | 
						|
        'Status',
 | 
						|
        'Name',
 | 
						|
    )
 | 
						|
    data = [
 | 
						|
        (
 | 
						|
            fake_volume_group_snapshot.id,
 | 
						|
            fake_volume_group_snapshot.status,
 | 
						|
            fake_volume_group_snapshot.name,
 | 
						|
        )
 | 
						|
        for fake_volume_group_snapshot in fake_volume_group_snapshots
 | 
						|
    ]
 | 
						|
 | 
						|
    def setUp(self):
 | 
						|
        super().setUp()
 | 
						|
 | 
						|
        self.volume_sdk_client.group_snapshots.return_value = (
 | 
						|
            self.fake_volume_group_snapshots
 | 
						|
        )
 | 
						|
 | 
						|
        self.cmd = volume_group_snapshot.ListVolumeGroupSnapshot(
 | 
						|
            self.app, None
 | 
						|
        )
 | 
						|
 | 
						|
    def test_volume_group_snapshot_list(self):
 | 
						|
        self.set_volume_api_version('3.14')
 | 
						|
 | 
						|
        arglist = [
 | 
						|
            '--all-projects',
 | 
						|
        ]
 | 
						|
        verifylist = [
 | 
						|
            ('all_projects', True),
 | 
						|
        ]
 | 
						|
        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
 | 
						|
 | 
						|
        columns, data = self.cmd.take_action(parsed_args)
 | 
						|
 | 
						|
        self.volume_sdk_client.group_snapshots.assert_called_once_with(
 | 
						|
            all_projects=True,
 | 
						|
        )
 | 
						|
        self.assertEqual(self.columns, columns)
 | 
						|
        self.assertCountEqual(tuple(self.data), data)
 | 
						|
 | 
						|
    def test_volume_group_snapshot_list_pre_v314(self):
 | 
						|
        self.set_volume_api_version('3.13')
 | 
						|
 | 
						|
        arglist = []
 | 
						|
        verifylist = [
 | 
						|
            ('all_projects', False),
 | 
						|
        ]
 | 
						|
        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
 | 
						|
 | 
						|
        exc = self.assertRaises(
 | 
						|
            exceptions.CommandError,
 | 
						|
            self.cmd.take_action,
 | 
						|
            parsed_args,
 | 
						|
        )
 | 
						|
        self.assertIn(
 | 
						|
            '--os-volume-api-version 3.14 or greater is required',
 | 
						|
            str(exc),
 | 
						|
        )
 |