Merge "Enable to specify name and ID when operating segments and hosts"
This commit is contained in:
commit
bd4c9251f7
|
@ -34,7 +34,7 @@ class ListHost(command.Lister):
|
|||
parser.add_argument(
|
||||
'segment_id',
|
||||
metavar='<segment_id>',
|
||||
help=_('UUID of segment.')
|
||||
help=_('Name or ID of segment.')
|
||||
)
|
||||
parser.add_argument(
|
||||
'--limit',
|
||||
|
@ -69,11 +69,14 @@ class ListHost(command.Lister):
|
|||
|
||||
def take_action(self, parsed_args):
|
||||
masakari_client = self.app.client_manager.ha
|
||||
segment_id = masakariclient_utils.get_uuid_by_name(
|
||||
masakari_client, parsed_args.segment_id)
|
||||
|
||||
columns = ['uuid', 'name', 'type', 'control_attributes', 'reserved',
|
||||
'on_maintenance', 'failover_segment_id']
|
||||
|
||||
queries = masakariclient_utils.format_sort_filter_params(parsed_args)
|
||||
hosts = masakari_client.hosts(parsed_args.segment_id, **queries)
|
||||
hosts = masakari_client.hosts(segment_id, **queries)
|
||||
formatters = {}
|
||||
return (
|
||||
columns,
|
||||
|
@ -90,7 +93,7 @@ class ShowHost(command.ShowOne):
|
|||
parser.add_argument(
|
||||
'segment_id',
|
||||
metavar='<segment_id>',
|
||||
help=_('UUID of segment.')
|
||||
help=_('Name or ID of segment.')
|
||||
)
|
||||
parser.add_argument(
|
||||
'host',
|
||||
|
@ -101,11 +104,13 @@ class ShowHost(command.ShowOne):
|
|||
|
||||
def take_action(self, parsed_args):
|
||||
masakari_client = self.app.client_manager.ha
|
||||
segment_id = masakariclient_utils.get_uuid_by_name(
|
||||
masakari_client, parsed_args.segment_id)
|
||||
uuid = masakariclient_utils.get_uuid_by_name(
|
||||
masakari_client,
|
||||
parsed_args.host,
|
||||
segment=parsed_args.segment_id)
|
||||
return _show_host(masakari_client, parsed_args.segment_id, uuid)
|
||||
segment=segment_id)
|
||||
return _show_host(masakari_client, segment_id, uuid)
|
||||
|
||||
|
||||
class CreateHost(command.ShowOne):
|
||||
|
@ -131,7 +136,7 @@ class CreateHost(command.ShowOne):
|
|||
parser.add_argument(
|
||||
'segment_id',
|
||||
metavar='<segment_id>',
|
||||
help=_('UUID of segment.')
|
||||
help=_('Name or ID of segment.')
|
||||
)
|
||||
parser.add_argument(
|
||||
'--reserved',
|
||||
|
@ -151,6 +156,8 @@ class CreateHost(command.ShowOne):
|
|||
|
||||
def take_action(self, parsed_args):
|
||||
masakari_client = self.app.client_manager.ha
|
||||
segment_id = masakariclient_utils.get_uuid_by_name(
|
||||
masakari_client, parsed_args.segment_id)
|
||||
attrs = {
|
||||
'name': parsed_args.name,
|
||||
'type': parsed_args.type,
|
||||
|
@ -163,13 +170,13 @@ class CreateHost(command.ShowOne):
|
|||
|
||||
try:
|
||||
host = masakari_client.create_host(
|
||||
segment_id=parsed_args.segment_id,
|
||||
segment_id=segment_id,
|
||||
**attrs)
|
||||
except Exception as ex:
|
||||
LOG.debug(_("Failed to create segment host: %s"), parsed_args)
|
||||
raise ex
|
||||
return _show_host(masakari_client,
|
||||
parsed_args.segment_id,
|
||||
segment_id,
|
||||
host.uuid)
|
||||
|
||||
|
||||
|
@ -181,7 +188,7 @@ class UpdateHost(command.ShowOne):
|
|||
parser.add_argument(
|
||||
'segment_id',
|
||||
metavar='<segment_id>',
|
||||
help=_('UUID of segment.')
|
||||
help=_('Name or ID of segment.')
|
||||
)
|
||||
parser.add_argument(
|
||||
'host',
|
||||
|
@ -221,10 +228,12 @@ class UpdateHost(command.ShowOne):
|
|||
|
||||
def take_action(self, parsed_args):
|
||||
masakari_client = self.app.client_manager.ha
|
||||
segment_id = masakariclient_utils.get_uuid_by_name(
|
||||
masakari_client, parsed_args.segment_id)
|
||||
uuid = masakariclient_utils.get_uuid_by_name(
|
||||
masakari_client,
|
||||
parsed_args.host,
|
||||
segment=parsed_args.segment_id)
|
||||
segment=segment_id)
|
||||
attrs = {
|
||||
'name': parsed_args.name,
|
||||
'type': parsed_args.type,
|
||||
|
@ -237,7 +246,7 @@ class UpdateHost(command.ShowOne):
|
|||
|
||||
try:
|
||||
masakari_client.update_host(
|
||||
segment_id=parsed_args.segment_id, host=uuid, **attrs)
|
||||
segment_id=segment_id, host=uuid, **attrs)
|
||||
except sdk_exc.NotFoundException:
|
||||
# Reraise. To unify exceptions with other functions.
|
||||
LOG.debug(_("Segment host is not found: %s"), parsed_args)
|
||||
|
@ -247,7 +256,7 @@ class UpdateHost(command.ShowOne):
|
|||
LOG.debug(_("Failed to update segment host: %s"), parsed_args)
|
||||
raise ex
|
||||
|
||||
return _show_host(masakari_client, parsed_args.segment_id, uuid)
|
||||
return _show_host(masakari_client, segment_id, uuid)
|
||||
|
||||
|
||||
class DeleteHost(command.Command):
|
||||
|
@ -258,7 +267,7 @@ class DeleteHost(command.Command):
|
|||
parser.add_argument(
|
||||
'segment_id',
|
||||
metavar='<segment_id>',
|
||||
help=_('UUID of segment.')
|
||||
help=_('Name or ID of segment.')
|
||||
)
|
||||
parser.add_argument(
|
||||
'host',
|
||||
|
@ -269,11 +278,13 @@ class DeleteHost(command.Command):
|
|||
|
||||
def take_action(self, parsed_args):
|
||||
masakari_client = self.app.client_manager.ha
|
||||
segment_id = masakariclient_utils.get_uuid_by_name(
|
||||
masakari_client, parsed_args.segment_id)
|
||||
uuid = masakariclient_utils.get_uuid_by_name(
|
||||
masakari_client,
|
||||
parsed_args.host,
|
||||
segment=parsed_args.segment_id)
|
||||
masakari_client.delete_host(parsed_args.segment_id, uuid, False)
|
||||
segment=segment_id)
|
||||
masakari_client.delete_host(segment_id, uuid, False)
|
||||
print('Host deleted: %s' % parsed_args.host)
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright(c) 2017 Nippon Telegraph and Telephone Corporation
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
class FakeSegment(object):
|
||||
def __init__(self, segment_values):
|
||||
self.segment_values = segment_values
|
||||
|
||||
def to_dict(self):
|
||||
return self.segment_values
|
||||
|
||||
|
||||
class FakeHost(object):
|
||||
def __init__(self, host_values):
|
||||
self.host_values = host_values
|
||||
|
||||
def to_dict(self):
|
||||
return self.host_values
|
|
@ -21,6 +21,7 @@ import mock
|
|||
|
||||
from masakariclient.common import utils
|
||||
from masakariclient.tests import base
|
||||
from masakariclient.tests.unit.v1 import fakes
|
||||
import masakariclient.v1.shell as ms
|
||||
|
||||
|
||||
|
@ -47,6 +48,7 @@ class TestV1Shell(base.TestCase):
|
|||
'service_type': 'testsegment01_auto',
|
||||
'id': '14',
|
||||
'description': 'UPDATE Discription'}
|
||||
self.segment_object = fakes.FakeSegment(self.segment_vals)
|
||||
|
||||
self.hosts_vals = {
|
||||
'reserved': False,
|
||||
|
@ -72,6 +74,7 @@ class TestV1Shell(base.TestCase):
|
|||
'type': 'typeX',
|
||||
'id': 10,
|
||||
'failover_segment_id': '6b985a8a-f8c0-42e4-beaa-d2fcd8dabbb6'}
|
||||
self.hosts_object = fakes.FakeHost(self.hosts_vals)
|
||||
|
||||
@mock.patch.object(utils, 'print_list')
|
||||
def test_do_notification_list(self, mock_print_list):
|
||||
|
@ -109,21 +112,165 @@ class TestV1Shell(base.TestCase):
|
|||
self.segment_vals,
|
||||
columns)
|
||||
|
||||
@mock.patch.object(utils, 'print_dict')
|
||||
@mock.patch.object(utils, 'get_uuid_by_name')
|
||||
def test_do_segment_show(self, mock_get_uuid_by_name, mock_print_dict):
|
||||
mock_get_uuid_by_name.return_value = self.segment_vals.get('uuid')
|
||||
service = mock.Mock()
|
||||
service.get_segment.return_value = self.segment_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_segment_show(service, args)
|
||||
mock_get_uuid_by_name.assert_called_once_with(service, args.id)
|
||||
mock_print_dict.assert_called_once_with(self.segment_vals)
|
||||
|
||||
@mock.patch.object(utils, 'print_dict')
|
||||
def test_do_segment_create(self, mock_print_dict):
|
||||
service = mock.Mock()
|
||||
service.create_segment.return_value = self.segment_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_segment_create(service, args)
|
||||
mock_print_dict.assert_called_once_with(self.segment_vals)
|
||||
|
||||
@mock.patch.object(utils, 'print_dict')
|
||||
@mock.patch.object(utils, 'remove_unspecified_items')
|
||||
@mock.patch.object(utils, 'get_uuid_by_name')
|
||||
def test_do_segment_update(self,
|
||||
mock_get_uuid_by_name,
|
||||
mock_remove_unspecified_items,
|
||||
mock_print_dict):
|
||||
mock_get_uuid_by_name.return_value = self.segment_vals.get('uuid')
|
||||
mock_remove_unspecified_items.return_value = self.segment_vals
|
||||
service = mock.Mock()
|
||||
service.update_segment.return_value = self.segment_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_segment_update(service, args)
|
||||
mock_get_uuid_by_name.assert_called_once_with(service, args.id)
|
||||
attrs = {
|
||||
'name': args.name,
|
||||
'description': args.description,
|
||||
'recovery_method': args.recovery_method,
|
||||
'service_type': args.service_type,
|
||||
}
|
||||
mock_remove_unspecified_items.assert_called_once_with(attrs)
|
||||
mock_print_dict.assert_called_once_with(self.segment_vals)
|
||||
|
||||
@mock.patch.object(utils, 'print_dict')
|
||||
@mock.patch.object(utils, 'get_uuid_by_name')
|
||||
def test_do_segment_delete(self, mock_get_uuid_by_name, mock_print_dict):
|
||||
mock_get_uuid_by_name.return_value = self.segment_vals.get('uuid')
|
||||
service = mock.Mock()
|
||||
service.delete_segment.return_value = self.segment_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_segment_delete(service, args)
|
||||
mock_get_uuid_by_name.assert_called_once_with(service, args.id)
|
||||
mock_print_dict.assert_called_once_with(self.segment_vals)
|
||||
|
||||
@mock.patch.object(utils, 'print_list')
|
||||
def test_do_host_list(self, mock_print_list):
|
||||
@mock.patch.object(utils, 'get_uuid_by_name')
|
||||
def test_do_host_list(self, mock_get_uuid_by_name, mock_print_list):
|
||||
mock_get_uuid_by_name.return_value = self.segment_vals.get('uuid')
|
||||
service = mock.Mock()
|
||||
service.hosts.return_value = self.hosts_vals
|
||||
args = mock.Mock()
|
||||
columns = [
|
||||
'control_attributes',
|
||||
'failover_segment_id',
|
||||
'uuid',
|
||||
'name',
|
||||
'on_maintenance',
|
||||
'type',
|
||||
'uuid']
|
||||
'control_attributes',
|
||||
'reserved',
|
||||
'on_maintenance',
|
||||
'failover_segment_id']
|
||||
|
||||
ms.do_host_list(service, args)
|
||||
|
||||
mock_get_uuid_by_name.assert_called_once_with(service, args.segment_id)
|
||||
mock_print_list.assert_called_once_with(
|
||||
self.hosts_vals,
|
||||
columns)
|
||||
|
||||
@mock.patch.object(utils, 'print_dict')
|
||||
@mock.patch.object(utils, 'get_uuid_by_name')
|
||||
def test_do_host_show(self, mock_get_uuid_by_name, mock_print_dict):
|
||||
mock_get_uuid_by_name.side_effect = [self.segment_vals.get('uuid'),
|
||||
self.hosts_vals.get('uuid')]
|
||||
service = mock.Mock()
|
||||
service.get_host.return_value = self.hosts_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_host_show(service, args)
|
||||
mock_get_uuid_by_name.assert_any_call(service, args.segment_id)
|
||||
mock_get_uuid_by_name.assert_any_call(
|
||||
service, args.id, segment=self.segment_vals.get('uuid'))
|
||||
mock_print_dict.assert_called_once_with(self.hosts_vals)
|
||||
|
||||
@mock.patch.object(utils, 'print_dict')
|
||||
@mock.patch.object(utils, 'remove_unspecified_items')
|
||||
@mock.patch.object(utils, 'get_uuid_by_name')
|
||||
def test_do_host_create(self,
|
||||
mock_get_uuid_by_name,
|
||||
mock_remove_unspecified_items,
|
||||
mock_print_dict):
|
||||
mock_get_uuid_by_name.return_value = self.hosts_vals.get('uuid')
|
||||
mock_remove_unspecified_items.return_value = self.hosts_vals
|
||||
service = mock.Mock()
|
||||
service.create_host.return_value = self.hosts_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_host_create(service, args)
|
||||
mock_get_uuid_by_name.assert_called_once_with(service, args.segment_id)
|
||||
attrs = {
|
||||
'name': args.name,
|
||||
'type': args.type,
|
||||
'control_attributes': args.control_attributes,
|
||||
'reserved': args.reserved,
|
||||
'on_maintenance': args.on_maintenance,
|
||||
}
|
||||
mock_remove_unspecified_items.assert_called_once_with(attrs)
|
||||
mock_print_dict.assert_called_once_with(self.hosts_vals)
|
||||
|
||||
@mock.patch.object(utils, 'print_dict')
|
||||
@mock.patch.object(utils, 'remove_unspecified_items')
|
||||
@mock.patch.object(utils, 'get_uuid_by_name')
|
||||
def test_do_host_update(self,
|
||||
mock_get_uuid_by_name,
|
||||
mock_remove_unspecified_items,
|
||||
mock_print_dict):
|
||||
mock_get_uuid_by_name.side_effect = [self.segment_vals.get('uuid'),
|
||||
self.hosts_vals.get('uuid')]
|
||||
mock_remove_unspecified_items.return_value = self.hosts_vals
|
||||
service = mock.Mock()
|
||||
service.update_host.return_value = self.hosts_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_host_update(service, args)
|
||||
mock_get_uuid_by_name.assert_any_call(service, args.segment_id)
|
||||
mock_get_uuid_by_name.assert_any_call(
|
||||
service, args.id, segment=self.segment_vals.get('uuid'))
|
||||
attrs = {
|
||||
'name': args.name,
|
||||
'type': args.type,
|
||||
'control_attributes': args.control_attributes,
|
||||
'reserved': args.reserved,
|
||||
'on_maintenance': args.on_maintenance,
|
||||
}
|
||||
mock_remove_unspecified_items.assert_called_once_with(attrs)
|
||||
mock_print_dict.assert_called_once_with(self.hosts_vals)
|
||||
|
||||
@mock.patch.object(utils, 'print_dict')
|
||||
@mock.patch.object(utils, 'get_uuid_by_name')
|
||||
def test_do_host_delete(self, mock_get_uuid_by_name, mock_print_dict):
|
||||
mock_get_uuid_by_name.side_effect = [self.segment_vals.get('uuid'),
|
||||
self.hosts_vals.get('uuid')]
|
||||
service = mock.Mock()
|
||||
service.delete_host.return_value = self.hosts_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_host_delete(service, args)
|
||||
mock_get_uuid_by_name.assert_any_call(service, args.segment_id)
|
||||
mock_get_uuid_by_name.assert_any_call(
|
||||
service, args.id, segment=self.segment_vals.get('uuid'))
|
||||
mock_print_dict.assert_called_once_with(self.hosts_vals)
|
||||
|
|
|
@ -91,7 +91,8 @@ def do_segment_list(service, args):
|
|||
def do_segment_show(service, args):
|
||||
"""Show a segment details."""
|
||||
try:
|
||||
segment = service.get_segment(args.id)
|
||||
segment_id = utils.get_uuid_by_name(service, args.id)
|
||||
segment = service.get_segment(segment_id)
|
||||
utils.print_dict(segment.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
@ -138,6 +139,8 @@ def do_segment_create(service, args):
|
|||
def do_segment_update(service, args):
|
||||
"""Update a segment."""
|
||||
try:
|
||||
segment_id = utils.get_uuid_by_name(
|
||||
service, args.id)
|
||||
attrs = {
|
||||
'name': args.name,
|
||||
'description': args.description,
|
||||
|
@ -145,7 +148,7 @@ def do_segment_update(service, args):
|
|||
'service_type': args.service_type,
|
||||
}
|
||||
attrs = utils.remove_unspecified_items(attrs)
|
||||
segment = service.update_segment(args.id, **attrs)
|
||||
segment = service.update_segment(segment_id, **attrs)
|
||||
utils.print_dict(segment.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
@ -156,7 +159,9 @@ def do_segment_update(service, args):
|
|||
def do_segment_delete(service, args):
|
||||
"""Delete a segment."""
|
||||
try:
|
||||
segment = service.delete_segment(args.id, ignore_missing=True)
|
||||
segment_id = utils.get_uuid_by_name(
|
||||
service, args.id)
|
||||
segment = service.delete_segment(segment_id, ignore_missing=True)
|
||||
utils.print_dict(segment.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
@ -167,10 +172,12 @@ def do_segment_delete(service, args):
|
|||
def do_host_list(service, args):
|
||||
"""List hosts."""
|
||||
try:
|
||||
hosts = service.hosts(args.segment_id)
|
||||
segment_id = utils.get_uuid_by_name(
|
||||
service, args.segment_id)
|
||||
hosts = service.hosts(segment_id)
|
||||
fields = [
|
||||
'control_attributes', 'failover_segment_id', 'name',
|
||||
'on_maintenance', 'type', 'uuid']
|
||||
'uuid', 'name', 'type', 'control_attributes', 'reserved',
|
||||
'on_maintenance', 'failover_segment_id']
|
||||
utils.print_list(hosts, fields)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
@ -183,7 +190,11 @@ def do_host_list(service, args):
|
|||
def do_host_show(service, args):
|
||||
"""Show a host details."""
|
||||
try:
|
||||
host = service.get_host(args.segment_id, args.id)
|
||||
segment_id = utils.get_uuid_by_name(
|
||||
service, args.segment_id)
|
||||
host_id = utils.get_uuid_by_name(
|
||||
service, args.id, segment=segment_id)
|
||||
host = service.get_host(segment_id, host_id)
|
||||
utils.print_dict(host.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
@ -207,6 +218,8 @@ def do_host_show(service, args):
|
|||
def do_host_create(service, args):
|
||||
"""Create a host."""
|
||||
try:
|
||||
segment_id = utils.get_uuid_by_name(
|
||||
service, args.segment_id)
|
||||
attrs = {
|
||||
'name': args.name,
|
||||
'type': args.type,
|
||||
|
@ -214,7 +227,8 @@ def do_host_create(service, args):
|
|||
'reserved': args.reserved,
|
||||
'on_maintenance': args.on_maintenance,
|
||||
}
|
||||
host = service.create_host(args.segment_id, **attrs)
|
||||
utils.remove_unspecified_items(attrs)
|
||||
host = service.create_host(segment_id, **attrs)
|
||||
utils.print_dict(host.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
@ -240,6 +254,10 @@ def do_host_create(service, args):
|
|||
def do_host_update(service, args):
|
||||
"""Update a host."""
|
||||
try:
|
||||
segment_id = utils.get_uuid_by_name(
|
||||
service, args.segment_id)
|
||||
host_id = utils.get_uuid_by_name(
|
||||
service, args.id, segment=segment_id)
|
||||
attrs = {
|
||||
'name': args.name,
|
||||
'type': args.type,
|
||||
|
@ -248,20 +266,24 @@ def do_host_update(service, args):
|
|||
'on_maintenance': args.on_maintenance,
|
||||
}
|
||||
attrs = utils.remove_unspecified_items(attrs)
|
||||
host = service.update_host(args.segment_id, args.id, **attrs)
|
||||
host = service.update_host(segment_id, host_id, **attrs)
|
||||
utils.print_dict(host.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
|
||||
@utils.arg('--segment-id', metavar='<SEGMENT_ID>', required=True,
|
||||
help='Segment ID of the host to delete.')
|
||||
help='Name or ID of segment.')
|
||||
@utils.arg('--id', metavar='<HOST_ID>', required=True,
|
||||
help='Name or ID of the host to delete.')
|
||||
def do_host_delete(service, args):
|
||||
"""Delete a host."""
|
||||
try:
|
||||
host = service.delete_host(args.segment_id, args.id)
|
||||
segment_id = utils.get_uuid_by_name(
|
||||
service, args.segment_id)
|
||||
host_id = utils.get_uuid_by_name(
|
||||
service, args.id, segment=segment_id)
|
||||
host = service.delete_host(segment_id, host_id)
|
||||
if host:
|
||||
utils.print_dict(host.to_dict())
|
||||
except Exception as e:
|
||||
|
|
Loading…
Reference in New Issue