Refactor firmware upgrade process

This commit is contained in:
1e9abhi1e10
2024-08-27 02:34:23 +05:30
parent 6b50bf0cf7
commit 28642cc521
2 changed files with 16 additions and 25 deletions

View File

@@ -143,12 +143,13 @@ class AntminerModern(BMMiner):
try:
result = await self.web.update_firmware(file=file, keep_settings=keep_settings)
if 'Success' in result:
logging.info("Firmware upgrade process completed successfully for Antminer.")
if result.get("success"):
logging.info("Firmware upgrade process completed successfully for AntMiner.")
return "Firmware upgrade completed successfully."
else:
logging.error(f"Firmware upgrade failed. Response: {result}")
return f"Firmware upgrade failed. Response: {result}"
error_message = result.get("message", "Unknown error")
logging.error(f"Firmware upgrade failed. Response: {error_message}")
return f"Firmware upgrade failed. Response: {error_message}"
except Exception as e:
logging.error(f"An error occurred during the firmware upgrade process: {e}", exc_info=True)
raise

View File

@@ -61,25 +61,6 @@ class AntminerModernWebAPI(BaseWebAPI):
auth = httpx.DigestAuth(self.username, self.pwd)
try:
async with httpx.AsyncClient(transport=settings.transport()) as client:
if command == "upgrade":
file = parameters.get("file")
keep_settings = parameters.get("keep_settings", True)
if file:
upload_url = f"http://{self.ip}:{self.port}/cgi-bin/firmware_upload.cgi"
async with aiofiles.open(file, "rb") as firmware:
file_content = await firmware.read()
files = {"file": (file.name, file_content, "application/octet-stream")}
upload_response = await client.post(
upload_url,
auth=auth,
files=files,
timeout=settings.get("firmware_upload_timeout", 300)
)
if upload_response.status_code != 200:
return {"success": False, "message": "Failed to upload firmware file"}
parameters["filename"] = file.name
parameters["keep_settings"] = keep_settings
if parameters:
data = await client.post(
@@ -426,8 +407,17 @@ class AntminerOldWebAPI(BaseWebAPI):
async def update_firmware(self, file: Path, keep_settings: bool = True) -> dict:
"""Perform a system update by uploading a firmware file and sending a command to initiate the update."""
async with aiofiles.open(file, "rb") as firmware:
file_content = await firmware.read()
parameters = {
"file": (file.name, file_content, "application/octet-stream"),
"filename": file.name,
"keep_settings": keep_settings
}
return await self.send_command(
command="upgrade",
file=file,
keep_settings=keep_settings
**parameters
)