Implement the External Storage Interface
With this commit we introduce the External Storage Interface to Ganeti, abbreviated: ExtStorage Interface. The ExtStorage Interface provides Ganeti with the ability to interact with externally connected shared storage pools, visible by all VM-capable nodes. This means that Ganeti is able to handle VM disks that reside inside a NAS/SAN or any distributed block storage provider. The ExtStorage Interface provides a clear API, heavily inspired by the gnt-os-interface API, that can be used by storage vendors or sysadmins to write simple ExtStorage Providers (correlated to gnt-os-interface's OS Definitions). Those Providers will glue externally attached shared storage with Ganeti, without the need of preprovisioned block devices on Ganeti VM-capable nodes as confined be the current `blockdev' disk template. To do so, we implement a new disk template called `ext' (of type DTS_EXT_MIRROR) that passes control to externally provided scripts (the ExtStorage Provider) for the template's basic functions: create / attach / detach / remove / grow The scripts reside under ES_SEARCH_PATH (correlated to OS_SEARCH_PATH) and only one ExtStorage Provider is supported called `ext'. The disk's logical id is the tuple ('ext', UUID.ext.diskX), where UUID is generated as in disk template `plain' and X is the disk's index. Signed-off-by:Constantinos Venetsanopoulos <cven@grnet.gr> Signed-off-by:
Iustin Pop <iustin@google.com> [iustin@google.com: small simplification in bdev code, pylint fixes] Reviewed-by:
Iustin Pop <iustin@google.com>
Showing
- Makefile.am 1 addition, 0 deletionsMakefile.am
- configure.ac 12 additions, 0 deletionsconfigure.ac
- lib/bdev.py 350 additions, 0 deletionslib/bdev.py
- lib/client/gnt_cluster.py 2 additions, 0 deletionslib/client/gnt_cluster.py
- lib/cmdlib.py 12 additions, 4 deletionslib/cmdlib.py
- lib/constants.py 33 additions, 0 deletionslib/constants.py
- lib/masterd/instance.py 1 addition, 0 deletionslib/masterd/instance.py
- lib/objects.py 19 additions, 2 deletionslib/objects.py
- lib/pathutils.py 2 additions, 0 deletionslib/pathutils.py
- tools/burnin 1 addition, 0 deletionstools/burnin
Loading
Please register or sign in to comment