Add support for auto_priority, rh_priority recovery method
As of now segment can be created with only 'auto', 'reserved_host' recovery-methods. Added support for rh_priority and auto_priority. Closes-Bug: #1713971 Change-Id: I88e4145d3e38301ce363c65409c646297b50d01a
This commit is contained in:
parent
d4725667db
commit
f36c1c20d2
@ -109,9 +109,9 @@ class CreateSegment(command.ShowOne):
|
||||
parser.add_argument(
|
||||
'recovery_method',
|
||||
metavar='<recovery_method>',
|
||||
choices=['auto', 'reserved_host'],
|
||||
choices=['auto', 'reserved_host', 'auto_priority', 'rh_priority'],
|
||||
help=_('Recovery method of segment. The supported options are: '
|
||||
'auto, reserved_host.')
|
||||
'auto, reserved_host, auto_priority, rh_priority.')
|
||||
)
|
||||
parser.add_argument(
|
||||
'service_type',
|
||||
@ -163,9 +163,9 @@ class UpdateSegment(command.ShowOne):
|
||||
parser.add_argument(
|
||||
'--recovery_method',
|
||||
metavar='<recovery_method>',
|
||||
choices=['auto', 'reserved_host'],
|
||||
choices=['auto', 'reserved_host', 'auto_priority', 'rh_priority'],
|
||||
help=_('Recovery method of segment. The supported options are: '
|
||||
'auto, reserved_host')
|
||||
'auto, reserved_host, auto_priority, rh_priority')
|
||||
)
|
||||
parser.add_argument(
|
||||
'--service_type',
|
||||
|
@ -17,11 +17,14 @@ test_masakariclient
|
||||
|
||||
Tests for `masakariclient` module.
|
||||
"""
|
||||
import ddt
|
||||
import mock
|
||||
import uuid
|
||||
|
||||
from osc_lib.tests import utils as osc_lib_utils
|
||||
from osc_lib import utils
|
||||
|
||||
from masakariclient.osc.v1.segment import CreateSegment
|
||||
from masakariclient.osc.v1.segment import DeleteSegment
|
||||
from masakariclient.osc.v1.segment import ShowSegment
|
||||
from masakariclient.osc.v1.segment import UpdateSegment
|
||||
@ -127,7 +130,7 @@ class TestV1ShowSegment(BaseV1Segment):
|
||||
self.dummy_segment.to_dict(), self.columns, formatters={})
|
||||
|
||||
|
||||
class TestV1UpdateSegment(BaseV1Segment):
|
||||
class TestV1UpdateSegment(BaseV1Segment, osc_lib_utils.TestCommand):
|
||||
def setUp(self):
|
||||
super(TestV1UpdateSegment, self).setUp()
|
||||
|
||||
@ -154,15 +157,35 @@ class TestV1UpdateSegment(BaseV1Segment):
|
||||
def test_take_action_by_uuid(self):
|
||||
|
||||
# command param
|
||||
parsed_args = FakeNamespace(
|
||||
segment=SEGMENT_ID,
|
||||
description='FakeNamespace_description')
|
||||
arglist = ['8c35987c-f416-46ca-be37-52f58fd8d294',
|
||||
'--name', 'test_segment',
|
||||
'--recovery_method', 'rh_priority',
|
||||
'--service_type', 'test_service',
|
||||
'--description', 'test_segment']
|
||||
|
||||
parsed_args = self.check_parser(self.update_seg, arglist, [])
|
||||
self._test_take_action(parsed_args)
|
||||
|
||||
def test_take_action_by_name(self):
|
||||
|
||||
# command param
|
||||
parsed_args = FakeNamespace(segment=SEGMENT_NAME)
|
||||
arglist = [SEGMENT_NAME, '--name', 'test_segment',
|
||||
'--recovery_method', 'auto_priority',
|
||||
'--service_type', 'test_service',
|
||||
'--description', 'test_segment']
|
||||
|
||||
parsed_args = self.check_parser(self.update_seg, arglist, [])
|
||||
self._test_take_action(parsed_args)
|
||||
|
||||
def test_update_segment_with_recovery_method_reserved_host(self):
|
||||
|
||||
arglist = ['8c35987c-f416-46ca-be37-52f58fd8d294',
|
||||
'--name', 'test_segment',
|
||||
'--recovery_method', 'reserved_host',
|
||||
'--service_type', 'test_service',
|
||||
'--description', 'test_segment']
|
||||
|
||||
parsed_args = self.check_parser(self.update_seg, arglist, [])
|
||||
self._test_take_action(parsed_args)
|
||||
|
||||
@mock.patch.object(utils, 'get_dict_properties')
|
||||
@ -177,6 +200,14 @@ class TestV1UpdateSegment(BaseV1Segment):
|
||||
mock_get_dict_properties.assert_called_once_with(
|
||||
self.dummy_segment.to_dict(), self.columns, formatters={})
|
||||
|
||||
def test_update_with_invalid_recovery_method(self):
|
||||
arglist = [SEGMENT_NAME, '--name', 'test_segment',
|
||||
'--recovery_method', 'invalid-rcovery-method',
|
||||
'--service_type', 'test_service',
|
||||
'--description', 'test_segment']
|
||||
self.assertRaises(osc_lib_utils.ParserException,
|
||||
self.check_parser, self.update_seg, arglist, [])
|
||||
|
||||
|
||||
class TestV1DeleteSegment(BaseV1Segment):
|
||||
def setUp(self):
|
||||
@ -218,3 +249,40 @@ class TestV1DeleteSegment(BaseV1Segment):
|
||||
|
||||
self.app.client_manager.ha.delete_segment.assert_called_once_with(
|
||||
SEGMENT_ID, False)
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
class TestV1CreateSegment(BaseV1Segment, osc_lib_utils.TestCommand):
|
||||
|
||||
def setUp(self):
|
||||
super(TestV1CreateSegment, self).setUp()
|
||||
self.cmd = CreateSegment(self.app, None)
|
||||
|
||||
@ddt.data({"recovery_method": "auto"},
|
||||
{"recovery_method": "reserved_host"},
|
||||
{"recovery_method": "auto_priority"},
|
||||
{"recovery_method": "rh_priority"})
|
||||
def test_create_with_all_recovery_methods(self, ddt_data):
|
||||
arglist = ['test_segment', ddt_data['recovery_method'], 'test_service',
|
||||
'--description', 'test_segment']
|
||||
parsed_args = self.check_parser(self.cmd, arglist, [])
|
||||
self._test_take_action(parsed_args, arglist)
|
||||
|
||||
def _test_take_action(self, parsed_args, arglist):
|
||||
# return value segment list
|
||||
self.app.client_manager.ha.segments.return_value = arglist
|
||||
# return value segment data setup
|
||||
self.app.client_manager.ha.get_segment.return_value = (
|
||||
self.dummy_segment)
|
||||
self.cmd.take_action(parsed_args)
|
||||
self.app.client_manager.ha.create_segment.assert_called_with(
|
||||
description='test_segment',
|
||||
name='test_segment',
|
||||
recovery_method=arglist[1],
|
||||
service_type='test_service')
|
||||
|
||||
def test_create_segment_recovery_method_invalid(self):
|
||||
arglist = ['test_segment', 'invalid_recovery_method', 'test_service',
|
||||
'--description', 'test_segment']
|
||||
self.assertRaises(osc_lib_utils.ParserException,
|
||||
self.check_parser, self.cmd, arglist, [])
|
||||
|
@ -17,14 +17,17 @@ test_masakariclient
|
||||
|
||||
Tests for `masakariclient` module.
|
||||
"""
|
||||
import ddt
|
||||
import mock
|
||||
|
||||
from masakariclient.common import utils
|
||||
from masakariclient import shell
|
||||
from masakariclient.tests import base
|
||||
from masakariclient.tests.unit.v1 import fakes
|
||||
import masakariclient.v1.shell as ms
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
class TestV1Shell(base.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
@ -48,7 +51,6 @@ 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,
|
||||
@ -76,6 +78,9 @@ class TestV1Shell(base.TestCase):
|
||||
'failover_segment_id': '6b985a8a-f8c0-42e4-beaa-d2fcd8dabbb6'}
|
||||
self.hosts_object = fakes.FakeHost(self.hosts_vals)
|
||||
|
||||
def _run_command(self, cmd):
|
||||
shell.main(cmd.split())
|
||||
|
||||
@mock.patch.object(utils, 'print_list')
|
||||
def test_do_notification_list(self, mock_print_list):
|
||||
service = mock.Mock()
|
||||
@ -117,7 +122,8 @@ class TestV1Shell(base.TestCase):
|
||||
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
|
||||
segment_object = fakes.FakeSegment(self.segment_vals)
|
||||
service.get_segment.return_value = segment_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_segment_show(service, args)
|
||||
@ -125,27 +131,50 @@ class TestV1Shell(base.TestCase):
|
||||
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):
|
||||
@ddt.data({"recovery_method": "auto"},
|
||||
{"recovery_method": "reserved_host"},
|
||||
{"recovery_method": "auto_priority"},
|
||||
{"recovery_method": "rh_priority"})
|
||||
def test_do_segment_create_with_all_recovery_methods(
|
||||
self, ddt_data, mock_print_dict):
|
||||
service = mock.Mock()
|
||||
service.create_segment.return_value = self.segment_object
|
||||
args = mock.Mock()
|
||||
|
||||
self.segment_vals['recovery_method'] = ddt_data['recovery_method']
|
||||
segment_object = fakes.FakeSegment(self.segment_vals)
|
||||
service.create_segment.return_value = segment_object
|
||||
self._run_command(
|
||||
"segment-create "
|
||||
"--name 'test-segment'"
|
||||
" --recovery-method %s "
|
||||
"--service-type test_service" % ddt_data['recovery_method'])
|
||||
ms.do_segment_create(service, args)
|
||||
mock_print_dict.assert_called_once_with(self.segment_vals)
|
||||
mock_print_dict.assert_called_once_with(
|
||||
self.segment_vals)
|
||||
|
||||
def test_do_segment_create_with_invalid_recovery_method(self):
|
||||
cmd = ("segment-create --name 'test-segment' --recovery-method"
|
||||
" invalid_recovery_method --service-type test_service")
|
||||
self.assertRaises(SystemExit, self._run_command, cmd)
|
||||
|
||||
@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,
|
||||
@ddt.data({"recovery_method": "auto"},
|
||||
{"recovery_method": "reserved_host"},
|
||||
{"recovery_method": "auto_priority"},
|
||||
{"recovery_method": "rh_priority"})
|
||||
def test_do_segment_update(self, ddt_data,
|
||||
mock_get_uuid_by_name,
|
||||
mock_remove_unspecified_items,
|
||||
mock_print_dict):
|
||||
mock_get_uuid_by_name.return_value = self.segment_vals.get('uuid')
|
||||
self.segment_vals['recovery_method'] = ddt_data['recovery_method']
|
||||
mock_remove_unspecified_items.return_value = self.segment_vals
|
||||
service = mock.Mock()
|
||||
service.update_segment.return_value = self.segment_object
|
||||
segment_object = fakes.FakeSegment(self.segment_vals)
|
||||
service.update_segment.return_value = segment_object
|
||||
args = mock.Mock()
|
||||
|
||||
args.recovery_method = ddt_data['recovery_method']
|
||||
ms.do_segment_update(service, args)
|
||||
mock_get_uuid_by_name.assert_called_once_with(service, args.id)
|
||||
attrs = {
|
||||
@ -157,12 +186,18 @@ class TestV1Shell(base.TestCase):
|
||||
mock_remove_unspecified_items.assert_called_once_with(attrs)
|
||||
mock_print_dict.assert_called_once_with(self.segment_vals)
|
||||
|
||||
def test_do_segment_update_with_invalid_recovery_method(self):
|
||||
cmd = ("segment-update --id bdba001e-c01b-490e-9405-fdf72d849b41 "
|
||||
"--recovery-method invalid_recovery_method")
|
||||
self.assertRaises(SystemExit, self._run_command, cmd)
|
||||
|
||||
@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
|
||||
segment_object = fakes.FakeSegment(self.segment_vals)
|
||||
service.delete_segment.return_value = segment_object
|
||||
args = mock.Mock()
|
||||
|
||||
ms.do_segment_delete(service, args)
|
||||
|
@ -101,9 +101,10 @@ def do_segment_show(service, args):
|
||||
@utils.arg('--name', metavar='<SEGMENT_NAME>', required=True,
|
||||
help='Name of segment.')
|
||||
@utils.arg('--recovery-method', metavar='<RECOVERY_METHOD>', required=True,
|
||||
choices=['auto', 'reserved_host'],
|
||||
choices=['auto', 'reserved_host', 'auto_priority', 'rh_priority'],
|
||||
help='Recovery method. '
|
||||
'The supported options are: auto, reserved_host.')
|
||||
'The supported options are: auto, reserved_host,'
|
||||
' auto_priority, rh_priority.')
|
||||
@utils.arg('--service-type', metavar='<SERVICE_TYPE>', required=True,
|
||||
help='Service type of segment.')
|
||||
@utils.arg('--description', metavar='<DESCRIPTION>', required=False,
|
||||
@ -128,10 +129,11 @@ def do_segment_create(service, args):
|
||||
@utils.arg('--name', metavar='<SEGMENT_NAME>',
|
||||
required=False, help='Name of segment.')
|
||||
@utils.arg('--recovery-method', metavar='<RECOVERY_METHOD>',
|
||||
choices=['auto', 'reserved_host'],
|
||||
choices=['auto', 'reserved_host', 'auto_priority', 'rh_priority'],
|
||||
required=False,
|
||||
help='Recovery method. '
|
||||
'The supported options are: auto, reserved_host.')
|
||||
'The supported options are: auto, reserved_host, '
|
||||
'auto_priority, rh_priority.')
|
||||
@utils.arg('--service-type', metavar='<SERVICE_TYPE>',
|
||||
required=False, help='Service type of segment.')
|
||||
@utils.arg('--description', metavar='<DESCRIPTION>',
|
||||
|
@ -5,11 +5,13 @@
|
||||
hacking>=0.12.0,!=0.13.0,<0.14 # Apache-2.0
|
||||
|
||||
coverage>=3.6 # Apache-2.0
|
||||
ddt>=1.0.1 # MIT
|
||||
python-subunit>=0.0.18 # Apache-2.0/BSD
|
||||
sphinx>=1.2.1,!=1.3b1,<1.4 # BSD
|
||||
oslosphinx>=4.7.0 # Apache-2.0
|
||||
oslotest>=1.10.0 # Apache-2.0
|
||||
os-testr>=0.8.0 # Apache-2.0
|
||||
requests-mock>=1.1.0 # Apache-2.0
|
||||
testrepository>=0.0.18 # Apache-2.0/BSD
|
||||
testscenarios>=0.4 # Apache-2.0/BSD
|
||||
testtools>=1.4.0 # MIT
|
||||
|
Loading…
x
Reference in New Issue
Block a user