feature: Add from am_modern to config.

This commit is contained in:
Upstream Data
2023-12-09 16:59:39 -07:00
parent 81b974f565
commit f892c3a0fd
4 changed files with 67 additions and 16 deletions

View File

@@ -100,6 +100,14 @@ class MinerConfig:
def from_api(cls, api_pools: dict):
return cls(pools=PoolConfig.from_api(api_pools))
@classmethod
def from_am_modern(cls, web_conf: dict):
return cls(
pools=PoolConfig.from_am_modern(web_conf),
mining_mode=MiningModeConfig.from_am_modern(web_conf),
fan_mode=FanModeConfig.from_am_modern(web_conf)
)
def merge(a: dict, b: dict):

View File

@@ -64,3 +64,14 @@ class FanModeConfig(MinerConfigOption):
@classmethod
def default(cls):
return cls.normal()
@classmethod
def from_am_modern(cls, web_conf: dict):
if web_conf.get("bitmain-fan-ctrl") is not None:
fan_manual = web_conf["bitmain-fan-ctrl"]
if fan_manual:
return cls.manual(speed=web_conf["bitmain-fan-pwm"])
else:
return cls.normal()
else:
return cls.default()

View File

@@ -119,3 +119,15 @@ class MiningModeConfig(MinerConfigOption):
@classmethod
def default(cls):
return cls.normal()
@classmethod
def from_am_modern(cls, web_conf: dict):
if web_conf.get("bitmain-work-mode") is not None:
work_mode = web_conf["bitmain-work-mode"]
if int(work_mode) == 0:
return cls.normal()
elif int(work_mode) == 1:
return cls.sleep()
elif int(work_mode) == 3:
return cls.low()
return cls.default()

View File

@@ -89,9 +89,6 @@ class Pool(MinerConfigValue):
f"Password{idx}": self.password,
}
@classmethod
def from_api(cls, api_pool: dict):
return cls(url=api_pool["URL"], user=api_pool["User"], password="x")
def as_bosminer(self, user_suffix: str = None):
if user_suffix is not None:
@@ -102,6 +99,14 @@ class Pool(MinerConfigValue):
}
return {"url": self.url, "user": self.user, "pass": self.password}
@classmethod
def from_api(cls, api_pool: dict):
return cls(url=api_pool["URL"], user=api_pool["User"], password="x")
@classmethod
def from_am_modern(cls, web_pool: dict):
return cls(url=web_pool["url"], user=web_pool["user"], password=web_pool["pass"])
@dataclass
class PoolGroup(MinerConfigValue):
@@ -181,13 +186,6 @@ class PoolGroup(MinerConfigValue):
idx += 1
return pools
@classmethod
def from_api(cls, api_pool_list: list):
pools = []
for pool in api_pool_list:
pools.append(Pool.from_api(pool))
return cls(pools=pools)
def as_bosminer(self, user_suffix: str = None) -> dict:
if len(self.pools) > 0:
return {
@@ -199,6 +197,21 @@ class PoolGroup(MinerConfigValue):
}
return {"name": "Group", "quota": 1, "pool": [Pool.as_bosminer()]}
@classmethod
def from_api(cls, api_pool_list: list):
pools = []
for pool in api_pool_list:
pools.append(Pool.from_api(pool))
return cls(pools=pools)
@classmethod
def from_am_modern(cls, web_pool_list: list):
pools = []
for pool in web_pool_list:
pools.append(Pool.from_am_modern(pool))
return cls(pools=pools)
@dataclass
class PoolConfig(MinerConfigValue):
@@ -247,12 +260,6 @@ class PoolConfig(MinerConfigValue):
return self.groups[0].as_inno(user_suffix=user_suffix)
return PoolGroup().as_inno()
@classmethod
def from_api(cls, api_pools: dict):
pool_data = api_pools["POOLS"]
pool_data = sorted(pool_data, key=lambda x: int(x["POOL"]))
return cls([PoolGroup.from_api(pool_data)])
def as_bosminer(self, user_suffix: str = None) -> dict:
if len(self.groups) > 0:
@@ -260,3 +267,16 @@ class PoolConfig(MinerConfigValue):
"group": [g.as_bosminer(user_suffix=user_suffix) for g in self.groups]
}
return {"group": [PoolGroup().as_bosminer()]}
@classmethod
def from_api(cls, api_pools: dict):
pool_data = api_pools["POOLS"]
pool_data = sorted(pool_data, key=lambda x: int(x["POOL"]))
return cls([PoolGroup.from_api(pool_data)])
@classmethod
def from_am_modern(cls, web_conf: dict):
pool_data = web_conf["pools"]
return cls([PoolGroup.from_am_modern(pool_data)])