From a98b5e205f6f6d37778fb62b1b96662657a8c5a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Fri, 8 Dec 2023 13:59:24 +0100 Subject: [PATCH] make vm inspect non-async --- pkgs/clan-cli/clan_cli/vms/inspect.py | 26 +++++++++++++++++++------- pkgs/clan-cli/clan_cli/vms/run.py | 3 +-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/vms/inspect.py b/pkgs/clan-cli/clan_cli/vms/inspect.py index e5dec4e3a..67c743fdf 100644 --- a/pkgs/clan-cli/clan_cli/vms/inspect.py +++ b/pkgs/clan-cli/clan_cli/vms/inspect.py @@ -1,10 +1,11 @@ import argparse -import asyncio import json +import shlex +import subprocess from dataclasses import dataclass from pathlib import Path -from ..async_cmd import run +from ..errors import ClanError from ..nix import nix_config, nix_eval @@ -16,9 +17,10 @@ class VmConfig: cores: int memory_size: int graphics: bool + wayland: bool = False -async def inspect_vm(flake_url: str | Path, flake_attr: str) -> VmConfig: +def inspect_vm(flake_url: str | Path, flake_attr: str) -> VmConfig: config = nix_config() system = config["system"] @@ -27,8 +29,18 @@ async def inspect_vm(flake_url: str | Path, flake_attr: str) -> VmConfig: f'{flake_url}#clanInternals.machines."{system}"."{flake_attr}".config.system.clan.vm.config' ] ) - out = await run(cmd) - data = json.loads(out.stdout) + proc = subprocess.run(cmd, check=True, text=True, stdout=subprocess.PIPE) + assert proc.stdout is not None + if proc.returncode != 0: + raise ClanError( + f""" +command: {shlex.join(cmd)} +exit code: {proc.returncode} +stdout: +{proc.stdout} +""" + ) + data = json.loads(proc.stdout) return VmConfig(flake_url=flake_url, flake_attr=flake_attr, **data) @@ -43,8 +55,8 @@ def inspect_command(args: argparse.Namespace) -> None: machine=args.machine, flake=args.flake or Path.cwd(), ) - res = asyncio.run( - inspect_vm(flake_url=inspect_options.flake, flake_attr=inspect_options.machine) + res = inspect_vm( + flake_url=inspect_options.flake, flake_attr=inspect_options.machine ) print("Cores:", res.cores) print("Memory size:", res.memory_size) diff --git a/pkgs/clan-cli/clan_cli/vms/run.py b/pkgs/clan-cli/clan_cli/vms/run.py index 3b4cef9ee..f10e08daf 100644 --- a/pkgs/clan-cli/clan_cli/vms/run.py +++ b/pkgs/clan-cli/clan_cli/vms/run.py @@ -1,5 +1,4 @@ import argparse -import asyncio import json import logging import os @@ -286,7 +285,7 @@ def run_command(args: argparse.Namespace) -> None: ) flake_url = run_options.flake_url or run_options.flake - vm = asyncio.run(inspect_vm(flake_url=flake_url, flake_attr=run_options.machine)) + vm = inspect_vm(flake_url=flake_url, flake_attr=run_options.machine) run_vm(vm, run_options.nix_options)