Generalize VirtualBoxVolume, introduce QEMUVolume

This commit is contained in:
Anders Ingemann 2013-12-28 14:01:34 +01:00
parent 61b5dd2ef0
commit 51041f6aa2
3 changed files with 18 additions and 6 deletions

View file

@ -3,7 +3,7 @@
def load_volume(data):
from common.fs.loopbackvolume import LoopbackVolume
from providers.ec2.ebsvolume import EBSVolume
from providers.virtualbox.volume import VirtualBoxVolume
from common.fs.virtualdiskimage import VirtualDiskImage
from partitionmaps.gpt import GPTPartitionMap
from partitionmaps.mbr import MBRPartitionMap
from partitionmaps.none import NoPartitions
@ -14,7 +14,7 @@ def load_volume(data):
partition_map = partition_maps.get(data['partitions']['type'])(data['partitions'])
volume_backings = {'raw': LoopbackVolume,
's3': LoopbackVolume,
'vdi': VirtualBoxVolume,
'vdi': VirtualDiskImage,
'ebs': EBSVolume
}
return volume_backings.get(data['backing'])(partition_map)

View file

@ -4,13 +4,11 @@ from common.tools import log_check_call
from common.fs import get_partitions
class VirtualBoxVolume(LoopbackVolume):
extension = 'vdi'
class QEMUVolume(LoopbackVolume):
def _before_create(self, e):
self.image_path = e.image_path
log_check_call(['/usr/bin/qemu-img', 'create', '-f', 'vdi', self.image_path, str(self.size) + 'M'])
log_check_call(['/usr/bin/qemu-img', 'create', '-f', self.qemu_format, self.image_path, str(self.size) + 'M'])
def _check_nbd_module(self):
from base.fs.partitionmaps.none import NoPartitions

View file

@ -0,0 +1,14 @@
from common.fs.qemuvolume import QEMUVolume
class VirtualDiskImage(QEMUVolume):
extension = 'vdi'
qemu_format = 'vdi'
ovf_uri = None
def get_uuid(self):
import uuid
with open(self.image_path) as image:
image.seek(392)
return uuid.UUID(bytes_le=image.read(16))