Adam Litke has uploaded a new change for review. Change subject: storage: add get_volume_artifacts_class to the domain manifest ......................................................................
storage: add get_volume_artifacts_class to the domain manifest When working with a domain manifest code needs to know the type of VolumeArtifact class to use. Add helper methods to BlockStorageDomainManifest and FileStorageDomainManifest to return the proper type. This patch expands the scope of volume_artifact_test in order to add the BlockVolumeArtifactsTests class. The added code will all be necessary once more block domain support is added. Change-Id: Iade716f7487f502243aaf280a7a8c147f501307d Signed-off-by: Adam Litke <ali...@redhat.com> --- M tests/volume_artifacts_test.py M vdsm/storage/blockSD.py M vdsm/storage/fileSD.py 3 files changed, 37 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/39/50339/1 diff --git a/tests/volume_artifacts_test.py b/tests/volume_artifacts_test.py index d9edf62..62fae31 100644 --- a/tests/volume_artifacts_test.py +++ b/tests/volume_artifacts_test.py @@ -23,9 +23,11 @@ from contextlib import contextmanager from testlib import VdsmTestCase, namedTemporaryDir -from storagetestlib import make_filesd_manifest +from monkeypatch import MonkeyPatchScope +from storagetestlib import make_filesd_manifest, make_blocksd +from storagefakelib import FakeLVM -from storage import fileSD, fileVolume, image, sd, volume +from storage import blockSD, fileSD, fileVolume, image, sd, volume from storage.sdm import volume_artifacts @@ -35,6 +37,14 @@ class ExpectedFailure(Exception): pass + + +@contextmanager +def fake_block_env(cls=None): + with namedTemporaryDir() as tmpdir: + lvm = FakeLVM(tmpdir) + with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): + yield make_blocksd(tmpdir, lvm) @contextmanager @@ -60,6 +70,11 @@ def failure(*args): raise ExpectedFailure() + + def test_get_volume_artifacts_class(self): + with self.fake_env() as manifest: + self.assertEqual(self.artifacts_class, + manifest.get_volume_artifacts_class()) def test_nonexist(self): with self.fake_env() as manifest: @@ -188,6 +203,18 @@ artifacts.create, *base_raw_params()) +class BlockVolumeArtifactsTests(VdsmTestCase): + # TODO: Inherit from VolumeArtifactsTestsMixin once support is added + + artifacts_class = volume_artifacts.BlockVolumeArtifacts + fake_env = fake_block_env + + def test_get_volume_artifacts_class(self): + with self.fake_env() as manifest: + self.assertEqual(self.artifacts_class, + manifest.get_volume_artifacts_class()) + + class FileVolumeArtifactVisibilityTests(VdsmTestCase): def test_getallimages(self): diff --git a/vdsm/storage/blockSD.py b/vdsm/storage/blockSD.py index 5453a8a..9d5e605 100644 --- a/vdsm/storage/blockSD.py +++ b/vdsm/storage/blockSD.py @@ -40,6 +40,7 @@ import misc import fileUtils import sd +import sdm import lvm import clusterlock import blockVolume @@ -585,6 +586,9 @@ """ return blockVolume.BlockVolumeMetadata + def get_volume_artifacts_class(self): + return sdm.volume_artifacts.BlockVolumeArtifacts + def _getImgExclusiveVols(self, imgUUID, volsImgs): """Filter vols belonging to imgUUID only.""" exclusives = dict((vName, v) for vName, v in volsImgs.iteritems() diff --git a/vdsm/storage/fileSD.py b/vdsm/storage/fileSD.py index 9248c11..00405d7 100644 --- a/vdsm/storage/fileSD.py +++ b/vdsm/storage/fileSD.py @@ -27,6 +27,7 @@ import re import sd +import sdm import storage_exception as se import fileUtils import fileVolume @@ -201,6 +202,9 @@ """ return fileVolume.FileVolumeMetadata + def get_volume_artifacts_class(self): + return sdm.volume_artifacts.FileVolumeArtifacts + def _getDeletedImagePath(self, imgUUID): currImgDir = self.getImagePath(imgUUID) dirName, baseName = os.path.split(currImgDir) -- To view, visit https://gerrit.ovirt.org/50339 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iade716f7487f502243aaf280a7a8c147f501307d Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Adam Litke <ali...@redhat.com> _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches