feature: add braiinsOS+ pool configuration.

This commit is contained in:
Upstream Data
2024-07-29 09:53:02 -06:00
parent e2cbd30a99
commit ea2fd0fc9a
2 changed files with 37 additions and 10 deletions

View File

@@ -21,6 +21,13 @@ from dataclasses import dataclass, field
from typing import List from typing import List
from pyasic.config.base import MinerConfigValue from pyasic.config.base import MinerConfigValue
from pyasic.web.braiins_os.proto.braiins.bos.v1 import (
PoolConfiguration,
PoolGroupConfiguration,
Quota,
SaveAction,
SetPoolGroupsRequest,
)
@dataclass @dataclass
@@ -134,6 +141,11 @@ class Pool(MinerConfigValue):
"stratumPassword": self.password, "stratumPassword": self.password,
} }
def as_boser(self) -> PoolConfiguration:
return PoolConfiguration(
url=self.url, user=self.user, password=self.password, enabled=True
)
@classmethod @classmethod
def from_dict(cls, dict_conf: dict | None) -> "Pool": def from_dict(cls, dict_conf: dict | None) -> "Pool":
return cls( return cls(
@@ -306,6 +318,13 @@ class PoolGroup(MinerConfigValue):
def as_bitaxe(self, user_suffix: str = None) -> dict: def as_bitaxe(self, user_suffix: str = None) -> dict:
return self.pools[0].as_bitaxe(user_suffix=user_suffix) 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 @classmethod
def from_dict(cls, dict_conf: dict | None) -> "PoolGroup": def from_dict(cls, dict_conf: dict | None) -> "PoolGroup":
cls_conf = {} cls_conf = {}
@@ -446,7 +465,12 @@ class PoolConfig(MinerConfigValue):
return {"group": [PoolGroup().as_bosminer()]} return {"group": [PoolGroup().as_bosminer()]}
def as_boser(self, user_suffix: str = None) -> dict: 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: def as_auradine(self, user_suffix: str = None) -> dict:
if len(self.groups) > 0: if len(self.groups) > 0:

View File

@@ -414,15 +414,6 @@ class BOSerWebAPI(BaseWebAPI):
"get_pool_groups", message=GetPoolGroupsRequest(), privileged=True "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: async def get_miner_configuration(self) -> dict:
return await self.send_command( return await self.send_command(
"get_miner_configuration", "get_miner_configuration",
@@ -490,3 +481,15 @@ class BOSerWebAPI(BaseWebAPI):
), ),
privileged=True, 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
),
)