forked from OCP-on-NERC/python-batchtools
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbatchtools.py
More file actions
72 lines (57 loc) · 1.97 KB
/
batchtools.py
File metadata and controls
72 lines (57 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import argparse
import sys
import defaults
from basecommand import Command
from basecommand import SubParserFactory
from bj import ListJobsCommand
from bd import DeleteJobsCommand
from bl import LogsCommand
from bp import PrintJobsCommand
from bq import GpuQueuesCommand
from br import CreateJobCommand
from bps import ListPodsCommand
from helpers import is_logged_in
class BatchTools:
commands: dict[str, type[Command]]
parser: argparse.ArgumentParser
subparsers: SubParserFactory
def __init__(self) -> None:
self.build_parser()
def build_parser(self) -> None:
self.commands = {}
parser = self.parser = argparse.ArgumentParser(
description="OpenShift CLI helper"
)
self.subparsers = self.parser.add_subparsers(dest="cmd", required=True)
parser.add_argument(
"--verbose",
"-v",
action="count",
default=defaults.verbose,
help="Increase verbosity of output",
)
self.register(ListJobsCommand)
self.register(LogsCommand)
self.register(DeleteJobsCommand)
self.register(PrintJobsCommand)
self.register(GpuQueuesCommand)
self.register(CreateJobCommand)
self.register(ListPodsCommand)
def register(self, handler: type[Command]):
handler.build_parser(self.subparsers)
self.commands[handler.name] = handler
def parse(self, args: list[str] | None = None):
return self.parser.parse_args(args)
def run(self, args: list[str] | None = None):
parsed = self.parse(args)
self.commands[parsed.cmd].run(parsed) # pyright: ignore[reportAny]
def main() -> None:
if not is_logged_in():
sys.exit("You are not logged in to the oc cli. Retrieve the token using 'oc login --web' or retrieving the login token from the openshift UI.")
app = BatchTools()
app.run()
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
pass