def _build_pool(conn, meter, path): pool = util.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 = Storage.DirectoryPool(conn=conn, name=name, target_path=path) # Explicitly don't build? since if we are creating this directory # we probably don't have correct perms return poolbuild.install(meter=meter, create=True, build=False, autostart=True)
and e.get_error_code() != libvirt.VIR_ERR_NO_STORAGE_VOL): raise return None, e def lookup_vol_name(name): try: name = os.path.basename(path) if pool and name in pool.listVolumes(): return pool.lookupByName(name) except: pass return None vol = lookup_vol_by_path()[0] if not vol: pool = util.lookup_pool_by_path(conn, os.path.dirname(path)) # Is pool running? if pool and pool.info()[0] != libvirt.VIR_STORAGE_POOL_RUNNING: pool = None # Attempt to lookup path as a storage volume if pool and not vol: try: # Pool may need to be refreshed, but if it errors, # invalidate it pool.refresh(0) vol, verr = lookup_vol_by_path() if verr: vol = lookup_vol_name(os.path.basename(path)) except Exception, e: