summaryrefslogtreecommitdiff
path: root/src/op_mode/containers_op.py
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2021-04-21 20:48:55 +0200
committerGitHub <noreply@github.com>2021-04-21 20:48:55 +0200
commit821d9e4d36d7520973d6f2cd146feebb9918227a (patch)
tree2aa19621ea0f2d812151c23acc5bf924c0a25464 /src/op_mode/containers_op.py
parentee6bf7e9af5c6a25177a652f6a455ebb7438186d (diff)
parentd657e65d66c14c007c235779ecb73ef5b8cfa327 (diff)
downloadvyos-1x-821d9e4d36d7520973d6f2cd146feebb9918227a.tar.gz
vyos-1x-821d9e4d36d7520973d6f2cd146feebb9918227a.zip
Merge pull request #816 from sever-sever/T2216-op-mode
container: T2216: Rewrite op-mode to python
Diffstat (limited to 'src/op_mode/containers_op.py')
-rwxr-xr-xsrc/op_mode/containers_op.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/op_mode/containers_op.py b/src/op_mode/containers_op.py
new file mode 100755
index 000000000..1e3fc3a8f
--- /dev/null
+++ b/src/op_mode/containers_op.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2021 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import argparse
+from vyos.configquery import query_context, ConfigQueryError
+from vyos.util import cmd
+
+config, op = query_context()
+
+parser = argparse.ArgumentParser()
+parser.add_argument("-a", "--all", action="store_true", help="Show all containers")
+parser.add_argument("-i", "--image", action="store_true", help="Show container images")
+parser.add_argument("-n", "--networks", action="store_true", help="Show container images")
+parser.add_argument("-p", "--pull", action="store", help="Pull image for container")
+parser.add_argument("-d", "--remove", action="store", help="Delete container image")
+
+if not config.exists(['container']):
+ print('Containers not configured')
+ exit(0)
+
+if __name__ == '__main__':
+ args = parser.parse_args()
+
+ if args.all:
+ print(cmd('podman ps --all'))
+ exit(0)
+ if args.image:
+ print(cmd('podman image ls'))
+ exit(0)
+ if args.networks:
+ print(cmd('podman network ls'))
+ exit(0)
+ if args.pull:
+ image = args.pull
+ try:
+ print(cmd(f'sudo podman image pull {image}'))
+ except:
+ print(f'Can\'t find or download image "{image}"')
+ exit(0)
+ if args.remove:
+ image = args.remove
+ try:
+ print(cmd(f'sudo podman image rm {image}'))
+ except:
+ print(f'Can\'t delete image "{image}"')
+ exit(0)