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.