On 12.6.2017 10:55, Dmitry Tantsur wrote:
On 06/09/2017 05:24 PM, Alex Schultz wrote:
I wanted to bring to your attention that we've merged the change to
add a basic set of roles that can be combined to create your own
rolesdata.yaml as needed. With this change the rolesdata.yaml and
rolesdataundercloud.yaml files in THT should not be changed by hand.
Instead if you have an update to a role, please update the appropriate
roles/.yaml file. I have proposed a change to THT with additional
tools to validate that the roles/.yaml files are updated and that
there are no unaccounted for roles_data.yaml changes. Additionally
this change adds in a new tox target to assist in the generate of
these basic roles data files that we provide.
Ideally I would like to get rid of the rolesdata.yaml and
rolesdata_undercloud.yaml so that the end user doesn't have to
generate this file at all but that won't happen this cycle. In the
mean time, additional documentation around how to work with roles has
been added to the roles README.
Hi, this is awesome! Do we expect more example roles to be added? E.g.
I could add a role for a reference Ironic Conductor node.
Hi, thanks for doing great work in this and bringing up the topic!
I'd like to point out one problem which we've been dealing with for
quite a while now which is TripleO UI and CLI interoperability. The main
reason why we introduced Mistral 'TripleO' API is to consolidate the
business logic to single place which will be used by all TripleO
clients, so all will use the same codebase and not diverge. This has
been established and agreed on quite a long time ago but it occurs that
the problem of diverging the codebases still creeps in.
Main problem is that CLI (unlike all other clients) still tends to
operate on local files rather than a deployment plan stored in Swift.
Result is that new features which should be implemented in single place
(tripleo-common - Mistral Actions/Worklflows) are implemented twice - in
tripleoclient and (usually later for no real reason) in tripleo-common.
Roles management is exact example. There is a great effort made to
simplifying and managing Roles, but only by CLI, regarless of other
clients need to do the same. This causes us having to maintain 2
codebases which have the same goal, increases development time and other
So my question is: How much effort would it be to change CLI workflow to
operate on plan in Swift rather on local files? What are the pros and
cons? How do we solve the problem of lacking features in tripleo-common?
Recently a changes in tripleo-common have been made which make
operations on Swift plan much simpler. All the data about deployment is
kept in Swift in templates/environment files and plan-environment.yaml
(which replaced mistral environment data structure) so
importing/exporting plan is much simpler now. If CLI leveraged this
functionality, there would not be any need for user to store CLI command
which was used for deployment. All the data are in plan-environment.yaml.
Let's take a look at Roles management example. Alex mentions removing
roles_data.yaml. Yes, there is no need for it. Deployment plan is
pre-created with undercloud install already, so CLI user could list
available roles and use command which sets roles (takes list of roles
names), this calls Mistral action/workflow which stores this selection
in plan-environment.yaml in Swift and regenerates/updates j2 templates.
Same with anything else (add environment files add/modify templates, set
parameters...). Then user just fires 'openstack overcloud deploy' and is
done. In case of need, user can simply export the plan and keep the
files locally to easily recreate same deployment elsewhere.
What are the reasons why CLI could not work this way? Do those outweigh
having to implement and maintain the business logic at two places?