Change in vdsm[master]: fix: block path fixes

alitke at redhat.com alitke at redhat.com
Wed May 4 15:22:46 UTC 2016


Adam Litke has uploaded a new change for review.

Change subject: fix: block path fixes
......................................................................

fix: block path fixes

Change-Id: Id68197ef3fb61d16c1130cec1d4d0f384d2e30b7
Signed-off-by: Adam Litke <alitke at redhat.com>
---
M tests/storagetestlib.py
M vdsm/storage/sdm/volume_artifacts.py
2 files changed, 28 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/58/57058/1

diff --git a/tests/storagetestlib.py b/tests/storagetestlib.py
index 39453bb..bfbc9d1 100644
--- a/tests/storagetestlib.py
+++ b/tests/storagetestlib.py
@@ -93,6 +93,7 @@
         sduuid = str(uuid.uuid4())
     if devices is None:
         devices = get_random_devices()
+    spuuid = str(uuid.uuid4())
 
     fake_lvm.createVG(sduuid, devices, blockSD.STORAGE_DOMAIN_TAG,
                       blockSD.VG_METADATASIZE)
@@ -104,7 +105,7 @@
     fake_lvm.createLV(sduuid, blockSD.MASTERLV, blockSD.MASTERLV_SIZE)
 
     # We'll store the domain metadata in the VG's tags
-    metadata = make_sd_metadata(sduuid)
+    metadata = make_sd_metadata(sduuid, pools=[spuuid])
     assert(metadata[sd.DMDK_VERSION] >= 3)  # Tag based MD is V3 and above
     tag_md = blockSD.TagBasedSDMetadata(sduuid)
     tag_md.update(metadata)
@@ -112,11 +113,17 @@
     manifest = blockSD.BlockStorageDomainManifest(sduuid, tag_md)
     manifest.mountpoint = os.path.join(tmpdir, sd.DOMAIN_MNT_POINT,
                                        sd.BLOCKSD_DIR)
-    manifest.domaindir = tmpdir
-    os.makedirs(os.path.join(manifest.domaindir, sduuid, sd.DOMAIN_IMAGES))
+    manifest.domaindir = os.path.join(manifest.mountpoint, sduuid)
+    os.makedirs(os.path.join(manifest.domaindir, sd.DOMAIN_IMAGES))
 
-    # Make the mountpoint directory structure
-    os.makedirs(os.path.join(manifest.mountpoint, sduuid, sd.DOMAIN_IMAGES))
+    # Make the repo directory structure
+    repo_pool_dir = os.path.join(tmpdir, spuuid)
+    os.mkdir(repo_pool_dir)
+    os.symlink(manifest.domaindir, os.path.join(repo_pool_dir, sduuid))
+    print ("symlink target: %s link name: %s" % (manifest.domaindir, os.path.join(repo_pool_dir, sduuid)))
+
+    # repo_dir = os.path.join(tmpdir, spuuid, sduuid)
+    # os.makedirs(os.path.join(manifest.mountpoint, sduuid, sd.DOMAIN_IMAGES))
     return manifest
 
 
diff --git a/vdsm/storage/sdm/volume_artifacts.py b/vdsm/storage/sdm/volume_artifacts.py
index 128d289..c99929a 100644
--- a/vdsm/storage/sdm/volume_artifacts.py
+++ b/vdsm/storage/sdm/volume_artifacts.py
@@ -60,7 +60,7 @@
 )
 
 from vdsm import qemuimg
-from storage import blockVolume, lvm, volume
+from storage import blockVolume, image, lvm, volume
 
 
 class VolumeArtifacts(object):
@@ -383,7 +383,10 @@
 
     @property
     def volume_path(self):
-        return lvm.lvPath(self.sd_manifest.sdUUID, self.vol_id)
+        #return lvm.lvPath(self.sd_manifest.sdUUID, self.vol_id)
+        im = image.ImageManifest(self.sd_manifest.getRepoPath())
+        image_dir = im.getImageDir(self.sd_manifest.sdUUID, self.img_id)
+        return os.path.join(image_dir, self.vol_id)
 
     def create(self, size, vol_format, disk_type, desc, parent=None,
                initial_size=None):
@@ -401,6 +404,7 @@
         lv_size = self.vol_class.calculate_volume_alloc_size(
             prealloc, size_blk, initial_size_blk)
         self._create_lv_artifact(parent, lv_size)
+        self._create_image_path()
         meta_slot = self._acquire_metadata_slot()
         self._create_metadata(meta_slot, size, vol_format, prealloc, disk_type,
                               desc, parent)
@@ -459,6 +463,16 @@
         lvm.createLV(self.sd_manifest.sdUUID, self.vol_id, lv_size,
                      activate=True, initialTags=tags)
 
+    def _create_image_path(self):
+        im = image.ImageManifest(self.sd_manifest.getRepoPath())
+        image_dir = im.getImageDir(self.sd_manifest.sdUUID, self.img_id)
+        if not os.path.isdir(image_dir):
+            self.log.info("Create placeholder %s for image's volumes",
+                          image_dir)
+            os.mkdir(image_dir)
+        os.symlink(lvm.lvPath(self.sd_manifest.sdUUID, self.vol_id),
+                   self.volume_path)
+
     def _acquire_metadata_slot(self):
         sd_id = self.sd_manifest.sdUUID
         with self.sd_manifest.acquireVolumeMetadataSlot(


-- 
To view, visit https://gerrit.ovirt.org/57058
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id68197ef3fb61d16c1130cec1d4d0f384d2e30b7
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Adam Litke <alitke at redhat.com>


More information about the vdsm-patches mailing list