Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion scripts/vm/hypervisor/xenserver/xcpserver83/NFSSR.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@
from lock import Lock
import cleanup

try:
# sm >= 3.2.12-18 (e.g. XCP-ng 8.3), where LOCK_TYPE_SR moved to lock.py
from lock import LOCK_TYPE_SR
except ImportError:
# older sm (XenServer and XCP-ng releases prior to the 8.3 SM refactor)
LOCK_TYPE_SR = vhdutil.LOCK_TYPE_SR

CAPABILITIES = ["SR_PROBE","SR_UPDATE", "SR_CACHING", \
"VDI_CREATE","VDI_DELETE","VDI_ATTACH","VDI_DETACH", \
"VDI_UPDATE", "VDI_CLONE","VDI_SNAPSHOT","VDI_RESIZE", \
Expand Down Expand Up @@ -64,7 +71,7 @@ def handles(type):

def load(self, sr_uuid):
self.ops_exclusive = FileSR.OPS_EXCLUSIVE
self.lock = Lock(vhdutil.LOCK_TYPE_SR, self.uuid)
self.lock = Lock(LOCK_TYPE_SR, self.uuid)
self.sr_vditype = SR.DEFAULT_TAP
if 'server' not in self.dconf:
raise xs_errors.XenError('ConfigServerMissing')
Expand Down
32 changes: 25 additions & 7 deletions scripts/vm/hypervisor/xenserver/xenserver84/cloud-plugin-storage
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@ if os.path.exists("/usr/lib/xcp/sm"):

import SR, VDI, SRCommand, util, lvutil
from util import CommandException
import vhdutil
import shutil
import lvhdutil
import errno
import subprocess
import xs_errors
Expand All @@ -41,6 +39,26 @@ import random
import cloudstack_pluginlib as lib
import logging

try:
# sm >= 3.2.12-18 (e.g. XCP-ng 8.3), where lvhdutil was folded into
# constants/lvmcowutil and vhdutil became a class
from constants import VG_PREFIX, VG_LOCATION
from lvmcowutil import LvmCowUtil
from vhdutil import VhdUtil
_vhdutil = VhdUtil()
lvhdutil_extractUuid = LvmCowUtil.extractUuid
vhdutil_getParent = _vhdutil.getParent
vhdutil_getVHDInfoLVM = _vhdutil.getInfoFromLVM
except ImportError:
# older sm (XenServer and XCP-ng releases prior to the 8.3 SM refactor)
import vhdutil
import lvhdutil
VG_PREFIX = lvhdutil.VG_PREFIX
VG_LOCATION = lvhdutil.VG_LOCATION
lvhdutil_extractUuid = lvhdutil.extractUuid
vhdutil_getParent = vhdutil.getParent
vhdutil_getVHDInfoLVM = vhdutil.getVHDInfoLVM

lib.setup_logging("/var/log/cloud/cloud.log")

VHDUTIL = "vhd-util"
Expand All @@ -58,8 +76,8 @@ def echo(fn):

def getPrimarySRPath(primaryStorageSRUuid, isISCSI):
if isISCSI:
primarySRDir = lvhdutil.VG_PREFIX + primaryStorageSRUuid
return os.path.join(lvhdutil.VG_LOCATION, primarySRDir)
primarySRDir = VG_PREFIX + primaryStorageSRUuid
return os.path.join(VG_LOCATION, primarySRDir)
else:
return os.path.join(SR.MOUNT_BASE, primaryStorageSRUuid)

Expand Down Expand Up @@ -158,7 +176,7 @@ def scanParent(path):
lvName = os.path.basename(path)
dirname = os.path.dirname(path)
vgName = os.path.basename(dirname)
vhdInfo = vhdutil.getVHDInfoLVM(lvName, lvhdutil.extractUuid, vgName)
vhdInfo = vhdutil_getVHDInfoLVM(lvName, lvhdutil_extractUuid, vgName)
parentUUID = vhdInfo.parentUuid
except:
errMsg = "Could not get vhd parent of " + path
Expand All @@ -184,9 +202,9 @@ def getParent(path, isISCSI):
parentUUID = ''
try :
if isISCSI:
parentUUID = vhdutil.getParent(path, lvhdutil.extractUuid)
parentUUID = vhdutil_getParent(path, lvhdutil_extractUuid)
else:
parentUUID = vhdutil.getParent(path, cleanup.FileVDI.extractUuid)
parentUUID = vhdutil_getParent(path, cleanup.FileVDI.extractUuid)
except:
errMsg = "Could not get vhd parent of " + path
logging.debug(errMsg)
Expand Down
42 changes: 32 additions & 10 deletions scripts/vm/hypervisor/xenserver/xenserver84/vmopsSnapshot
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@ if os.path.exists("/usr/lib/xcp/sm"):

import SR, VDI, SRCommand, util, lvutil
from util import CommandException
import vhdutil
import shutil
import lvhdutil
import errno
import subprocess
import xs_errors
Expand All @@ -41,6 +39,30 @@ import random
import cloudstack_pluginlib as lib
import logging

try:
# sm >= 3.2.12-18 (e.g. XCP-ng 8.3), where lvhdutil was folded into
# constants/lvmcowutil and vhdutil became a class
from constants import VG_PREFIX, VG_LOCATION
from lvmcowutil import LvmCowUtil
from vhdutil import VhdUtil
_vhdutil = VhdUtil()
lvhdutil_extractUuid = LvmCowUtil.extractUuid
vhdutil_getParent = _vhdutil.getParent
vhdutil_getVHDInfoLVM = _vhdutil.getInfoFromLVM
vhdutil_getSizePhys = _vhdutil.getSizePhys
vhdutil_setHidden = _vhdutil.setHidden
except ImportError:
# older sm (XenServer and XCP-ng releases prior to the 8.3 SM refactor)
import vhdutil
import lvhdutil
VG_PREFIX = lvhdutil.VG_PREFIX
VG_LOCATION = lvhdutil.VG_LOCATION
lvhdutil_extractUuid = lvhdutil.extractUuid
vhdutil_getParent = vhdutil.getParent
vhdutil_getVHDInfoLVM = vhdutil.getVHDInfoLVM
vhdutil_getSizePhys = vhdutil.getSizePhys
vhdutil_setHidden = vhdutil.setHidden

lib.setup_logging("/var/log/cloud/cloud.log")

VHDUTIL = "vhd-util"
Expand Down Expand Up @@ -242,7 +264,7 @@ def scanParent(path):
lvName = os.path.basename(path)
dirname = os.path.dirname(path)
vgName = os.path.basename(dirname)
vhdInfo = vhdutil.getVHDInfoLVM(lvName, lvhdutil.extractUuid, vgName)
vhdInfo = vhdutil_getVHDInfoLVM(lvName, lvhdutil_extractUuid, vgName)
parentUUID = vhdInfo.parentUuid
except:
errMsg = "Could not get vhd parent of " + path
Expand All @@ -254,9 +276,9 @@ def getParent(path, isISCSI):
parentUUID = ''
try :
if isISCSI:
parentUUID = vhdutil.getParent(path, lvhdutil.extractUuid)
parentUUID = vhdutil_getParent(path, lvhdutil_extractUuid)
else:
parentUUID = vhdutil.getParent(path, cleanup.FileVDI.extractUuid)
parentUUID = vhdutil_getParent(path, cleanup.FileVDI.extractUuid)
except:
errMsg = "Could not get vhd parent of " + path
logging.debug(errMsg)
Expand Down Expand Up @@ -392,8 +414,8 @@ def unmountSnapshotsDir(session, args):

def getPrimarySRPath(primaryStorageSRUuid, isISCSI):
if isISCSI:
primarySRDir = lvhdutil.VG_PREFIX + primaryStorageSRUuid
return os.path.join(lvhdutil.VG_LOCATION, primarySRDir)
primarySRDir = VG_PREFIX + primaryStorageSRUuid
return os.path.join(VG_LOCATION, primarySRDir)
else:
return os.path.join(SR.MOUNT_BASE, primaryStorageSRUuid)

Expand Down Expand Up @@ -507,7 +529,7 @@ def getSnapshotSize(session, args):

snapshotVHD = getVHD(snapshotUuid, isISCSI)
snapshotPath = os.path.join(primarySRPath, snapshotVHD)
physicalSize = vhdutil.getSizePhys(snapshotPath)
physicalSize = vhdutil_getSizePhys(snapshotPath)
return str(physicalSize)

def backupSnapshot(session, args):
Expand Down Expand Up @@ -537,7 +559,7 @@ def backupSnapshot(session, args):
prevBackupUuid = prevBackupUuid.split("/")[-1]
# Check existence of snapshot on primary storage
isfile(baseCopyPath, isISCSI)
physicalSize = vhdutil.getSizePhys(baseCopyPath)
physicalSize = vhdutil_getSizePhys(baseCopyPath)
if prevBackupUuid:
# Check existence of prevBackupFile
prevBackupVHD = getBackupVHD(prevBackupUuid)
Expand All @@ -549,7 +571,7 @@ def backupSnapshot(session, args):
backupFile = os.path.join(backupsDir, backupVHD)
logging.debug("Back up " + baseCopyUuid + " to Secondary Storage as " + backupUuid)
copyfile(baseCopyPath, backupFile, isISCSI)
vhdutil.setHidden(backupFile, False)
vhdutil_setHidden(backupFile, False)

# Because the primary storage is always scanned, the parent of this base copy is always the first base copy.
# We don't want that, we want a chain of VHDs each of which is a delta from the previous.
Expand Down
Loading