Merge "Add rsync image deployment spec"

This commit is contained in:
Jenkins 2016-02-24 14:30:48 +00:00 committed by Gerrit Code Review
commit 89b2491e1e

View File

@ -0,0 +1,87 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
======================
Rsync image deployment
======================
https://blueprints.launchpad.net/bareon/+spec/rsync-image-deployment
Problem description
===================
Current version of bareon agent deploys an image on block-device level. Thus
an image can be deployed only to a single partition. Usually the provided
image is a single partition, however it has dirs like /usr or /var inside,
that could map to a provided partition schema. To achieve this on the current
agent we would need to upload multiple images - one per partition.
Proposed change
===============
NOTE: This is a contribution of the feature developed within Cray OpenStack project.
We are trying to make as minimum changes to existing code as possible.
We propose to use rsync to transfer the image to a baremetal node. Rsync server
might be an Ironic Conductor (If Ironic is used), or any other calling server
accessible from the baremetal node. Rsync does file-level copying, thus allows
to deploy an image across partitions. This would also allow incremental
image-updates.
To achieve this we are splitting the new kind of driver - deploy driver:
provision --data-driver <ironic|nailgun> --deploy_driver <swift|rsync>
Deploy driver is basically a manager (on the current code base) converted to a
driver. Abstract driver would include:
::
@abc.abstractmethod
def do_partitioning(self):
@abc.abstractmethod
def do_configdrive(self):
@abc.abstractmethod
def do_copyimage(self):
@abc.abstractmethod
def do_reboot(self):
@abc.abstractmethod
def do_provisioning(self):
And every deploy driver will add their own implementation of these. Currently
we are moving most of the code to base driver, differentiating only do_copyimage
method (rsync VS swift).
Alternatives
------------
None.
Implementation
==============
Assignee(s)
-----------
- max_lobur
Milestones
----------
See blueprint ref above.
Work Items
----------
- rebase onto Bareon master.
Dependencies
============
None.