added settings.py file for managing retries and "threads", as well as fixing some bugs in the APIs
This commit is contained in:
@@ -13,7 +13,7 @@ class BMMiner(BaseMiner):
|
||||
async def get_hostname(self) -> str:
|
||||
return "BMMiner Unknown"
|
||||
|
||||
async def send_config(self):
|
||||
async def send_config(self, _):
|
||||
return None # ignore for now
|
||||
|
||||
async def restart_backend(self) -> None:
|
||||
|
||||
@@ -13,7 +13,7 @@ class BTMiner(BaseMiner):
|
||||
async def get_hostname(self) -> str:
|
||||
return "BTMiner Unknown"
|
||||
|
||||
async def send_config(self):
|
||||
async def send_config(self, _):
|
||||
return None # ignore for now
|
||||
|
||||
async def restart_backend(self) -> None:
|
||||
|
||||
@@ -22,10 +22,10 @@ class CGMiner(BaseMiner):
|
||||
return data.stdout.strip()
|
||||
else:
|
||||
return "CGMiner Unknown"
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
return "CGMiner Unknown"
|
||||
|
||||
async def send_config(self):
|
||||
async def send_config(self, _):
|
||||
return None # ignore for now
|
||||
|
||||
async def _get_ssh_connection(self) -> asyncssh.connect:
|
||||
@@ -36,7 +36,7 @@ class CGMiner(BaseMiner):
|
||||
password=self.pwd,
|
||||
server_host_key_algs=['ssh-rsa'])
|
||||
return conn
|
||||
except asyncssh.misc.PermissionDenied as e:
|
||||
except asyncssh.misc.PermissionDenied:
|
||||
try:
|
||||
conn = await asyncssh.connect(str(self.ip),
|
||||
known_hosts=None,
|
||||
@@ -50,7 +50,6 @@ class CGMiner(BaseMiner):
|
||||
print(str(self.ip) + " Connection refused.")
|
||||
return None
|
||||
|
||||
|
||||
async def send_ssh_command(self, cmd):
|
||||
result = None
|
||||
async with (await self._get_ssh_connection()) as conn:
|
||||
@@ -116,4 +115,4 @@ class CGMiner(BaseMiner):
|
||||
result = await conn.run(command, check=True)
|
||||
self._result_handler(result)
|
||||
self.config = result.stdout
|
||||
print(str(self.config))
|
||||
print(str(self.config))
|
||||
|
||||
@@ -8,6 +8,8 @@ import asyncio
|
||||
import ipaddress
|
||||
import json
|
||||
|
||||
from settings import MINER_FACTORY_GET_VERSION_RETRIES as GET_VERSION_RETRIES
|
||||
|
||||
|
||||
class MinerFactory:
|
||||
def __init__(self):
|
||||
@@ -19,11 +21,13 @@ class MinerFactory:
|
||||
if ip in self.miners:
|
||||
return self.miners[ip]
|
||||
# get the version data
|
||||
version_data = await self._get_version_data(ip)
|
||||
version = None
|
||||
if version_data:
|
||||
# if we got version data, get a list of the keys so we can check type of miner
|
||||
version = list(version_data['VERSION'][0].keys())
|
||||
for i in range(GET_VERSION_RETRIES):
|
||||
version_data = await self._get_version_data(ip)
|
||||
if version_data:
|
||||
# if we got version data, get a list of the keys so we can check type of miner
|
||||
version = list(version_data['VERSION'][0].keys())
|
||||
break
|
||||
if version:
|
||||
# check version against different return miner types
|
||||
if "BOSminer" in version or "BOSminer+" in version:
|
||||
@@ -35,9 +39,11 @@ class MinerFactory:
|
||||
elif "BTMiner" in version:
|
||||
miner = BTMiner(str(ip))
|
||||
else:
|
||||
print(f"Bad API response: {version}")
|
||||
miner = UnknownMiner(str(ip))
|
||||
else:
|
||||
# if we don't get version, miner type is unknown
|
||||
print(f"No API response: {str(ip)}")
|
||||
miner = UnknownMiner(str(ip))
|
||||
# save the miner in cache
|
||||
self.miners[ip] = miner
|
||||
|
||||
@@ -10,7 +10,7 @@ class UnknownMiner(BaseMiner):
|
||||
def __repr__(self) -> str:
|
||||
return f"Unknown: {str(self.ip)}"
|
||||
|
||||
async def send_config(self):
|
||||
async def send_config(self, _):
|
||||
return None
|
||||
|
||||
async def get_hostname(self):
|
||||
|
||||
Reference in New Issue
Block a user