backends: _get_pools in BOSer

This commit is contained in:
ytemiloluwa
2024-06-18 14:22:30 +01:00
parent 30f385c2d9
commit eec8f66b81
2 changed files with 44 additions and 0 deletions

View File

@@ -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

View File

@@ -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,