Handle packaged state
Signed-off-by: fly <merspieler@airmail.cc>
This commit is contained in:
parent
d05795a023
commit
711cec4f04
2 changed files with 65 additions and 9 deletions
|
@ -59,7 +59,7 @@ while i < argc:
|
||||||
first = 2
|
first = 2
|
||||||
tile = match.group(0)
|
tile = match.group(0)
|
||||||
elif first == 2:
|
elif first == 2:
|
||||||
match = re.match(r"(done|pending|rebuild|skip)", sys.argv[i])
|
match = re.match(r"(done|pending|rebuild|skip|packaged)", sys.argv[i])
|
||||||
if match == None:
|
if match == None:
|
||||||
print("ERROR: Invalid status " + sys.argv[i])
|
print("ERROR: Invalid status " + sys.argv[i])
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
|
@ -73,7 +73,7 @@ def set_state(state, name, status):
|
||||||
if verbose:
|
if verbose:
|
||||||
print(name + " set status to " + status)
|
print(name + " set status to " + status)
|
||||||
|
|
||||||
if status == "started" or status == "done" or status == "rebuild" or status == "skip" or status == "pending":
|
if status == "started" or status == "done" or status == "rebuild" or status == "skip" or status == "pending" or status == "packaged":
|
||||||
if name == "n-pole" or name == "s-pole":
|
if name == "n-pole" or name == "s-pole":
|
||||||
if not name in state:
|
if not name in state:
|
||||||
state[name] = {}
|
state[name] = {}
|
||||||
|
@ -111,9 +111,11 @@ def set_state(state, name, status):
|
||||||
state[name_major]["pending"] = 0
|
state[name_major]["pending"] = 0
|
||||||
for tile in state[name_major]:
|
for tile in state[name_major]:
|
||||||
# Filter status of name_major
|
# Filter status of name_major
|
||||||
if tile != "done" and tile != "started" and tile != "pending" and tile != "status" and tile != "rebuild" and tile != "skip":
|
if tile != "done" and tile != "started" and tile != "pending" and tile != "status" and tile != "rebuild" and tile != "skip" and tile != "packaged":
|
||||||
state[name_major][state[name_major][tile]["status"]] += 1
|
state[name_major][state[name_major][tile]["status"]] += 1
|
||||||
if state[name_major]["done"] == 100:
|
if state[name_major]["packaged"] == 100:
|
||||||
|
state[name_major]["status"] = "packaged"
|
||||||
|
elif state[name_major]["done"] == 100:
|
||||||
state[name_major]["status"] = "done"
|
state[name_major]["status"] = "done"
|
||||||
elif state[name_major]["started"] > 0:
|
elif state[name_major]["started"] > 0:
|
||||||
state[name_major]["status"] = "started"
|
state[name_major]["status"] = "started"
|
||||||
|
@ -150,15 +152,18 @@ try:
|
||||||
msg = c.recv(128)
|
msg = c.recv(128)
|
||||||
msg = msg.decode()
|
msg = msg.decode()
|
||||||
|
|
||||||
match = re.match(r"(set) (n-pole|s-pole|[ew]\d{3}[ns]\d{2}) (done|started|rebuild|skip|pending)", msg)
|
match = re.match(r"(set) (n-pole|s-pole|[ew]\d{3}[ns]\d{2}) (done|started|rebuild|skip|pending|packaged)", msg)
|
||||||
if match != None:
|
if match != None:
|
||||||
action = "set"
|
action = "set"
|
||||||
name = match.group(2)
|
name = match.group(2)
|
||||||
status = match.group(3)
|
status = match.group(3)
|
||||||
else:
|
else:
|
||||||
match = re.match(r"(get) (started|rebuild|skip|pending)", msg)
|
match = re.match(r"(get) (started|rebuild|skip|pending|done)", msg)
|
||||||
if match != None:
|
if match != None:
|
||||||
action = "get"
|
if match.group(2) == "done":
|
||||||
|
action = "get-done"
|
||||||
|
else:
|
||||||
|
action = "get-job"
|
||||||
get = match.group(2)
|
get = match.group(2)
|
||||||
else:
|
else:
|
||||||
match = re.match(r"(status) (n-pole|s-pole|[ew]\d{3}[ns]\d{2})", msg)
|
match = re.match(r"(status) (n-pole|s-pole|[ew]\d{3}[ns]\d{2})", msg)
|
||||||
|
@ -171,7 +176,7 @@ try:
|
||||||
if action == "set":
|
if action == "set":
|
||||||
state = set_state(state, name, status)
|
state = set_state(state, name, status)
|
||||||
|
|
||||||
elif action == "get":
|
elif action == "get-job":
|
||||||
tile = ""
|
tile = ""
|
||||||
# Build poles first
|
# Build poles first
|
||||||
if not "n-pole" in state or ("n-pole" in state and state["n-pole"]["status"] == get):
|
if not "n-pole" in state or ("n-pole" in state and state["n-pole"]["status"] == get):
|
||||||
|
@ -231,6 +236,57 @@ try:
|
||||||
print("Asigning job on tile " + tile)
|
print("Asigning job on tile " + tile)
|
||||||
|
|
||||||
c.send(tile.encode())
|
c.send(tile.encode())
|
||||||
|
elif action == "get-done":
|
||||||
|
tile = ""
|
||||||
|
if "n-pole" in state and state["n-pole"]["status"] == "done":
|
||||||
|
tile = "n-pole"
|
||||||
|
elif "s-pole" in state and state["s-pole"]["status"] == "done":
|
||||||
|
tile = "s-pole"
|
||||||
|
else:
|
||||||
|
ii = -8
|
||||||
|
|
||||||
|
while ii < 8 and tile == "":
|
||||||
|
i = ii * 10
|
||||||
|
jj = -18
|
||||||
|
while jj < 18 and tile == "":
|
||||||
|
j = jj * 10
|
||||||
|
if i >= 0:
|
||||||
|
ns = "n"
|
||||||
|
else:
|
||||||
|
ns = "s"
|
||||||
|
if j >= 0:
|
||||||
|
ew = "e"
|
||||||
|
else:
|
||||||
|
ew = "w"
|
||||||
|
|
||||||
|
name = ew + norm(abs(j), 3) + ns + norm(abs(i), 2)
|
||||||
|
if name in state and state[name]["status"] != "packaged":
|
||||||
|
if ns == "s":
|
||||||
|
ns_step = -1
|
||||||
|
else:
|
||||||
|
ns_step = 1
|
||||||
|
if ew == "w":
|
||||||
|
ew_step = -1
|
||||||
|
else:
|
||||||
|
ew_step = 1
|
||||||
|
j = abs(j)
|
||||||
|
for k in range(0, 10):
|
||||||
|
if tile != "":
|
||||||
|
break
|
||||||
|
iii = abs(i)
|
||||||
|
for l in range(0, 10):
|
||||||
|
name_minor = ew + norm(j, 3) + ns + norm(iii, 2)
|
||||||
|
if name_minor in state[name] and state[name][name_minor]["status"] == "done":
|
||||||
|
tile = name_minor
|
||||||
|
break
|
||||||
|
iii += ns_step
|
||||||
|
j += ew_step
|
||||||
|
jj += 1
|
||||||
|
ii += 1
|
||||||
|
|
||||||
|
if tile == "":
|
||||||
|
tile = "None"
|
||||||
|
c.send(tile.encode())
|
||||||
elif action == "status":
|
elif action == "status":
|
||||||
if name == "n-pole" or name == "s-pole":
|
if name == "n-pole" or name == "s-pole":
|
||||||
c.send(state[name]["status"].encode())
|
c.send(state[name]["status"].encode())
|
||||||
|
|
Loading…
Add table
Reference in a new issue