-
Dixon Tirtayadi authoreda5c3a160
main.py 1.55 KiB
import json
import subprocess
# Can spawn multiple paxos server
if __name__ == "__main__":
processes = []
with open("config.json", encoding='utf-8') as f:
json_dict = json.loads(f.read())
addresses = json_dict["servers"]
try:
for i in range(0, len(addresses), 2):
paxos_host = addresses[i]
paxos_port = addresses[i + 1]
proc = subprocess.Popen(["python3", "mencius.py", paxos_host, paxos_port] + addresses)
processes.append(proc)
# Needed to sleep forever here until ctrl-c so we go into "finally" and kill processes
input_str = input() # Input would be "lock 2" / "unlock 1", etc or "exit"
while input_str != "exit":
command, node = input_str.split(" ", 2)
node = int(node)
if node > len(addresses) / 2:
print("Node does not exists")
elif command == "kill":
print(f"Killing node ({addresses[node*2]}, {addresses[(node*2) + 1]})")
processes[node].kill()
elif command == "run":
print(f"Bringing back up node number ({addresses[node*2]}, {addresses[(node*2) + 1]})")
paxos_host = addresses[node*2]
paxos_port = addresses[(node*2) + 1]
processes[node] = subprocess.Popen(["python3", "mencius.py", paxos_host, paxos_port] + addresses)
input_str = input()
finally:
for proc in processes:
# proc.send_signal(signal.SIGINT)
proc.kill()