Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add system.management-interface hardware property #3459

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

Conversation

thrix
Copy link
Collaborator

@thrix thrix commented Jan 9, 2025

Users wanting to select a system with available system management interface can use this field.

Being added to be able to select Beaker machines with IPMI.

provision:
  hardware:
    system:
      management-interface: IPMI

Seems there are other management interfaces which could have in the future, like:

Redfish
Intel Active Management Technology (AMT)
Dell iDRAC (Integrated Dell Remote Access Controller)
HP iLO (Integrated Lights-Out)
Lenovo XClarity
Supermicro IPMI/BMC
OpenBMC
Cisco UCS Manager
SMASH (System Management Architecture for Server Hardware)

Pull Request Checklist

  • implement the feature
  • write the documentation
  • extend the test coverage
  • update the specification
  • adjust plugin docstring
  • modify the json schema
  • mention the version
  • include a release note

@thrix thrix added this to the 1.42 milestone Jan 9, 2025
@thrix
Copy link
Collaborator Author

thrix commented Jan 9, 2025

@pcahyna howdy, can you please look at this?

Once we agree on the naming, we will add support for mrack in this PR.

Users wanting to select a system with available system management
interface can use this field.

Being added to be able to select Beaker machines with `IPMI`.

Signed-off-by: Miroslav Vadkerti <[email protected]>
@@ -20,6 +20,9 @@ description: |
# Integer or string, required number of NUMA nodes.
numa-nodes: 2|">= 2"

# System management interface
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be String, system management interface.

@@ -20,6 +20,9 @@ description: |
# Integer or string, required number of NUMA nodes.
numa-nodes: 2|">= 2"

# System management interface
management-interface: IPMI

.. versionchanged:: 1.39
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add also versionchanged block for the new constraint:

    .. versionchanged:: 1.33
       Added ``location.lab-controller`` into specification.

@psss psss changed the title Add system.management-interaface hardware property Add system.management-interface hardware property Jan 20, 2025
Copy link
Collaborator

@psss psss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The naming sounds reasonable. The possible values should be probably defined as well, once we have a tangible list. I've quickly checked those brainstormed values and for example Lenovo XClarity is described as Lenovo's implementation of IPMI so there might be some clarifications needed.

@pcahyna
Copy link
Collaborator

pcahyna commented Jan 20, 2025

I don't understand some entries in the suggested list.

Dell iDRAC (Integrated Dell Remote Access Controller)
HP iLO (Integrated Lights-Out)
Lenovo XClarity

iDRAC etc. is not a management interface, it is the management platform on DELL servers, i.e. the hardware:

The controller has its own processor, memory, network connection, and access to the system bus. Key features include power management, virtual media access and remote console capabilities, all available through a supported web browser or command-line interface

(https://en.wikipedia.org/wiki/Dell_DRAC)

It also implements an IPMI interface, in addition to web etc., which is what one would generally be interested in when requesting a machine with a management interface, so one would ask for it by requesting IPMI. Just as like boot.method does not have values like American Megatrends or Phoenix, but bios and uefi, system.management-interface should have values like IPMI and Redfish and not iDRAC or iLO.

Other questions:

  • will it be possible to support machines that implement multiple management interfaces? It is very common for servers today to support both IPMI and Redfish (as the industry transitions from IPMI to Redfish, it is needed to have both at the same time for a long period)
  • if yes, will it be possible to request a machine that supports both IPMI and Redfish, if one needs to test how the two interact? Not sure how the syntax would look like, if one needs to ask for management-interface: IPMI and management-interface: Redfish at the same time.
  • how to support additional attributes of the management interface? For example here is the dmidecode output showing IPMI:
Handle 0x0012, DMI type 38, 18 bytes
IPMI Device Information
        Interface Type: KCS (Keyboard Control Style)
        Specification Version: 2.0
        I2C Slave Address: 0x10
        NV Storage Device: Not Present
        Base Address: 0x0000000000000CA2 (I/O)
        Register Spacing: Successive Byte Boundaries

at least the Specification Version: might be interesting to request. bmc-info shows more attributes:

Device ID             : 0
Device Revision       : 3
Device SDRs           : unsupported
Firmware Revision     : 9.08
Device Available      : yes (normal operation)
IPMI Version          : 2.0
Sensor Device         : supported
SDR Repository Device : supported
SEL Device            : supported
FRU Inventory Device  : supported
IPMB Event Receiver   : supported
IPMB Event Generator  : unsupported
Bridge                : unsupported
Chassis Device        : supported
Manufacturer ID       : MontaVista Software, Inc. (4753)
Product ID            : 3842
Auxiliary Firmware Revision Information : 00000000h

System GUID : efcdab89-6745-23a1-efcd-ab89674523a1

I suppose at least Manufacturer ID and Product ID would be interesting to have (it would be a more standard way for asking for a specific manufacturer if one needs to test quirks of a specific manufacturer than to ask for iDRAC or iLO). And here is the output for Redfish (XClarity controller):

Handle 0x006F, DMI type 42, 169 bytes
Management Controller Host Interface
        Host Interface Type: Network
        Device Type: USB
        idVendor: 0x04b3
        idProduct: 0x4010
        Protocol ID: 04 (Redfish over IP)
                Service UUID: f84555e2-779c-11ec-859c-c77fb77990a8
                Host IP Assignment Type: Static
                Host IP Address Format: IPv4
                IPv4 Address: 169.254.95.120
                IPv4 Mask: 255.255.0.0
                Redfish Service IP Discovery Type: Static
                Redfish Service IP Address Format: IPv4
                IPv4 Redfish Service Address: 169.254.95.118
                IPv4 Redfish Service Mask: 255.255.0.0
                Redfish Service Port: 443
                Redfish Service Vlan: 0
                Redfish Service Hostname: XCC-7D8F-1234567890

Handle 0x0070, DMI type 42, 169 bytes
Management Controller Host Interface
        Host Interface Type: Network
        Device Type: USB
        idVendor: 0x04b3
        idProduct: 0x4010
        Protocol ID: 04 (Redfish over IP)
                Service UUID: f84555e2-779c-11ec-859c-c77fb77990a8
                Host IP Assignment Type: Static
                Host IP Address Format: IPv4
                IPv4 Address: 169.254.95.120
                IPv4 Mask: 255.255.0.0
                Redfish Service IP Discovery Type: Static
                Redfish Service IP Address Format: IPv6
                IPv6 Redfish Service Address: fe80::67b:cbff:fe7b:8354
                IPv6 Redfish Service Mask: ffff::
                Redfish Service Port: 443
                Redfish Service Vlan: 0
                Redfish Service Hostname: XCC-7D8F-1234567890

again, idVendor and idProduct may be interesting to expose. Output for iDRAC:

Handle 0x2A00, DMI type 42, 118 bytes
Management Controller Host Interface
        Host Interface Type: Network
        Device Type: USB
        idVendor: 0x413c
        idProduct: 0xa102
        Protocol ID: 04 (Redfish over IP)
                Service UUID: Not Settable
                Host IP Assignment Type: DHCP
                Host IP Address Format: IPv4
                Redfish Service IP Discovery Type: Static
                Redfish Service IP Address Format: IPv4
                IPv4 Redfish Service Address: 169.254.1.1
                IPv4 Redfish Service Mask: 255.255.255.0
                Redfish Service Port: 443
                Redfish Service Vlan: 4294967295
                Redfish Service Hostname: idrac.local

I am not asking to have the additional attributes available now, just to think how they could be added to the syntax - I don't see how they would fit into the proposed syntax, maybe something like

provision:
  hardware:
    system:
      management-interface:
        IPMI:
          <additional attributes go here>

instead? dunno.

  • maybe management-protocol instead of management-interface? interface is correct, but one may think that it refers to the actual physical interface on the machine (usually the Ethernet port and its NIC), not to an interface as an abstraction.
  • last note, why IPMI in all caps? It is the official name of the protocol and is written in caps, sure, but you don't write bios and uefi in caps either.

@happz
Copy link
Collaborator

happz commented Jan 20, 2025

...

Other questions:

  • will it be possible to support machines that implement multiple management interfaces? It is very common for servers today to support both IPMI and Redfish (as the industry transitions from IPMI to Redfish, it is needed to have both at the same time for a long period)
  • if yes, will it be possible to request a machine that supports both IPMI and Redfish, if one needs to test how the two interact? Not sure how the syntax would look like, if one needs to ask for management-interface: IPMI and management-interface: Redfish at the same time.

I believe this will be supported:

hardware:
  and:
    - system:
        management-interface: IPMI_v1
    - system:
        management-interface: IPMI_v1
  • how to support additional attributes of the management interface? For example here is the dmidecode output showing IPMI:
Handle 0x0012, DMI type 38, 18 bytes
IPMI Device Information
        Interface Type: KCS (Keyboard Control Style)
        Specification Version: 2.0
        I2C Slave Address: 0x10
        NV Storage Device: Not Present
        Base Address: 0x0000000000000CA2 (I/O)
        Register Spacing: Successive Byte Boundaries

at least the Specification Version: might be interesting to request. bmc-info shows more attributes:

Device ID             : 0
Device Revision       : 3
Device SDRs           : unsupported
Firmware Revision     : 9.08
Device Available      : yes (normal operation)
IPMI Version          : 2.0
Sensor Device         : supported
SDR Repository Device : supported
SEL Device            : supported
FRU Inventory Device  : supported
IPMB Event Receiver   : supported
IPMB Event Generator  : unsupported
Bridge                : unsupported
Chassis Device        : supported
Manufacturer ID       : MontaVista Software, Inc. (4753)
Product ID            : 3842
Auxiliary Firmware Revision Information : 00000000h

System GUID : efcdab89-6745-23a1-efcd-ab89674523a1

I suppose at least Manufacturer ID and Product ID would be interesting to have (it would be a more standard way for asking for a specific manufacturer if one needs to test quirks of a specific manufacturer than to ask for iDRAC or iLO). And here is the output for Redfish (XClarity controller):

Handle 0x006F, DMI type 42, 169 bytes
Management Controller Host Interface
        Host Interface Type: Network
        Device Type: USB
        idVendor: 0x04b3
        idProduct: 0x4010
        Protocol ID: 04 (Redfish over IP)
                Service UUID: f84555e2-779c-11ec-859c-c77fb77990a8
                Host IP Assignment Type: Static
                Host IP Address Format: IPv4
                IPv4 Address: 169.254.95.120
                IPv4 Mask: 255.255.0.0
                Redfish Service IP Discovery Type: Static
                Redfish Service IP Address Format: IPv4
                IPv4 Redfish Service Address: 169.254.95.118
                IPv4 Redfish Service Mask: 255.255.0.0
                Redfish Service Port: 443
                Redfish Service Vlan: 0
                Redfish Service Hostname: XCC-7D8F-1234567890

Handle 0x0070, DMI type 42, 169 bytes
Management Controller Host Interface
        Host Interface Type: Network
        Device Type: USB
        idVendor: 0x04b3
        idProduct: 0x4010
        Protocol ID: 04 (Redfish over IP)
                Service UUID: f84555e2-779c-11ec-859c-c77fb77990a8
                Host IP Assignment Type: Static
                Host IP Address Format: IPv4
                IPv4 Address: 169.254.95.120
                IPv4 Mask: 255.255.0.0
                Redfish Service IP Discovery Type: Static
                Redfish Service IP Address Format: IPv6
                IPv6 Redfish Service Address: fe80::67b:cbff:fe7b:8354
                IPv6 Redfish Service Mask: ffff::
                Redfish Service Port: 443
                Redfish Service Vlan: 0
                Redfish Service Hostname: XCC-7D8F-1234567890

again, idVendor and idProduct may be interesting to expose. Output for iDRAC:

Handle 0x2A00, DMI type 42, 118 bytes
Management Controller Host Interface
        Host Interface Type: Network
        Device Type: USB
        idVendor: 0x413c
        idProduct: 0xa102
        Protocol ID: 04 (Redfish over IP)
                Service UUID: Not Settable
                Host IP Assignment Type: DHCP
                Host IP Address Format: IPv4
                Redfish Service IP Discovery Type: Static
                Redfish Service IP Address Format: IPv4
                IPv4 Redfish Service Address: 169.254.1.1
                IPv4 Redfish Service Mask: 255.255.255.0
                Redfish Service Port: 443
                Redfish Service Vlan: 4294967295
                Redfish Service Hostname: idrac.local

I am not asking to have the additional attributes available now, just to think how they could be added to the syntax - I don't see how they would fit into the proposed syntax, maybe something like

provision:
  hardware:
    system:
      management-interface:
        IPMI:
          <additional attributes go here>

instead? dunno.

tmt already supports vendor, vendor-name, device, and device-name attributes across several types of devices, I see them as the right fit for Manufacturer ID, Product ID, and similar fields. The position is another question, since management-interface is string-only. And it's a good question you mentioned it, because it seems we should change the specification to something like this:

system:
  management-interface:
    # Now what is `IPMI`? How should we call it, a protocol, implementation? `protocol` was suggested below:
    protocol: IPMI
    # Now we can support more fields here, not mixing IPMI with them:
    vendor-name: "~ MontaVista Software, Inc."

# A machine with both IPMI and Redfish?
and:
  - system:
      management-interface:
        protocol: IPMI
  - system:
      management-interface:
        protocol: Redfish
        vendor: 0x04b3

And, in the future, more keys can start appearing here if necessary.

  • maybe management-protocol instead of management-interface? interface is correct, but one may think that it refers to the actual physical interface on the machine (usually the Ethernet port and its NIC), not to an interface as an abstraction.

I agree, and I like protocol better. Plus, once under management-interface, I'd prefer protocol, i.e. not repeating management.

  • last note, why IPMI in all caps? It is the official name of the protocol and is written in caps, sure, but you don't write bios and uefi in caps either.

Eeee, I do :) I believe tmt is case-insensitive in this area, or better should be, it should give you an Intel CPU with vendor-name: Intel and vendor-name: iNTEL, but IIRC, this has not been stated anywhere, and there might be places where case-sensitivity is not handled correctly. Something to look into.

@thrix
Copy link
Collaborator Author

thrix commented Jan 21, 2025

@pcahyna @psss @happz thanks for the discussion! I will try to incorporate what Milos advised. @pcahyna can you check if it sounds good to you?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants