def _try_provision_device(self, image_path, fstype, disk_uuid): with self._ndb_mount(image_path) as device: logging.debug( f"Going to create fs {fstype} id {disk_uuid} on device {device}" ) cmd = filesystem.Mkfs.command(device, fstype, disk_uuid=disk_uuid) shell.run_cmd(cmd)
def generate_iso(self, vm): iso_path = self._iso_path(vm) logging.debug( f"Generating iso for vm {vm.name} iso: {vm.cloud_init_iso}") with tempfile.TemporaryDirectory() as tmpdir: user_data = os.path.join(tmpdir, "user-data") meta_data = os.path.join(tmpdir, "meta-data") self._write_metadata(vm, meta_data) self._write_userdata(vm, user_data) cmd = f"mkisofs -o {iso_path} -V cidata -J -r {user_data} {meta_data}" shell.run_cmd(cmd) return iso_path
def initialize(self): logging.info("Loading nbd driver required to mount qcow disks") shell.run_cmd("modprobe nbd max_part=8") self._free_nbd_devices()
def _connect_device(self, device_path, image_path): connect_cmd = ["qemu-nbd", "--connect", device_path, image_path] shell.run_cmd(connect_cmd)
def _disconnect_device(self, device_path): disconnect_cmd = ["qemu-nbd", "--disconnect", device_path] shell.run_cmd(disconnect_cmd)
def _check_kvm_ok(): try: shell.run_cmd("kvm-ok") except: logging.error("KVM cannot run in accelerated mode are KVM modules exist?") raise
def _verify_gpu_drivers_not_loaded(): nvidia_modules = shell.run_cmd("lsmod | grep nvidia") nouveau_modules = shell.run_cmd("lsmod | grep nouveau") if nvidia_modules or nouveau_modules: raise("Graphical kernel modules loaded nvidia: %s nouveau:\ %s hypervisors cannot work with loaded modules", nvidia_modules, nouveau_modules)