diff options
author | John Estabrook <jestabro@vyos.io> | 2023-01-09 14:42:06 -0600 |
---|---|---|
committer | John Estabrook <jestabro@vyos.io> | 2023-01-09 15:39:37 -0600 |
commit | f440fbc9ba9019b25fb9f059357052701d990ef3 (patch) | |
tree | aa5fa3aa205371c23663e978507ee57b4fbc4a32 | |
parent | 2fc4f15353eb9ec3788693b87cd2b8fee1d4eafa (diff) | |
download | vyos-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.in | 4 | ||||
-rwxr-xr-x | src/op_mode/container.py | 13 |
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' |