Split monolithic script into focused modules
Refactored the single 1200-line es24n_conf.py into six modules plus a slim entry point, in preparation for the upcoming network-based config workflow. Each file has a clear, single responsibility: ui.py — ANSI colours, display primitives, input prompts serial_port.py — SerialPort class (termios/fcntl/select) models.py — IOMConfig and ShelfConfig dataclasses redfish.py — Redfish API client (shared by all workflows) workflow_serial.py — Serial-based IOM network configuration workflow workflow_firmware.py — IOM and Fabric Card firmware update workflow es24n_conf.py — Entry point and main menu only No functional changes. All imports verified. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
23
models.py
Normal file
23
models.py
Normal file
@@ -0,0 +1,23 @@
|
||||
"""
|
||||
models.py — Shared data classes for ES24N IOM configuration.
|
||||
Used by both the serial and network configuration workflows.
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
|
||||
@dataclass
|
||||
class IOMConfig:
|
||||
iom: str
|
||||
dhcp: bool = True
|
||||
ip: str = ""
|
||||
gateway: str = ""
|
||||
netmask: str = ""
|
||||
|
||||
|
||||
@dataclass
|
||||
class ShelfConfig:
|
||||
device: str = ""
|
||||
password: str = ""
|
||||
iom1: IOMConfig = field(default_factory=lambda: IOMConfig("IOM1"))
|
||||
iom2: IOMConfig = field(default_factory=lambda: IOMConfig("IOM2"))
|
||||
Reference in New Issue
Block a user