From eec8f66b81941fcea71a8d30e72ae42fea5295c4 Mon Sep 17 00:00:00 2001 From: ytemiloluwa Date: Tue, 18 Jun 2024 14:22:30 +0100 Subject: [PATCH 1/4] backends: _get_pools in BOSer --- pyasic/miners/backends/braiins_os.py | 31 ++++++++++++++++++++++++++++ pyasic/web/braiins_os/boser.py | 13 ++++++++++++ 2 files changed, 44 insertions(+) diff --git a/pyasic/miners/backends/braiins_os.py b/pyasic/miners/backends/braiins_os.py index ab0c75ea..dee0437a 100644 --- a/pyasic/miners/backends/braiins_os.py +++ b/pyasic/miners/backends/braiins_os.py @@ -40,6 +40,8 @@ from pyasic.ssh.braiins_os import BOSMinerSSH from pyasic.web.braiins_os import BOSerWebAPI, BOSMinerWebAPI from pyasic.web.braiins_os.proto.braiins.bos.v1 import SaveAction from pyasic.data.pools import PoolMetrics +from pyasic.web.braiins_os.boser import _get_pools_Group +from grpclib.client import Channel BOSMINER_DATA_LOC = DataLocations( **{ @@ -720,6 +722,10 @@ BOSER_DATA_LOC = DataLocations( "_get_uptime", [RPCAPICommand("rpc_summary", "summary")], ), + str(DataOptions.POOLS): DataFunction( + "_get_pools", + [RPCAPICommand("grpc_pools", "pools")] + ) } ) @@ -1058,3 +1064,28 @@ class BOSer(BraiinsOSFirmware): return int(rpc_summary["SUMMARY"][0]["Elapsed"]) except LookupError: pass + + async def _get_pools(channel: Channel, grpc_pools: dict = None) -> List[PoolMetrics]: + if grpc_pools is None: + try: + grpc_pools = await _get_pools_Group(channel) + except APIError: + return [] + + pools_data = [] + for group in grpc_pools: + for pool_info in group.pools: + pool_data = PoolMetrics( + url=pool_info.url, + user=pool_info.user, + index=int(pool_info.uid), + accepted=pool_info.stats.accepted_shares, + rejected=pool_info.stats.rejected_shares, + get_failures=pool_info.stats.stale_shares, + remote_failures=0, + active=pool_info.active, + alive=pool_info.alive + ) + pools_data.append(pool_data) + + return pools_data \ No newline at end of file diff --git a/pyasic/web/braiins_os/boser.py b/pyasic/web/braiins_os/boser.py index 1f185dfb..17e7a5e8 100644 --- a/pyasic/web/braiins_os/boser.py +++ b/pyasic/web/braiins_os/boser.py @@ -30,6 +30,19 @@ from pyasic.web.base import BaseWebAPI from .proto.braiins.bos import * from .proto.braiins.bos.v1 import * +from .proto.braiins.bos.v1 import GetPoolGroupsRequest, PoolGroup +from .proto.braiins.bos.v1 import PoolServiceStub + + +async def _get_pools_Group(channel: Channel) -> List[PoolGroup]: + stub = PoolServiceStub(channel) + request = GetPoolGroupsRequest() + try: + response = await stub.get_pool_groups(request) + except GRPCError as e: + raise APIError(f"gRPC error: {e}") + return response.pool_groups + class BOSMinerGRPCStub( ApiVersionServiceStub, From 64265206c2f2d3991f8785f610d3908b54382dad Mon Sep 17 00:00:00 2001 From: ytemiloluwa Date: Wed, 19 Jun 2024 09:25:35 +0100 Subject: [PATCH 2/4] backends: updated _get_pools in BOSer --- pyasic/miners/backends/braiins_os.py | 8 +++----- pyasic/web/braiins_os/boser.py | 13 ------------- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/pyasic/miners/backends/braiins_os.py b/pyasic/miners/backends/braiins_os.py index dee0437a..6331dea6 100644 --- a/pyasic/miners/backends/braiins_os.py +++ b/pyasic/miners/backends/braiins_os.py @@ -40,8 +40,6 @@ from pyasic.ssh.braiins_os import BOSMinerSSH from pyasic.web.braiins_os import BOSerWebAPI, BOSMinerWebAPI from pyasic.web.braiins_os.proto.braiins.bos.v1 import SaveAction from pyasic.data.pools import PoolMetrics -from pyasic.web.braiins_os.boser import _get_pools_Group -from grpclib.client import Channel BOSMINER_DATA_LOC = DataLocations( **{ @@ -724,7 +722,7 @@ BOSER_DATA_LOC = DataLocations( ), str(DataOptions.POOLS): DataFunction( "_get_pools", - [RPCAPICommand("grpc_pools", "pools")] + [WebAPICommand("grpc_pool_groups", "get_pool_groups")] ) } ) @@ -1065,10 +1063,10 @@ class BOSer(BraiinsOSFirmware): except LookupError: pass - async def _get_pools(channel: Channel, grpc_pools: dict = None) -> List[PoolMetrics]: + async def _get_pools(self, grpc_pools: dict = None) -> List[PoolMetrics]: if grpc_pools is None: try: - grpc_pools = await _get_pools_Group(channel) + grpc_pools = await self.web.get_pool_groups() except APIError: return [] diff --git a/pyasic/web/braiins_os/boser.py b/pyasic/web/braiins_os/boser.py index 17e7a5e8..1f185dfb 100644 --- a/pyasic/web/braiins_os/boser.py +++ b/pyasic/web/braiins_os/boser.py @@ -30,19 +30,6 @@ from pyasic.web.base import BaseWebAPI from .proto.braiins.bos import * from .proto.braiins.bos.v1 import * -from .proto.braiins.bos.v1 import GetPoolGroupsRequest, PoolGroup -from .proto.braiins.bos.v1 import PoolServiceStub - - -async def _get_pools_Group(channel: Channel) -> List[PoolGroup]: - stub = PoolServiceStub(channel) - request = GetPoolGroupsRequest() - try: - response = await stub.get_pool_groups(request) - except GRPCError as e: - raise APIError(f"gRPC error: {e}") - return response.pool_groups - class BOSMinerGRPCStub( ApiVersionServiceStub, From 1bb597999d326922cc56a917cb44d743afffd9f2 Mon Sep 17 00:00:00 2001 From: ytemiloluwa Date: Sat, 22 Jun 2024 19:06:14 +0100 Subject: [PATCH 3/4] backends: updated _get_pools arg in BOSer --- pyasic/miners/backends/braiins_os.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pyasic/miners/backends/braiins_os.py b/pyasic/miners/backends/braiins_os.py index 6331dea6..ba7fb84b 100644 --- a/pyasic/miners/backends/braiins_os.py +++ b/pyasic/miners/backends/braiins_os.py @@ -1063,15 +1063,14 @@ class BOSer(BraiinsOSFirmware): except LookupError: pass - async def _get_pools(self, grpc_pools: dict = None) -> List[PoolMetrics]: - if grpc_pools is None: + async def _get_pools(self, grpc_pool_groups: dict = None) -> List[PoolMetrics]: + if grpc_pool_groups is None: try: - grpc_pools = await self.web.get_pool_groups() + grpc_pool_groups = await self.web.get_pool_groups() except APIError: return [] - pools_data = [] - for group in grpc_pools: + for group in grpc_pool_groups: for pool_info in group.pools: pool_data = PoolMetrics( url=pool_info.url, From 18a2df5d9b6ada8b3f819e8efdb0351aa340e2b7 Mon Sep 17 00:00:00 2001 From: ytemiloluwa Date: Tue, 30 Jul 2024 22:20:13 +0100 Subject: [PATCH 4/4] replaced getattr with getitem --- pyasic/miners/backends/braiins_os.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/pyasic/miners/backends/braiins_os.py b/pyasic/miners/backends/braiins_os.py index ba7fb84b..d6aaa381 100644 --- a/pyasic/miners/backends/braiins_os.py +++ b/pyasic/miners/backends/braiins_os.py @@ -1070,19 +1070,19 @@ class BOSer(BraiinsOSFirmware): except APIError: return [] pools_data = [] - for group in grpc_pool_groups: - for pool_info in group.pools: + for group in grpc_pool_groups["poolGroups"]: + for idx, pool_info in enumerate(group["pools"]): pool_data = PoolMetrics( - url=pool_info.url, - user=pool_info.user, - index=int(pool_info.uid), - accepted=pool_info.stats.accepted_shares, - rejected=pool_info.stats.rejected_shares, - get_failures=pool_info.stats.stale_shares, + url=pool_info["url"], + user=pool_info["user"], + index=idx, + accepted=pool_info["stats"]["acceptedShares"], + rejected=pool_info["stats"]["rejectedShares"], + get_failures=pool_info["stats"]["stale_shares"], remote_failures=0, - active=pool_info.active, - alive=pool_info.alive + active=pool_info["active"], + alive=pool_info["alive"] ) pools_data.append(pool_data) - return pools_data \ No newline at end of file + return pools_data