Created attachment 1390844 [details] env_files_and_failures_list.tar.gz Description of problem: Working with a default plan to deploy a basic overcloud deployment with 1 compute and 3 controllers. Making changes in basic deployment breaks the order of passed env files and leads to a failed deployment. Version-Release number of selected component (if applicable): 12 -p 2018-01-16.2 openstack-tripleo-ui-7.4.3-4.el7ost.noarch openstack-tripleo-common-7.6.3-8.el7ost.noarch python-tripleoclient-7.3.3-7.el7ost.noarch openstack-tripleo-heat-templates-7.0.3-21.el7ost.noarch How reproducible: always Steps to Reproduce: 1. Prepare nodes, flavors roles for deployment 2. in Deployment configuration dialog choose Containerized deployment check box, in Others section verify environments/docker-ha.yaml and environments/containers-default-parameters.yaml are chosen, Save and Close 3. Open Plan configuration dialog again and uncheck Base Resources Configuration in General Deployment Options section, Save and close 4. Open Plan configuration dialog again and check-in back Base Resources Configuration in General Deployment Options section, Save and close 5. Attempt to deploy Actual results: Deployemnt fails on Resource CREATE failed: Error: resources.AllNodesDeploySteps.resources.ControllerDeployment_Step3.resources[0]: Deployment to server failed: deploy_status_code: Deployment exited with non-zero status code: 2 Env files passed incorrectly: environments: - path: environments/containers-default-parameters.yaml - path: environments/docker-ha.yaml - path: overcloud-resource-registry-puppet.yaml - path: environments/docker.yaml Expected results: Deployment succeed Environment files passed in correct order: environments: - path: overcloud-resource-registry-puppet.yaml - path: environments/docker.yaml - path: environments/containers-default-parameters.yaml - path: environments/docker-ha.yaml Additional info: correct and incorrect plan env yamls with failures list attached
Fixing this requires update in tripleo-common. UpdateCapabilities class [1] logic needs to be more robust. Currently, client passes a list of environments to enable/disable and the action updates environments list in plan-environment.yaml. The order of environments matters but we want to shield user from having to provide the ordering as it requires in depth knowledge on the contents of environment files. UpdateCapabilities action should calculate new environments list (as does now) and then traverse the capabilities-map.yaml and order the environment files by dependency rules defined in capabilities-map, so that parent environments are first and children environments override these parents. [1] https://github.com/openstack/tripleo-common/blob/master/tripleo_common/actions/heat_capabilities.py#L142
Adjusting component/DFG based on comment 2.
Patch created to meet the requirements outlined in comment 2. @jtomasek, can you review?
*** Bug 1585903 has been marked as a duplicate of this bug. ***
*** Bug 1541722 has been marked as a duplicate of this bug. ***
*** Bug 1516670 has been marked as a duplicate of this bug. ***
Verified in: openstack-tripleo-common-8.6.3-13.el7ost.noarch
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/RHBA-2018:2728