From ea2fd0fc9a986ce7f2304d8be68b16627235f23e Mon Sep 17 00:00:00 2001 From: Upstream Data Date: Mon, 29 Jul 2024 09:53:02 -0600 Subject: [PATCH] feature: add braiinsOS+ pool configuration. --- pyasic/config/pools.py | 26 +++++++++++++++++++++++++- pyasic/web/braiins_os/boser.py | 21 ++++++++++++--------- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/pyasic/config/pools.py b/pyasic/config/pools.py index e2572cd9..81485716 100644 --- a/pyasic/config/pools.py +++ b/pyasic/config/pools.py @@ -21,6 +21,13 @@ from dataclasses import dataclass, field from typing import List from pyasic.config.base import MinerConfigValue +from pyasic.web.braiins_os.proto.braiins.bos.v1 import ( + PoolConfiguration, + PoolGroupConfiguration, + Quota, + SaveAction, + SetPoolGroupsRequest, +) @dataclass @@ -134,6 +141,11 @@ class Pool(MinerConfigValue): "stratumPassword": self.password, } + def as_boser(self) -> PoolConfiguration: + return PoolConfiguration( + url=self.url, user=self.user, password=self.password, enabled=True + ) + @classmethod def from_dict(cls, dict_conf: dict | None) -> "Pool": return cls( @@ -306,6 +318,13 @@ class PoolGroup(MinerConfigValue): def as_bitaxe(self, user_suffix: str = None) -> dict: return self.pools[0].as_bitaxe(user_suffix=user_suffix) + def as_boser(self, user_suffix: str = None) -> PoolGroupConfiguration: + return PoolGroupConfiguration( + name=self.name, + quota=Quota(value=self.quota), + pools=[p.as_boser() for p in self.pools], + ) + @classmethod def from_dict(cls, dict_conf: dict | None) -> "PoolGroup": cls_conf = {} @@ -446,7 +465,12 @@ class PoolConfig(MinerConfigValue): return {"group": [PoolGroup().as_bosminer()]} def as_boser(self, user_suffix: str = None) -> dict: - return {} + return { + "set_pool_groups": SetPoolGroupsRequest( + save_action=SaveAction.SAVE_ACTION_SAVE_AND_APPLY, + pool_groups=[g.as_boser(user_suffix=user_suffix) for g in self.groups], + ) + } def as_auradine(self, user_suffix: str = None) -> dict: if len(self.groups) > 0: diff --git a/pyasic/web/braiins_os/boser.py b/pyasic/web/braiins_os/boser.py index 1f185dfb..84d45e80 100644 --- a/pyasic/web/braiins_os/boser.py +++ b/pyasic/web/braiins_os/boser.py @@ -414,15 +414,6 @@ class BOSerWebAPI(BaseWebAPI): "get_pool_groups", message=GetPoolGroupsRequest(), privileged=True ) - async def create_pool_group(self) -> dict: - raise NotImplementedError - - async def update_pool_group(self) -> dict: - raise NotImplementedError - - async def remove_pool_group(self) -> dict: - raise NotImplementedError - async def get_miner_configuration(self) -> dict: return await self.send_command( "get_miner_configuration", @@ -490,3 +481,15 @@ class BOSerWebAPI(BaseWebAPI): ), privileged=True, ) + + async def set_pool_groups( + self, + pool_groups: List[PoolGroupConfiguration], + save_action: SaveAction = SaveAction.SAVE_ACTION_SAVE_AND_APPLY, + ) -> dict: + return await self.send_command( + "set_pool_groups", + message=SetPoolGroupsRequest( + save_action=save_action, pool_groups=pool_groups + ), + )