-
Notifications
You must be signed in to change notification settings - Fork 0
/
new_server.py
69 lines (49 loc) · 2.12 KB
/
new_server.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
#!/usr/bin/env python3
import yaml
from utils import argparse_setup, missing
from new_bungee import find_bungee_name
from do_utils import spin_up_new_server
from ssh_utils import finalize_server_setup
def find_server_name(name, bungee_name):
# type: (str, str) -> bool
with open('bungee_info.yml', 'r') as bgf:
cfg = yaml.safe_load(bgf) or {}
if not cfg.get(bungee_name):
return False
servers = cfg.get(bungee_name).get('servers', {})
if name not in servers:
return False
return True
def get_bungee_info(name):
# type: (str) -> dict
with open('bungee_info.yml', 'r') as bgf:
cfg = yaml.safe_load(bgf) or {}
bg_info = cfg.get(name) or {}
return bg_info
def add_server_to_bungee_config(bungee_name, server_name, server_ip, server_port=0000):
# type: (str, str, str, int) -> None
with open('bungee_info.yml', 'r') as bgf:
cfg = yaml.safe_load(bgf) or {}
server_info = dict(ip=server_ip, port=server_port)
cfg[bungee_name]['servers'][server_name] = server_info
with open('bungee_info.yml', 'w') as bgf:
yaml.safe_dump(cfg, bgf)
if __name__ == "__main__":
args, wildcards = argparse_setup()
placeholders = vars(wildcards)
if not args.bungee_name:
missing("--bungee_name", force=True)
if not find_bungee_name(args.bungee_name):
print(f"No bungee config by the name {args.bungee_name} was found! "
"Choose a different name or create one with new_bungee.py.")
exit(1)
if find_server_name(args.name, args.bungee_name):
print(f"A server by name {args.name} already exists under {args.bungee_name}!")
print("Choose a different name")
exit(1)
new_server = spin_up_new_server(args.name, args.config_definition_path,
sleep_time=args.sleep_time)
# TODO add port to args, required
add_server_to_bungee_config(args.bungee_name, args.name, new_server.get('ip_address'))
bungee_info = get_bungee_info(args.bungee_name)
finalize_server_setup(args.config_definition_path, new_server.get('ip_address'), **placeholders)