Merge "Support update a service"
This commit is contained in:
@@ -526,6 +526,17 @@ class TestCommandLineArgument(utils.TestCase):
|
||||
self._test_arg_failure('service-show', self._few_argument_error)
|
||||
self.assertFalse(mock_show.called)
|
||||
|
||||
@mock.patch('magnumclient.v1.services.ServiceManager.update')
|
||||
def test_service_update_success(self, mock_update):
|
||||
self._test_arg_success('service-update xxx replace xxx=xxx')
|
||||
self.assertTrue(mock_update.called)
|
||||
self.assertEqual(1, mock_update.call_count)
|
||||
|
||||
@mock.patch('magnumclient.v1.services.ServiceManager.update')
|
||||
def test_service_update_failure_no_arg(self, mock_update):
|
||||
self._test_arg_failure('service-update', self._few_argument_error)
|
||||
self.assertFalse(mock_update.called)
|
||||
|
||||
@mock.patch('magnumclient.v1.containers.ContainerManager.list')
|
||||
def test_container_list_success(self, mock_list):
|
||||
self._test_arg_success('container-list')
|
||||
|
||||
@@ -301,6 +301,22 @@ class ShellTest(base.TestCase):
|
||||
client_mock.services.create.assert_called_once_with(
|
||||
manifest_url=manifest_url, bay_uuid=bay.uuid)
|
||||
|
||||
def test_do_service_update(self):
|
||||
client_mock = mock.MagicMock()
|
||||
args = mock.MagicMock()
|
||||
service_id = 'id'
|
||||
args.service = service_id
|
||||
op = 'replace'
|
||||
args.op = op
|
||||
attributes = 'manifest={}'
|
||||
args.attributes = attributes
|
||||
shell.magnum_utils.args_array_to_patch = mock.MagicMock()
|
||||
patch = [{'path': '/manifest', 'value': '{}', 'op': 'replace'}]
|
||||
shell.magnum_utils.args_array_to_patch.return_value = patch
|
||||
|
||||
shell.do_service_update(client_mock, args)
|
||||
client_mock.services.update.assert_called_once_with(service_id, patch)
|
||||
|
||||
def test_do_service_delete(self):
|
||||
client_mock = mock.MagicMock()
|
||||
args = mock.MagicMock()
|
||||
|
||||
@@ -425,6 +425,32 @@ def do_service_create(cs, args):
|
||||
_show_service(service)
|
||||
|
||||
|
||||
@utils.arg('service', metavar='<service>', help="UUID or name of service")
|
||||
@utils.arg(
|
||||
'op',
|
||||
metavar='<op>',
|
||||
choices=['add', 'replace', 'remove'],
|
||||
help="Operations: 'add', 'replace' or 'remove'")
|
||||
@utils.arg(
|
||||
'attributes',
|
||||
metavar='<path=value>',
|
||||
nargs='+',
|
||||
action='append',
|
||||
default=[],
|
||||
help="Attributes to add/replace or remove "
|
||||
"(only PATH is necessary on remove)")
|
||||
def do_service_update(cs, args):
|
||||
"""Update information about the given service."""
|
||||
patch = magnum_utils.args_array_to_patch(args.op, args.attributes[0])
|
||||
p = patch[0]
|
||||
if p['path'] == '/manifest' and os.path.isfile(p['value']):
|
||||
with open(p['value'], 'r') as f:
|
||||
p['value'] = f.read()
|
||||
|
||||
service = cs.services.update(args.service, patch)
|
||||
_show_service(service)
|
||||
|
||||
|
||||
@utils.arg('services',
|
||||
metavar='<services>',
|
||||
nargs='+',
|
||||
|
||||
Reference in New Issue
Block a user