Fix ServerAddressOutputMapping for private clusters
Following changes were introduced in Train release: - Allow setting network, subnet and FIP when creating cluster (I11579ff6b83d133c71c2cbf49ee4b20996dfb918) - ng-7: Adapt parameter and output mappings (I45cf765977c7f5a92f28ae12c469b98435763163) The first change allowed setting cluster.floating_ip_enabled but the second change introduced ServerAddressOutputMapping conditional on cluster_template.floating_ip_enabled which leads to an edge case where if floating_ip_enabled is overriden to False when a cluster is created when it is True in the cluster_template scope, we see this error in the conductor logs: ValueError: Field `node_addresses[0]' cannot be None and the cluster remains forever stuck in CREATE_IN_PROGRESS status despite Heat reaching CREATE_COMPLETE. This commit addresses this issue by correctly referring to the cluster.floating_ip_enabled. Change-Id: Ic83f625178786d4750a66dd6dd6db35c05bc0272 Story: 2007550 Task: 39401
This commit is contained in:
parent
598e7dd3dd
commit
0e58e267d1
@ -28,7 +28,7 @@ class ServerAddressOutputMapping(template_def.OutputMapping):
|
||||
self.heat_output = self.public_ip_output_key
|
||||
|
||||
def set_output(self, stack, cluster_template, cluster):
|
||||
if not cluster_template.floating_ip_enabled:
|
||||
if not cluster.floating_ip_enabled:
|
||||
self.heat_output = self.private_ip_output_key
|
||||
|
||||
LOG.debug("Using heat_output: %s", self.heat_output)
|
||||
|
@ -65,7 +65,7 @@ class ServerAddressOutputMapping(template_def.NodeGroupOutputMapping):
|
||||
self.is_stack_param = False
|
||||
|
||||
def set_output(self, stack, cluster_template, cluster):
|
||||
if not cluster_template.floating_ip_enabled:
|
||||
if not cluster.floating_ip_enabled:
|
||||
self.heat_output = self.private_ip_output_key
|
||||
|
||||
LOG.debug("Using heat_output: %s", self.heat_output)
|
||||
|
@ -57,7 +57,7 @@ class MasterAddressOutputMapping(ServerAddressOutputMapping):
|
||||
'swarm_secondary_masters_private']
|
||||
|
||||
def set_output(self, stack, cluster_template, cluster):
|
||||
if not cluster_template.floating_ip_enabled:
|
||||
if not cluster.floating_ip_enabled:
|
||||
self.heat_output = self.private_ip_output_key
|
||||
|
||||
LOG.debug("Using heat_output: %s", self.heat_output)
|
||||
@ -76,7 +76,7 @@ class NodeAddressOutputMapping(ServerAddressOutputMapping):
|
||||
private_ip_output_key = 'swarm_nodes_private'
|
||||
|
||||
def set_output(self, stack, cluster_template, cluster):
|
||||
if not cluster_template.floating_ip_enabled:
|
||||
if not cluster.floating_ip_enabled:
|
||||
self.heat_output = self.private_ip_output_key
|
||||
|
||||
LOG.debug("Using heat_output: %s", self.heat_output)
|
||||
|
@ -369,6 +369,7 @@ class BaseK8sTemplateDefinitionTestCase(base.TestCase):
|
||||
mock_stack.to_dict.return_value = {'outputs': outputs}
|
||||
mock_cluster_template = mock.MagicMock()
|
||||
mock_cluster_template.floating_ip_enabled = floating_ip_enabled
|
||||
self.mock_cluster.floating_ip_enabled = floating_ip_enabled
|
||||
|
||||
definition.update_outputs(mock_stack, mock_cluster_template,
|
||||
self.mock_cluster)
|
||||
@ -1633,6 +1634,7 @@ class AtomicSwarmModeTemplateDefinitionTestCase(base.TestCase):
|
||||
mock_stack.to_dict.return_value = {'outputs': outputs}
|
||||
mock_cluster_template = mock.MagicMock()
|
||||
mock_cluster_template.floating_ip_enabled = floating_ip_enabled
|
||||
self.mock_cluster.floating_ip_enabled = floating_ip_enabled
|
||||
|
||||
definition.update_outputs(mock_stack, mock_cluster_template,
|
||||
self.mock_cluster)
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Fix an issue with private clusters getting stuck in CREATE_IN_PROGRESS
|
||||
status where floating_ip_enabled=True in the cluster template but this is
|
||||
disabled when the cluster is created.
|
Loading…
x
Reference in New Issue
Block a user