Ejemplo n.º 1
0
def detach(dbg, uri, domain, cb):
    sr,name = parse_datapath_uri(uri)
    opq = cb.volumeStartOperations(sr, 'r')
    # deactivate LVs chain here
    vol_path = cb.volumeGetPath(opq, name)
    tap = tapdisk.load_tapdisk_metadata(dbg, vol_path)
    tap.destroy(dbg)
    tapdisk.forget_tapdisk_metadata(dbg, vol_path)
    def detach(dbg, uri, domain, cb):
        sr, key = _parse_uri(uri)
        opq = cb.volumeStartOperations(sr, 'r')

        meta_path = cb.volumeMetadataGetPath(opq)
        db = VHDMetabase(meta_path)
        with db.write_context():
            vdi = db.get_vdi_by_id(key)
        # deactivate LVs chain here
        db.close()

        vol_path = cb.volumeGetPath(opq, str(vdi.vhd.id))

        if vdi.vhd.parent_id is not None and vdi_enable_intellicache:
            parent_vhd_path = cb.volumeGetPath(opq, str(vdi.vhd.parent_id))
            IntelliCache.detach(dbg, vol_path, parent_vhd_path)
        else:
            tap = tapdisk.load_tapdisk_metadata(dbg, vol_path)
            tap.destroy(dbg)
            tapdisk.forget_tapdisk_metadata(dbg, vol_path)

        cb.volumeStopOperations(opq)
    def detach(dbg, vhd_path, parent_vhd_path):
        leaf_vhd_cache_path = os.path.join(
            IntelliCache.ROOT_PATH,
            vhd_path[20:]
        )

        tap = tapdisk.load_tapdisk_metadata(dbg, leaf_vhd_cache_path)

        with RefCounter('tapdisk', tap.uuid) as rc:
            if rc.get_count() == 0:
                tap.destroy(dbg)
                tapdisk.forget_tapdisk_metadata(dbg, leaf_vhd_cache_path)

        parent_vhd_cache_path = os.path.join(
            IntelliCache.ROOT_PATH,
            parent_vhd_path[20:]
        )

        tap = tapdisk.load_tapdisk_metadata(dbg, parent_vhd_cache_path)

        with RefCounter('tapdisk', tap.uuid) as rc:
            if rc.get_count() == 0:
                tap.destroy(dbg)
                tapdisk.forget_tapdisk_metadata(dbg, parent_vhd_cache_path)
Ejemplo n.º 4
0
 def detach(self, dbg, uri, domain):
     u = urlparse.urlparse(uri)
     tap = tapdisk.load_tapdisk_metadata(dbg, u.path)
     tap.destroy(dbg)
     tapdisk.forget_tapdisk_metadata(dbg, u.path)
Ejemplo n.º 5
0
 def detach(self, dbg, uri, domain):
     u = urlparse.urlparse(uri)
     tap = tapdisk.load_tapdisk_metadata(dbg, u.path)
     tap.destroy(dbg)
     tapdisk.forget_tapdisk_metadata(dbg, u.path)