Improve boot override handling for Dell
This commit is contained in:
		| @@ -620,19 +620,43 @@ def set_boot_override(session, system_root, redfish_vendor, target): | |||||||
|     """ |     """ | ||||||
|     Set the system boot override to the desired target |     Set the system boot override to the desired target | ||||||
|     """ |     """ | ||||||
|  |     print(redfish_vendor) | ||||||
|  |     system_details = session.get(system_root) | ||||||
|  |  | ||||||
|  |     def set_boot_override_dell(): | ||||||
|  |         # BootSourceOverrideEnabled': 'Disabled', 'BootSourceOverrideMode': 'UEFI', 'BootSourceOverrideTarget': 'None', 'UefiTargetBootSourceOverride': None, | ||||||
|         try: |         try: | ||||||
|         system_detail = session.get(system_root) |             boot_targets = system_detail["Boot"]["BootSourceOverrideTarget@Redfish.AllowableValues"] | ||||||
|         boot_targets = system_detail["Boot"]["BootSourceOverrideSupported"] |  | ||||||
|         except KeyError: |         except KeyError: | ||||||
|  |             logger.warn(f"Failed to set boot override, no BootSourceOverrideSupported key at {system_detail}") | ||||||
|             return False |             return False | ||||||
|  |  | ||||||
|         if target not in boot_targets: |         if target not in boot_targets: | ||||||
|  |             logger.warn(f"Failed to set boot override, key {target} not in {boot_targets}") | ||||||
|  |             return False | ||||||
|  |  | ||||||
|  |         session.patch(system_root, {"Boot": {"BootSourceOverrideEnabled": "Enabled", "BootSourceOverrideMode": "UEFI", "UefiTargetBootSourceOverride": target}}) | ||||||
|  |         return True | ||||||
|  |  | ||||||
|  |     def set_boot_override_generic(): | ||||||
|  |         try: | ||||||
|  |             boot_targets = system_detail["Boot"]["BootSourceOverrideSupported"] | ||||||
|  |         except KeyError: | ||||||
|  |             logger.warn(f"Failed to set boot override, no BootSourceOverrideSupported key at {system_detail}") | ||||||
|  |             return False | ||||||
|  |  | ||||||
|  |         if target not in boot_targets: | ||||||
|  |             logger.warn(f"Failed to set boot override, key {target} not in {boot_targets}") | ||||||
|             return False |             return False | ||||||
|  |  | ||||||
|         session.patch(system_root, {"Boot": {"BootSourceOverrideTarget": target}}) |         session.patch(system_root, {"Boot": {"BootSourceOverrideTarget": target}}) | ||||||
|  |  | ||||||
|         return True |         return True | ||||||
|  |  | ||||||
|  |     if redfish_vendor in ["dell", "Dell"]: | ||||||
|  |         return set_boot_override_dell() | ||||||
|  |     else: | ||||||
|  |         return set_boot_override_generic() | ||||||
|  |  | ||||||
|  |  | ||||||
| def check_redfish(config, data): | def check_redfish(config, data): | ||||||
|     """ |     """ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user