First check whether output_value is None

1.when self.get_output_value() return None, K8sApiAddressOutputMapping's
  set_output() and SwarmApiAddressOutputMapping's set_output() should
  checks whether output_value is None at first.
2.'output_value = "%(protocol)s://%(address)s:%(port)s" % params'
  certainly not is None, So 'if output_value is not None' is useless.

Change-Id: I637ee0793e966ef46bfee6e51fbda2a15032979e
This commit is contained in:
PanFengyun 2016-06-09 00:02:06 +08:00
parent 70fed16ba3
commit a482ce8179
2 changed files with 72 additions and 25 deletions

View File

@ -406,42 +406,46 @@ class BaseTemplateDefinition(TemplateDefinition):
class K8sApiAddressOutputMapping(OutputMapping):
def set_output(self, stack, baymodel, bay):
# TODO(yuanying): port number is hardcoded, this will be fix
protocol = 'https'
port = KUBE_SECURE_PORT
if baymodel.tls_disabled:
protocol = 'http'
port = KUBE_INSECURE_PORT
if self.bay_attr is None:
return
output_value = self.get_output_value(stack)
params = {
'protocol': protocol,
'address': output_value,
'port': port,
}
output_value = "%(protocol)s://%(address)s:%(port)s" % params
if output_value is not None:
setattr(bay, self.bay_attr, output_value)
# TODO(yuanying): port number is hardcoded, this will be fix
protocol = 'https'
port = KUBE_SECURE_PORT
if baymodel.tls_disabled:
protocol = 'http'
port = KUBE_INSECURE_PORT
params = {
'protocol': protocol,
'address': output_value,
'port': port,
}
value = "%(protocol)s://%(address)s:%(port)s" % params
setattr(bay, self.bay_attr, value)
class SwarmApiAddressOutputMapping(OutputMapping):
def set_output(self, stack, baymodel, bay):
protocol = 'https'
if baymodel.tls_disabled:
protocol = 'tcp'
if self.bay_attr is None:
return
output_value = self.get_output_value(stack)
params = {
'protocol': protocol,
'address': output_value,
'port': DOCKER_PORT,
}
output_value = "%(protocol)s://%(address)s:%(port)s" % params
if output_value is not None:
setattr(bay, self.bay_attr, output_value)
protocol = 'https'
if baymodel.tls_disabled:
protocol = 'tcp'
params = {
'protocol': protocol,
'address': output_value,
'port': DOCKER_PORT,
}
value = "%(protocol)s://%(address)s:%(port)s" % params
setattr(bay, self.bay_attr, value)
class K8sTemplateDefinition(BaseTemplateDefinition):

View File

@ -391,6 +391,49 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase):
}
self._test_update_outputs_api_address('swarm', params, tls=False)
def _test_update_outputs_none_api_address(self, coe, params, tls=True):
definition = tdef.TemplateDefinition.get_template_definition(
'vm',
'fedora-atomic',
coe)
outputs = [
{"output_value": params['address'],
"description": "No description given",
"output_key": 'api_address'},
]
mock_stack = mock.MagicMock()
mock_stack.to_dict.return_value = {'outputs': outputs}
mock_bay = mock.MagicMock()
mock_bay.api_address = 'none_api_address'
mock_baymodel = mock.MagicMock()
mock_baymodel.tls_disabled = tls
definition.update_outputs(mock_stack, mock_baymodel, mock_bay)
self.assertEqual('none_api_address', mock_bay.api_address)
def test_update_k8s_outputs_none_api_address(self):
protocol = 'http'
port = '8080'
params = {
'protocol': protocol,
'address': None,
'port': port,
}
self._test_update_outputs_none_api_address('kubernetes', params)
def test_update_swarm_outputs_none_api_address(self):
protocol = 'tcp'
port = '2376'
params = {
'protocol': protocol,
'address': None,
'port': port,
}
self._test_update_outputs_none_api_address('swarm', params)
class AtomicSwarmTemplateDefinitionTestCase(base.TestCase):