Command line interface for Epoch task scheduler
Project description
Epoch CLI
Command line interface for the Epoch Container Orchestrator.
Getting Started
Installation
You can install the cli from from PyPI.
pip install epoch-cli
Reactivate/deactivate virtual environment based on the need to utilize epoch cli.
Refer dev setup on how to setup virtual environment and install epoch-cli.
Running using docker
The cli is pushed as a docker for easy access. This also elimintates the need for having python etc setup on your system.
- Pull the image:
docker pull ghcr.io/phonepe/epoch-cli:latest
- Create a shell script called
epoch
with the following content:
#! /bin/sh
docker run \
--rm --interactive --tty --network host \
--name epoch-cli -v ${HOME}/.epoch:/root/.epoch:ro \
ghcr.io/phonepe/epoch-cli:latest "$@"
- Make the script executable
chmod a+x epoch
- Put the path to this script in your
~/.bashrc
.
export PATH="${PATH}:/path/to/your/script"
-
Logout/login or run
. ~/.bashrc
to load the new [path] -
Run epoch cli
epoch -h
Requirements
The CLI is written in Python 3x
Accessing the Documentation
The arguments needed by the script are self documenting. Please use -h
or --help
in different sections and
sub-sections of the CLI to get descriptions of commands, sub-commands, their arguments and options.
To see basic help:
$ epoch -h
usage: epoch [-h] [--file FILE] [--cluster CLUSTER] [--endpoint ENDPOINT] [--auth-header AUTH_HEADER] [--insecure INSECURE] [--username USERNAME] [--password PASSWORD] [--debug]
{cluster,runs,topology} ...
positional arguments:
{cluster,runs,topology}
Available plugins
cluster Epoch cluster related commands
runs Epoch runs related commands
topology Epoch topology related commands
options:
-h, --help show this help message and exit
--file FILE, -f FILE Configuration file for epoch client
--cluster CLUSTER, -c CLUSTER
Cluster name as specified in config file
--endpoint ENDPOINT, -e ENDPOINT
Epoch endpoint. (For example: https://epoch.test.com)
--auth-header AUTH_HEADER, -t AUTH_HEADER
Authorization header value for the provided epoch endpoint
--insecure INSECURE, -i INSECURE
Do not verify SSL cert for server
--username USERNAME, -u USERNAME
Epoch cluster username
--password PASSWORD, -p PASSWORD
Epoch cluster password
--debug, -d Print details of errors
Connecting to the Epoch cluster
In order to use the CLI, we need to provide coordinates to the cluster to connect to. This can be done in the following manner:
Epoch CLI config file
The config file can be located in the following paths:
.epoch
file in your home directory (Typically used for the default cluster you frequently connect to)- A file in any path that can be passed as a parameter to the CLI with the
-f FILE
option
Config File format
This file is in ini format and is arranged in sections.
[DEFAULT]
...
stage_token = <token1>
prod_token = <token2>
[local]
endpoint = http://localhost:10000
username = admin
password = admin
[stage]
endpoint = https://stage.testepoch.io
auth_header = %(stage_token)s
[production]
endpoint = https://prod.testepoch.io
auth_header = %(prod_token)s
..
The DEFAULT
section can be used to define common variables like Insecure etc. The local
, stage
, production
etc
are names for inidividual clusters and these sections can be used to define configuration for individual clusters.
Cluster name is referred to in the command line by using the -c
command line option.
Interpolation of values is supported and can be acieved by using %(variable_name)s
references.
- Note: The
DEFAULT
section is mandatory- Note: The
s
at the end of%(var)s
is mandatory for interpolation
Contents of a Section
endpoint = https://yourcluster.yourdomain.com # Endpoint for cluster
insecure = true
username = <your_username>
password = <your_password>
auth_header= <Authorization value here if using header based auth>
Authentication priority:
- If both
username
andpassword
are provided, basic auth is used. - If a value is provided in the
auth_header
parameter, it is passed as the value for theAuthorization
header in the upstream HTTP calls to the Epoch server verbatim. - If neither, no auth is set
NOTE: Use the
insecure
option to skip certificate checks on the server endpoint (comes in handy for internal domains)
To use a custom config file, invoke epoch in the following form:
$ epoch -f custom.conf ...
This will connect to the cluster if an endpoint is mentioned in the DEFAULT
section.
$ epoch -f custom.conf -c stage ...
This will connect to the cluster whose config is mentioned in the [stage]
config section.
$ epoch -c stage ...
This will connect to the cluster whose config is mentioned in the [stage]
config section in $HOME/.epoch
config
file.
Command line options
Pass the endpoint and other options using --endpoint|-e
etc etc. Options can be obtained using -h
as mentioned
above. Invocation will be in the form:
$ epoch -e http://localhost:10000 -u guest -p guest ...
CLI format
The following cli format is followed:
usage: epoch [-h] [--file FILE] [--cluster CLUSTER] [--endpoint ENDPOINT] [--auth-header AUTH_HEADER] [--insecure INSECURE] [--username USERNAME] [--password PASSWORD] [--debug]
{cluster,runs,topology} ...
Basic Arguments
-h, --help show this help message and exit
--file FILE, -f FILE Configuration file for epoch client
--cluster CLUSTER, -c CLUSTER
Cluster name as specified in config file
--endpoint ENDPOINT, -e ENDPOINT
Epoch endpoint. (For example: https://epoch.test.com)
--auth-header AUTH_HEADER, -t AUTH_HEADER
Authorization header value for the provided epoch endpoint
--insecure INSECURE, -i INSECURE
Do not verify SSL cert for server
--username USERNAME, -u USERNAME
Epoch cluster username
--password PASSWORD, -p PASSWORD
Epoch cluster password
--debug, -d Print details of errors
Commands
Commands in epoch are meant to address specific functionality. They can be summarized as follows:
cluster Epoch cluster related commands
runs Epoch runs related commands
topology Epoch topology related commands
Topology
Epoch topology executor related commands
epoch topology [-h] {list,get,create,update,delete,pause,unpause,run} ...
Sub-commands
list
List all executors
epoch topology list [-h]
get
Show details about topology-id
epoch topology get [-h] topology-id
Positional Arguments
topology-id
- Topology-id to be shown
run
Run the given topology-id
epoch topology run [-h] topology-id
Positional Arguments
topology-id
- Topology-id to be run
create
Create a task on cluster
epoch topology create [-h] spec-file
Positional Arguments
spec-file
- JSON spec file for the topology
update
Update topology running on this cluster
epoch topology update [-h] spec-file
Positional Arguments
spec-file
- JSON spec file for the topology
pause
Pause the given topology-id
epoch topology pause [-h] topology-id
Positional Arguments
topology-id
- Topology-id to be paused
unpause
Unpause the given topology-id
epoch topology unpause [-h] topology-id
Positional Arguments
topology-id
- Topology-id to be unpaused
delete
Delete the given topology-id
epoch topology delete [-h] topology-id
Positional Arguments
topology-id
- Topology-id to be deleted
Cluster
Epoch cluster related commands
epoch cluster [-h] {leader} ...
Sub-commands
leader
Show leader for cluster
epoch cluster leader [-h]
pause-all
Pause all topologies for cluster
epoch cluster pause-all
import
Import topologies for cluster
epoch cluster import [-h] file_name
Positional Arguments
file_name
- Name of file to be imported
--overwrite
True/False - Overwrite topologies that already exist (default: False)
--paused
True/False- Pause all jobs while importing (default: False)
--skip
- Comma seperated list of jobs to be skipped (default: "")
export
Export topologies for cluster
epoch cluster export [-h] file_name
Positional Arguments
file_name
- Name of file to be saved
Runs
Epoch application related commands
epoch runs [-h] {list,get,kill,log} ...
Sub-commands
list
List all runs
epoch runs list [-h]
get
get the details for the given Topology's runId
epoch runs get [-h] topology-id run-id
Positional Arguments
topology-id
- Topology-id
run-id
- Run-id to be fetched
kill
Kills the given taskid.
epoch runs kill [-h] topology-id run-id task-name
Positional Arguments
topology-id
- Topology-id
run-id
- Run-id
task-name
- Task-name to be killed
log
gets the log the given taskid.
epoch runs log [-h] topology-id run-id task-name
Positional Arguments
topology-id
- Topology-id
run-id
- Run-id
task-name
- Task-name to be fetched
Setting-up virtual environment
python3 -m venv testingEpochCli
cd testingEpochCli
source bin/activate
pip install epoch-cli
Move the setting.ini to the testingEpochCli directory and add auth tokens/username/passwords along with valid environments for different epoch endpoints.
epoch -f setting.ini -c env runs list job_name
©2024, Shubhransh Jagota.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file epoch_cli-0.0.3.tar.gz
.
File metadata
- Download URL: epoch_cli-0.0.3.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.15 Linux/6.8.0-1014-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5963d9961e244da1a892f34f191bfc50df6578719d5536bf6b274fd4e339c13 |
|
MD5 | 633b2c7eb6ee97c0c02f8aa748ece71d |
|
BLAKE2b-256 | 000f66092879a51ecafb154b579a982b028b00e4a4b64429764f9f9b00e62d0f |
File details
Details for the file epoch_cli-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: epoch_cli-0.0.3-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.15 Linux/6.8.0-1014-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8e74aaec5ea23c3a621b29f9cb90b5c6570f23ea9df517f0b285f1e0b26931d |
|
MD5 | 98aa4ef1d4e84c58e68fd5575a5b287c |
|
BLAKE2b-256 | 6591c77c713c409fe4fd3a1eb79b5e303d408000c490d7dc570733c5a018ef56 |