Update the redfish interoperability profile

* Remove @Redfish.Copyright, it's not an allowed field.
* Remove unused fields such as AssetTag.
* Mark fields used in inspection and other optional features as
  optional.
* Add missing VirtualMedia on System and VirtualMedia fields.
* Add missing Thermal information and its subresources.
* Clarify which fields on System are links.
* Add Purpose field to all fields and actions.
* Expand the BIOS object with the actual requirements.
* Add ServiceRoot and services we use.
* Add missing resources related to RAID.

Change-Id: I35f8f49e4c70e736b685c3eeebf79326592b6314
This commit is contained in:
Dmitry Tantsur 2024-05-27 18:44:03 +02:00
parent 0e5efe4d9b
commit d28a61b2c0
No known key found for this signature in database
GPG Key ID: 315B2AF9FD216C60
4 changed files with 574 additions and 245 deletions

View File

@ -1,221 +0,0 @@
{
"@Redfish.Copyright": "Copyright (c) 2020-2022 Dell Inc. or its subsidiaries.",
"@Redfish.License": "Apache License, Version 2.0. For full text, see link: http://www.apache.org/licenses/LICENSE-2.0",
"SchemaDefinition": "RedfishInteroperabilityProfile.v1_5_1",
"ProfileName": "OpenStackIronicProfile",
"ProfileVersion": "1.0.0",
"Purpose": "Specifies the OpenStack Ironic vendor-independent Redfish service requirements, typically offered by a baseboard management controller (BMC).",
"OwningEntity": "Ironic community",
"ContactInfo": "openstack-discuss@lists.openstack.org",
"Protocol": {
"MinVersion": "1.6.0"
},
"Resources": {
"Bios": {
"ReadRequirement": "Recommended",
"PropertyRequirements": {
"Attributes": {}
},
"ActionRequirements": {
"ResetBios": {}
}
},
"ComputerSystem": {
"PropertyRequirements": {
"AssetTag": {
"ReadRequirement": "Recommended"
},
"Bios": {
"ReadRequirement": "Recommended"
},
"BiosVersion": {
"ReadRequirement": "Recommended"
},
"Boot": {
"PropertyRequirements": {
"BootSourceOverrideEnabled": {
"WriteRequirement": "Mandatory",
"MinSupportValues": [
"Disabled",
"Once",
"Continuous"
]
},
"BootSourceOverrideMode": {
"WriteRequirement": "Mandatory",
"MinSupportValues": [
"UEFI"
]
},
"BootSourceOverrideTarget": {
"WriteRequirement": "Mandatory",
"MinSupportValues": [
"Pxe",
"Hdd",
"Cd",
"BiosSetup"
]
}
}
},
"IndicatorLED": {
"WriteRequirement": "Recommended",
"ReadRequirement": "Recommended",
"MinSupportValues": [
"Lit",
"Off",
"Blinking"
]
},
"Links": {
"PropertyRequirements": {
"Chassis": {},
"ManagedBy": {}
}
},
"Manufacturer": {
"ReadRequirement": "Recommended"
},
"MemorySummary": {
"PropertyRequirements": {
"TotalSystemMemoryGiB": {}
}
},
"PowerState": {},
"Processors": {},
"SimpleStorage": {
"ReadRequirement": "Conditional",
"ConditionalRequirements": [
{
"Purpose": "Either SimpleStorage or Storage must be present, even if the system is disk-less.",
"CompareProperty": "Storage",
"CompareType": "Absent",
"ReadRequirement": "Mandatory"
}
]
},
"Status": {
"PropertyRequirements": {
"Health": {},
"State": {}
}
},
"Storage": {
"ReadRequirement": "Conditional",
"ConditionalRequirements": [
{
"Purpose": "Either SimpleStorage or Storage must be present, even if the system is disk-less.",
"CompareProperty": "SimpleStorage",
"CompareType": "Absent",
"ReadRequirement": "Mandatory"
}
]
},
"SystemType": {}
},
"ActionRequirements": {
"Reset": {
"Parameters": {
"ResetType": {
"ParameterValues": [
"On",
"ForceOff",
"GracefulShutdown",
"GracefulRestart",
"ForceRestart",
"Nmi"
]
}
}
}
}
},
"Drive": {
"ReadRequirement": "IfPopulated",
"Purpose": "Either SimpleStorage or Storage must be present, even if the system is disk-less.",
"PropertyRequirements": {
"CapacityBytes": {
"ReadRequirement": "IfPopulated"
},
"Status": {
"PropertyRequirements": {
"Health": {},
"State": {}
}
}
}
},
"EthernetInterface": {
"URIs": [
"/redfish/v1/Systems/{ComputerSystemId}/EthernetInterfaces/{EthernetInterfaceId}"
],
"PropertyRequirements": {
"MACAddress": {},
"Status": {
"PropertyRequirements": {
"Health": {},
"State": {}
}
}
}
},
"Processor": {
"PropertyRequirements": {
"ProcessorArchitecture": {},
"Status": {
"PropertyRequirements": {
"Health": {},
"State": {}
}
},
"TotalThreads": {}
}
},
"SimpleStorage": {
"ReadRequirement": "IfPopulated",
"Purpose": "Either SimpleStorage or Storage must be present, even if the system is disk-less.",
"PropertyRequirements": {
"Devices": {
"PropertyRequirements": {
"CapacityBytes": {
"ReadRequirement": "IfPopulated"
},
"Status": {
"PropertyRequirements": {
"Health": {},
"State": {}
}
}
}
}
}
},
"VirtualMedia": {
"PropertyRequirements": {
"Image": {},
"Inserted": {
"ReadRequirement": "Recommended"
},
"MediaTypes": {
"ReadRequirement": "Recommended"
},
"WriteProtected": {
"ReadRequirement": "Recommended"
}
},
"ActionRequirements": {
"EjectMedia": {},
"InsertMedia": {
"Parameters": {
"Inserted": {
"ReadRequirement": "Recommended"
},
"WriteProtected": {
"ReadRequirement": "Recommended"
}
}
}
}
}
}
}

View File

@ -0,0 +1,561 @@
{
"License": "Apache License, Version 2.0. For full text, see link: http://www.apache.org/licenses/LICENSE-2.0",
"SchemaDefinition": "RedfishInteroperabilityProfile.v1_8_0",
"ProfileName": "OpenStackIronicProfile",
"ProfileVersion": "1.1.0",
"Purpose": "Specifies the OpenStack Ironic vendor-independent Redfish service requirements, typically offered by a baseboard management controller (BMC).",
"OwningEntity": "Ironic community",
"ContactInfo": "openstack-discuss@lists.openstack.org",
"Protocol": {
"MinVersion": "1.6.0"
},
"Resources": {
"Bios": {
"Purpose": "Allows reading or changing BIOS settings.",
"ReadRequirement": "Recommended",
"PropertyRequirements": {
"Attributes": {
"Purpose": "Current BIOS settings."
},
"AttributeRegistry": {
"Purpose": "Name of the registry with the schema of BIOS settings.",
"ReadRequirement": "Recommended"
},
"@Redfish.Settings": {
"PropertyRequirements": {
"ETag": {
"ReadRequirement": "Recommended"
},
"Messages": {
"Purpose": "Used to determine success or failure.",
"ReadRequirement": "Recommended"
},
"SettingsObject": {
"Purpose": "Provides a link to the actually updated object.",
"Comparison": "LinkToResource",
"Values": ["Bios"]
},
"SupportedApplyTimes": {
"Purpose": "Determines whether update is immediate or needs a reboot.",
"ReadRequirement": "Recommended",
"MinSupportValues": [
"OnReset"
]
}
}
}
},
"ActionRequirements": {
"ResetBios": {
"Purpose": "Reset BIOS settings to their factory values.",
"ReadRequirement": "Recommended"
}
}
},
"Chassis": {
"Purpose": "Allows collecting sensors data from the chassis.",
"ReadRequirement": "Recommended",
"PropertyRequirements": {
"Power": {
"Purpose": "Provides a link to the power information.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["Power"]
},
"Thermal": {
"Purpose": "Provides a link to the thermal information.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["Thermal"]
},
"UUID": {
"Purpose": "Used as an ID for indicators.",
"ReadRequirement": "Recommended"
}
}
},
"ComputerSystemCollection": {
"Purpose": "At least one system is expected.",
"PropertyRequirements": {
"Members": {
"MinCount": 1
}
}
},
"ComputerSystem": {
"Purpose": "Provides bare-metal node management.",
"PropertyRequirements": {
"Bios": {
"Purpose": "Reference to the corresponding Bios resource.",
"ReadRequirement": "Recommended"
},
"BiosVersion": {
"Purpose": "Version of the system firmware.",
"ReadRequirement": "Recommended"
},
"Boot": {
"Purpose": "Allows changing boot devices and modes, which is fundamental for bare-metal provisioning.",
"PropertyRequirements": {
"BootSourceOverrideEnabled": {
"Purpose": "Manages whether the next boot device will be permanent or one-time.",
"WriteRequirement": "Mandatory",
"MinSupportValues": [
"Once",
"Continuous"
]
},
"BootSourceOverrideMode": {
"Purpose": "Allows switching boot mode to/from UEFI.",
"WriteRequirement": "Mandatory"
},
"BootSourceOverrideTarget": {
"Purpose": "Allows changing the next boot device.",
"WriteRequirement": "Mandatory",
"MinSupportValues": [
"Pxe",
"Hdd",
"Cd"
]
}
}
},
"EthernetInterfaces": {
"Purpose": "Provides a link to the node's network interfaces.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["EthernetInterfaceCollection"]
},
"IndicatorLED": {
"Purpose": "Enables the bare-metal indicator API.",
"WriteRequirement": "Recommended",
"ReadRequirement": "Recommended",
"Comparison": "AnyOf",
"Values": [
"Lit",
"Off",
"Blinking"
]
},
"Links": {
"PropertyRequirements": {
"Chassis": {
"Purpose": "Provides sensor data.",
"ReadRequirement": "Recommended"
},
"ManagedBy": {
"Purpose": "Provides a link from the node to its BMC."
}
}
},
"Manufacturer": {
"Purpose": "Provides the 'vendor' property.",
"ReadRequirement": "Recommended"
},
"MemorySummary": {
"Purpose": "Provides memory data during out-of-band inspection.",
"ReadRequirement": "Recommended",
"PropertyRequirements": {
"TotalSystemMemoryGiB": {}
}
},
"PowerState": {
"Purpose": "Provides the current power state."
},
"Processors": {
"Purpose": "Provides a link to the node's CPUs.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["ProcessorCollection"]
},
"SecureBoot": {
"Purpose": "Provides a link to the node's secure boot settings.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["SecureBoot"]
},
"SimpleStorage": {
"Purpose": "Provides disk data during out-of-band inspection.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["SimpleStorageCollection"]
},
"Storage": {
"Purpose": "Enables hardware RAID management.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["StorageCollection"]
},
"VirtualMedia": {
"Purpose": "Enables provisioning using virtual media.",
"ReadRequirement": "IfImplemented",
"Comparison": "LinkToResource",
"Values": ["VirtualMediaCollection"]
}
},
"ActionRequirements": {
"Reset": {
"Purpose": "Provides an ability to execute power actions on the node.",
"Parameters": {
"ResetType": {
"ParameterValues": [
"On",
"ForceOff",
"ForceRestart"
],
"RecommendedValues": [
"GracefulShutdown",
"GracefulRestart",
"Nmi"
],
"ReadRequirement": "Mandatory"
}
}
}
}
},
"Drive": {
"ReadRequirement": "Recommended",
"Purpose": "Provides information about individual drives when configuring hardware RAID.",
"PropertyRequirements": {
"CapacityBytes": {
"ReadRequirement": "Recommended"
},
"MediaType": {},
"Protocol": {},
"Status": {
"PropertyRequirements": {
"Health": {},
"State": {}
}
}
}
},
"EthernetInterface": {
"Purpose": "Enables enrolling ports during inspection.",
"ReadRequirement": "Recommended",
"URIs": [
"/redfish/v1/Systems/{ComputerSystemId}/EthernetInterfaces/{EthernetInterfaceId}"
],
"PropertyRequirements": {
"MACAddress": {
"Purpose": "MAC address is mandatory on ports."
},
"Status": {
"PropertyRequirements": {
"Health": {
"Purpose": "Only healthy interfaces are considered."
},
"State": {
"Purpose": "Enables filtering only enabled interfaces."
}
}
}
}
},
"Manager": {
"Purpose": "Provides access to the properties of the BMC.",
"ReadRequirement": "Recommended",
"PropertyRequirements": {
"FirmwareVersion": {
"Purpose": "Provides the current firmware version of the BMC.",
"ReadRequirement": "Recommended"
}
}
},
"Power": {
"Purpose": "Provides the current power information in the sensor data.",
"ReadRequirement": "Recommended",
"PropertyRequirements": {
"PowerSupplies": {
"Purpose": "Provides a list of the installed power supplies.",
"PropertyRequirements": {
"LastPowerOutputWatts": {
"ReadRequirement": "Recommended"
},
"LineInputVoltage": {
"ReadRequirement": "Recommended"
},
"PowerCapacityWatts": {
"ReadRequirement": "Recommended"
},
"SerialNumber": {
"ReadRequirement": "Recommended"
},
"Status": {
"PropertyRequirements": {
"Health": {
"Purpose": "Health status to report in the sensors data.",
"ReadRequirement": "Recommended"
},
"State": {
"Purpose": "Power state to report in the sensors data.",
"ReadRequirement": "Recommended"
}
}
}
}
}
}
},
"Processor": {
"Purpose": "Provides CPU data during out-of-band inspection.",
"ReadRequirement": "Recommended",
"PropertyRequirements": {
"ProcessorArchitecture": {
"Purpose": "Used to determine the CPU architecture of the machine."
},
"TotalThreads": {
"Purpose": "Used to estimate the core count."
}
}
},
"SecureBoot": {
"Purpose": "Allows turning secure boot mode on and off.",
"ReadRequirement": "Recommended",
"PropertyRequirements": {
"SecureBootEnable": {
"Purpose": "Allows reading and changing the secure boot state.",
"WriteRequirement": "Recommended"
}
},
"ActionRequirements": {
"ResetKeys": {
"Purpose": "Allows resetting secure boot keys via a step.",
"ReadRequirement": "Recommended"
}
}
},
"ServiceRoot": {
"Purpose": "Provides links to all collections and services.",
"PropertyRequirements": {
"Systems": {
"Purpose": "Provides a link to systems.",
"Comparison": "LinkToResource",
"Values": ["ComputerSystemCollection"]
},
"SessionService": {
"Purpose": "Provides a link to the session service.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["SessionService"]
},
"TaskService": {
"Purpose": "Provides a link to the task service.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["TaskService"]
},
"UpdateService": {
"Purpose": "Provides a link to the update service.",
"ReadRequirement": "Recommended",
"Comparison": "LinkToResource",
"Values": ["UpdateService"]
}
}
},
"SessionService": {
"Purpose": "Allows using sessions for authentication instead of HTTP basic authentication.",
"ReadRequirement": "Recommended"
},
"SimpleStorage": {
"Purpose": "Provides information about disks during inspection as well as disk sensors.",
"ReadRequirement": "Recommended",
"PropertyRequirements": {
"Devices": {
"PropertyRequirements": {
"CapacityBytes": {
"Purpose": "Disk capacity.",
"ReadRequirement": "Recommended"
},
"Model": {
"Purpose": "Device model to report in the sensors data.",
"ReadRequirement": "Recommended"
},
"Name": {
"Purpose": "Device name to report in the sensors data.",
"ReadRequirement": "Recommended"
},
"Status": {
"PropertyRequirements": {
"Health": {
"Purpose": "Health status to report in the sensors data.",
"ReadRequirement": "Recommended"
},
"State": {
"Purpose": "Device state to report in the sensors data.",
"ReadRequirement": "Recommended"
}
}
}
}
}
}
},
"Storage": {
"Purpose": "Allows configuring hardware RAID.",
"ReadRequirement": "Recommended",
"MinVersion": "1.6.0",
"PropertyRequirements": {
"Drives": {
"Purpose": "Provides a link to attached drives.",
"Comparison": "LinkToResource",
"Values": ["DriveCollection"]
},
"StorageControllers": {
"Purpose": "Provides information about storage controllers.",
"MinCount": 1,
"PropertyRequirements": {
"SupportedRAIDTypes": {
"ReadRequirement": "Recommended",
"Purpose": "Defines which RAID types are supported."
}
}
},
"Volumes": {
"Purpose": "Provides a link to existing volumes.",
"Comparison": "LinkToResource",
"Values": ["VolumeCollection"]
}
}
},
"TaskService": {
"Purpose": "Provides task management.",
"ReadRequirement": "Recommended"
},
"Thermal": {
"Purpose": "Provides thermal information of a chassis as part of the sensors data.",
"ReadRequirement": "Recommended",
"MinVersion": "1.0.1",
"PropertyRequirements": {
"Fans": {
"PropertyRequirements": {
"MaxReadingRange": {
"ReadRequirement": "Recommended"
},
"MinReadingRange": {
"ReadRequirement": "Recommended"
},
"Reading": {},
"ReadingUnits": {},
"SerialNumber": {
"ReadRequirement": "Recommended"
},
"Status": {
"PropertyRequirements": {
"Health": {
"Purpose": "Health status to report in the sensors data.",
"ReadRequirement": "Recommended"
},
"State": {
"Purpose": "Device state to report in the sensors data.",
"ReadRequirement": "Recommended"
}
}
}
}
},
"Temperatures": {
"PropertyRequirements": {
"MaxReadingRangeTemp": {
"ReadRequirement": "Recommended"
},
"MinReadingRangeTemp": {
"ReadRequirement": "Recommended"
},
"ReadingCelsius": {},
"PhysicalContext": {
"ReadRequirement": "Recommended"
},
"SensorNumber": {
"ReadRequirement": "Recommended"
}
}
}
}
},
"UpdateService": {
"ReadRequirement": "Recommended",
"ActionRequirements": {
"SimpleUpdate": {
"Purpose": "Enables firmware updates.",
"Parameters": {
"ImageURI": {},
"Targets": {
"ReadRequirement": "Recommended"
},
"TransferProtocol": {}
}
}
}
},
"VirtualMedia": {
"Purpose": "Enables provisioning using virtual media.",
"PropertyRequirements": {
"Image": {
"Purpose": "URL of the image to attach.",
"WriteRequirement": "Recommended"
},
"Inserted": {
"ReadRequirement": "Recommended",
"WriteRequirement": "Recommended"
},
"MediaTypes": {
"Purpose": "Supported media types for this virtual media slot."
},
"WriteProtected": {
"ReadRequirement": "Recommended",
"WriteRequirement": "Recommended"
}
},
"ActionRequirements": {
"EjectMedia": {
"Purpose": "Enables ejecting virtual media devices."
},
"InsertMedia": {
"Purpose": "Enables inserting virtual media devices.",
"Parameters": {
"Image": {},
"Inserted": {
"ReadRequirement": "Recommended"
},
"TransferMethod": {
"ReadRequirement": "Recommended"
},
"TransferProtocolType": {
"ReadRequirement": "Recommended"
},
"WriteProtected": {
"ReadRequirement": "Recommended"
}
}
}
}
},
"Volume": {
"Purpose": "Provides access to RAID volumes.",
"ReadRequirement": "Recommended",
"MinVersion": "1.3.1",
"PropertyRequirements": {
"CapacityBytes": {},
"Name": {},
"RAIDType": {
"ReadRequirement": "Recommended"
}
}
},
"VolumeCollection": {
"Purpose": "Allows listing and creating RAID volumes.",
"ReadRequirement": "Recommended",
"CreateResource": true,
"PropertyRequirements": {
"@Redfish.OperationApplyTimeSupport": {}
}
}
},
"Registries": {
"Base": {
"MinVersion": "1.0.0",
"Messages": {}
}
}
}

View File

@ -0,0 +1,6 @@
---
other:
- |
The Redfish interoperability profile 1.0.0 has been replaced with version
1.1.0 that adds a lot of missing resources and fields, and clarifies
their purpose.

View File

@ -23,6 +23,7 @@
- ^install-guide/.*$
- ^ironic/locale/.*$
- ^ironic/tests/.*$
- ^redfish-interop-profiles/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^test-requirements.txt$
@ -188,6 +189,7 @@
- ^install-guide/.*$
- ^ironic/locale/.*$
- ^ironic/tests/.*$
- ^redfish-interop-profiles/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^test-requirements.txt$
@ -237,18 +239,6 @@
direct and ansible deploy interfaces, rescue it's not enabled.
required-projects:
- opendev.org/openstack/sushy-tools
irrelevant-files:
- ^.*\.rst$
- ^api-ref/.*$
- ^doc/.*$
- ^install-guide/.*$
- ^ironic/locale/.*$
- ^ironic/tests/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^test-requirements.txt$
- ^tools/.*$
- ^tox.ini$
vars:
tempest_test_regex: ironic_standalone
tempest_concurrency: 2
@ -295,18 +285,6 @@
Test also uses Redfish.
required-projects:
- opendev.org/openstack/sushy-tools
irrelevant-files:
- ^.*\.rst$
- ^api-ref/.*$
- ^doc/.*$
- ^install-guide/.*$
- ^ironic/locale/.*$
- ^ironic/tests/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^test-requirements.txt$
- ^tools/.*$
- ^tox.ini$
vars:
tempest_test_regex: BaremetalRedfishIPxeAnacondaNoGlance
tempest_test_timeout: 4800
@ -609,6 +587,7 @@
# This job is also run on inspector
- ^ironic_inspector/locale/.*$
- ^ironic_inspector/test/.*$
- ^redfish-interop-profiles/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^test-requirements.txt$
@ -699,6 +678,7 @@
- ^install-guide/.*$
- ^ironic/locale/.*$
- ^ironic/tests/.*$
- ^redfish-interop-profiles/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^tools/.*$
@ -919,6 +899,7 @@
- ^install-guide/.*$
- ^ironic/locale/.*$
- ^ironic/tests/.*$
- ^redfish-interop-profiles/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^tox.ini$
@ -1050,6 +1031,7 @@
- ^install-guide/.*$
- ^ironic/locale/.*$
- ^ironic/tests/.*$
- ^redfish-interop-profiles/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^tools/.*$
@ -1146,6 +1128,7 @@
- ^install-guide/.*$
- ^ironic/locale/.*$
- ^ironic/tests/.*$
- ^redfish-interop-profiles/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^tools/.*$