Support backup members

Story: 2001777
Task: 12486

Change-Id: I81095ec47eaf0f5d41e91ea66b3a0c9a00d8f95b
This commit is contained in:
huangshan 2018-06-19 22:11:31 +08:00
parent a5c9e16a4f
commit eee91e826a
6 changed files with 47 additions and 7 deletions

View File

@ -122,7 +122,9 @@ MEMBER_ROWS = (
'updated_at', 'updated_at',
'weight', 'weight',
'monitor_port', 'monitor_port',
'monitor_address') 'monitor_address',
'backup'
)
MEMBER_COLUMNS = ( MEMBER_COLUMNS = (
'id', 'id',

View File

@ -101,6 +101,19 @@ class CreateMember(command.ShowOne):
metavar='<name>', metavar='<name>',
help="Name of the member." help="Name of the member."
) )
backup = parser.add_mutually_exclusive_group()
backup.add_argument(
'--disable-backup',
action='store_true',
default=None,
help="Disable member backup (default)"
)
backup.add_argument(
'--enable-backup',
action='store_true',
default=None,
help="Enable member backup"
)
parser.add_argument( parser.add_argument(
'--weight', '--weight',
metavar='<weight>', metavar='<weight>',
@ -197,6 +210,19 @@ class SetMember(command.Command):
metavar='<name>', metavar='<name>',
help="Set the name of the member" help="Set the name of the member"
) )
backup = parser.add_mutually_exclusive_group()
backup.add_argument(
'--disable-backup',
action='store_true',
default=None,
help="Disable member backup (default)"
)
backup.add_argument(
'--enable-backup',
action='store_true',
default=None,
help="Enable member backup"
)
parser.add_argument( parser.add_argument(
'--weight', '--weight',
metavar='<weight>', metavar='<weight>',

View File

@ -269,6 +269,8 @@ def get_member_attrs(client_manager, parsed_args):
'pool', 'pool',
client_manager.load_balancer.member_list client_manager.load_balancer.member_list
), ),
'enable_backup': ('backup', lambda x: True),
'disable_backup': ('backup', lambda x: False),
'weight': ('weight', int), 'weight': ('weight', int),
'subnet_id': ( 'subnet_id': (
'subnet_id', 'subnet_id',

View File

@ -115,6 +115,7 @@ L7RULE_ATTRS = {
MEMBER_ATTRS = { MEMBER_ATTRS = {
"project_id": uuidutils.generate_uuid(dashed=True), "project_id": uuidutils.generate_uuid(dashed=True),
"name": "test-member", "name": "test-member",
"backup": False,
"weight": 1, "weight": 1,
"admin_state_up": True, "admin_state_up": True,
"subnet_id": uuidutils.generate_uuid(dashed=True), "subnet_id": uuidutils.generate_uuid(dashed=True),

View File

@ -90,11 +90,12 @@ class TestCreateMember(TestMember):
'protocol_port': self._mem.protocol_port, 'protocol_port': self._mem.protocol_port,
'weight': self._mem.weight, 'weight': self._mem.weight,
'admin_state_up': True, 'admin_state_up': True,
'pool_id': self._mem.pool_id} 'pool_id': self._mem.pool_id,
'backup': False}
arglist = ['pool_id', '--address', '192.0.2.122', arglist = ['pool_id', '--address', '192.0.2.122',
'--protocol-port', '80', '--protocol-port', '80',
'--weight', '1', '--enable'] '--weight', '1', '--enable', '--disable-backup']
verifylist = [ verifylist = [
('address', '192.0.2.122'), ('address', '192.0.2.122'),
('protocol_port', 80), ('protocol_port', 80),
@ -108,7 +109,8 @@ class TestCreateMember(TestMember):
'member': {'ip_address': '192.0.2.122', 'member': {'ip_address': '192.0.2.122',
'protocol_port': self._mem.protocol_port, 'protocol_port': self._mem.protocol_port,
'weight': self._mem.weight, 'weight': self._mem.weight,
'admin_state_up': True}}) 'admin_state_up': True,
'backup': False}})
class TestMemberDelete(TestMember): class TestMemberDelete(TestMember):
@ -140,9 +142,10 @@ class TestMemberSet(TestMember):
def test_member_set(self, mock_attrs): def test_member_set(self, mock_attrs):
mock_attrs.return_value = {'pool_id': 'test_pool_id', mock_attrs.return_value = {'pool_id': 'test_pool_id',
'member_id': 'test_mem_id', 'member_id': 'test_mem_id',
'name': 'new_name'} 'name': 'new_name',
'backup': True}
arglist = ['test_pool_id', 'test_mem_id', '--name', arglist = ['test_pool_id', 'test_mem_id', '--name',
'new_name'] 'new_name', '--enable-backup']
verifylist = [ verifylist = [
('pool', 'test_pool_id'), ('pool', 'test_pool_id'),
('member', 'test_mem_id'), ('member', 'test_mem_id'),
@ -153,7 +156,8 @@ class TestMemberSet(TestMember):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.api_mock.member_set.assert_called_with( self.api_mock.member_set.assert_called_with(
pool_id='test_pool_id', member_id='test_mem_id', pool_id='test_pool_id', member_id='test_mem_id',
json={'member': {'name': 'new_name'}}) json={'member': {'name': 'new_name',
'backup': True}})
class TestMemberShow(TestMember): class TestMemberShow(TestMember):

View File

@ -0,0 +1,5 @@
---
features:
- |
Optional backup argument for member, in loadbalancer member create,
and loadbalancer member set.