Refactor firmware upgrade process
This commit is contained in:
@@ -143,12 +143,13 @@ class AntminerModern(BMMiner):
|
|||||||
try:
|
try:
|
||||||
result = await self.web.update_firmware(file=file, keep_settings=keep_settings)
|
result = await self.web.update_firmware(file=file, keep_settings=keep_settings)
|
||||||
|
|
||||||
if 'Success' in result:
|
if result.get("success"):
|
||||||
logging.info("Firmware upgrade process completed successfully for Antminer.")
|
logging.info("Firmware upgrade process completed successfully for AntMiner.")
|
||||||
return "Firmware upgrade completed successfully."
|
return "Firmware upgrade completed successfully."
|
||||||
else:
|
else:
|
||||||
logging.error(f"Firmware upgrade failed. Response: {result}")
|
error_message = result.get("message", "Unknown error")
|
||||||
return f"Firmware upgrade failed. Response: {result}"
|
logging.error(f"Firmware upgrade failed. Response: {error_message}")
|
||||||
|
return f"Firmware upgrade failed. Response: {error_message}"
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"An error occurred during the firmware upgrade process: {e}", exc_info=True)
|
logging.error(f"An error occurred during the firmware upgrade process: {e}", exc_info=True)
|
||||||
raise
|
raise
|
||||||
|
|||||||
@@ -61,25 +61,6 @@ class AntminerModernWebAPI(BaseWebAPI):
|
|||||||
auth = httpx.DigestAuth(self.username, self.pwd)
|
auth = httpx.DigestAuth(self.username, self.pwd)
|
||||||
try:
|
try:
|
||||||
async with httpx.AsyncClient(transport=settings.transport()) as client:
|
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:
|
if parameters:
|
||||||
data = await client.post(
|
data = await client.post(
|
||||||
@@ -426,8 +407,17 @@ class AntminerOldWebAPI(BaseWebAPI):
|
|||||||
|
|
||||||
async def update_firmware(self, file: Path, keep_settings: bool = True) -> dict:
|
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."""
|
"""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(
|
return await self.send_command(
|
||||||
command="upgrade",
|
command="upgrade",
|
||||||
file=file,
|
**parameters
|
||||||
keep_settings=keep_settings
|
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user