1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2024-12-24 15:15:22 +00:00

patch for cloning rbd images

This commit is contained in:
Ing. Jan KRCMAR 2018-09-04 15:40:47 +02:00
parent 3b4a1089c3
commit 6486c20168
2 changed files with 28 additions and 1 deletions

View file

@ -1279,6 +1279,8 @@
image = new_vname + "-" + disk_minus_suffix; image = new_vname + "-" + disk_minus_suffix;
} else if (disk_name.lastIndexOf('.') > -1 && disk_dot_suffix.length <= 7) { } else if (disk_name.lastIndexOf('.') > -1 && disk_dot_suffix.length <= 7) {
image = new_vname + "." + disk_dot_suffix image = new_vname + "." + disk_dot_suffix
} else if (new_vname != disk_name) {
image = new_vname
} else { } else {
image = new_vname + '-clone'; image = new_vname + '-clone';
} }

View file

@ -245,7 +245,10 @@ class wvmInstance(wvmConnect):
try: try:
dev = disk.xpath('target/@dev')[0] dev = disk.xpath('target/@dev')[0]
src_fl = disk.xpath('source/@file|source/@dev|source/@name|source/@volume')[0] src_fl = disk.xpath('source/@file|source/@dev|source/@name|source/@volume')[0]
disk_format = disk.xpath('driver/@type')[0] try:
disk_format = disk.xpath('driver/@type')[0]
except:
pass
try: try:
vol = self.get_volume_by_path(src_fl) vol = self.get_volume_by_path(src_fl)
volume = vol.name() volume = vol.name()
@ -719,6 +722,28 @@ class wvmInstance(wvmConnect):
stg = vol.storagePoolLookupByVolume() stg = vol.storagePoolLookupByVolume()
stg.createXMLFrom(vol_clone_xml, vol, meta_prealloc) stg.createXMLFrom(vol_clone_xml, vol, meta_prealloc)
source_protocol = elm.get('protocol')
if source_protocol == 'rbd':
source_name = elm.get('name')
clone_name = "%s/%s" % (os.path.dirname(source_name), target_file)
elm.set('name', clone_name)
vol = self.get_volume_by_path(source_name)
vol_format = util.get_xml_path(vol.XMLDesc(0),
"/volume/target/format/@type")
vol_clone_xml = """
<volume type='network'>
<name>%s</name>
<capacity>0</capacity>
<allocation>0</allocation>
<target>
<format type='%s'/>
</target>
</volume>""" % (target_file, vol_format)
stg = vol.storagePoolLookupByVolume()
stg.createXMLFrom(vol_clone_xml, vol, meta_prealloc)
source_dev = elm.get('dev') source_dev = elm.get('dev')
if source_dev: if source_dev:
clone_path = os.path.join(os.path.dirname(source_dev), target_file) clone_path = os.path.join(os.path.dirname(source_dev), target_file)