Merge "Revise params of 'receiver create' command"

This commit is contained in:
Jenkins 2016-08-30 06:40:43 +00:00 committed by Gerrit Code Review
commit 04a28f59d5
4 changed files with 85 additions and 10 deletions

View File

@ -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):

View File

@ -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']}

View File

@ -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 = {

View File

@ -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,