From 34eec3ff2e2799044819dad80e9bed44e14d7ec2 Mon Sep 17 00:00:00 2001 From: ytemiloluwa Date: Thu, 25 Jul 2024 13:11:28 +0100 Subject: [PATCH 1/2] backends: add _get_pools to Innosilicon --- pyasic/miners/backends/innosilicon.py | 37 ++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/pyasic/miners/backends/innosilicon.py b/pyasic/miners/backends/innosilicon.py index b6cc88b1..8785a47d 100644 --- a/pyasic/miners/backends/innosilicon.py +++ b/pyasic/miners/backends/innosilicon.py @@ -29,6 +29,7 @@ from pyasic.miners.data import ( WebAPICommand, ) from pyasic.web.innosilicon import InnosiliconWebAPI +from pyasic.data.pools import PoolMetrics, PoolUrl INNOSILICON_DATA_LOC = DataLocations( **{ @@ -90,6 +91,10 @@ INNOSILICON_DATA_LOC = DataLocations( "_get_uptime", [RPCAPICommand("rpc_stats", "stats")], ), + str(DataOptions.POOLS): DataFunction( + "_get_pools", + [WebAPICommand("web_pools", "pools")] + ) } ) @@ -111,7 +116,7 @@ class Innosilicon(CGMiner): except APIError: return self.config - self.config = MinerConfig.from_inno(pools) + self.config = MinerConfig.from_inno([pools]) return self.config async def reboot(self) -> bool: @@ -365,3 +370,33 @@ class Innosilicon(CGMiner): level = int(level) limit = 1250 + (250 * level) return limit + + async def _get_pools(self, web_pools: dict = None) -> List[PoolMetrics]: + if web_pools is None: + try: + web_pools = await self.web.pools() + except APIError: + pass + + pools_data = [] + if web_pools is not None: + try: + pools = web_pools.get("POOLS", []) + for pool_info in pools: + url = pool_info.get("URL") + pool_url = PoolUrl.from_str(url) if url else None + pool_data = PoolMetrics( + accepted=pool_info.get("Accepted"), + rejected=pool_info.get("Rejected"), + get_failures=pool_info.get("Get Failures"), + remote_failures=pool_info.get("Remote Failures"), + active=pool_info.get("Stratum Active"), + alive=pool_info.get("Status") == "Alive", + url=pool_url, + user=pool_info.get("User"), + index=pool_info.get("POOL"), + ) + pools_data.append(pool_data) + except LookupError: + pass + return pools_data \ No newline at end of file From c44150fd152cfeabe94a02931309619837b2ce18 Mon Sep 17 00:00:00 2001 From: ytemiloluwa Date: Fri, 26 Jul 2024 10:22:28 +0100 Subject: [PATCH 2/2] APICommand: web to rpc --- pyasic/miners/backends/innosilicon.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pyasic/miners/backends/innosilicon.py b/pyasic/miners/backends/innosilicon.py index 8785a47d..de22a923 100644 --- a/pyasic/miners/backends/innosilicon.py +++ b/pyasic/miners/backends/innosilicon.py @@ -93,7 +93,7 @@ INNOSILICON_DATA_LOC = DataLocations( ), str(DataOptions.POOLS): DataFunction( "_get_pools", - [WebAPICommand("web_pools", "pools")] + [RPCAPICommand("rpc_pools", "pools")] ) } ) @@ -371,17 +371,17 @@ class Innosilicon(CGMiner): limit = 1250 + (250 * level) return limit - async def _get_pools(self, web_pools: dict = None) -> List[PoolMetrics]: - if web_pools is None: + async def _get_pools(self, rpc_pools: dict = None) -> List[PoolMetrics]: + if rpc_pools is None: try: - web_pools = await self.web.pools() + rpc_pools = await self.rpc.pools() except APIError: pass pools_data = [] - if web_pools is not None: + if rpc_pools is not None: try: - pools = web_pools.get("POOLS", []) + pools = rpc_pools.get("POOLS", []) for pool_info in pools: url = pool_info.get("URL") pool_url = PoolUrl.from_str(url) if url else None @@ -399,4 +399,4 @@ class Innosilicon(CGMiner): pools_data.append(pool_data) except LookupError: pass - return pools_data \ No newline at end of file + return pools_data