summaryrefslogtreecommitdiff
path: root/src/op_mode/containers_op.py
diff options
context:
space:
mode:
authorsever-sever <v.gletenko@vyos.io>2021-04-21 17:20:27 +0000
committersever-sever <v.gletenko@vyos.io>2021-04-21 18:41:58 +0000
commitd657e65d66c14c007c235779ecb73ef5b8cfa327 (patch)
tree14f1ce76aa28f8a25b93a4128820277474983a09 /src/op_mode/containers_op.py
parent255216b4470b0a25dded0edc1e8acd8e0fbf34b5 (diff)
downloadvyos-1x-d657e65d66c14c007c235779ecb73ef5b8cfa327.tar.gz
vyos-1x-d657e65d66c14c007c235779ecb73ef5b8cfa327.zip
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)