You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2026/10/01 15:26:01 UTC
(cloudstack) branch ghi13292-xcpng83-update created (now f2d5e100f3a)
This is an automated email from the ASF dual-hosted git repository.
DaanHoogland pushed a change to branch ghi13292-xcpng83-update
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
at f2d5e100f3a deal with xcpng refactors
This branch includes the following new commits:
new f2d5e100f3a deal with xcpng refactors
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(cloudstack) 01/01: deal with xcpng refactors
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
DaanHoogland pushed a commit to branch ghi13292-xcpng83-update
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit f2d5e100f3ab2b85793d3a2f32267b83765bc190
Author: Daan Hoogland <da...@apache.org>
AuthorDate: Thu Oct 1 17:25:41 2026 +0200
deal with xcpng refactors
---
.../vm/hypervisor/xenserver/xcpserver83/NFSSR.py | 9 ++++-
.../xenserver/xenserver84/cloud-plugin-storage | 32 +++++++++++++----
.../hypervisor/xenserver/xenserver84/vmopsSnapshot | 42 ++++++++++++++++------
3 files changed, 65 insertions(+), 18 deletions(-)
diff --git a/scripts/vm/hypervisor/xenserver/xcpserver83/NFSSR.py b/scripts/vm/hypervisor/xenserver/xcpserver83/NFSSR.py
index 45237e59895..42ca67b3d04 100755
--- a/scripts/vm/hypervisor/xenserver/xcpserver83/NFSSR.py
+++ b/scripts/vm/hypervisor/xenserver/xcpserver83/NFSSR.py
@@ -28,6 +28,13 @@ import vhdutil
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", \
@@ -64,7 +71,7 @@ class NFSSR(FileSR.FileSR):
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')
diff --git a/scripts/vm/hypervisor/xenserver/xenserver84/cloud-plugin-storage b/scripts/vm/hypervisor/xenserver/xenserver84/cloud-plugin-storage
index 670949f8c06..cd9d8bb4713 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver84/cloud-plugin-storage
+++ b/scripts/vm/hypervisor/xenserver/xenserver84/cloud-plugin-storage
@@ -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
@@ -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"
@@ -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)
@@ -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
@@ -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)
diff --git a/scripts/vm/hypervisor/xenserver/xenserver84/vmopsSnapshot b/scripts/vm/hypervisor/xenserver/xenserver84/vmopsSnapshot
index 7f731254abe..e6646bff64f 100644
--- a/scripts/vm/hypervisor/xenserver/xenserver84/vmopsSnapshot
+++ b/scripts/vm/hypervisor/xenserver/xenserver84/vmopsSnapshot
@@ -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
@@ -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"
@@ -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
@@ -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)
@@ -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)
@@ -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):
@@ -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)
@@ -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.