|

incus: add stop/start/rename_container/device_set wrappers

Author: Chris Tusa <chris.tusa@leafscale.com>
Date: Jul 15, 2026 14:29
Changeset: 862f1e4340a199dd035062047839ff5caa385109
Branch: default

Changed files:

Diff

diff -r 216a154d7f7d -r 862f1e4340a1 src/incus.reef
--- a/src/incus.reef	Wed Jul 15 14:25:37 2026 -0500
+++ b/src/incus.reef	Wed Jul 15 14:29:56 2026 -0500
@@ -43,6 +43,10 @@
     fn profile_create_or_edit(project: string, name: string, yaml: string): rg.Result[bool, string]
     fn profile_get(project: string, name: string): rg.Result[string, string]
     fn device_add_disk_opts(project: string, name: string, dev: string, src: string, dst: string, opts: [string]): rg.Result[bool, string]
+    fn stop(project: string, name: string): rg.Result[bool, string]
+    fn start(project: string, name: string): rg.Result[bool, string]
+    fn rename_container(project: string, old: string, new_name: string): rg.Result[bool, string]
+    fn device_set(project: string, name: string, dev: string, keyvals: [string]): rg.Result[bool, string]
 end export
 
 // Spawn a program with both stdout and stderr redirected to /dev/null in the
@@ -363,6 +367,37 @@
     return run_incus(["restart", "--project", project, name])
 end restart
 
+fn stop(project: string, name: string): rg.Result[bool, string]
+    return run_incus(["stop", "--project", project, name])
+end stop
+
+fn start(project: string, name: string): rg.Result[bool, string]
+    return run_incus(["start", "--project", project, name])
+end start
+
+fn rename_container(project: string, old: string, new_name: string): rg.Result[bool, string]
+    return run_incus(["rename", "--project", project, old, new_name])
+end rename_container
+
+// incus config device set <container> <device> <key>=<val> ...
+fn device_set(project: string, name: string, dev: string, keyvals: [string]): rg.Result[bool, string]
+    let kn: int = keyvals.length()
+    mut args: [string] = new [string](7 + kn)
+    args[0] = "config"
+    args[1] = "device"
+    args[2] = "set"
+    args[3] = "--project"
+    args[4] = project
+    args[5] = name
+    args[6] = dev
+    mut i: int = 0
+    while i < kn
+        args[7 + i] = keyvals[i]
+        i = i + 1
+    end while
+    return run_incus(args)
+end device_set
+
 fn delete_container(project: string, name: string): rg.Result[bool, string]
     return run_incus(["delete", "--project", project, "--force", name])
 end delete_container