Bug 1562546

Summary: FFU: updating stack outputs fails on environments using OS::TripleO::NodeExtraConfig customizations with resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned
Product: Red Hat OpenStack Reporter: Marius Cornea <mcornea>
Component: openstack-tripleo-heat-templatesAssignee: Jose Luis Franco <jfrancoa>
Status: CLOSED ERRATA QA Contact: Gurenko Alex <agurenko>
Severity: urgent Docs Contact:
Priority: urgent    
Version: 13.0 (Queens)CC: dbecker, dmacpher, jfrancoa, lbezdick, mandreou, mbracho, mburns, morazi, rhel-osp-director-maint, sathlang, shardy
Target Milestone: betaKeywords: Reopened, Triaged
Target Release: 13.0 (Queens)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-tripleo-heat-templates-8.0.2-10.el7ost Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-06-27 13:49:35 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Marius Cornea 2018-03-31 21:47:22 UTC
Description of problem:

FFU: updating stack outputs fails on environments using OS::TripleO::NodeExtraConfig customizations with resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned

Version-Release number of selected component (if applicable):
openstack-tripleo-heat-templates-8.0.2-0.20180327213843.f25e2d8.el7ost.noarch

How reproducible:
100%

Steps to Reproduce:

1. Deploy OSP10 with OS::TripleO::NodeExtraConfig customizations
2. Upgrade undercloud to OSP11/12/13
3. Update heat stack output with:

openstack overcloud deploy --templates /usr/share/openstack-tripleo-heat-templates \
--overcloud-ssh-user admin \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-management.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml \
-e ~/openstack_deployment/environments/centralci-prod-customisations.yaml \
-e ~/openstack_deployment/environments/nodes.yaml \
-e ~/openstack_deployment/environments/network-environment.yaml \
-e ~/openstack_deployment/environments/disk-layout.yaml \
-e ~/openstack_deployment/environments/scheduler_hints_env.yaml \
-e ~/openstack_deployment/environments/ips-from-pool-all.yaml \
-e ~/openstack_deployment/environments/neutron-settings.yaml \
-e /home/stack/virt/docker-images.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/fast-forward-upgrade.yaml \
-e /home/stack/ffu_repos.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/config-download-environment.yaml \
-e /home/stack/ceph-ansible-env.yaml \


Actual results:
stack update fails with:

(undercloud) [stack@undercloud-0 ~]$ openstack stack failures list overcloud --long
overcloud.Controller.1.NodeExtraConfig:
  resource_type: OS::TripleO::NodeExtraConfig
  physical_resource_id: 5b610778-28e7-442e-ac29-9b53bd3223ce
  status: UPDATE_FAILED
  status_reason: |
    resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned
overcloud.Controller.0.NodeExtraConfig:
  resource_type: OS::TripleO::NodeExtraConfig
  physical_resource_id: d5ab50c3-a6c9-4439-bb46-9963aeba7ea7
  status: UPDATE_FAILED
  status_reason: |
    resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned
overcloud.Controller.2.NodeExtraConfig:
  resource_type: OS::TripleO::NodeExtraConfig
  physical_resource_id: 212a7d09-742f-4ad7-a267-c5e018d446d0
  status: UPDATE_FAILED
  status_reason: |
    resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned
overcloud.Compute.1.NodeExtraConfig:
  resource_type: OS::TripleO::NodeExtraConfig
  physical_resource_id: d770153f-9d78-4993-b812-74e2449c924f
  status: UPDATE_FAILED
  status_reason: |
    resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned
overcloud.Compute.0.NodeExtraConfig:
  resource_type: OS::TripleO::NodeExtraConfig
  physical_resource_id: 3bfafc3a-7de3-43c6-8f8f-8a3ebc9ec7f7
  status: UPDATE_FAILED
  status_reason: |
    resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned
overcloud.CephStorage.1.NodeExtraConfig:
  resource_type: OS::TripleO::NodeExtraConfig
  physical_resource_id: 7d50364e-efd4-4cfa-a551-a4d35f63db55
  status: UPDATE_FAILED
  status_reason: |
    resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned
overcloud.CephStorage.0.NodeExtraConfig:
  resource_type: OS::TripleO::NodeExtraConfig
  physical_resource_id: 5e8e6633-66ff-4624-bc51-c8d8e14c0d7f
  status: UPDATE_FAILED
  status_reason: |
    resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned
overcloud.CephStorage.2.NodeExtraConfig:
  resource_type: OS::TripleO::NodeExtraConfig
  physical_resource_id: c8d211c0-4770-4043-9300-838fd641772b
  status: UPDATE_FAILED
  status_reason: |
    resources.NodeExtraConfig: Property error: resources.PreDeployDeployment.properties: Property name not assigned

Expected results:
stack update succeeds

Additional info:

Comment 3 Lukas Bezdicka 2018-04-11 14:39:31 UTC
  PreDeployDeployment:
    type: OS::Heat::SoftwareDeployment
    properties:
< here you are missing name: "whatever" >
      server: {get_param: server}
      config: {get_resource: PreDeployConfig}

Comment 4 Jose Luis Franco 2018-04-12 05:21:57 UTC
@Marius, have you tried adding the name property as Lukas mentioned? I will close it as this seems a misconfiguration, if it's still occurring after feel free to re-open it.

Comment 5 Marius Cornea 2018-04-12 17:46:09 UTC
(In reply to Jose Luis Franco from comment #4)
> @Marius, have you tried adding the name property as Lukas mentioned? I will
> close it as this seems a misconfiguration, if it's still occurring after
> feel free to re-open it.

I don't think we can consider this a misconfiguration. Deployment passed fine without the name property and also it is how we advertise to apply these kind of customization in the product docs:

https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/10/html/advanced_overcloud_customization/chap-configuration_hooks#sect-Customizing_Overcloud_PreConfiguration_All

This means that environments out there in production are already deployed without the name property in the template. If there is no possible way to cover this issue automatically in code and we go to the documentation route then I think we need to answer these questions:

1. How does the operator know before starting the upgrade that it will fail because of the resource missing the name property. Provide a way to identify all the environments files which require this change.

2. At which point in the upgrade workflow does the operator need to adjust the templates and add the name property?

Ideally I think we should fix this automatically in code to avoid the user doing yet another manual step during the upgrade procedure.

Comment 6 Lukas Bezdicka 2018-04-18 15:20:06 UTC
We need to update docs for this to make sure you always have the name property set in your templates.

Comment 7 Dan Macpherson 2018-04-19 04:20:36 UTC
If this OSP13 only?

Comment 8 Dan Macpherson 2018-04-19 04:30:25 UTC
Also, is there any relevance to the name i.e. do users have to make it something specific?

Comment 9 Steven Hardy 2018-04-25 15:04:26 UTC
I suspect this is because FFU enables the config-download overrides to the *Deployment heat resources e.g:

https://github.com/openstack/tripleo-heat-templates/blob/master/config-download-software.yaml#L5

https://github.com/openstack/tripleo-heat-templates/blob/master/config-download-structured.yaml

the "name" parameter in both of these is mandatory, which I suspect is a bug, if we add a default to each of those files is the problem resolved?

Comment 10 Jose Luis Franco 2018-04-25 15:29:56 UTC
Thank you @Steve, that makes total sense and its a better solution than modifying the documentation, as there are no real changes in the SoftwareDeployment resource properties for queens: https://docs.openstack.org/heat/queens/template_guide/openstack.html#OS::Heat::SoftwareDeployment

Comment 17 errata-xmlrpc 2018-06-27 13:49:35 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2018:2086