forked from gumptioncom/mc-coal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
server_queue.py
72 lines (58 loc) · 1.94 KB
/
server_queue.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
import fix_path # noqa
import json
import logging
from google.appengine.api import taskqueue
import gce
START_EVENT = 'START_SERVER'
STOP_EVENT = 'STOP_SERVER'
BACKUP_EVENT = 'BACKUP_SERVER'
RESTART_EVENT = 'RESTART_SERVER'
def queue_controller_task(payload):
payload = json.dumps(payload)
taskqueue.Queue('controller').add([taskqueue.Task(payload=payload, method='PULL')])
def start_server(server, reserved_ports=None):
try:
instance = gce.Instance.singleton()
instance.start()
if instance.idle:
instance.idle = None
instance.put()
payload = {'event': START_EVENT}
payload['server_key'] = server.key.urlsafe()
payload['agent_client_id'] = server.agent.client_id
payload['agent_secret'] = server.agent.secret
payload['minecraft_url'] = server.minecraft_url
payload['memory'] = server.memory
payload['reserved_ports'] = reserved_ports or list()
payload['server_properties'] = server.mc_properties.server_properties
operator = server.operator
if operator is not None:
payload['operator'] = operator
queue_controller_task(payload)
except Exception as e:
logging.exception(e)
raise
def backup_server(server):
try:
payload = {'event': BACKUP_EVENT}
payload['server_key'] = server.key.urlsafe()
queue_controller_task(payload)
except Exception as e:
logging.exception(e)
raise
def restart_server(server):
try:
payload = {'event': RESTART_EVENT}
payload['server_key'] = server.key.urlsafe()
queue_controller_task(payload)
except Exception as e:
logging.exception(e)
raise
def stop_server(server):
try:
payload = {'event': STOP_EVENT}
payload['server_key'] = server.key.urlsafe()
queue_controller_task(payload)
except Exception as e:
logging.exception(e)
raise