diff options
author | Zuul <zuul@review.opendev.org> | 2022-02-24 12:43:08 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-02-24 12:43:08 +0000 |
commit | f9ca5dba14656519360bb8f0e061addf3bafaeb1 (patch) | |
tree | 2416322c4fba79b20e638b4d3cbec14696b78514 /nova/virt/libvirt/volume | |
parent | 26e65c3270ad3b05887b40133f0ea3cdb908c4d7 (diff) | |
parent | b5e2128f3847d444a808a2b0f89e6f1e4ffb77fc (diff) | |
download | nova-f9ca5dba14656519360bb8f0e061addf3bafaeb1.tar.gz |
Merge "Lightbits LightOS driver"
Diffstat (limited to 'nova/virt/libvirt/volume')
-rw-r--r-- | nova/virt/libvirt/volume/lightos.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/nova/virt/libvirt/volume/lightos.py b/nova/virt/libvirt/volume/lightos.py new file mode 100644 index 0000000000..d6d393994e --- /dev/null +++ b/nova/virt/libvirt/volume/lightos.py @@ -0,0 +1,63 @@ +# Copyright (C) 2016-2020 Lightbits Labs Ltd. +# Copyright (C) 2020 Intel Corporation +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import nova.conf +from nova import utils +from nova.virt.libvirt.volume import volume as libvirt_volume +from os_brick import initiator +from os_brick.initiator import connector +from oslo_log import log as logging + + +LOG = logging.getLogger(__name__) +CONF = nova.conf.CONF + + +class LibvirtLightOSVolumeDriver(libvirt_volume.LibvirtVolumeDriver): + """Driver to attach NVMe volumes to libvirt.""" + VERSION = '2.3.12' + + def __init__(self, connection): + super(LibvirtLightOSVolumeDriver, self).__init__(connection) + self.connector = connector.InitiatorConnector.factory( + initiator.LIGHTOS, + root_helper=utils.get_root_helper(), + device_scan_attempts=CONF.libvirt.num_nvme_discover_tries) + + def connect_volume(self, connection_info, instance): + device_info = self.connector.connect_volume(connection_info['data']) + LOG.debug("Connecting NVMe volume with device_info %s", device_info) + connection_info['data']['device_path'] = device_info['path'] + + def disconnect_volume(self, connection_info, instance): + """Detach the volume from the instance.""" + LOG.debug("Disconnecting NVMe disk. instance:%s, volume_id:%s", + connection_info.get("instance", ""), + connection_info.get("volume_id", "")) + self.connector.disconnect_volume(connection_info['data'], None) + super(LibvirtLightOSVolumeDriver, self).disconnect_volume( + connection_info, instance) + + def extend_volume(self, connection_info, instance, requested_size=None): + """Extend the volume.""" + LOG.debug("calling os-brick to extend LightOS Volume." + "instance:%s, volume_id:%s", + connection_info.get("instance", ""), + connection_info.get("volume_id", "")) + new_size = self.connector.extend_volume(connection_info['data']) + LOG.debug("Extend LightOS Volume %s; new_size=%s", + connection_info['data']['device_path'], new_size) + return new_size |