Commit 6da004b
committed
feat: implement HPE set_boot_override via UrlBootFile BIOS attribute
The existing impl PATCHed the standard Redfish `Boot.HttpBootUri` at `/Systems/{id}`, but iLO (at least iLO 6) doesn't actually implement that; the entire BootSourceOverride PATCH path is non-functional. Even non-HTTP targets like `Pxe` return `UnsupportedOperation`, and `HttpBootUri` itself returns `PropertyNotWritableOrUnknown`. The field exists in the response schema for compliance, BUT the firmware isn't wired up to honor `PATCH`es to it.
The actual HPE path is the `UrlBootFile` BIOS attribute (with `UrlBootFile2/3/4` secondaries and `PreBootNetwork` for IPv4/IPv6/Auto), which is `PATCH`ed at `/Systems/{id}/Bios/settings/`. This is a very similar pattern that Dell uses with `HttpDev1Uri`, just with an HPE-specific attribute name. Setting it creates a UEFI boot entry called "URL File" pointing at the URI, which applies on next reset. It is equivalent to the documented `HPREST/ilorest` flow `select Bios; set UrlBootFile=...; commit`.
Verified on HPE ProLiant DL380a Gen11 gear with:
- iLO 6 v1.58
- iLO 6 v1.72
In testing:
- `ServerConfigLockState` was `Disabled` across all sampled machines.
- `UrlBootFile.ReadOnly` was `false` in the registry.
- `PATCH` returned HTTP 200 + `SystemResetRequired`.
- Rollback works cleanly a `PATCH` of the `UrlBootFile` back to `""`.
Unlike some situations I was running into with Dell gear, the attribute is consistently writable across the fleet sample I checked.
Returns `Ok(None)` on success (since HPE doesn't surface a job ID for BIOS attribute changes; pending state lives in `/Bios/settings/` and applies on next reboot).
Note! `boot_once` and `boot_first` on HPE are unchanged. Those both use the existing HPE OEM `PersistentBootConfigOrder` mechanism at `/Systems/{id}/Bios/oem/hpe/boot/settings/` and are independent of this code path.
Integration test updated. HPE testing now exercises the BIOS-attribute path with an `http_boot_uri` provided (the only HPE-supported mode), and is excluded from the bare-override loop (where `set_boot_override` is called without `http_boot_uri`) since that returns `NotSupported` on HPE by design.
Signed-off-by: Chet Nichols III <chetn@nvidia.com>1 parent 02f9c19 commit 6da004b
2 files changed
Lines changed: 83 additions & 29 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
476 | 476 | | |
477 | 477 | | |
478 | 478 | | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
479 | 507 | | |
480 | 508 | | |
481 | 509 | | |
482 | 510 | | |
483 | 511 | | |
484 | | - | |
485 | | - | |
486 | | - | |
487 | | - | |
488 | | - | |
489 | | - | |
490 | | - | |
491 | | - | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | | - | |
500 | | - | |
501 | | - | |
502 | | - | |
503 | | - | |
504 | | - | |
505 | | - | |
506 | | - | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
507 | 537 | | |
508 | 538 | | |
509 | 539 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
432 | 432 | | |
433 | 433 | | |
434 | 434 | | |
435 | | - | |
436 | | - | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
437 | 438 | | |
438 | | - | |
439 | | - | |
440 | | - | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
441 | 447 | | |
442 | 448 | | |
443 | 449 | | |
444 | 450 | | |
445 | 451 | | |
| 452 | + | |
446 | 453 | | |
447 | 454 | | |
448 | 455 | | |
| |||
470 | 477 | | |
471 | 478 | | |
472 | 479 | | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
473 | 497 | | |
474 | 498 | | |
475 | 499 | | |
| |||
0 commit comments