bug: fix bosminer config parsing.

This commit is contained in:
Upstream Data
2023-12-10 17:40:39 -07:00
parent 43200a7354
commit 1ab39f5873
4 changed files with 30 additions and 29 deletions

View File

@@ -127,7 +127,7 @@ class Pool(MinerConfigValue):
return cls(
url=toml_pool_conf["url"],
user=toml_pool_conf["user"],
password=toml_pool_conf["pass"],
password=toml_pool_conf["password"],
)
@@ -135,7 +135,7 @@ class Pool(MinerConfigValue):
@dataclass
class PoolGroup(MinerConfigValue):
pools: list[Pool] = field(default_factory=list)
quota: int = 1
quota: int = None
name: str = None
def __post_init__(self):
@@ -204,14 +204,15 @@ class PoolGroup(MinerConfigValue):
def as_bosminer(self, user_suffix: str = None) -> dict:
if len(self.pools) > 0:
return {
conf = {
"name": self.name,
"quota": self.quota,
"pool": [
pool.as_bosminer(user_suffix=user_suffix) for pool in self.pools
],
}
return {"name": "Group", "quota": 1, "pool": []}
if self.quota is not None:
conf["quota"] = self.quota
return {"name": "Group", "pool": []}
@classmethod
def from_api(cls, api_pool_list: list):
@@ -240,7 +241,7 @@ class PoolGroup(MinerConfigValue):
if toml_group_conf.get("pool") is not None:
return cls(
name=toml_group_conf["name"],
quota=toml_group_conf["quota"],
quota=toml_group_conf.get("quota"),
pools=[Pool.from_bosminer(p) for p in toml_group_conf["pool"]],
)
return cls()

View File

@@ -85,18 +85,16 @@ class AntminerModern(BMMiner):
async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None:
self.config = config
conf = config.as_am_modern(user_suffix=user_suffix)
data = await self.web.set_miner_conf(conf)
if data:
if data.get("code") == "M000":
return
for i in range(7):
data = await self.get_config()
if data.as_am_modern() == conf:
break
await asyncio.sleep(1)
await self.web.set_miner_conf(config.as_am_modern(user_suffix=user_suffix))
# if data:
# if data.get("code") == "M000":
# return
#
# for i in range(7):
# data = await self.get_config()
# if data == self.config:
# break
# await asyncio.sleep(1)
async def fault_light_on(self) -> bool:
data = await self.web.blink(blink=True)
@@ -353,6 +351,7 @@ class AntminerOld(CGMiner):
return self.config
async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None:
self.config = config
await self.web.set_miner_conf(config.as_am_old(user_suffix=user_suffix))
async def get_mac(self) -> Union[str, None]:

View File

@@ -617,7 +617,7 @@ class BOSMiner(BaseMiner):
offset = 0
if 3 in b_names:
offset = 1
elif 6 in b_names:
elif 6 in b_names or 7 in b_names or 8 in b_names:
offset = 6
for hb in boards:
_id = int(hb["name"]) - offset

View File

@@ -100,16 +100,17 @@ class CGMinerAvalon(CGMiner):
return False
async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None:
self.config = config
return None
logging.debug(f"{self}: Sending config.") # noqa - This doesnt work...
conf = config.as_avalon(user_suffix=user_suffix)
try:
data = await self.api.ascset( # noqa
0, "setpool", f"root,root,{conf}"
) # this should work but doesn't
except APIError:
pass
# self.config = config
# return None
# logging.debug(f"{self}: Sending config.") # noqa - This doesnt work...
# conf = config.as_avalon(user_suffix=user_suffix)
# try:
# data = await self.api.ascset( # noqa
# 0, "setpool", f"root,root,{conf}"
# ) # this should work but doesn't
# except APIError:
# pass
# return data
@staticmethod