Enhance Plan management for TripleO Deployments and Life Cycles

Registered by mathieu bultel

The goal of this feature is to decrease the complexity of the plan management
in TripleO and to add more flexibility for the Life Cycle management by storing
all information from the User in the Plan.

Problem Description
===================
Currently the Plan management is created during the initial deployment.
It contains the users parameters under:

  * user-environments/tripleoclient-parameters.yaml

All the environements details under:

  * plan-environment.yaml

The resource registry under:

  * user-environment.yaml

The user files like SSL certificats under this directory:

  * user-files

At the first call of the Overcloud deploy command, TripleO Client creates a
temporary directory in /tmp on the filesystem and copy the contents of the
templates directory passed by the user with the option --templates.
Then it will create the StackName plan and upload the content of the temporary
templates directory.
The workflow create_deployment_plan is called for handling the container
creation and mainly run the ProcessTemplatesActions, which will rendered the
jinja 2 templates and give it to Heat.

Once this action has been run successfully, the plan stored in swift can be
used for the deployment.
But the Client is calling a function named:
  * _download_missing_files_from_plan
Which aimed to download all the missing rendered Jinja 2 files from the Swift
container.

Then the Client will use this temporary directory to work with, and call Heat
to process the environments files and get the environement parameters.

Once the environments files and the parameters has been updated by Heat client,
the client is calling a function named: _upload_missing_files which aimed to
upload all the files passed by the user outside of the initial templates
direcotry.

Then the deployment via Heat is triggered but without keeping track of the
environments files passed by the User, nor the stage of the life cycle of the
deployment (is it a first deployment ?).

Proposed Change
===============

Overview
--------

The proposed change can be splited in two: first reduce the number of calls
between Swift and the filesystem, second upload all the informations from the
User deploy command into the Plan.

Reducing the number of calls will simplified the way of managing the Plan,
avoid duplicate actions or useless checks.
For the purpose, removing so function in TripleO Client is needed.

Uploading all the informations, mean to store in Swift the custom templates
and environments files outside of the templates directory and stored it under
user-files/ directory in swift.
Adding a new files into user-environments/ directory to write down the life
cycle informations and the environements files arguments passed throught the
TripleO CLI:

  * user-environments/environments.yaml

The file can be append for the Update or Upgrade with the required environment
files.

Addressed by:
https://review.openstack.org/583145

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
mathieu bultel
Direction:
Needs approval
Assignee:
mathieu bultel
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.