Implemented the segment subcommands masakari CLI
This patch adds sub commands of segments. Change-Id: I7b168cf62b2a98f8539d37a3818d4ef6057f0fe9 Implements: bp implement-masakari-cli
This commit is contained in:
parent
1257f0985c
commit
0bf1059912
|
@ -61,12 +61,12 @@ class Segment(resource2.Resource):
|
|||
"sort_key", "sort_dir", recovery_method="recovery_method",
|
||||
service_type="service_type")
|
||||
|
||||
def update(self, session, prepend_key=False, has_body=False):
|
||||
def update(self, session, prepend_key=False, has_body=True):
|
||||
"""Update a segment."""
|
||||
request = self._prepare_request(prepend_key=prepend_key)
|
||||
del request.body['id']
|
||||
request_body = {"segment": request.body}
|
||||
session.put(request.uri, endpoint_filter=self.service,
|
||||
json=request_body, headers=request.headers)
|
||||
|
||||
ret = session.put(request.uri, endpoint_filter=self.service,
|
||||
json=request_body, headers=request.headers)
|
||||
self._translate_response(ret, has_body=has_body)
|
||||
return self
|
||||
|
|
|
@ -28,7 +28,7 @@ class FakeConnection(object):
|
|||
|
||||
def __init__(self, prof=None, user_agent=None, **kwargs):
|
||||
super(FakeConnection, self).__init__()
|
||||
self.vmha = None
|
||||
self.ha = None
|
||||
|
||||
|
||||
class TestV1Client(base.TestCase):
|
||||
|
@ -37,7 +37,7 @@ class TestV1Client(base.TestCase):
|
|||
super(TestV1Client, self).setUp()
|
||||
self.conn = mock.Mock()
|
||||
self.service = mock.Mock()
|
||||
self.conn.vmha = self.service
|
||||
self.conn.ha = self.service
|
||||
|
||||
def test_client_init(self):
|
||||
with mock.patch.object(connection,
|
||||
|
|
|
@ -28,7 +28,7 @@ class TestV1Shell(base.TestCase):
|
|||
|
||||
def setUp(self):
|
||||
super(TestV1Shell, self).setUp()
|
||||
self.vals = {
|
||||
self.notification_vals = {
|
||||
'notification_uuid': 'b3bf75d7-c2e9-4023-a10b-e5b464b9b539',
|
||||
'source_host_uuid': '68fa7386-983e-4497-b5c4-3780f774d302',
|
||||
'created_at': '2016-11-15T12:24:39.000000',
|
||||
|
@ -38,10 +38,20 @@ class TestV1Shell(base.TestCase):
|
|||
'type': 'VM',
|
||||
'id': '27'}
|
||||
|
||||
self.segment_vals = {
|
||||
'uuid': '870da19d-37ec-41d2-a4b2-7be54b0d6ec9',
|
||||
'created_at': '2016-11-17T10:08:32.000000',
|
||||
'recovery_method': 'auto',
|
||||
'updated_at': '2016-11-17T10:09:56.000000',
|
||||
'name': 'testsegment05',
|
||||
'service_type': 'testsegment01_auto',
|
||||
'id': '14',
|
||||
'description': 'UPDATE Discription'}
|
||||
|
||||
@mock.patch.object(utils, 'print_list')
|
||||
def test_do_notification_list(self, mock_print_list):
|
||||
service = mock.Mock()
|
||||
service.notifications.return_value = self.vals
|
||||
service.notifications.return_value = self.notification_vals
|
||||
args = mock.Mock()
|
||||
columns = [
|
||||
'notification_uuid',
|
||||
|
@ -53,5 +63,23 @@ class TestV1Shell(base.TestCase):
|
|||
ms.do_notification_list(service, args)
|
||||
|
||||
mock_print_list.assert_called_once_with(
|
||||
self.vals,
|
||||
self.notification_vals,
|
||||
columns)
|
||||
|
||||
@mock.patch.object(utils, 'print_list')
|
||||
def test_do_segment_list(self, mock_print_list):
|
||||
service = mock.Mock()
|
||||
service.segments.return_value = self.segment_vals
|
||||
args = mock.Mock()
|
||||
columns = [
|
||||
'uuid',
|
||||
'name',
|
||||
'description',
|
||||
'service_type',
|
||||
'recovery_method']
|
||||
|
||||
ms.do_segment_list(service, args)
|
||||
|
||||
mock_print_list.assert_called_once_with(
|
||||
self.segment_vals,
|
||||
columns)
|
||||
|
|
|
@ -70,3 +70,86 @@ def do_notification_create(service, args):
|
|||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
|
||||
def do_segment_list(service, args):
|
||||
"""List segments."""
|
||||
try:
|
||||
segments = service.segments()
|
||||
fields = [
|
||||
'uuid', 'name', 'description',
|
||||
'service_type', 'recovery_method']
|
||||
utils.print_list(segments, fields)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
|
||||
@utils.arg('--id', metavar='<SEGMENT_ID>', required=True,
|
||||
help='Segment to display (name or ID)')
|
||||
def do_segment_show(service, args):
|
||||
"""Show a segment details."""
|
||||
try:
|
||||
segment = service.get_segment(args.id)
|
||||
utils.print_dict(segment.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
|
||||
@utils.arg('--name', metavar='<SEGMENT_NAME>', required=True,
|
||||
help='Name of segment.')
|
||||
@utils.arg('--description', metavar='<DESCRIPTION>', required=True,
|
||||
help='Description of segment.')
|
||||
@utils.arg('--recovery-method', metavar='<RECOVERY_METHOD>', required=True,
|
||||
help='JSON string about recovery method.')
|
||||
@utils.arg('--service-type', metavar='<SERVICE_TYPE>', required=True,
|
||||
help='Service type of segment.')
|
||||
def do_segment_create(service, args):
|
||||
"""Create segment."""
|
||||
try:
|
||||
attrs = {
|
||||
'name': args.name,
|
||||
'description': args.description,
|
||||
'recovery_method': args.recovery_method,
|
||||
'service_type': args.service_type,
|
||||
}
|
||||
segment = service.create_segment(**attrs)
|
||||
utils.print_dict(segment.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
|
||||
@utils.arg('--id', metavar='<SEGMENT_ID>',
|
||||
required=True, help='Name or ID of segment.')
|
||||
@utils.arg('--name', metavar='<SEGMENT_NAME>',
|
||||
required=False, help='Name of segment.')
|
||||
@utils.arg('--description', metavar='<DESCRIPTION>',
|
||||
required=False, help='Description of segment.')
|
||||
@utils.arg('--recovery-method', metavar='<RECOVERY_METHOD>',
|
||||
required=False, help='JSON string about recovery method.')
|
||||
@utils.arg('--service-type', metavar='<SERVICE_TYPE>',
|
||||
required=False, help='Service type of segment.')
|
||||
def do_segment_update(service, args):
|
||||
"""Update a segment."""
|
||||
try:
|
||||
attrs = {
|
||||
'name': args.name,
|
||||
'description': args.description,
|
||||
'recovery_method': args.recovery_method,
|
||||
'service_type': args.service_type,
|
||||
}
|
||||
attrs = utils.remove_unspecified_items(attrs)
|
||||
segment = service.update_segment(args.id, **attrs)
|
||||
utils.print_dict(segment.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
|
||||
@utils.arg('--id', metavar='<SEGMENT_ID>', required=True,
|
||||
help='Name or ID of the segment to delete.')
|
||||
def do_segment_delete(service, args):
|
||||
"""Delete a segment."""
|
||||
try:
|
||||
segment = service.delete_segment(args.id, ignore_missing=True)
|
||||
utils.print_dict(segment.to_dict())
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
|
Loading…
Reference in New Issue