summaryrefslogtreecommitdiff
path: root/op-mode-definitions/container.xml.in
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2022-05-08 21:52:51 +0200
committerChristian Poessinger <christian@poessinger.com>2022-05-08 21:52:51 +0200
commit7e7c6a5f120f317e3e4555939a099f48cf0b27e0 (patch)
tree04e3b121ced048504126e7b47d7c8d82f3ebb0e1 /op-mode-definitions/container.xml.in
parentc2dcbdbfd7bd4c4226cd6bebc47bd455f4cd3b30 (diff)
downloadvyos-1x-7e7c6a5f120f317e3e4555939a099f48cf0b27e0.tar.gz
vyos-1x-7e7c6a5f120f317e3e4555939a099f48cf0b27e0.zip
container: op-mode: T3852: use XML inline podman commands
Reduce bloat of containers_op.py wrapper script. All commands can be passed directly to podman via the XML script. This also makes the execution faster, as no Python environment needs to be build up.
Diffstat (limited to 'op-mode-definitions/container.xml.in')
-rw-r--r--op-mode-definitions/container.xml.in176
1 files changed, 176 insertions, 0 deletions
diff --git a/op-mode-definitions/container.xml.in b/op-mode-definitions/container.xml.in
new file mode 100644
index 000000000..fa66402dc
--- /dev/null
+++ b/op-mode-definitions/container.xml.in
@@ -0,0 +1,176 @@
+<?xml version="1.0"?>
+<interfaceDefinition>
+ <node name="add">
+ <children>
+ <node name="container">
+ <properties>
+ <help>Add container image</help>
+ </properties>
+ <children>
+ <tagNode name="image">
+ <properties>
+ <help>Pull a new image for container</help>
+ </properties>
+ <command>sudo podman image pull "${4}"</command>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ <node name="connect">
+ <children>
+ <tagNode name="container">
+ <properties>
+ <help>Attach to a running container</help>
+ <completionHelp>
+ <path>container name</path>
+ </completionHelp>
+ </properties>
+ <command>sudo podman exec --interactive --tty "$3" /bin/sh</command>
+ </tagNode>
+ </children>
+ </node>
+ <node name="delete">
+ <children>
+ <node name="container">
+ <properties>
+ <help>Delete container image</help>
+ </properties>
+ <children>
+ <tagNode name="image">
+ <properties>
+ <help>Delete container image</help>
+ <completionHelp>
+ <script>sudo podman image ls -q</script>
+ </completionHelp>
+ </properties>
+ <command>sudo podman image rm --force "${4}"</command>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ <node name="generate">
+ <children>
+ <node name="container">
+ <properties>
+ <help>Generate Container Image</help>
+ </properties>
+ <children>
+ <tagNode name="image">
+ <properties>
+ <help>Name of container image (tag)</help>
+ </properties>
+ <children>
+ <tagNode name="path">
+ <properties>
+ <help>Path to Dockerfile</help>
+ <completionHelp>
+ <list>&lt;filename&gt;</list>
+ </completionHelp>
+ </properties>
+ <command>sudo podman build --layers --force-rm --tag "$4" $6</command>
+ </tagNode>
+ </children>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ <node name="monitor">
+ <children>
+ <node name="log">
+ <children>
+ <tagNode name="container">
+ <properties>
+ <help>Monitor last lines of container logs</help>
+ <completionHelp>
+ <path>container name</path>
+ </completionHelp>
+ </properties>
+ <command>sudo podman logs --follow --names "$4"</command>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ <node name="show">
+ <children>
+ <node name="container">
+ <properties>
+ <help>Show containers</help>
+ </properties>
+ <command>sudo podman ps --all</command>
+ <children>
+ <leafNode name="image">
+ <properties>
+ <help>Show container image</help>
+ </properties>
+ <command>sudo podman image ls</command>
+ </leafNode>
+ <tagNode name="log">
+ <properties>
+ <help>Show logs from a given container</help>
+ <completionHelp>
+ <path>container name</path>
+ </completionHelp>
+ </properties>
+ <command>sudo podman logs --names "$4"</command>
+ </tagNode>
+ <leafNode name="network">
+ <properties>
+ <help>Show available container networks</help>
+ </properties>
+ <command>sudo podman network ls</command>
+ </leafNode>
+ </children>
+ </node>
+ <node name="log">
+ <children>
+ <tagNode name="container">
+ <properties>
+ <help>Show logs from a given container</help>
+ <completionHelp>
+ <path>container name</path>
+ </completionHelp>
+ </properties>
+ <command>sudo podman logs --names "$4"</command>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+ <node name="restart">
+ <children>
+ <tagNode name="container">
+ <properties>
+ <help>Restart a given container</help>
+ <completionHelp>
+ <path>container name</path>
+ </completionHelp>
+ </properties>
+ <command>sudo podman restart "$3"</command>
+ </tagNode>
+ </children>
+ </node>
+ <node name="update">
+ <children>
+ <node name="container">
+ <properties>
+ <help>Update a container image</help>
+ </properties>
+ <children>
+ <tagNode name="image">
+ <properties>
+ <help>Update container image</help>
+ <completionHelp>
+ <path>container name</path>
+ </completionHelp>
+ </properties>
+ <command>if cli-shell-api existsActive container name "$4"; then sudo podman pull $(cli-shell-api returnActiveValue container name "$4" image); else echo "Container $4 does not exist"; fi</command>
+ </tagNode>
+ </children>
+ </node>
+ </children>
+ </node>
+</interfaceDefinition>