Add --wait flag to the create share group operation
This patch set adds the --wait flag to the share group operation. This will make the CLI to wait for the operation to be completed before returning to the prompt. Updated test_share_group_create to be test_share_group_create_wait and included the waiter flag Partial-Bug: #1898318 Change-Id: Id3e163de48bdd918ae55438d812187ba4d5461c9
This commit is contained in:
parent
616f3acf60
commit
376429ec1d
@ -34,6 +34,7 @@ from manilaclient.tests.unit.v2 import fakes
|
|||||||
from manilaclient import utils
|
from manilaclient import utils
|
||||||
from manilaclient.v2 import messages
|
from manilaclient.v2 import messages
|
||||||
from manilaclient.v2 import security_services
|
from manilaclient.v2 import security_services
|
||||||
|
from manilaclient.v2 import share_group_types
|
||||||
from manilaclient.v2 import share_groups
|
from manilaclient.v2 import share_groups
|
||||||
from manilaclient.v2 import share_instances
|
from manilaclient.v2 import share_instances
|
||||||
from manilaclient.v2 import share_network_subnets
|
from manilaclient.v2 import share_network_subnets
|
||||||
@ -2663,29 +2664,52 @@ class ShellTest(test_utils.TestCase):
|
|||||||
shell_v2._find_share_group.assert_has_calls(
|
shell_v2._find_share_group.assert_has_calls(
|
||||||
[mock.call(self.shell.cs, "1234")])
|
[mock.call(self.shell.cs, "1234")])
|
||||||
|
|
||||||
def test_share_group_create(self):
|
def test_share_group_create_wait(self):
|
||||||
fake_share_type_1 = type('FakeShareType1', (object,), {'id': '1234'})
|
fake_manager = mock.Mock()
|
||||||
fake_share_type_2 = type('FakeShareType2', (object,), {'id': '5678'})
|
fake_share_type1 = share_types.ShareType(
|
||||||
|
fake_manager, {'name': '1234', 'uuid': '1234'})
|
||||||
|
fake_share_type2 = share_types.ShareType(
|
||||||
|
fake_manager, {'name': '5678', 'uuid': '5678'})
|
||||||
|
fake_share_group_type = share_group_types.ShareGroupType(
|
||||||
|
fake_manager, {'name': 'fake_sg', 'uuid': '2345'})
|
||||||
|
fake_share_network = share_networks.ShareNetwork(
|
||||||
|
fake_manager, {'id': '3456', 'uuid': '3456'})
|
||||||
|
fake_share_group = share_groups.ShareGroup(
|
||||||
|
fake_manager, {'id': 'fake-sg-id', 'name': 'fake_sg'})
|
||||||
|
|
||||||
self.mock_object(
|
self.mock_object(
|
||||||
shell_v2, '_find_share_type',
|
shell_v2, '_find_share_type',
|
||||||
mock.Mock(side_effect=[fake_share_type_1, fake_share_type_2]))
|
mock.Mock(side_effect=[fake_share_type1, fake_share_type2]))
|
||||||
fake_share_group_type = type(
|
|
||||||
'FakeShareGroupType', (object,), {'id': '2345'})
|
|
||||||
self.mock_object(
|
self.mock_object(
|
||||||
shell_v2, '_find_share_group_type',
|
shell_v2, '_find_share_group_type',
|
||||||
mock.Mock(return_value=fake_share_group_type))
|
mock.Mock(side_effect=[fake_share_group_type]))
|
||||||
fake_share_network = type(
|
|
||||||
'FakeShareNetwork', (object,), {'id': '3456'})
|
|
||||||
self.mock_object(
|
self.mock_object(
|
||||||
shell_v2, '_find_share_network',
|
shell_v2, '_find_share_network',
|
||||||
mock.Mock(return_value=fake_share_network))
|
mock.Mock(side_effect=[fake_share_network]))
|
||||||
|
self.mock_object(
|
||||||
|
shell_v2, '_wait_for_resource_status',
|
||||||
|
mock.Mock(side_effect=[fake_share_group])
|
||||||
|
)
|
||||||
|
|
||||||
self.run_command(
|
self.run_command(
|
||||||
'share-group-create --name fake_sg '
|
'share-group-create --name fake_sg --description my_group '
|
||||||
'--description my_group --share-types 1234,5678 '
|
'--share-types 1234,5678 '
|
||||||
'--share-group-type fake_sg_type '
|
'--share-group-type fake_sg '
|
||||||
'--share-network fake_share_network '
|
'--share-network 3456 '
|
||||||
'--availability-zone fake_az')
|
'--availability-zone fake_az --wait')
|
||||||
|
|
||||||
|
shell_v2._find_share_type.assert_has_calls([
|
||||||
|
mock.call(self.shell.cs, '1234'),
|
||||||
|
mock.call(self.shell.cs, '5678')
|
||||||
|
])
|
||||||
|
|
||||||
|
shell_v2._find_share_group_type.assert_has_calls([
|
||||||
|
mock.call(self.shell.cs, 'fake_sg')
|
||||||
|
])
|
||||||
|
|
||||||
|
shell_v2._find_share_network.assert_has_calls([
|
||||||
|
mock.call(self.shell.cs, '3456')
|
||||||
|
])
|
||||||
|
|
||||||
expected = {
|
expected = {
|
||||||
'share_group': {
|
'share_group': {
|
||||||
@ -2699,6 +2723,12 @@ class ShellTest(test_utils.TestCase):
|
|||||||
}
|
}
|
||||||
self.assert_called('POST', '/share-groups', body=expected)
|
self.assert_called('POST', '/share-groups', body=expected)
|
||||||
|
|
||||||
|
shell_v2._wait_for_resource_status.assert_has_calls([
|
||||||
|
mock.call(self.shell.cs, fake_share_group,
|
||||||
|
resource_type='share_group',
|
||||||
|
expected_status='available')
|
||||||
|
])
|
||||||
|
|
||||||
@ddt.data(
|
@ddt.data(
|
||||||
'--name fake_name --availability-zone fake_az',
|
'--name fake_name --availability-zone fake_az',
|
||||||
'--description my_fake_description --name fake_name',
|
'--description my_fake_description --name fake_name',
|
||||||
|
@ -5286,10 +5286,14 @@ def do_share_group_type_access_remove(cs, args):
|
|||||||
metavar='<availability-zone>',
|
metavar='<availability-zone>',
|
||||||
help='Optional availability zone in which group should be created. '
|
help='Optional availability zone in which group should be created. '
|
||||||
'(Default=None)')
|
'(Default=None)')
|
||||||
|
@cliutils.arg(
|
||||||
|
'--wait',
|
||||||
|
action='store_true',
|
||||||
|
default=False,
|
||||||
|
help='Wait for share group to create')
|
||||||
@cliutils.service_type('sharev2')
|
@cliutils.service_type('sharev2')
|
||||||
def do_share_group_create(cs, args):
|
def do_share_group_create(cs, args):
|
||||||
"""Creates a new share group."""
|
"""Creates a new share group."""
|
||||||
|
|
||||||
share_types = []
|
share_types = []
|
||||||
if args.share_types:
|
if args.share_types:
|
||||||
s_types = args.share_types.split(',')
|
s_types = args.share_types.split(',')
|
||||||
@ -5321,6 +5325,15 @@ def do_share_group_create(cs, args):
|
|||||||
}
|
}
|
||||||
|
|
||||||
share_group = cs.share_groups.create(**kwargs)
|
share_group = cs.share_groups.create(**kwargs)
|
||||||
|
|
||||||
|
if args.wait:
|
||||||
|
try:
|
||||||
|
share_group = _wait_for_resource_status(
|
||||||
|
cs, share_group, resource_type='share_group',
|
||||||
|
expected_status='available')
|
||||||
|
except exceptions.CommandError as e:
|
||||||
|
print(e, file=sys.stderr)
|
||||||
|
|
||||||
_print_share_group(cs, share_group)
|
_print_share_group(cs, share_group)
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
The command "manila share-group-create" now accepts an optional
|
||||||
|
"--wait" that allows users to let the client poll for the
|
||||||
|
completion of the operation.
|
Loading…
x
Reference in New Issue
Block a user