Command Line Interface for IOC Management#
The python project edge-containers-cli is installed as part of the Python section of the initial tutorial Set up a Developer Workstation. It provides a command line function ec with support for:
deploying, managing and monitoring IOC and service instances
The CLI is just a thin wrapper around the underlying tools that do the real work:
- kubectl:
the command line interface to the Kubernetes APIs
- helm:
the command line interface to the Kubernetes Helm package manager
- podman/docker:
CLIs for container engines
- git:
the git version control system client
ec is useful because it saves typing and provides a consistent interface when working on multiple ec-services repository s. This is because it uses the environment setup by the beamline repo’s environment.sh script. See The Environment Configuration File.
To see the available commands, run ec --help.
It may be instructive to understand the underlying tools and how they are being called. For this reason ec supports a -v option to show the underlying commands being executed. e.g.
(venv) (main) [hgv27681@pc0116 bl47p]$ ec -v ps
kubectl get namespace p47-iocs -o name
helm list -n p47-iocs -o json
kubectl get pods -n p47-iocs -o jsonpath='{range .items[*]}{..labels.app}{","}{..containerStatuses[0].ready}{","}{..containerStatuses[0].restartCount}{","}{.status.startTime}{"\n"}{end}'
name ready restarts started namespace app_version
bl47p-ea-dcam-01 true 0 2024-02-09T12:34:18Z p47-iocs 2024.2.1b2
bl47p-ea-dcam-02 true 0 2024-02-09T15:10:06Z p47-iocs 2024.2.1
bl47p-ea-panda-01 true 0 2024-02-09T21:57:23Z p47-iocs 2024.2.1b2
bl47p-mo-ioc-01 true 0 2024-02-09T15:42:24Z p47-iocs 2024.2.1
epics-opis true 0 2024-02-09T21:55:21Z p47-iocs 2024.2.2
(venv) (main) [hgv27681@pc0116 bl47p]$