virt: allow for direct mounting of LocalBlockImages

Block backed images, are already presented as block devices, so
LocalBlockImages can be mounted directly instead of being linked
with loopback or nbd to another block device.

Change-Id: I5aae1e293832f7cff7bc00d793bcc86ededf5eec
Closes-bug: #1287754
This commit is contained in:
Andrew Melton
2015-08-20 12:50:13 -07:00
committed by Thomas Maddox
parent 240df42859
commit 0e16afa588
6 changed files with 189 additions and 9 deletions

View File

@@ -0,0 +1,37 @@
# Copyright 2015 Rackspace Hosting, Inc.
#
# 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.
"""Support for mounting block device based images directly."""
from oslo_log import log as logging
from nova.virt.disk.mount import api
LOG = logging.getLogger(__name__)
class BlockMount(api.Mount):
"""Block device backed images do not need to be linked because
they are already exposed as block devices and can be mounted
directly.
"""
mode = 'block'
def get_dev(self):
self.device = self.image.path
self.linked = True
return True
def unget_dev(self):
self.linked = False
self.device = None