Graph Based Upgrades
Take advantage of Fuel's graph execution engine for upgrade purposes. Change-Id: I72b24cc7f50512d6bcf095452d61ede2dde01694
This commit is contained in:
parent
5132c27f1d
commit
77e5cc5b06
|
@ -0,0 +1,237 @@
|
||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
==========================================
|
||||||
|
Graph Based Upgrades
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/fuel/+spec/graph-based-upgrade
|
||||||
|
|
||||||
|
This spec aims to improve Octane by making use of Fuel's graph execution engine
|
||||||
|
to run upgrade-related commands and procedures.
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
Problem description
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Currently, Octane executes upgrade-related commands on cluster nodes
|
||||||
|
via SSH. This is not the best way to handle upgrades, given the
|
||||||
|
capability to execute custom graphs on both new and old environments.
|
||||||
|
This will allow to enhance upgrade experience in following ways:
|
||||||
|
- More consistent with Fuel way of logging of upgrade commands
|
||||||
|
- Utilization of existing graph execution framework for upgrades
|
||||||
|
- Puppet usage for upgrade tasks (where it is possible to do so)
|
||||||
|
|
||||||
|
----------------
|
||||||
|
Proposed changes
|
||||||
|
----------------
|
||||||
|
|
||||||
|
For each upgrade action, there will be one optional CLI argument:
|
||||||
|
--with-graph, which will enforce graph-based approach to said
|
||||||
|
operation.
|
||||||
|
|
||||||
|
Graphs and puppet manifests will be stored in the same repository,
|
||||||
|
in "deployment/" directory (similar to fuel-library).
|
||||||
|
|
||||||
|
There will be two types of graphs: "seed" and "orig" for new and old
|
||||||
|
environments respectively.
|
||||||
|
|
||||||
|
Graphs will be uploaded during upgrade action execution.
|
||||||
|
|
||||||
|
Graphs will be uploaded to concrete environments (similar to
|
||||||
|
fuel2 graph upload --env <id> execution)
|
||||||
|
|
||||||
|
|
||||||
|
Web UI
|
||||||
|
======
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Nailgun
|
||||||
|
=======
|
||||||
|
|
||||||
|
This change depends on `converted serializers`_ extension.
|
||||||
|
|
||||||
|
.. _converted serializers: https://github.com/openstack/fuel-nailgun-extension-converted-serializers
|
||||||
|
|
||||||
|
|
||||||
|
Data model
|
||||||
|
----------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
REST API
|
||||||
|
--------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Orchestration
|
||||||
|
=============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
RPC Protocol
|
||||||
|
------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Fuel Client
|
||||||
|
===========
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Plugins
|
||||||
|
=======
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Fuel Library
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
------------
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
Stick with current Octane implementation based on existing Python code.
|
||||||
|
|
||||||
|
--------------
|
||||||
|
Upgrade impact
|
||||||
|
--------------
|
||||||
|
|
||||||
|
All the changes will be introduced into fuel-octane repo.
|
||||||
|
To make use of this feature, the user will have to
|
||||||
|
run all upgrade actions with "--with-graph" flag.
|
||||||
|
|
||||||
|
|
||||||
|
---------------
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Graph-based upgrades require that master node has additional directories
|
||||||
|
configured for rsync remote access:
|
||||||
|
|
||||||
|
- (Read only) /var/www/nailgun/octane_code (contains Puppet-related Octane
|
||||||
|
files)
|
||||||
|
- (Read/write) /var/www/nailgun/octane_data (will hold temporary/backup data
|
||||||
|
from other nodes)
|
||||||
|
|
||||||
|
Note: due to the nature of upgrade process, the second directory may contain
|
||||||
|
sensitive data. Contents of this directory are not to be cleaned automatically.
|
||||||
|
It will be operator's responsibility to remove files with sensitive information
|
||||||
|
from this directory.
|
||||||
|
|
||||||
|
E.g. during upgrade-db step, OpenStack database's contents will be dumped to a
|
||||||
|
file on the original environment's node, synced to /var/www/nailgun/octane_data
|
||||||
|
on the master node and then synced to the seed environment's node.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
---------------
|
||||||
|
End user impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
During upgrade process, user will have an option to
|
||||||
|
execute upgrades with graphs.
|
||||||
|
|
||||||
|
------------------
|
||||||
|
Performance impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
Deployment impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
----------------
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
Infrastructure impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
Documentation impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Documentation will have to be adjusted to mention new
|
||||||
|
"--with-graph" approach to upgrades.
|
||||||
|
|
||||||
|
--------------
|
||||||
|
Implementation
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
===========
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
rsokolkov
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
nikishov-da
|
||||||
|
paulche
|
||||||
|
|
||||||
|
Mandatory design review:
|
||||||
|
akscram
|
||||||
|
vkuklin
|
||||||
|
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
==========
|
||||||
|
|
||||||
|
Implement following commands with graph support:
|
||||||
|
|
||||||
|
- upgrade-db
|
||||||
|
- upgrade-ceph
|
||||||
|
- upgrade-control
|
||||||
|
- preugrade-compute
|
||||||
|
- osd-upgrade
|
||||||
|
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
------------
|
||||||
|
Testing, QA
|
||||||
|
------------
|
||||||
|
|
||||||
|
Existing test cases will adopt graph-based CLI workflow.
|
||||||
|
|
||||||
|
Acceptance criteria
|
||||||
|
===================
|
||||||
|
|
||||||
|
It is possible to successfully execute the upgrade process using task graphs.
|
||||||
|
|
||||||
|
|
||||||
|
----------
|
||||||
|
References
|
||||||
|
----------
|
||||||
|
|
||||||
|
None
|
Loading…
Reference in New Issue