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
(cherry picked from commit 0e58e267d1
)
This commit is contained in:
parent
d75195b3ae
commit
2f656c66a5
|
@ -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)
|
||||
|
@ -1625,6 +1626,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…
Reference in New Issue