Merge "Skip deployments with no uuid" into stable/queens

This commit is contained in:
Zuul 2019-02-18 23:03:03 +00:00 committed by Gerrit Code Review
commit fe1d9ef4c9
2 changed files with 68 additions and 0 deletions

View File

@ -396,3 +396,56 @@ class TestConfig(base.TestCase):
self.assertEqual(1, len(w))
assert issubclass(w[-1].category, DeprecationWarning)
assert "group:os-apply-config is deprecated" in str(w[-1].message)
@patch('tripleo_common.utils.config.Config.get_config_dict')
@patch('tripleo_common.utils.config.Config.get_deployment_data')
def test_config_download_no_deployment_uuid(self, mock_deployment_data,
mock_config_dict):
heat = mock.MagicMock()
self.config = ooo_config.Config(heat)
stack = mock.MagicMock()
heat.stacks.get.return_value = stack
stack.outputs = [
{'output_key': 'RoleNetHostnameMap',
'output_value': {
'Controller': {
'ctlplane': [
'overcloud-controller-0.ctlplane.localdomain']},
'Compute': {
'ctlplane': [
'overcloud-novacompute-0.ctlplane.localdomain',
'overcloud-novacompute-1.ctlplane.localdomain',
'overcloud-novacompute-2.ctlplane.localdomain']}}},
{'output_key': 'ServerIdData',
'output_value': {
'server_ids': {
'Controller': [
'00b3a5e1-5e8e-4b55-878b-2fa2271f15ad'],
'Compute': [
'a7db3010-a51f-4ae0-a791-2364d629d20d',
'8b07cd31-3083-4b88-a433-955f72039e2c',
'169b46f8-1965-4d90-a7de-f36fb4a830fe']}}},
{'output_key': 'RoleGroupVars',
'output_value': {
'Controller': {
'any_errors_fatal': 'yes',
'max_fail_percentage': 15},
'Compute': {
'any_errors_fatal': 'yes',
'max_fail_percentage': 15},
}}]
deployment_data, configs = self._get_config_data('config_data.yaml')
# Set the deployment to TripleOSoftwareDeployment for the first
# deployment
deployment_data[0].attributes['value']['deployment'] = \
'TripleOSoftwareDeployment'
self.configs = configs
mock_deployment_data.return_value = deployment_data
mock_config_dict.side_effect = self._get_config_dict
self.tmp_dir = self.useFixture(fixtures.TempDir()).path
with warnings.catch_warnings(record=True) as w:
self.config.download_config(stack, self.tmp_dir)
assert "Skipping deployment" in str(w[-1].message)

View File

@ -215,6 +215,21 @@ class Config(object):
server_roles = {}
for deployment in deployments_data:
# Check if the deployment value is the resource name. If that's the
# case, Heat did not create a physical_resource_id for this
# deployment since it does not trigger on this stack action. Such
# as a deployment that only triggers on DELETE, but this is a stack
# create. If that's the case, just skip this deployment, otherwise
# it will result in a Not found error if we try and query the
# deployment API for this deployment.
if deployment.attributes['value'].get('deployment') == \
'TripleOSoftwareDeployment':
warnings.warn('Skipping deployment %s because it has no '
'valid uuid (physical_resource_id) '
'associated.' %
deployment.physical_resource_id)
continue
server_id = deployment.attributes['value']['server']
config_dict = self.get_config_dict(deployment)