diff options
author | sever-sever <v.gletenko@vyos.io> | 2021-04-21 17:20:27 +0000 |
---|---|---|
committer | sever-sever <v.gletenko@vyos.io> | 2021-04-21 18:41:58 +0000 |
commit | d657e65d66c14c007c235779ecb73ef5b8cfa327 (patch) | |
tree | 14f1ce76aa28f8a25b93a4128820277474983a09 | |
parent | 255216b4470b0a25dded0edc1e8acd8e0fbf34b5 (diff) | |
download | vyos-1x-d657e65d66c14c007c235779ecb73ef5b8cfa327.tar.gz vyos-1x-d657e65d66c14c007c235779ecb73ef5b8cfa327.zip |
container: T2216: Rewrite op-mode to python
-rw-r--r-- | op-mode-definitions/containers.xml.in | 12 | ||||
-rwxr-xr-x | src/op_mode/containers_op.py | 59 | ||||
-rwxr-xr-x | src/op_mode/containers_op.sh | 60 |
3 files changed, 65 insertions, 66 deletions
diff --git a/op-mode-definitions/containers.xml.in b/op-mode-definitions/containers.xml.in index a530bcff4..a22549dd9 100644 --- a/op-mode-definitions/containers.xml.in +++ b/op-mode-definitions/containers.xml.in @@ -11,7 +11,7 @@ <properties> <help>Pull a new image for container</help> </properties> - <command>sudo ${vyos_op_scripts_dir}/containers_op.sh --pull "${4}"</command> + <command>sudo ${vyos_op_scripts_dir}/containers_op.py --pull "${4}"</command> </tagNode> </children> </node> @@ -28,7 +28,7 @@ <properties> <help>Delete container image</help> </properties> - <command>sudo ${vyos_op_scripts_dir}/containers_op.sh --remove "${4}"</command> + <command>sudo ${vyos_op_scripts_dir}/containers_op.py --remove "${4}"</command> </tagNode> </children> </node> @@ -40,19 +40,19 @@ <properties> <help>Show containers</help> </properties> - <command>sudo ${vyos_op_scripts_dir}/containers_op.sh --show-containers</command> + <command>sudo ${vyos_op_scripts_dir}/containers_op.py --all</command> <children> <leafNode name="image"> <properties> - <help>Show available container images</help> + <help>Delete container image</help> </properties> - <command>sudo ${vyos_op_scripts_dir}/containers_op.sh --show-images</command> + <command>sudo ${vyos_op_scripts_dir}/containers_op.py --image</command> </leafNode> <leafNode name="network"> <properties> <help>Show available container networks</help> </properties> - <command>sudo ${vyos_op_scripts_dir}/containers_op.sh --show-networks</command> + <command>sudo ${vyos_op_scripts_dir}/containers_op.py --networks</command> </leafNode> </children> </node> 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) diff --git a/src/op_mode/containers_op.sh b/src/op_mode/containers_op.sh deleted file mode 100755 index 9c410bd7f..000000000 --- a/src/op_mode/containers_op.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash - -# Expect 2 args or "show-containers" or "show-images" -if [[ $# -ne 2 ]] && [[ $1 != "--show-containers" ]] && [[ $1 != "--show-images" ]] && [[ $1 != "--show-networks" ]] ; then - echo "Image not set or not found" - exit 1 -fi - -OPTION=$1 -IMAGE=$2 - -# Download image -pull_image() { - sudo podman pull ${IMAGE} -} - -# Remove image -remove_image() { - sudo podman image rm ${IMAGE} -} - -# Show containers -show_containers() { - sudo podman ps -a -} - -# Show image -show_images() { - sudo podman image ls -} - -# Show networks -show_networks() { - sudo podman network ls -} - -if [ "$OPTION" = "--pull" ]; then - pull_image - exit 0 -fi - -if [ "$OPTION" = "--remove" ]; then - remove_image - exit 0 -fi - -if [ "$OPTION" = "--show-containers" ]; then - show_containers - exit 0 -fi - -if [ "$OPTION" = "--show-networks" ]; then - show_networks - exit 0 -fi - -if [ "$OPTION" = "--show-images" ]; then - show_images - exit 0 -fi |