From df51959a2cd28328cddb57c807e1f1e8daf2d51c Mon Sep 17 00:00:00 2001 From: simontesar Date: Fri, 11 Sep 2026 06:08:51 +0200 Subject: [PATCH 1/2] refactor: coverage: reword headers Signed-off-by: simontesar --- coverage.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/coverage.md b/coverage.md index 43ebe43..cb0362e 100644 --- a/coverage.md +++ b/coverage.md @@ -10,7 +10,7 @@ This document summarises what tests cover which capabilities in the [capability- Some capabilities are covered by multiple tests implicitly because they share common workflows. These rows/capabilities include the following placeholders in their `test` field: -| Placeholder | Description | Capability ids | +| Placeholder | Description | Capabilities covered | |---|---|---| | `BMC Registration` | Test creates a `BMC` that results in a `Server` resource. | `manager.get`, `inventory.systems`, `inventory.system-info` | | `Discovery` | Test waits for the `Server` to reach the `Available` state. | `power.on`, `power.off-graceful`, `power.wait-state`, `boot.override-pxe`, `bios.version`, `inventory.processors`, `inventory.storages` | @@ -19,7 +19,7 @@ These rows/capabilities include the following placeholders in their `test` field ## Coverage by test -| Chainsaw test | Capability ids covered | +| Test | Capabilities covered | |---|---| | `tests/01-bmc-registration` | `BMC Registration` | | `tests/02-discovery` | `BMC Registration`, `Discovery` | @@ -33,7 +33,7 @@ These rows/capabilities include the following placeholders in their `test` field ## Coverage by capability -| Capability ID | Test | Verified | +| Capability ID | Covered by | Verified | |---|---|:---:| | `power.on` | `Discovery` | yes | | `power.off-graceful` | `Discovery` | yes | From f98eec495826d9797aaeb9bdfad53814b5f757e1 Mon Sep 17 00:00:00 2001 From: simontesar Date: Fri, 11 Sep 2026 06:18:49 +0200 Subject: [PATCH 2/2] refactor: prettify markdown tables Signed-off-by: simontesar --- capability-matrix.md | 134 +++++++++++++++++++++---------------------- coverage.md | 108 +++++++++++++++++----------------- 2 files changed, 121 insertions(+), 121 deletions(-) diff --git a/capability-matrix.md b/capability-matrix.md index 0cb6996..d56f97c 100644 --- a/capability-matrix.md +++ b/capability-matrix.md @@ -6,108 +6,108 @@ Which Chainsaw tests cover each capability is tracked in the [coverage document] ## Description of columns in capability tables -| Column | Description | -|---|---| -| **Capability id** | A key identifying the capability. | -| **`BMC` method** | The method of the `BMC` interface in the metal-operator the row stands for. | -| **Level** | How important the capability is. | -| **Redfish API** | The Redfish path/action the BMC must expose for the capability to work. | -| **Redfish request body** | An example request payload for write operations. | +| Column | Description | +|--------------------------|-----------------------------------------------------------------------------| +| **Capability id** | A key identifying the capability. | +| **`BMC` method** | The method of the `BMC` interface in the metal-operator the row stands for. | +| **Level** | How important the capability is. | +| **Redfish API** | The Redfish path/action the BMC must expose for the capability to work. | +| **Redfish request body** | An example request payload for write operations. | ## Conformance levels -| Level | Description | -|---|---| -| `MUST` | Core functions like `BMC`-, `Server`- and `ServerClaim`-reconciliation or power management cannot complete without it. | -| `SHOULD` | A first-class workflow like `BIOSSettings`- and `ServerMaintenance`-reconciliation or persistent boot order and locator LED depends on it. | -| `OPTIONAL` | Opt-in features like firmware upgrade, account management, event subscriptions and BMC settings. | +| Level | Description | +|------------|--------------------------------------------------------------------------------------------------------------------------------------------| +| `MUST` | Core functions like `BMC`-, `Server`- and `ServerClaim`-reconciliation or power management cannot complete without it. | +| `SHOULD` | A first-class workflow like `BIOSSettings`- and `ServerMaintenance`-reconciliation or persistent boot order and locator LED depends on it. | +| `OPTIONAL` | Opt-in features like firmware upgrade, account management, event subscriptions and BMC settings. | --- # Interfaces ## [PowerController](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L43) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| -| `power.on` | `PowerOn` | MUST | `POST` `#ComputerSystem.Reset` | `{"ResetType": "On"}` | -| `power.off-graceful` | `PowerOff` | MUST | `POST` `#ComputerSystem.Reset` | `{"ResetType": "GracefulShutdown"}` | -| `power.off-force` | `ForcePowerOff` | MUST | `POST` `#ComputerSystem.Reset` | `{"ResetType": "ForceOff"}` | -| `power.reset` | `Reset` | MUST | `POST` `#ComputerSystem.Reset` - reset type from `AnnotationToRedfishMapping` | `{"ResetType": "GracefulRestart" \| "ForceRestart" \| "PowerCycle" \| "ForceOff" \| "ForceOn"}` | -| `power.wait-state` | `WaitForServerPowerState` | MUST | `GET` `ComputerSystem.PowerState` | - | +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|----------------------|---------------------------|:-----:|-------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------| +| `power.on` | `PowerOn` | MUST | `POST` `#ComputerSystem.Reset` | `{"ResetType": "On"}` | +| `power.off-graceful` | `PowerOff` | MUST | `POST` `#ComputerSystem.Reset` | `{"ResetType": "GracefulShutdown"}` | +| `power.off-force` | `ForcePowerOff` | MUST | `POST` `#ComputerSystem.Reset` | `{"ResetType": "ForceOff"}` | +| `power.reset` | `Reset` | MUST | `POST` `#ComputerSystem.Reset` - reset type from `AnnotationToRedfishMapping` | `{"ResetType": "GracefulRestart" \| "ForceRestart" \| "PowerCycle" \| "ForceOff" \| "ForceOn"}` | +| `power.wait-state` | `WaitForServerPowerState` | MUST | `GET` `ComputerSystem.PowerState` | - | ## [BootController](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L61) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| -| `boot.override-pxe` | `SetBootOverride` | MUST | `PATCH` `ComputerSystem` | `{"Boot": {"BootSourceOverrideEnabled": "Once", "BootSourceOverrideTarget": "Pxe", "BootSourceOverrideMode": "UEFI"}}` | -| `boot.order-get` | `GetBootOrder` | SHOULD | `GET` `ComputerSystem.Boot.BootOrder` | - | -| `boot.order-set` | `SetBootOrder` | SHOULD | `PATCH` `ComputerSystem` | `{"Boot": {"BootOrder": ["", "…"], "BootSourceOverrideEnabled": "Continuous", "BootSourceOverrideTarget": "None"}}` | +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|---------------------|-------------------|:------:|---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------| +| `boot.override-pxe` | `SetBootOverride` | MUST | `PATCH` `ComputerSystem` | `{"Boot": {"BootSourceOverrideEnabled": "Once", "BootSourceOverrideTarget": "Pxe", "BootSourceOverrideMode": "UEFI"}}` | +| `boot.order-get` | `GetBootOrder` | SHOULD | `GET` `ComputerSystem.Boot.BootOrder` | - | +| `boot.order-set` | `SetBootOrder` | SHOULD | `PATCH` `ComputerSystem` | `{"Boot": {"BootOrder": ["", "…"], "BootSourceOverrideEnabled": "Continuous", "BootSourceOverrideTarget": "None"}}` | ## [SystemInspector](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L75) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| -| `inventory.systems` | `GetSystems` | MUST | `GET` `/redfish/v1/Systems` collection; members need `UUID` and `Boot.BootSourceOverrideTarget` | - | -| `inventory.system-info` | `GetSystemInfo` | MUST | `GET` `ComputerSystem` - `Manufacturer`, `Model`, `SerialNumber`, `SKU`, `PowerState`, `Status`, `MemorySummary.TotalSystemMemoryGiB`, `BiosVersion`, `IndicatorLED` | - | -| `inventory.processors` | `GetProcessors` | SHOULD | `GET` `ComputerSystem/Processors` collection (`Processor`) | - | -| `inventory.storages` | `GetStorages` | SHOULD | `GET` `ComputerSystem/Storage` (`Storage`, `Drives`, `Volumes`); fallback `GET` `ComputerSystem/SimpleStorage` | - | +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|-------------------------|-----------------|:------:|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------| +| `inventory.systems` | `GetSystems` | MUST | `GET` `/redfish/v1/Systems` collection; members need `UUID` and `Boot.BootSourceOverrideTarget` | - | +| `inventory.system-info` | `GetSystemInfo` | MUST | `GET` `ComputerSystem` - `Manufacturer`, `Model`, `SerialNumber`, `SKU`, `PowerState`, `Status`, `MemorySummary.TotalSystemMemoryGiB`, `BiosVersion`, `IndicatorLED` | - | +| `inventory.processors` | `GetProcessors` | SHOULD | `GET` `ComputerSystem/Processors` collection (`Processor`) | - | +| `inventory.storages` | `GetStorages` | SHOULD | `GET` `ComputerSystem/Storage` (`Storage`, `Drives`, `Volumes`); fallback `GET` `ComputerSystem/SimpleStorage` | - | ## [BIOSManager](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L90) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| -| `bios.version` | `GetBiosVersion` | MUST | `GET` `ComputerSystem.BiosVersion` | - | -| `bios.attr-get` | `GetBiosAttributeValues` | SHOULD | `GET` `ComputerSystem/Bios.Attributes` + `GET` `/redfish/v1/Registries` | - | -| `bios.attr-pending` | `GetBiosPendingAttributeValues` | SHOULD | `GET` `Bios` `@Redfish.Settings` + `GET` settings object `.Attributes` | - | -| `bios.attr-set-on-reset` | `SetBiosAttributesOnReset` | SHOULD | `PATCH` the `Bios` `@Redfish.Settings` settings object | `{"Attributes": {"": "", …}, "@Redfish.SettingsApplyTime": {"ApplyTime": "OnReset"}}` | -| `bios.attr-check` | `CheckBiosAttributes` | SHOULD | `GET` `/redfish/v1/Registries` | - | +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|--------------------------|---------------------------------|:------:|-------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| +| `bios.version` | `GetBiosVersion` | MUST | `GET` `ComputerSystem.BiosVersion` | - | +| `bios.attr-get` | `GetBiosAttributeValues` | SHOULD | `GET` `ComputerSystem/Bios.Attributes` + `GET` `/redfish/v1/Registries` | - | +| `bios.attr-pending` | `GetBiosPendingAttributeValues` | SHOULD | `GET` `Bios` `@Redfish.Settings` + `GET` settings object `.Attributes` | - | +| `bios.attr-set-on-reset` | `SetBiosAttributesOnReset` | SHOULD | `PATCH` the `Bios` `@Redfish.Settings` settings object | `{"Attributes": {"": "", …}, "@Redfish.SettingsApplyTime": {"ApplyTime": "OnReset"}}` | +| `bios.attr-check` | `CheckBiosAttributes` | SHOULD | `GET` `/redfish/v1/Registries` | - | ## [BMCSettingsManager](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L108) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| -| `bmc.version` | `GetBMCVersion` | MUST | `GET` `Manager.FirmwareVersion` | - | -| `bmc-settings.attr-get` | `GetBMCAttributeValues` | OPTIONAL | Manager attribute resource / `Manager` `@Redfish.Settings` - vendor-specific implementation | - | -| `bmc-settings.attr-pending` | `GetBMCPendingAttributeValues` | OPTIONAL | `GET` `Manager` `@Redfish.Settings` | - | -| `bmc-settings.set-immediate` | `SetBMCAttributesImmediately` | OPTIONAL | `PATCH` the `Manager` settings object, vendor-specific implementation | `{"Attributes": {"": "", …}, "@Redfish.SettingsApplyTime": {"ApplyTime": "Immediate"}}` | -| `bmc-settings.attr-check` | `CheckBMCAttributes` | OPTIONAL | `GET` `/redfish/v1/Registries` | - | +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|------------------------------|--------------------------------|:--------:|---------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| +| `bmc.version` | `GetBMCVersion` | MUST | `GET` `Manager.FirmwareVersion` | - | +| `bmc-settings.attr-get` | `GetBMCAttributeValues` | OPTIONAL | Manager attribute resource / `Manager` `@Redfish.Settings` - vendor-specific implementation | - | +| `bmc-settings.attr-pending` | `GetBMCPendingAttributeValues` | OPTIONAL | `GET` `Manager` `@Redfish.Settings` | - | +| `bmc-settings.set-immediate` | `SetBMCAttributesImmediately` | OPTIONAL | `PATCH` the `Manager` settings object, vendor-specific implementation | `{"Attributes": {"": "", …}, "@Redfish.SettingsApplyTime": {"ApplyTime": "Immediate"}}` | +| `bmc-settings.attr-check` | `CheckBMCAttributes` | OPTIONAL | `GET` `/redfish/v1/Registries` | - | ## [FirmwareUpdater](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L127) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| -| `firmware.bios.upgrade` | `UpgradeBiosVersion` | OPTIONAL | `POST` `#UpdateService.SimpleUpdate` | `{"ImageURI": "", "TransferProtocol": "", "Targets": [""], "@Redfish.OperationApplyTime": "Immediate"}` | -| `firmware.bios.task` | `GetBiosUpgradeTask` | OPTIONAL | `GET` task monitor / `TaskService` `Task` (`TaskState`, `TaskStatus`) | - | -| `firmware.bmc.upgrade` | `UpgradeBMCVersion` | OPTIONAL | `POST` `#UpdateService.SimpleUpdate` | `{"ImageURI": "", "TransferProtocol": "", "Targets": [""], "@Redfish.OperationApplyTime": "Immediate"}` | -| `firmware.bmc.task` | `GetBMCUpgradeTask` | OPTIONAL | `GET` task monitor / `Task` | - | -| `firmware.pending-check` | `CheckBMCPendingComponentUpgrade` | OPTIONAL | `GET` `UpdateService/FirmwareInventory` | - | +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|--------------------------|-----------------------------------|:--------:|-----------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| +| `firmware.bios.upgrade` | `UpgradeBiosVersion` | OPTIONAL | `POST` `#UpdateService.SimpleUpdate` | `{"ImageURI": "", "TransferProtocol": "", "Targets": [""], "@Redfish.OperationApplyTime": "Immediate"}` | +| `firmware.bios.task` | `GetBiosUpgradeTask` | OPTIONAL | `GET` task monitor / `TaskService` `Task` (`TaskState`, `TaskStatus`) | - | +| `firmware.bmc.upgrade` | `UpgradeBMCVersion` | OPTIONAL | `POST` `#UpdateService.SimpleUpdate` | `{"ImageURI": "", "TransferProtocol": "", "Targets": [""], "@Redfish.OperationApplyTime": "Immediate"}` | +| `firmware.bmc.task` | `GetBMCUpgradeTask` | OPTIONAL | `GET` task monitor / `Task` | - | +| `firmware.pending-check` | `CheckBMCPendingComponentUpgrade` | OPTIONAL | `GET` `UpdateService/FirmwareInventory` | - | ## [ManagerController](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L146) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| -| `manager.get` | `GetManager` | MUST | `GET` `/redfish/v1/Managers` collection; match `Manager.UUID` | - | -| `manager.discover` | `DiscoverManager` | SHOULD | `GET` `/redfish/v1/Managers`; `Manager.GraphicalConsole` (`MaxConcurrentSessions`, `ConnectTypesSupported`) | - | -| `manager.reset` | `ResetManager` | SHOULD | `POST` `#Manager.Reset` - value must be in `Manager.SupportedResetTypes` | `{"ResetType": "GracefulRestart"}` | +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|--------------------|-------------------|:------:|-------------------------------------------------------------------------------------------------------------|------------------------------------| +| `manager.get` | `GetManager` | MUST | `GET` `/redfish/v1/Managers` collection; match `Manager.UUID` | - | +| `manager.discover` | `DiscoverManager` | SHOULD | `GET` `/redfish/v1/Managers`; `Manager.GraphicalConsole` (`MaxConcurrentSessions`, `ConnectTypesSupported`) | - | +| `manager.reset` | `ResetManager` | SHOULD | `POST` `#Manager.Reset` - value must be in `Manager.SupportedResetTypes` | `{"ResetType": "GracefulRestart"}` | ## [AccountManager](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L158) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|-------------------------|-------------------------|:--------:|--------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------| | `account.create-update` | `CreateOrUpdateAccount` | OPTIONAL | `POST` `AccountService/Accounts`; fallback `PATCH` an existing / empty slot with the same fields | `{"UserName": "", "Password": "", "RoleId": "", "Enabled": true}` | -| `account.delete` | `DeleteAccount` | OPTIONAL | `DELETE` the `ManagerAccount` URI or fall back to `PATCH`ing the slot | `{"UserName": "", "Enabled": false}` for PATCH fallback | -| `account.list` | `GetAccounts` | OPTIONAL | `GET` `AccountService/Accounts` collection | - | -| `account.service` | `GetAccountService` | OPTIONAL | `GET` `/redfish/v1/AccountService` | - | +| `account.delete` | `DeleteAccount` | OPTIONAL | `DELETE` the `ManagerAccount` URI or fall back to `PATCH`ing the slot | `{"UserName": "", "Enabled": false}` for PATCH fallback | +| `account.list` | `GetAccounts` | OPTIONAL | `GET` `AccountService/Accounts` collection | - | +| `account.service` | `GetAccountService` | OPTIONAL | `GET` `/redfish/v1/AccountService` | - | ## [IndicatorController](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L173) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|---------------------|-------------------|:------:|--------------------------|---------------------------| | `indicator.set-led` | `SetIndicatorLED` | SHOULD | `PATCH` `ComputerSystem` | `{"IndicatorLED": "Lit"}` | ## [EventSubscriber](https://github.com/ironcore-dev/metal-operator/blob/4d2a4eb1a372c9a01602a5bda26f6c9489393918/bmc/bmc.go#L179) -| Capability id | `BMC` method | Level | Redfish API | Redfish request body | -|---|---|:---:|---|---| -| `events.subscribe` | `CreateEventSubscription` | OPTIONAL | `GET` `EventService` (`ServiceEnabled`), then `POST` `EventService/Subscriptions`; read the new URI from the `Location` header | `{"Destination": "", "Protocol": "Redfish", "EventFormatType": "Event", "Context": "metal-operator"}` | -| `events.unsubscribe` | `DeleteEventSubscription` | OPTIONAL | `DELETE` the `EventDestination` URI | - | +| Capability id | `BMC` method | Level | Redfish API | Redfish request body | +|----------------------|---------------------------|:--------:|--------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| +| `events.subscribe` | `CreateEventSubscription` | OPTIONAL | `GET` `EventService` (`ServiceEnabled`), then `POST` `EventService/Subscriptions`; read the new URI from the `Location` header | `{"Destination": "", "Protocol": "Redfish", "EventFormatType": "Event", "Context": "metal-operator"}` | +| `events.unsubscribe` | `DeleteEventSubscription` | OPTIONAL | `DELETE` the `EventDestination` URI | - | diff --git a/coverage.md b/coverage.md index cb0362e..ceeae60 100644 --- a/coverage.md +++ b/coverage.md @@ -10,66 +10,66 @@ This document summarises what tests cover which capabilities in the [capability- Some capabilities are covered by multiple tests implicitly because they share common workflows. These rows/capabilities include the following placeholders in their `test` field: -| Placeholder | Description | Capabilities covered | -|---|---|---| -| `BMC Registration` | Test creates a `BMC` that results in a `Server` resource. | `manager.get`, `inventory.systems`, `inventory.system-info` | -| `Discovery` | Test waits for the `Server` to reach the `Available` state. | `power.on`, `power.off-graceful`, `power.wait-state`, `boot.override-pxe`, `bios.version`, `inventory.processors`, `inventory.storages` | +| Placeholder | Description | Capabilities covered | +|--------------------|-------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| +| `BMC Registration` | Test creates a `BMC` that results in a `Server` resource. | `manager.get`, `inventory.systems`, `inventory.system-info` | +| `Discovery` | Test waits for the `Server` to reach the `Available` state. | `power.on`, `power.off-graceful`, `power.wait-state`, `boot.override-pxe`, `bios.version`, `inventory.processors`, `inventory.storages` | --- ## Coverage by test -| Test | Capabilities covered | -|---|---| -| `tests/01-bmc-registration` | `BMC Registration` | -| `tests/02-discovery` | `BMC Registration`, `Discovery` | -| `tests/03-power-annotation` | `BMC Registration`, `Discovery`, `power.reset` | -| `tests/04-bmc-reset` | `BMC Registration`, `manager.reset` | -| `tests/05-indicator-led` | `BMC Registration`, `Discovery`, `indicator.set-led` | -| `tests/06-biossettings-noreboot` | `BMC Registration`, `Discovery`, `bios.attr-get`, `bios.attr-pending`, `bios.attr-set-on-reset`, `bios.attr-check` | -| `tests/07-biossettings-reboot` | `BMC Registration`, `Discovery`, `bios.attr-get`, `bios.attr-pending`, `bios.attr-set-on-reset`, `bios.attr-check` | -| `tests/08-bmcsettings` | `BMC Registration`, `Discovery`, `bmc-settings.attr-get`, `bmc-settings.attr-pending`, `bmc-settings.set-immediate`, `bmc-settings.attr-check` | -| `tests/09-persistent-boot-order` | `BMC Registration`, `Discovery`, `boot.order-get`, `boot.order-set`, `power.reset` | +| Test | Capabilities covered | +|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------| +| `tests/01-bmc-registration` | `BMC Registration` | +| `tests/02-discovery` | `BMC Registration`, `Discovery` | +| `tests/03-power-annotation` | `BMC Registration`, `Discovery`, `power.reset` | +| `tests/04-bmc-reset` | `BMC Registration`, `manager.reset` | +| `tests/05-indicator-led` | `BMC Registration`, `Discovery`, `indicator.set-led` | +| `tests/06-biossettings-noreboot` | `BMC Registration`, `Discovery`, `bios.attr-get`, `bios.attr-pending`, `bios.attr-set-on-reset`, `bios.attr-check` | +| `tests/07-biossettings-reboot` | `BMC Registration`, `Discovery`, `bios.attr-get`, `bios.attr-pending`, `bios.attr-set-on-reset`, `bios.attr-check` | +| `tests/08-bmcsettings` | `BMC Registration`, `Discovery`, `bmc-settings.attr-get`, `bmc-settings.attr-pending`, `bmc-settings.set-immediate`, `bmc-settings.attr-check` | +| `tests/09-persistent-boot-order` | `BMC Registration`, `Discovery`, `boot.order-get`, `boot.order-set`, `power.reset` | ## Coverage by capability -| Capability ID | Covered by | Verified | -|---|---|:---:| -| `power.on` | `Discovery` | yes | -| `power.off-graceful` | `Discovery` | yes | -| `power.off-force` | uncovered | - | -| `power.reset` | `tests/03-power-annotation`, `tests/09-persistent-boot-order` | no | -| `power.wait-state` | `Discovery` | yes | -| `boot.override-pxe` | `Discovery` | yes | -| `boot.order-get` | `tests/09-persistent-boot-order` | yes | -| `boot.order-set` | `tests/09-persistent-boot-order` | yes | -| `inventory.systems` | `BMC Registration` | yes | -| `inventory.system-info` | `BMC Registration` | yes | -| `inventory.processors` | `Discovery` | yes | -| `inventory.storages` | `Discovery` | no | -| `bios.version` | `Discovery`, `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | -| `bios.attr-get` | `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | -| `bios.attr-pending` | `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | -| `bios.attr-set-on-reset` | `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | -| `bios.attr-check` | `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | -| `bmc.version` | uncovered | - | -| `bmc-settings.attr-get` | `tests/08-bmcsettings` | yes | -| `bmc-settings.attr-pending` | `tests/08-bmcsettings` | no | -| `bmc-settings.set-immediate` | `tests/08-bmcsettings` | yes | -| `bmc-settings.attr-check` | `tests/08-bmcsettings` | no | -| `firmware.bios.upgrade` | uncovered | - | -| `firmware.bios.task` | uncovered | - | -| `firmware.bmc.upgrade` | uncovered | - | -| `firmware.bmc.task` | uncovered | - | -| `firmware.pending-check` | uncovered | - | -| `manager.get` | `BMC Registration` | yes | -| `manager.discover` | uncovered | - | -| `manager.reset` | `tests/04-bmc-reset` | no | -| `account.create-update` | uncovered | - | -| `account.delete` | uncovered | - | -| `account.list` | uncovered | - | -| `account.service` | uncovered | - | -| `indicator.set-led` | `tests/05-indicator-led` | yes | -| `events.subscribe` | uncovered | - | -| `events.unsubscribe` | uncovered | - | +| Capability ID | Covered by | Verified | +|------------------------------|-------------------------------------------------------------------------------|:--------:| +| `power.on` | `Discovery` | yes | +| `power.off-graceful` | `Discovery` | yes | +| `power.off-force` | uncovered | - | +| `power.reset` | `tests/03-power-annotation`, `tests/09-persistent-boot-order` | no | +| `power.wait-state` | `Discovery` | yes | +| `boot.override-pxe` | `Discovery` | yes | +| `boot.order-get` | `tests/09-persistent-boot-order` | yes | +| `boot.order-set` | `tests/09-persistent-boot-order` | yes | +| `inventory.systems` | `BMC Registration` | yes | +| `inventory.system-info` | `BMC Registration` | yes | +| `inventory.processors` | `Discovery` | yes | +| `inventory.storages` | `Discovery` | no | +| `bios.version` | `Discovery`, `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | +| `bios.attr-get` | `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | +| `bios.attr-pending` | `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | +| `bios.attr-set-on-reset` | `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | +| `bios.attr-check` | `tests/06-biossettings-noreboot`, `tests/07-biossettings-reboot` | yes | +| `bmc.version` | uncovered | - | +| `bmc-settings.attr-get` | `tests/08-bmcsettings` | yes | +| `bmc-settings.attr-pending` | `tests/08-bmcsettings` | no | +| `bmc-settings.set-immediate` | `tests/08-bmcsettings` | yes | +| `bmc-settings.attr-check` | `tests/08-bmcsettings` | no | +| `firmware.bios.upgrade` | uncovered | - | +| `firmware.bios.task` | uncovered | - | +| `firmware.bmc.upgrade` | uncovered | - | +| `firmware.bmc.task` | uncovered | - | +| `firmware.pending-check` | uncovered | - | +| `manager.get` | `BMC Registration` | yes | +| `manager.discover` | uncovered | - | +| `manager.reset` | `tests/04-bmc-reset` | no | +| `account.create-update` | uncovered | - | +| `account.delete` | uncovered | - | +| `account.list` | uncovered | - | +| `account.service` | uncovered | - | +| `indicator.set-led` | `tests/05-indicator-led` | yes | +| `events.subscribe` | uncovered | - | +| `events.unsubscribe` | uncovered | - |