Exemplo n.º 1
0
def make_env(env_type, base, top):
    img_id = make_uuid()
    base_id = make_uuid()
    top_id = make_uuid()

    if env_type == "block" and base.format == "raw":
        prealloc = sc.PREALLOCATED_VOL
    else:
        prealloc = sc.SPARSE_VOL

    with fake_env(env_type) as env:
        env.make_volume(base.virtual * GB, img_id, base_id, vol_format=sc.name2type(base.format), prealloc=prealloc)
        env.make_volume(top.virtual * GB, img_id, top_id, parent_vol_id=base_id, vol_format=sc.COW_FORMAT)
        env.subchain = merge.SubchainInfo(
            dict(sd_id=env.sd_manifest.sdUUID, img_id=img_id, base_id=base_id, top_id=top_id), 0
        )

        if env_type == "block":
            # Simulate allocation by adjusting the LV sizes
            env.lvm.extendLV(env.sd_manifest.sdUUID, base_id, base.physical * GB / MB)
            env.lvm.extendLV(env.sd_manifest.sdUUID, top_id, top.physical * GB / MB)

        rm = FakeResourceManager()
        with MonkeyPatchScope(
            [
                (guarded, "context", fake_guarded_context()),
                (merge, "sdCache", env.sdcache),
                (blockVolume, "rm", rm),
                (blockVolume, "sdCache", env.sdcache),
                (image.Image, "getChain", lambda self, sdUUID, imgUUID: [env.subchain.base_vol, env.subchain.top_vol]),
                (blockVolume.BlockVolume, "extendSize", partial(fake_blockVolume_extendSize, env)),
                (fileVolume.FileVolume, "extendSize", partial(fake_fileVolume_extendSize, env)),
            ]
        ):
            yield env
Exemplo n.º 2
0
 def make_env(self,
              storage_type,
              src_fmt,
              dst_fmt,
              chain_length=1,
              size=DEFAULT_SIZE,
              sd_version=3,
              src_qcow2_compat='0.10'):
     with fake_env(storage_type, sd_version=sd_version) as env:
         rm = FakeResourceManager()
         with MonkeyPatchScope([
             (guarded, 'context', fake_guarded_context()),
             (storage.sdm.api.copy_data, 'sdCache', env.sdcache),
             (blockVolume, 'rm', rm),
         ]):
             # Create existing volume - may use compat 0.10 or 1.1.
             src_vols = make_qemu_chain(env,
                                        size,
                                        src_fmt,
                                        chain_length,
                                        qcow2_compat=src_qcow2_compat)
             # New volumes are always created using the domain
             # prefered format.
             sd_compat = env.sd_manifest.qcow2_compat()
             dst_vols = make_qemu_chain(env,
                                        size,
                                        dst_fmt,
                                        chain_length,
                                        qcow2_compat=sd_compat)
             env.src_chain = src_vols
             env.dst_chain = dst_vols
             yield env
Exemplo n.º 3
0
 def get_vol(self, storage_type):
     with fake_env(storage_type) as env:
         with MonkeyPatchScope([
             (guarded, 'context', fake_guarded_context()),
             (storage.sdm.api.copy_data, 'sdCache', env.sdcache),
         ]):
             vols = make_qemu_chain(env, self.SIZE, sc.RAW_FORMAT, 1)
             yield vols[0]
Exemplo n.º 4
0
 def make_env(self, storage_type, fmt=sc.name2type('cow'), chain_length=1,
              size=DEFAULT_SIZE, qcow2_compat='0.10'):
     with fake_env(storage_type, sd_version=4) as env:
         rm = FakeResourceManager()
         with MonkeyPatchScope([
             (guarded, 'context', fake_guarded_context()),
             (copy_data, 'sdCache', env.sdcache),
             (blockVolume, 'rm', rm),
         ]):
             env.chain = make_qemu_chain(env, size, fmt, chain_length,
                                         qcow2_compat=qcow2_compat)
             yield env
Exemplo n.º 5
0
def make_env(env_type, base, top):
    img_id = make_uuid()
    base_id = make_uuid()
    top_id = make_uuid()

    if env_type == 'block' and base.format == 'raw':
        prealloc = sc.PREALLOCATED_VOL
    else:
        prealloc = sc.SPARSE_VOL

    with fake_env(env_type) as env:
        env.make_volume(base.virtual * GB,
                        img_id,
                        base_id,
                        vol_format=sc.name2type(base.format),
                        prealloc=prealloc)
        env.make_volume(top.virtual * GB,
                        img_id,
                        top_id,
                        parent_vol_id=base_id,
                        vol_format=sc.COW_FORMAT)
        env.subchain = merge.SubchainInfo(
            dict(sd_id=env.sd_manifest.sdUUID,
                 img_id=img_id,
                 base_id=base_id,
                 top_id=top_id), 0)

        if env_type == 'block':
            # Simulate allocation by adjusting the LV sizes
            env.lvm.extendLV(env.sd_manifest.sdUUID, base_id,
                             base.physical * GB / MB)
            env.lvm.extendLV(env.sd_manifest.sdUUID, top_id,
                             top.physical * GB / MB)

        rm = FakeResourceManager()
        with MonkeyPatchScope([
            (guarded, 'context', fake_guarded_context()),
            (merge, 'sdCache', env.sdcache),
            (blockVolume, 'rm', rm),
            (blockVolume, 'sdCache', env.sdcache),
            (image.Image, 'getChain', lambda self, sdUUID, imgUUID:
             [env.subchain.base_vol, env.subchain.top_vol]),
            (blockVolume.BlockVolume, 'extendSize',
             partial(fake_blockVolume_extendSize, env)),
            (fileVolume.FileVolume, 'extendSize',
             partial(fake_fileVolume_extendSize, env)),
        ]):
            yield env
Exemplo n.º 6
0
 def make_env(self,
              storage_type,
              fmt=sc.name2type('cow'),
              chain_length=1,
              size=DEFAULT_SIZE,
              qcow2_compat='0.10'):
     with fake_env(storage_type, sd_version=4) as env:
         rm = FakeResourceManager()
         with MonkeyPatchScope([
             (guarded, 'context', fake_guarded_context()),
             (copy_data, 'sdCache', env.sdcache),
             (blockVolume, 'rm', rm),
         ]):
             env.chain = make_qemu_chain(env,
                                         size,
                                         fmt,
                                         chain_length,
                                         qcow2_compat=qcow2_compat)
             yield env
Exemplo n.º 7
0
    def make_env(self, sd_type, chain_len=2):
        size = 1048576
        base_fmt = sc.RAW_FORMAT
        with fake_env(sd_type) as env:
            rm = FakeResourceManager()
            with MonkeyPatchScope([
                (guarded, 'context', fake_guarded_context()),
                (image, 'sdCache', env.sdcache),
                (merge, 'sdCache', env.sdcache),
                (blockVolume, 'rm', rm),
                (image, 'Image', FakeImage),
            ]):
                env.chain = make_qemu_chain(env, size, base_fmt, chain_len)

                def fake_chain(sdUUID, imgUUID, volUUID=None):
                    return env.chain
                image.Image.getChain = fake_chain

                yield env
Exemplo n.º 8
0
    def make_env(self, sd_type='file', format='raw', chain_len=2,
                 shared=False):
        size = 1048576
        base_fmt = sc.name2type(format)
        with fake_env(sd_type) as env:
            rm = FakeResourceManager()
            with MonkeyPatchScope([
                (guarded, 'context', fake_guarded_context()),
                (merge, 'sdCache', env.sdcache),
                (blockVolume, 'rm', rm),
            ]):
                env.chain = make_qemu_chain(env, size, base_fmt, chain_len)

                def fake_chain(self, sdUUID, imgUUID, volUUID=None):
                    return env.chain

                image.Image.getChain = fake_chain

                yield env
Exemplo n.º 9
0
    def make_env(self, sd_type, chain_len=2):
        size = 1048576
        base_fmt = sc.RAW_FORMAT
        with fake_env(sd_type) as env:
            rm = FakeResourceManager()
            with MonkeyPatchScope([
                (guarded, 'context', fake_guarded_context()),
                (image, 'sdCache', env.sdcache),
                (merge, 'sdCache', env.sdcache),
                (blockVolume, 'rm', rm),
                (image, 'Image', FakeImage),
            ]):
                env.chain = make_qemu_chain(env, size, base_fmt, chain_len)

                def fake_chain(sdUUID, imgUUID, volUUID=None):
                    return env.chain

                image.Image.getChain = fake_chain

                yield env
Exemplo n.º 10
0
 def make_env(self, storage_type, src_fmt, dst_fmt, chain_length=1,
              size=DEFAULT_SIZE, sd_version=3, src_qcow2_compat='0.10'):
     with fake_env(storage_type, sd_version=sd_version) as env:
         rm = FakeResourceManager()
         with MonkeyPatchScope([
             (guarded, 'context', fake_guarded_context()),
             (storage.sdm.api.copy_data, 'sdCache', env.sdcache),
             (blockVolume, 'rm', rm),
         ]):
             # Create existing volume - may use compat 0.10 or 1.1.
             src_vols = make_qemu_chain(env, size, src_fmt, chain_length,
                                        qcow2_compat=src_qcow2_compat)
             # New volumes are always created using the domain
             # prefered format.
             sd_compat = env.sd_manifest.qcow2_compat()
             dst_vols = make_qemu_chain(env, size, dst_fmt, chain_length,
                                        qcow2_compat=sd_compat)
             env.src_chain = src_vols
             env.dst_chain = dst_vols
             yield env
Exemplo n.º 11
0
    def make_env(self, sd_type="file", format="raw", chain_len=2, shared=False):
        size = 1048576
        base_fmt = sc.name2type(format)
        with fake_env(sd_type) as env:
            rm = FakeResourceManager()
            with MonkeyPatchScope(
                [
                    (guarded, "context", fake_guarded_context()),
                    (merge, "sdCache", env.sdcache),
                    (blockVolume, "rm", rm),
                    (volume.VolumeManifest, "isShared", lambda self: shared),
                ]
            ):
                env.chain = make_qemu_chain(env, size, base_fmt, chain_len)

                def fake_chain(self, sdUUID, imgUUID, volUUID=None):
                    return env.chain

                image.Image.getChain = fake_chain

                yield env
Exemplo n.º 12
0
    def make_env(self, sd_type="block", format="raw", chain_len=2):
        size = 1048576
        base_fmt = sc.name2type(format)
        with fake_env(sd_type) as env:
            rm = FakeResourceManager()
            with MonkeyPatchScope(
                [
                    (guarded, "context", fake_guarded_context()),
                    (merge, "sdCache", env.sdcache),
                    (blockVolume, "rm", rm),
                    (image, "Image", FakeImage),
                ]
            ):
                env.chain = make_qemu_chain(env, size, base_fmt, chain_len)

                def fake_chain(self, sdUUID, imgUUID, volUUID=None):
                    return env.chain

                image.Image.getChain = fake_chain
                image.Image.syncVolumeChain = FakeSyncVolumeChain()

                yield env
Exemplo n.º 13
0
    def make_env(self,
                 sd_type='file',
                 format='raw',
                 chain_len=2,
                 shared=False):
        size = 1048576
        base_fmt = sc.name2type(format)
        with fake_env(sd_type) as env:
            rm = FakeResourceManager()
            with MonkeyPatchScope([
                (guarded, 'context', fake_guarded_context()),
                (merge, 'sdCache', env.sdcache),
                (blockVolume, 'rm', rm),
            ]):
                env.chain = make_qemu_chain(env, size, base_fmt, chain_len)

                def fake_chain(self, sdUUID, imgUUID, volUUID=None):
                    return env.chain

                image.Image.getChain = fake_chain

                yield env
Exemplo n.º 14
0
    def make_env(self, sd_type='block', format='raw', chain_len=2):
        size = 1048576
        base_fmt = sc.name2type(format)
        with fake_env(sd_type) as env:
            rm = FakeResourceManager()
            with MonkeyPatchScope([
                (guarded, 'context', fake_guarded_context()),
                (merge, 'sdCache', env.sdcache),
                (blockVolume, 'rm', rm),
                (image, 'Image', FakeImage),
            ]):
                env.chain = make_qemu_chain(env, size, base_fmt, chain_len)

                volumes = {(vol.imgUUID, vol.volUUID): FakeVolume()
                           for vol in env.chain}
                env.sdcache.domains[env.sd_manifest.sdUUID].volumes = volumes

                def fake_chain(self, sdUUID, imgUUID, volUUID=None):
                    return env.chain

                image.Image.getChain = fake_chain
                image.Image.syncVolumeChain = FakeSyncVolumeChain()

                yield env
Exemplo n.º 15
0
    def make_env(self, sd_type='block', format='raw', chain_len=2):
        size = 1048576
        base_fmt = sc.name2type(format)
        with fake_env(sd_type) as env:
            rm = FakeResourceManager()
            with MonkeyPatchScope([
                (guarded, 'context', fake_guarded_context()),
                (merge, 'sdCache', env.sdcache),
                (blockVolume, 'rm', rm),
                (image, 'Image', FakeImage),
            ]):
                env.chain = make_qemu_chain(env, size, base_fmt, chain_len)

                volumes = {(vol.imgUUID, vol.volUUID): FakeVolume()
                           for vol in env.chain}
                env.sdcache.domains[env.sd_manifest.sdUUID].volumes = volumes

                def fake_chain(self, sdUUID, imgUUID, volUUID=None):
                    return env.chain

                image.Image.getChain = fake_chain
                image.Image.syncVolumeChain = FakeSyncVolumeChain()

                yield env