Add Support for Custom TripleO Validations
Adding new validations or consuming the latest ones is inconvenient and error-prone in the current setup. Co-Authored-By: Ana Krivokapic <akrivoka@redhat.com> Change-Id: I7f0c951ec5207d1c8f2a2c871983512cf3c0fee5
This commit is contained in:
parent
e096440a79
commit
90f0b3d093
160
specs/rocky/custom-validations.rst
Normal file
160
specs/rocky/custom-validations.rst
Normal file
@ -0,0 +1,160 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
==========================================
|
||||
Add Support for Custom TripleO Validations
|
||||
==========================================
|
||||
|
||||
https://blueprints.launchpad.net/tripleo/+spec/custom-validations
|
||||
|
||||
All validations are currently stored in a single directory. This makes
|
||||
it inconvenient to try and write new validations, update from a remote
|
||||
repository or to add an entirely new (perhaps private) source.
|
||||
|
||||
|
||||
Problem Description
|
||||
===================
|
||||
|
||||
* The deployer wants to develop and test their own validations in a
|
||||
personal checkout without risking changes to the default ones.
|
||||
|
||||
* The deployer wants to use a stable release of TripleO but consume
|
||||
the latest validations because they are non-disruptive and check for
|
||||
more stuff.
|
||||
|
||||
* A third party has developed validations specific to their product
|
||||
that they don't want to or can't include in the tripleo-validations
|
||||
repository.
|
||||
|
||||
|
||||
|
||||
Proposed Change
|
||||
===============
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
We will store a default set of TripleO validations in a Swift container called
|
||||
``tripleo-validations``. These will be shared across all plans and are not
|
||||
expected to be updated by the deployer. This container should be created on
|
||||
initial undercloud deployment.
|
||||
|
||||
We will provide a mechanism for deployers to add a custom set of validations
|
||||
per deployment plan. These plan-specific validations will be stored in a
|
||||
``custom-validations`` subdirectory in the plan's Swift container. Storing them
|
||||
together with the plan makes sense as these validations can be specific to
|
||||
particular deployment plan configuration, as well as makes the import/export
|
||||
easier.
|
||||
|
||||
Since custom validation will be stored as part of the plan, no additional
|
||||
workflows/actions to perform CRUD operations for them will be necessary; we can
|
||||
simply use the existing plan create/update for this purpose.
|
||||
|
||||
The validation Mistral actions (e.g. ``list`` and ``run_validation``)
|
||||
will need to be updated to take into account this new structure of
|
||||
validations. They will need to look for validations in the
|
||||
``tripleo-validations`` Swift container (for default validations) and the
|
||||
plan's ``custom-validations`` subdirectory (for custom validations), instead of
|
||||
sourcing them from a directory on disk, as they are doing now.
|
||||
|
||||
If a validation with the same name is found both in default in custom
|
||||
validations, we will always pick the one stored in custom validations.
|
||||
|
||||
.. note:: As a further iteration, we can implement validations as per-service
|
||||
tasks in standalone service Ansible roles. They can then be consumed
|
||||
by tripleo-heat-templates service templates.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
* Do nothing. The deployers can already bring in additional
|
||||
validations, it's just less convenient and potentially error-prone.
|
||||
|
||||
* We could provide a know directory structure conceptually similar to
|
||||
``run-parts`` where the deployers could add their own validation
|
||||
directories.
|
||||
|
||||
|
||||
Security Impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Other End User Impact
|
||||
---------------------
|
||||
|
||||
In order to add their own validations, the deployer will need to
|
||||
update the deployment plan by adding a ``custom-validations`` directory to it,
|
||||
and making sure this directory contains the desired custom validations. The
|
||||
plan update operation is already supported in the CLI and the UI.
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
Since the validation sources will now be Swift containers, downloading
|
||||
validations will potentially be necessary on each run. We will have to keep an
|
||||
eye on this an potentially introduce caching if this turns out to be a problem.
|
||||
|
||||
Other Deployer Impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Developer Impact
|
||||
----------------
|
||||
|
||||
Testing and developing new validations in both development and
|
||||
production environments will be easier with this change.
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignees:
|
||||
* akrivoka
|
||||
|
||||
Other contributors:
|
||||
* florianf
|
||||
|
||||
Work Items
|
||||
----------
|
||||
* Move to using Swift as default storage for tripleo-validations ([1]_).
|
||||
|
||||
* Update ``load_validations`` and ``find_validation`` functions to
|
||||
read validations from all the sources specified in this document.
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
In order to be able to implement this new functionality, we first need to have
|
||||
the validations use Swift as the default storage. In other words, this spec
|
||||
depends on the blueprint [1]_.
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
The changes will be unit-tested in all the tripleo repos that related
|
||||
changes land in (tripleo-common, instack-undercloud, tripleo-heat-templates,
|
||||
etc).
|
||||
|
||||
We could also add a new CI scenario that would have a custom-validations
|
||||
directory within a plan set up.
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
We will need to document the format of the new custom-validations plan
|
||||
subdirectory and the new behaviour this will introduce.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
.. [1] https://blueprints.launchpad.net/tripleo/+spec/store-validations-in-swift
|
Loading…
Reference in New Issue
Block a user