Fix missing TLS handling in listener create

Change-Id: Ia47d93cd26605eeb7166010fc18c482a91d11127
(cherry picked from commit eefcd6eded)
This commit is contained in:
Adam Harwell 2017-09-20 16:19:27 -07:00 committed by Jacky Hu
parent a165b15354
commit 28a777cdf5
10 changed files with 68 additions and 26 deletions

View File

@ -221,8 +221,8 @@ class ShowListener(command.ShowOne):
'l7policies': v2_utils.format_list,
'insert_headers': v2_utils.format_hash}
return (rows,
(utils.get_dict_properties(data, rows, formatters=formatters)))
return rows, utils.get_dict_properties(data, rows,
formatters=formatters)
class SetListener(command.Command):
@ -267,7 +267,7 @@ class SetListener(command.Command):
"listeners."
)
parser.add_argument(
'---sni-container-refs',
'--sni-container-refs',
metavar='<container-ref>',
nargs='*',
help="A list of URIs to the key manager service secrets "

View File

@ -42,8 +42,8 @@ def get_resource_id(resource, resource_name, name):
return 'non-uuid'
elif resource_name == 'members':
names = [re for re in resource(name['pool_id'])['members']
if re.get('id') == name['member_id']
or re.get('name') == name['member_id']]
if re.get('id') == name['member_id'] or
re.get('name') == name['member_id']]
name = name['member_id']
if len(names) > 1:
msg = ("{0} {1} found with name or ID of {2}. Please try "
@ -158,7 +158,9 @@ def get_listener_attrs(client_manager, parsed_args):
),
'enable': ('admin_state_up', lambda x: True),
'disable': ('admin_state_up', lambda x: False),
'insert_headers': ('insert_headers', _format_kv)
'insert_headers': ('insert_headers', _format_kv),
'default_tls_container_ref': ('default_tls_container_ref', str),
'sni_container_refs': ('sni_container_refs', list)
}
_attrs = vars(parsed_args)

View File

@ -98,6 +98,9 @@ class FakeListener(object):
'default_pool_id': None,
'connection_limit': 10,
'admin_state_up': True,
'default_tls_container_ref': str(uuid.uuid4()),
'sni_container_refs': [str(uuid.uuid4()),
str(uuid.uuid4())]
}
li_info.update(attrs)

View File

@ -159,8 +159,8 @@ class TestHealthMonitorShow(TestHealthMonitor):
super(TestHealthMonitorShow, self).setUp()
self.api_mock = mock.Mock()
self.api_mock.health_monitor_list.return_value = self.hm_info
self.api_mock.health_monitor_show.return_value = {
'healthmonitor': self.hm_info['healthmonitors'][0]}
self.api_mock.health_monitor_show.return_value = (
self.hm_info['healthmonitors'][0])
lb_client = self.app.client_manager
lb_client.load_balancer = self.api_mock

View File

@ -170,8 +170,7 @@ class TestL7PolicyShow(TestL7Policy):
super(TestL7PolicyShow, self).setUp()
self.api_mock = mock.Mock()
self.api_mock.l7policy_list.return_value = [{'id': self._l7po.id}]
self.api_mock.l7policy_show.return_value = {
'l7policy': self.l7po_info}
self.api_mock.l7policy_show.return_value = self.l7po_info
lb_client = self.app.client_manager
lb_client.load_balancer = self.api_mock

View File

@ -185,8 +185,7 @@ class TestL7RuleShow(TestL7Policy):
self.api_mock = mock.Mock()
self.api_mock.l7policy_list.return_value = self.l7po_info
self.api_mock.l7rule_list.return_value = self.l7ru_info
self.api_mock.l7rule_show.return_value = {
'rule': self.l7ru_info['rules'][0]}
self.api_mock.l7rule_show.return_value = self.l7ru_info['rules'][0]
lb_client = self.app.client_manager
lb_client.load_balancer = self.api_mock

View File

@ -34,7 +34,8 @@ class TestListener(li_fakes.TestLoadBalancerv2):
'project_id',
'protocol',
'protocol_port',
'admin_state_up')
'admin_state_up',
)
datalist = (
(
@ -44,7 +45,7 @@ class TestListener(li_fakes.TestLoadBalancerv2):
_li.project_id,
_li.protocol,
_li.protocol_port,
_li.admin_state_up
_li.admin_state_up,
),
)
@ -60,7 +61,9 @@ class TestListener(li_fakes.TestLoadBalancerv2):
'connection_limit': _li.connection_limit,
'protocol': _li.protocol,
'protocol_port': _li.protocol_port,
'admin_state_up': _li.admin_state_up
'admin_state_up': _li.admin_state_up,
'default_tls_container_ref': _li.default_tls_container_ref,
'sni_container_refs': _li.sni_container_refs
}]
}
li_info = copy.deepcopy(info)
@ -164,6 +167,32 @@ class TestListenerCreate(TestListener):
self.api_mock.listener_create.assert_called_with(
json={'listener': self.li_info['listeners'][0]})
@mock.patch('octaviaclient.osc.v2.utils.get_listener_attrs')
def test_tls_listener_create(self, mock_client):
mock_client.return_value = self.li_info['listeners'][0]
arglist = ['mock_lb_id',
'--name', self._li.name,
'--protocol', 'TERMINATED_HTTPS',
'--protocol-port', '443',
'--sni-container-refs',
self._li.sni_container_refs[0],
self._li.sni_container_refs[1],
'--default-tls-container-ref',
self._li.default_tls_container_ref]
verifylist = [
('loadbalancer', 'mock_lb_id'),
('name', self._li.name),
('protocol', 'TERMINATED_HTTPS'),
('protocol_port', '443'),
('sni_container_refs', self._li.sni_container_refs),
('default_tls_container_ref', self._li.default_tls_container_ref)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.api_mock.listener_create.assert_called_with(
json={'listener': self.li_info['listeners'][0]})
class TestListenerShow(TestListener):
@ -171,8 +200,7 @@ class TestListenerShow(TestListener):
super(TestListenerShow, self).setUp()
self.api_mock = mock.Mock()
self.api_mock.listener_list.return_value = self.li_info
self.api_mock.listener_show.return_value = {
'listener': self.li_info['listeners'][0]}
self.api_mock.listener_show.return_value = self.li_info['listeners'][0]
lb_client = self.app.client_manager
lb_client.load_balancer = self.api_mock
@ -196,13 +224,26 @@ class TestListenerSet(TestListener):
self.cmd = listener.SetListener(self.app, None)
def test_listener_set(self):
arglist = [self._li.id, '--name', 'new_name']
arglist = [self._li.id, '--name', 'new_name',
'--sni-container-refs',
self._li.sni_container_refs[0],
self._li.sni_container_refs[1],
'--default-tls-container-ref',
self._li.default_tls_container_ref]
verifylist = [
('listener', self._li.id),
('name', 'new_name')
('name', 'new_name'),
('sni_container_refs', self._li.sni_container_refs),
('default_tls_container_ref', self._li.default_tls_container_ref)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.api_mock.listener_set.assert_called_with(
self._li.id, json={'listener': {'name': 'new_name'}})
self._li.id, json={
'listener': {
'name': 'new_name',
'sni_container_refs': self._li.sni_container_refs,
'default_tls_container_ref':
self._li.default_tls_container_ref
}})

View File

@ -166,8 +166,8 @@ class TestLoadBalancerShow(TestLoadBalancer):
super(TestLoadBalancerShow, self).setUp()
self.api_mock = mock.Mock()
self.api_mock.load_balancer_list.return_value = self.lb_info
self.api_mock.load_balancer_show.return_value = {
'loadbalancer': self.lb_info['loadbalancers'][0]}
self.api_mock.load_balancer_show.return_value = (
self.lb_info['loadbalancers'][0])
lb_client = self.app.client_manager
lb_client.load_balancer = self.api_mock

View File

@ -190,8 +190,7 @@ class TestMemberShow(TestMember):
super(TestMemberShow, self).setUp()
self.api_mock = mock.Mock()
self.api_mock.member_list.return_value = self.mem_info
self.api_mock.member_show.return_value = {
'member': self.mem_info['members'][0]}
self.api_mock.member_show.return_value = self.mem_info['members'][0]
lb_client = self.app.client_manager
lb_client.load_balancer = self.api_mock

View File

@ -161,8 +161,7 @@ class TestPoolShow(TestPool):
super(TestPoolShow, self).setUp()
self.api_mock = mock.Mock()
self.api_mock.pool_list.return_value = self.po_info
self.api_mock.pool_show.return_value = {
'pool': self.po_info['pools'][0]}
self.api_mock.pool_show.return_value = self.po_info['pools'][0]
lb_client = self.app.client_manager
lb_client.load_balancer = self.api_mock