-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
73 lines (62 loc) · 1.69 KB
/
main.py
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
73
import docker
import os
import argparse
import shutil
import yaml
import sys
import logging
from network_builder import NetworkBuilder
def main():
parser = argparse.ArgumentParser(
prog="bldr",
)
parser.add_argument(
"-l",
"--log",
dest="logLevel",
choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
help="Set the logging level",
)
parser.add_argument(
"-f",
"--force",
help="Overwrite any existing/in progress network build",
action="store_true",
)
parser.add_argument(
"-c",
"--config-file",
help="Path to config file",
type=argparse.FileType("r"),
default="config.yaml",
)
args = parser.parse_args()
if args.logLevel:
logLevel = getAttr(logging, args.logLevel)
else:
logLevel = "INFO"
logging.basicConfig(level=logLevel, format="%(asctime)s %(levelname)s %(message)s")
client = docker.from_env()
config = yaml.safe_load(args.config_file)
if args.force:
try:
container = client.containers.get(
f"bldr-{config['network_name']}-builder"
)
container.remove(force=True)
except docker.errors.NotFound:
pass
try:
shutil.rmtree(f"{os.getcwd()}/data/{config['network_name']}")
except FileNotFoundError:
pass
try:
os.makedirs(f"{os.getcwd()}/data/")
except FileExistsError:
pass
os.makedirs(f"{os.getcwd()}/data/{config['network_name']}")
nb = NetworkBuilder(
config["network"], config["network_name"], config["nodes"], client
)
nb.generate_network()
main()