def manage_path(conn, path): """ If path is not managed, try to create a storage pool to probe the path """ vol, pool, path_is_pool = check_if_path_managed(conn, path) if vol or pool or not _can_auto_manage(path): return vol, pool, path_is_pool dirname = os.path.dirname(path) poolname = StoragePool.find_free_name( conn, os.path.basename(dirname) or "pool") logging.debug("Attempting to build pool=%s target=%s", poolname, dirname) poolxml = StoragePool(conn) poolxml.name = poolxml.find_free_name( conn, os.path.basename(dirname) or "dirpool") poolxml.type = poolxml.TYPE_DIR poolxml.target_path = dirname pool = poolxml.install(build=False, create=True, autostart=True) conn.clear_cache(pools=True) vol = None for checkvol in pool.listVolumes(): if checkvol == os.path.basename(path): vol = pool.storageVolLookupByName(checkvol) break return vol, pool, False
def _build_pool(conn, meter, path): pool = StoragePool.lookup_pool_by_path(conn, path) if pool: logging.debug("Existing pool '%s' found for %s", pool.name(), path) pool.refresh(0) return pool name = util.generate_name("boot-scratch", conn.storagePoolLookupByName) logging.debug("Building storage pool: path=%s name=%s", path, name) poolbuild = StoragePool(conn) poolbuild.type = poolbuild.TYPE_DIR poolbuild.name = name poolbuild.target_path = path # Explicitly don't build? since if we are creating this directory # we probably don't have correct perms ret = poolbuild.install(meter=meter, create=True, build=False, autostart=True) conn.clear_cache(pools=True) return ret
def makepool(name, create): poolxml = StoragePool(conn) poolxml.type = "dir" poolxml.name = name poolxml.target_path = "/tmp/foo/bar/baz/%s" % name return poolxml.install(create=create)