summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2023-01-09 14:42:06 -0600
committerJohn Estabrook <jestabro@vyos.io>2023-01-09 15:39:37 -0600
commitf440fbc9ba9019b25fb9f059357052701d990ef3 (patch)
treeaa5fa3aa205371c23663e978507ee57b4fbc4a32
parent2fc4f15353eb9ec3788693b87cd2b8fee1d4eafa (diff)
downloadvyos-1x-f440fbc9ba9019b25fb9f059357052701d990ef3.tar.gz
vyos-1x-f440fbc9ba9019b25fb9f059357052701d990ef3.zip
container: T4880: expose add_image/delete_image functions in op-mode
Encapsulating the add/delete image commands in the op-mode script allows automatic generation of corresponding API schema definitions.
-rw-r--r--op-mode-definitions/container.xml.in4
-rwxr-xr-xsrc/op_mode/container.py13
2 files changed, 15 insertions, 2 deletions
diff --git a/op-mode-definitions/container.xml.in b/op-mode-definitions/container.xml.in
index 786bd66d3..ada9a4d59 100644
--- a/op-mode-definitions/container.xml.in
+++ b/op-mode-definitions/container.xml.in
@@ -11,7 +11,7 @@
<properties>
<help>Pull a new image for container</help>
</properties>
- <command>sudo podman image pull "${4}"</command>
+ <command>sudo ${vyos_op_scripts_dir}/container.py add_image --name "${4}"</command>
</tagNode>
</children>
</node>
@@ -44,7 +44,7 @@
<script>sudo podman image ls -q</script>
</completionHelp>
</properties>
- <command>sudo podman image rm --force "${4}"</command>
+ <command>sudo ${vyos_op_scripts_dir}/container.py delete_image --name "${4}"</command>
</tagNode>
</children>
</node>
diff --git a/src/op_mode/container.py b/src/op_mode/container.py
index ecefc556e..d48766a0c 100755
--- a/src/op_mode/container.py
+++ b/src/op_mode/container.py
@@ -35,6 +35,19 @@ def _get_raw_data(command: str) -> list:
data = json.loads(json_data)
return data
+def add_image(name: str):
+ from vyos.util import rc_cmd
+
+ rc, output = rc_cmd(f'podman image pull {name}')
+ if rc != 0:
+ raise vyos.opmode.InternalError(output)
+
+def delete_image(name: str):
+ from vyos.util import rc_cmd
+
+ rc, output = rc_cmd(f'podman image rm --force {name}')
+ if rc != 0:
+ raise vyos.opmode.InternalError(output)
def show_container(raw: bool):
command = 'podman ps --all'