Merge "Revise params of 'receiver create' command"
This commit is contained in:
commit
04a28f59d5
|
@ -18,6 +18,7 @@ from openstack.cluster.v1 import receiver as sdk_receiver
|
|||
from openstack import exceptions as sdk_exc
|
||||
from osc_lib import exceptions as exc
|
||||
|
||||
from senlinclient.common.i18n import _
|
||||
from senlinclient.tests.unit.v1 import fakes
|
||||
from senlinclient.v1 import receiver as osc_receiver
|
||||
|
||||
|
@ -233,7 +234,7 @@ class TestReceiverCreate(TestReceiver):
|
|||
self.mock_client.get_receiver = mock.Mock(
|
||||
return_value=sdk_receiver.Receiver(**self.response['receiver']))
|
||||
|
||||
def test_receiver_create(self):
|
||||
def test_receiver_create_webhook(self):
|
||||
arglist = ['my_receiver', '--action', 'CLUSTER_SCALE_OUT',
|
||||
'--cluster', 'my_cluster', '--params', 'count=1',
|
||||
'--type', 'webhook']
|
||||
|
@ -241,6 +242,26 @@ class TestReceiverCreate(TestReceiver):
|
|||
self.cmd.take_action(parsed_args)
|
||||
self.mock_client.create_receiver.assert_called_with(**self.args)
|
||||
|
||||
def test_receiver_create_webhook_failed(self):
|
||||
arglist = ['my_receiver', '--action', 'CLUSTER_SCALE_OUT',
|
||||
'--params', 'count=1', '--type', 'webhook']
|
||||
parsed_args = self.check_parser(self.cmd, arglist, [])
|
||||
error = self.assertRaises(exc.CommandError, self.cmd.take_action,
|
||||
parsed_args)
|
||||
self.assertIn(_('cluster and action parameters are required to create '
|
||||
'webhook type of receiver'), str(error))
|
||||
|
||||
def test_receiver_create_non_webhook(self):
|
||||
arglist = ['my_receiver', '--params', 'count=1',
|
||||
'--type', 'foo']
|
||||
parsed_args = self.check_parser(self.cmd, arglist, [])
|
||||
self.cmd.take_action(parsed_args)
|
||||
args = copy.deepcopy(self.args)
|
||||
args['type'] = 'foo'
|
||||
args['cluster_id'] = None
|
||||
args['action'] = None
|
||||
self.mock_client.create_receiver.assert_called_with(**args)
|
||||
|
||||
|
||||
class TestReceiverDelete(TestReceiver):
|
||||
def setUp(self):
|
||||
|
|
|
@ -470,7 +470,7 @@ class ShellTest(testtools.TestCase):
|
|||
receiver_id='receiver_id')
|
||||
|
||||
@mock.patch.object(sh, '_show_receiver')
|
||||
def test_do_receiver_create(self, mock_show):
|
||||
def test_do_receiver_create_webhook(self, mock_show):
|
||||
service = mock.Mock()
|
||||
args = {
|
||||
'name': 'receiver1',
|
||||
|
@ -494,6 +494,47 @@ class ShellTest(testtools.TestCase):
|
|||
service.create_receiver.assert_called_once_with(**params)
|
||||
mock_show.assert_called_once_with(service, 'FAKE_ID')
|
||||
|
||||
def test_do_receiver_create_webhook_failed(self):
|
||||
service = mock.Mock()
|
||||
args = {
|
||||
'name': 'receiver1',
|
||||
'type': 'webhook',
|
||||
'cluster': None,
|
||||
'action': None,
|
||||
'params': {}
|
||||
}
|
||||
args = self._make_args(args)
|
||||
ex = self.assertRaises(exc.CommandError,
|
||||
sh.do_receiver_create, service, args)
|
||||
msg = _("cluster and action parameters are required to create webhook"
|
||||
" type of receiver.")
|
||||
self.assertEqual(msg, six.text_type(ex))
|
||||
|
||||
@mock.patch.object(sh, '_show_receiver')
|
||||
def test_do_receiver_create_non_webhook(self, mock_show):
|
||||
service = mock.Mock()
|
||||
args = {
|
||||
'name': 'receiver1',
|
||||
'type': 'foo',
|
||||
'cluster': None,
|
||||
'action': None,
|
||||
'params': {}
|
||||
}
|
||||
args = self._make_args(args)
|
||||
params = {
|
||||
'name': 'receiver1',
|
||||
'type': 'foo',
|
||||
'cluster_id': None,
|
||||
'action': None,
|
||||
'params': {}
|
||||
}
|
||||
receiver = mock.Mock()
|
||||
receiver.id = 'FAKE_ID'
|
||||
service.create_receiver.return_value = receiver
|
||||
sh.do_receiver_create(service, args)
|
||||
service.create_receiver.assert_called_once_with(**params)
|
||||
mock_show.assert_called_once_with(service, 'FAKE_ID')
|
||||
|
||||
def test_do_receiver_delete(self):
|
||||
service = mock.Mock()
|
||||
args = {'id': ['FAKE']}
|
||||
|
|
|
@ -168,14 +168,14 @@ class CreateReceiver(command.ShowOne):
|
|||
parser.add_argument(
|
||||
'--cluster',
|
||||
metavar='<cluster>',
|
||||
required=True,
|
||||
help=_('Targeted cluster for this receiver')
|
||||
help=_('Targeted cluster for this receiver. Required if '
|
||||
'receiver type is webhook')
|
||||
)
|
||||
parser.add_argument(
|
||||
'--action',
|
||||
metavar='<action>',
|
||||
required=True,
|
||||
help=_('Name or ID of the targeted action to be triggered')
|
||||
help=_('Name or ID of the targeted action to be triggered. '
|
||||
'Required if receiver type is webhook')
|
||||
)
|
||||
parser.add_argument(
|
||||
'name',
|
||||
|
@ -186,6 +186,11 @@ class CreateReceiver(command.ShowOne):
|
|||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug("take_action(%s)", parsed_args)
|
||||
if parsed_args.type == 'webhook':
|
||||
if (not parsed_args.cluster or not parsed_args.action):
|
||||
msg = _('cluster and action parameters are required to create '
|
||||
'webhook type of receiver.')
|
||||
raise exc.CommandError(msg)
|
||||
|
||||
senlin_client = self.app.client_manager.clustering
|
||||
params = {
|
||||
|
|
|
@ -1367,10 +1367,12 @@ def do_receiver_show(service, args):
|
|||
|
||||
@utils.arg('-t', '--type', metavar='<TYPE>', default='webhook',
|
||||
help=_('Type of the receiver to create.'))
|
||||
@utils.arg('-c', '--cluster', metavar='<CLUSTER>', required=True,
|
||||
help=_('Targeted cluster for this receiver.'))
|
||||
@utils.arg('-a', '--action', metavar='<ACTION>', required=True,
|
||||
help=_('Name or ID of the targeted action to be triggered.'))
|
||||
@utils.arg('-c', '--cluster', metavar='<CLUSTER>',
|
||||
help=_('Targeted cluster for this receiver. Required if receiver '
|
||||
'type is webhook.'))
|
||||
@utils.arg('-a', '--action', metavar='<ACTION>',
|
||||
help=_('Name or ID of the targeted action to be triggered. '
|
||||
'Required if receiver type is webhook.'))
|
||||
@utils.arg('-P', '--params', metavar='<KEY1=VALUE1;KEY2=VALUE2...>',
|
||||
help=_('A dictionary of parameters that will be passed to target '
|
||||
'action when the receiver is triggered.'),
|
||||
|
@ -1382,6 +1384,12 @@ def do_receiver_create(service, args):
|
|||
show_deprecated('senlin receiver-create',
|
||||
'openstack cluster receiver create')
|
||||
|
||||
if args.type == 'webhook':
|
||||
if (not args.cluster or not args.action):
|
||||
msg = _('cluster and action parameters are required to create '
|
||||
'webhook type of receiver.')
|
||||
raise exc.CommandError(msg)
|
||||
|
||||
params = {
|
||||
'name': args.name,
|
||||
'type': args.type,
|
||||
|
|
Loading…
Reference in New Issue