An `amt` driver (napalm_amt.AmtDriver), a ManagementControllerDriver for the management controller of Intel vPro machines, with its own lean WS-Management client (requests + ElementTree, HTTP Digest, ports 16992/16993). It reads the machine's identity, hardware with the SMBIOS system UUID, firmware (AMT with build, BIOS), power state and the hardware event log, reports what AMT listens on (plain HTTP or TLS, KVM incl. port 5900, IDE-R), and switches the machine's power. AMT cannot be reset over WS-Management, so there is no reboot_host. Discovery recognises AMT by its ports and its Server header. Tested against Intel's published AMT 12 recordings (go-wsman-messages, Apache-2.0, see NOTICE). `python -m napalm_amt.record` records a real AMT read-only; the first test devices are two Lenovo ThinkCentre M910x.
3.5 KiB
3.5 KiB
Getters and the WS-Management classes behind them
Classes are named by their prefix: AMT_ and IPS_ are Intel's
(http://intel.com/wbem/wscim/1/{amt,ips}-schema/1/), CIM_ the DMTF's
(http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/). "Enum" is Enumerate + Pull.
Connection
| Step | Request |
|---|---|
open() |
Get AMT_GeneralSettings. Exists on every AMT and needs a valid login, so it proves both |
Every read is cached for the connection, except the power state.
NAPALM getters (describe AMT)
| Getter | Source | Notes |
|---|---|---|
get_facts |
AMT_GeneralSettings (HostName, DomainName), CIM_Chassis/CIM_Card, CIM_SoftwareIdentity, AMT_EthernetPortSettings |
os_version = AMT version with build (12.0.67.1579); vendor/model/serial are the machine's (chassis, baseboard where the chassis holds SMBIOS placeholders); uptime -1 |
get_interfaces |
AMT_EthernetPortSettings |
wired/wireless; a port without a MAC (no WLAN card) is left out; description says DHCP/static and whether AMT shares the host's IP |
get_interfaces_ip |
AMT_EthernetPortSettings (IPAddress, SubnetMask) |
Only where AMT reports an address of its own (static configuration) |
get_environment |
none | Empty: client AMT has no sensor readings. CIM_Fan/CIM_Sensor exist but report placeholders (EnabledState 5, no speed) |
Role methods (describe and control the machine)
| Method | Source | Notes |
|---|---|---|
get_power_state |
Enum CIM_AssociatedPowerManagementService (PowerState, AvailableRequestedPowerStates) |
2 = On; 3/4 (sleep), 7 (hibernate), 6/8/12/13 (off) = Off; actions = role actions whose CIM state AMT lists |
set_power_state |
Invoke CIM_PowerManagementService.RequestPowerStateChange |
On → 2, ForceOff → 8, ForceRestart → 10, PowerCycle → 5, GracefulShutdown → 12, GracefulRestart → 14. ReturnValue 0 or 4096 (job started) = accepted |
get_hardware_inventory |
CIM_Chassis, CIM_Card, CIM_ComputerSystemPackage (PlatformGUID), CIM_Processor + CIM_Chip, CIM_PhysicalMemory, CIM_MediaAccessDevice, AMT_EthernetPortSettings |
system_uuid: PlatformGUID with the first three groups byte-swapped (SMBIOS order, as dmidecode and Intel's console decode it). Drive size: MaxMediaSize × 1000. No cores/threads, no drive models, no PSUs |
get_event_log |
Invoke AMT_MessageLog.PositionToFirstRecord, then GetRecords (390 per call) until NoMoreRecords |
21-byte PET records, decoded after Intel's go-wsman-messages; id = position in the log |
get_firmware_inventory |
CIM_SoftwareIdentity (AMT, Build Number), CIM_BIOSElement |
updateable unknown: AMT updates neither itself nor the BIOS |
get_management_protocols |
AMT_TLSSettingData, AMT_RedirectionService, IPS_KVMRedirectionSettingData, CIM_KVMRedirectionSAP |
http/https from the "802.3" TLS setting; kvm/virtual_media on 16994 (16995 with TLS), kvm on 5900 when that port is on; ipmi/ssh/snmp always off |
reboot_host |
none | Not offered: WS-Management cannot restart AMT itself |
A class this AMT does not know (older versions know fewer) answers with a
DestinationUnreachable fault; its part of the inventory stays empty.
Not read yet
AMT_AuthorizationService(accounts and realms) forget_users.AMT_AuditLog(who logged in, who switched power). The event log covers hardware only.AMT_SetupAndConfigurationService(provisioning state and mode, ACM/CCM). Recorded bynapalm_amt.recordto decide later whether it is worth a warning.