bug: add try except statements to get_data to fix bugs with getting data from graphql.

This commit is contained in:
Upstream Data
2022-11-13 17:03:41 -07:00
parent 255d98fd08
commit b70fed40c8

View File

@@ -562,57 +562,75 @@ class BOSMiner(BaseMiner):
except TypeError or KeyError or ValueError: except TypeError or KeyError or ValueError:
pass pass
boards = query_data["bosminer"]["info"]["workSolver"]["childSolvers"] boards = None
offset = 6 if int(boards[0]["name"]) in [6, 7, 8] else int(boards[0]["name"]) if query_data.get("bosminer"):
for hb in boards: if query_data["bosminer"].get("info"):
_id = int(hb["name"]) - offset if query_data["bosminer"]["info"].get("workSolver"):
boards = query_data["bosminer"]["info"]["workSolver"].get("childSolvers")
if boards:
offset = 6 if int(boards[0]["name"]) in [6, 7, 8] else int(boards[0]["name"])
for hb in boards:
_id = int(hb["name"]) - offset
board = data.hashboards[_id] board = data.hashboards[_id]
board.hashrate = round(hb["realHashrate"]["mhs1M"] / 1000000, 2) board.hashrate = round(hb["realHashrate"]["mhs1M"] / 1000000, 2)
temps = hb["temperatures"] temps = hb["temperatures"]
if len(temps) > 0: if len(temps) > 0:
board.temp = round(hb["temperatures"][0]["degreesC"]) board.temp = round(hb["temperatures"][0]["degreesC"])
if len(temps) > 1: if len(temps) > 1:
board.chip_temp = round(hb["temperatures"][1]["degreesC"]) board.chip_temp = round(hb["temperatures"][1]["degreesC"])
details = hb.get("hwDetails") details = hb.get("hwDetails")
if details: if details:
if chips := details["chips"]: if chips := details["chips"]:
board.chips = chips board.chips = chips
board.missing = False board.missing = False
tuner = hb.get("tuner") tuner = hb.get("tuner")
if tuner: if tuner:
if msg := tuner.get("statusMessages"): if msg := tuner.get("statusMessages"):
if len(msg) > 0: if len(msg) > 0:
if hb["tuner"]["statusMessages"][0] not in [ if hb["tuner"]["statusMessages"][0] not in [
"Stable", "Stable",
"Testing performance profile", "Testing performance profile",
"Tuning individual chips" "Tuning individual chips"
]: ]:
data.errors.append( data.errors.append(
BraiinsOSError(f"Slot {_id} {hb['tuner']['statusMessages'][0]}") BraiinsOSError(f"Slot {_id} {hb['tuner']['statusMessages'][0]}")
) )
try:
data.wattage = query_data["bosminer"]["info"]["workSolver"]["power"]["approxConsumptionW"]
except TypeError or KeyError or ValueError:
pass
try:
data.wattage_limit = query_data["bosminer"]["info"]["workSolver"]["power"]["limitW"]
except TypeError or KeyError or ValueError:
pass
data.wattage = query_data["bosminer"]["info"]["workSolver"]["power"]["approxConsumptionW"]
data.wattage_limit = query_data["bosminer"]["info"]["workSolver"]["power"]["limitW"]
for n in range(self.fan_count): for n in range(self.fan_count):
setattr(data, f"fan_{n + 1}", query_data["bosminer"]["info"]["fans"][n]["rpm"]) try:
setattr(data, f"fan_{n + 1}", query_data["bosminer"]["info"]["fans"][n]["rpm"])
except TypeError or KeyError or ValueError:
pass
groups = query_data["bosminer"]["config"]["groups"] groups = None
if len(groups) == 1: if query_data.get("bosminer"):
data.pool_1_user = groups[0]["pools"][0]["user"] if query_data["bosminer"].get("config"):
data.pool_1_url = groups[0]["pools"][0]["url"] groups = query_data["bosminer"]["config"].get("groups")
data.pool_2_user = groups[0]["pools"][1]["user"] if groups:
data.pool_2_url = groups[0]["pools"][1]["url"] if len(groups) == 1:
data.quota = 0 data.pool_1_user = groups[0]["pools"][0]["user"]
else: data.pool_1_url = groups[0]["pools"][0]["url"]
data.pool_1_user = groups[0]["pools"][0]["user"] data.pool_2_user = groups[0]["pools"][1]["user"]
data.pool_1_url = groups[0]["pools"][0]["url"] data.pool_2_url = groups[0]["pools"][1]["url"]
data.pool_2_user = groups[1]["pools"][0]["user"] data.quota = 0
data.pool_2_url = groups[1]["pools"][0]["url"] else:
if groups[0]["strategy"].get("quota"): data.pool_1_user = groups[0]["pools"][0]["user"]
data.quota = groups[0]["strategy"]["quota"] + "/" + groups[1]["strategy"]["quota"] data.pool_1_url = groups[0]["pools"][0]["url"]
data.pool_2_user = groups[1]["pools"][0]["user"]
data.pool_2_url = groups[1]["pools"][0]["url"]
if groups[0]["strategy"].get("quota"):
data.quota = groups[0]["strategy"]["quota"] + "/" + groups[1]["strategy"]["quota"]
data.fault_light = await self.check_light() data.fault_light = await self.check_light()