From fdb1cc19196ea7345ef933aedddf893fbf89a14e Mon Sep 17 00:00:00 2001 From: Max Lobur Date: Tue, 9 Feb 2016 20:08:34 +0200 Subject: [PATCH] Add rsync image deployment spec Change-Id: Iaac1c6ecf027c05ae352c67a62b90ed90f0b0d27 --- specs/rsync-image-deployment.rst | 87 ++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 specs/rsync-image-deployment.rst diff --git a/specs/rsync-image-deployment.rst b/specs/rsync-image-deployment.rst new file mode 100644 index 0000000..70f5564 --- /dev/null +++ b/specs/rsync-image-deployment.rst @@ -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 --deploy_driver + +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.