Consolidate FS-style libvirt drivers

Registered by Matt Riedemann on 2015-06-16

The NFS, GlusterFS, SMBFS, and Quobyte libvirt volume drivers are all very similar.

I want to extract a common base class that abstracts some of the common code and then let the sub-classes provide overrides where necessary.

There is a *mount_point_base option per libvirt FS driver and it would be nice to consolidate those into a single option but that's not possible given that cinder can be configured to have multiple volume backends, so nova-compute must also be configurable to talk to those different backends.

As part of this work, move the volume-specific stuff under nova/virt/libvirt/ to a nova/virt/libvirt/volume subdirectory.

I checked the os-brick change [1] proposed to nova to see if there would be any conflicts there and so far that's not touching any of these classes so seems like they could be worked in parallel.

[1] https://review.openstack.org/#/c/175569/

Blueprint information

Status:
Complete
Approver:
John Garbutt
Priority:
Low
Drafter:
Matt Riedemann
Direction:
Approved
Assignee:
Matt Riedemann
Definition:
Approved
Series goal:
Accepted for liberty
Implementation:
Implemented
Milestone target:
milestone icon 12.0.0
Started by
Michael Still on 2015-06-18
Completed by
Matt Riedemann on 2015-08-11

Related branches

Sprints

Whiteboard

Mailing list discussion here:

http://lists.openstack.org/pipermail/openstack-dev/2015-June/067187.html

Gerrit topic: https://review.openstack.org/#q,topic:bp/consolidate-libvirt-fs-volume-drivers,n,z

Addressed by: https://review.openstack.org/193195
    libvirt: move lvm/dmcrypt/rbd_utils modules under storage subdir

Addressed by: https://review.openstack.org/193223
    libvirt: move volume/remotefs/quobyte modules under volume subdir

Addressed by: https://review.openstack.org/193236
    libvirt: move the LibvirtQuobyteVolumeDriver into the quobyte module

Addressed by: https://review.openstack.org/193240
    libvirt: move the LibvirtGPFSVolumeDriver into it's own module

Addressed by: https://review.openstack.org/193249
    libvirt: move the LibvirtScalityVolumeDriver into it's own module

Addressed by: https://review.openstack.org/193278
    libvirt: move LibvirtFibreChannelVolumeDriver into it's own module

Addressed by: https://review.openstack.org/193317
    libvirt: move fibre channel specific utilities into fc module

Addressed by: https://review.openstack.org/193380
    libvirt: move LibvirtGlusterfsVolumeDriver into it's own module

Addressed by: https://review.openstack.org/196276
    libvirt: move LibvirtAOEVolumeDriver into it's own module

Addressed by: https://review.openstack.org/196380
    libvirt: move LibvirtSMBFSVolumeDriver into it's own module

Addressed by: https://review.openstack.org/196859
    libvirt: move LibvirtNFSVolumeDriver into it's own module

Addressed by: https://review.openstack.org/197311
    libvirt: move LibvirtISERVolumeDriver into it's own module

Addressed by: https://review.openstack.org/197341
    libvirt: move LibvirtNETVolumeDriver into it's own module

Addressed by: https://review.openstack.org/202301
    libvirt: move LibvirtISCSIVolumeDriver into it's own module

Addressed by: https://review.openstack.org/202777
    Introduce LibvirtBaseFileSystemVolumeDriver

Addressed by: https://review.openstack.org/202778
    libvirt: convert NFS volume driver to LibvirtBaseFileSystemVolumeDriver

Addressed by: https://review.openstack.org/202779
    libvirt: convert SMBFS vol driver to LibvirtBaseFileSystemVolumeDriver

Addressed by: https://review.openstack.org/202780
    libvirt: convert GlusterFS driver to LibvirtBaseFileSystemVolumeDriver

Addressed by: https://review.openstack.org/202781
    libvirt: convert GPFS volume driver to LibvirtBaseFileSystemVolumeDriver

Addressed by: https://review.openstack.org/202782
    libvirt: convert Quobyte driver to LibvirtBaseFileSystemVolumeDriver

Addressed by: https://review.openstack.org/202783
    libvirt: convert Scality vol driver to LibvirtBaseFileSystemVolumeDriver

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.