REDFISH: verifying Boot policies after bmc reset using REDFISH scripts

Changes:
    - under redfish/systems/test_boot_devices.robot after BMC and
      Host reboot verified boot policies are working as expected
Tested:
    - Ran redfish/systems/test_boot_devices.robot scripts Successfully

Change-Id: I7cc791ce26a05aafffc453e978246fdc85752b28
Signed-off-by: manimozhik <manimozhik@ami.com>
diff --git a/redfish/systems/test_boot_devices.robot b/redfish/systems/test_boot_devices.robot
index 574b330..d046bef 100644
--- a/redfish/systems/test_boot_devices.robot
+++ b/redfish/systems/test_boot_devices.robot
@@ -38,6 +38,8 @@
 &{redfish_ipmi_mode_map}  Legacy=BIOS PC Compatible (legacy) boot
 ...                       UEFI=BIOS EFI boot
 
+${loop_count}             2
+
 *** Test Cases ***
 
 Verify BMC Redfish Boot Source Override with Enabled Mode As Once
@@ -100,10 +102,106 @@
     Disabled                      None                        Legacy
 
 
+Verify Boot Source Override Policy Persistency with Enabled Mode As Once After BMC Reboot
+    [Documentation]  Verify Boot Source Override Policy Persistency with Enabled Mode As Once After BMC Reboot.
+    [Tags]           Verify_Boot_Source_Override_Policy_Persistency_With_Enabled_Mode_As_Once_After_BMC_Reboot
+    [Template]  Verify Boot Source Override After BMC Reboot
+
+    #BootSourceOverrideEnabled    BootSourceOverrideTarget    BootSourceOverrideMode
+    Once                          Hdd                         UEFI
+    Once                          Pxe                         UEFI
+    Once                          Diags                       UEFI
+    Once                          Cd                          UEFI
+    Once                          BiosSetup                   UEFI
+    Once                          None                        UEFI
+    Once                          Hdd                         Legacy
+    Once                          Pxe                         Legacy
+    Once                          Diags                       Legacy
+    Once                          Cd                          Legacy
+    Once                          BiosSetup                   Legacy
+    Once                          None                        Legacy
+
+
+Verify Boot Source Override Policy Persistency with Enabled Mode As Continuous After BMC Reboot
+    [Documentation]  Verify Boot Source Override Policy Persistency with Enabled Mode As Continuous After BMC Reboot.
+    [Tags]           Verify_Boot_Source_Override_Policy_Persistency_With_Enabled_Mode_As_Continuous_After_BMC_Reboot
+    [Template]  Verify Boot Source Override After BMC Reboot
+
+    #BootSourceOverrideEnabled    BootSourceOverrideTarget    BootSourceOverrideMode
+    Continuous                    Hdd                         UEFI
+    Continuous                    Pxe                         UEFI
+    Continuous                    Diags                       UEFI
+    Continuous                    Cd                          UEFI
+    Continuous                    BiosSetup                   UEFI
+    Continuous                    None                        UEFI
+    Continuous                    Hdd                         Legacy
+    Continuous                    Pxe                         Legacy
+    Continuous                    Diags                       Legacy
+    Continuous                    Cd                          Legacy
+    Continuous                    BiosSetup                   Legacy
+    Continuous                    None                        Legacy
+
+
+Verify Boot Source Override Policy with Enabled Mode As Once After Host Reboot
+    [Documentation]  Verify Boot Source Override Policy with Enabled Mode As Once After Host Reboot.
+    [Tags]           Verify_Boot_Source_Override_Policy_With_Enabled_Mode_As_Once_After_Host_Reboot
+    [Template]  Verify Boot Source Override with Enabled Mode As Once After Host Reboot
+
+    #BootSourceOverrideTarget    BootSourceOverrideMode
+    Hdd                         UEFI
+    Pxe                         UEFI
+    Diags                       UEFI
+    Cd                          UEFI
+    None                        UEFI
+    Hdd                         Legacy
+    Pxe                         Legacy
+    Diags                       Legacy
+    Cd                          Legacy
+    None                        Legacy
+
+
+Verify Boot Source Override Policy with Enabled Mode As Continuous After Host Reboot
+    [Documentation]  Verify Boot Source Override Policy With Enabled Mode As Continuous After Host Reboot.
+    [Tags]           Verify_Boot_Source_Override_Policy_With_Enabled_Mode_As_Continuous_After_Host_Reboot
+    [Template]  Verify Boot Source Override with Enabled Mode As Continuous After Host Reboot
+
+    #BootSourceOverrideTarget    BootSourceOverrideMode
+    Hdd                         UEFI
+    Pxe                         UEFI
+    Diags                       UEFI
+    Cd                          UEFI
+    None                        UEFI
+    Hdd                         Legacy
+    Pxe                         Legacy
+    Diags                       Legacy
+    Cd                          Legacy
+    None                        Legacy
+
+
+Verify Boot Source Override with Enabled Mode As Once After Host Reboot For Bios Setup
+    [Documentation]  Verify Boot Source Override with Enabled Mode As Once After Host Reboot For Bios Setup.
+    [Tags]           Verify_Boot_Source_Override_With_Enabled_Mode_As_Once_After_Host_Reboot_For_Bios_Setup
+    [Template]  Verify Boot Source Override with Enabled Mode As Once After Host Reboot
+
+    #BootSourceOverrideTarget   BootSourceOverrideMode   Biosflag
+    BiosSetup                   UEFI                     True
+    BiosSetup                   Legacy                   True
+
+
+Verify Boot Source Override with Enabled Mode As Continuous After Host Reboot For Bios Setup
+    [Documentation]  Verify Boot Source Override with Enabled Mode As Continuous After Host Reboot For Bios Setup.
+    [Tags]           Verify_Boot_Source_Override_With_Enabled_Mode_As_Continuous_After_Host_Reboot_For_Bios_Setup
+    [Template]  Verify Boot Source Override with Enabled Mode As Continuous After Host Reboot
+
+    #BootSourceOverrideTarget   BootSourceOverrideMode   Biosflag
+    BiosSetup                   UEFI                     True
+    BiosSetup                   Legacy                   True
+
+
 *** Keywords ***
 
 Set And Verify Boot Source Override
-    [Documentation]  Set and Verify Boot source override
+    [Documentation]  Set and Verify Boot source override.
     [Arguments]      ${override_enabled}  ${override_target}  ${override_mode}=UEFI
 
     # Description of argument(s):
@@ -155,6 +253,199 @@
     ...  Should Contain  ${output}  ${redfish_ipmi_mode_map['${override_mode}']}
 
 
+Verify Boot Source Override After BMC Reboot
+    [Documentation]  Verify Boot Source Override After BMC Reboot.
+    [Arguments]      ${override_enabled}  ${override_target}  ${override_mode}=UEFI
+
+    # Description of argument(s):
+    # override_enabled    Boot source override enable type.
+    #                     ('Once', 'Continuous', 'Disabled').
+    # override_target     Boot source override target.
+    #                     ('Pxe', 'Cd', 'Hdd', 'Diags', 'BiosSetup', 'None').
+    # override_mode       Boot source override mode (relevant only for x86 arch).
+    #                     ('Legacy', 'UEFI').
+
+    # Example:
+    # "Boot": {
+    # "BootSourceOverrideEnabled": "Disabled",
+    # "BootSourceOverrideMode": "Legacy",
+    # "BootSourceOverrideTarget": "None",
+    # "BootSourceOverrideTarget@Redfish.AllowableValues": [
+    # "None",
+    # "Pxe",
+    # "Hdd",
+    # "Cd",
+    # "Diags",
+    # "BiosSetup"]}
+
+    # The values set using Redfish are verified via IPMI using the command:
+    # chassis bootparam get 5
+    # Option 5 returns the boot parameters.
+    #
+    # Sample output:
+    # Boot parameter version: 1
+    # Boot parameter 5 is valid/unlocked
+    # Boot parameter data: c000000000
+    # Boot Flags :
+    # - Boot Flag Valid
+    # - Options apply to all future boots
+    # - BIOS PC Compatible (legacy) boot
+    # - Boot Device Selector : No override
+    # - Console Redirection control : System Default
+    # - BIOS verbosity : Console redirection occurs per BIOS configuration
+    #   setting (default)
+    # - BIOS Mux Control Override : BIOS uses recommended setting of the mux at
+    #   the end of POST
+
+    Redfish Set Boot Default  ${override_enabled}  ${override_target}  ${override_mode}
+
+    Redfish OBMC Reboot (run)
+
+    ${output}=  Run IPMI Standard Command  chassis bootparam get 5
+    Should Contain  ${output}  ${redfish_ipmi_enabled_map['${override_enabled}']}
+    Should Contain  ${output}  ${redfish_ipmi_target_map['${override_target}']}
+    Run Keyword If  '${PLATFORM_ARCH_TYPE}' == 'x86'
+    ...  Should Contain  ${output}  ${redfish_ipmi_mode_map['${override_mode}']}
+
+
+Verify Boot Source Override with Enabled Mode As Once After Host Reboot
+    [Documentation]  Verify Boot Source Override with Enabled Mode As Once After Host Reboot.
+    [Arguments]      ${override_target}  ${override_mode}=UEFI  ${is_bios_setup}=False
+
+    # Description of argument(s):
+    # override_enabled    Boot source override enable type.
+    #                     ('Once', 'Continuous', 'Disabled').
+    # override_target     Boot source override target.
+    #                     ('Pxe', 'Cd', 'Hdd', 'Diags', 'BiosSetup', 'None').
+    # override_mode       Boot source override mode (relevant only for x86 arch).
+    #                     ('Legacy', 'UEFI').
+
+    # Example:
+    # "Boot": {
+    # "BootSourceOverrideEnabled": "Disabled",
+    # "BootSourceOverrideMode": "Legacy",
+    # "BootSourceOverrideTarget": "None",
+    # "BootSourceOverrideTarget@Redfish.AllowableValues": [
+    # "None",
+    # "Pxe",
+    # "Hdd",
+    # "Cd",
+    # "Diags",
+    # "BiosSetup"]}
+
+    # The values set using Redfish are verified via IPMI using the command:
+    # chassis bootparam get 5
+    # Option 5 returns the boot parameters.
+    #
+    # Sample output:
+    # Boot parameter version: 1
+    # Boot parameter 5 is valid/unlocked
+    # Boot parameter data: c000000000
+    # Boot Flags :
+    # - Boot Flag Valid
+    # - Options apply to all future boots
+    # - BIOS PC Compatible (legacy) boot
+    # - Boot Device Selector : No override
+    # - Console Redirection control : System Default
+    # - BIOS verbosity : Console redirection occurs per BIOS configuration
+    #   setting (default)
+    # - BIOS Mux Control Override : BIOS uses recommended setting of the mux at
+    #   the end of POST
+
+    Redfish Set Boot Default  Once  ${override_target}  ${override_mode}
+
+    IF  '${is_bios_setup}' == 'True'
+         Repeat Keyword  ${loop_count} times  Host Reboot For Bios Setup
+    ELSE
+         RF SYS GracefulRestart
+         ${output}=  Run IPMI Standard Command  chassis bootparam get 5
+         Should Contain  ${output}  ${redfish_ipmi_enabled_map['Once']}
+         Should Contain  ${output}  ${redfish_ipmi_target_map['None']}
+         IF  '${PLATFORM_ARCH_TYPE}' == 'x86'
+             Should Contain  ${output}  ${redfish_ipmi_mode_map['Legacy']}
+         END
+    END
+
+    ${resp}=  Redfish.Get Attribute  /redfish/v1/Systems/system  Boot
+    Should Be Equal As Strings  ${resp["BootSourceOverrideEnabled"]}  Disabled
+    Should Be Equal As Strings  ${resp["BootSourceOverrideTarget"]}  None
+    Run Keyword If  '${PLATFORM_ARCH_TYPE}' == 'x86'
+    ...  Should Be Equal As Strings  ${resp["BootSourceOverrideMode"]}  Legacy
+
+
+Verify Boot Source Override with Enabled Mode As Continuous After Host Reboot
+    [Documentation]  Verify Boot Source Override with Enabled Mode As Continuous After Host Reboot.
+    [Arguments]      ${override_target}  ${override_mode}=UEFI  ${is_bios_setup}=False
+
+    # Description of argument(s):
+    # override_enabled    Boot source override enable type.
+    #                     ('Once', 'Continuous', 'Disabled').
+    # override_target     Boot source override target.
+    #                     ('Pxe', 'Cd', 'Hdd', 'Diags', 'BiosSetup', 'None').
+    # override_mode       Boot source override mode (relevant only for x86 arch).
+    #                     ('Legacy', 'UEFI').
+
+    # Example:
+    # "Boot": {
+    # "BootSourceOverrideEnabled": "Disabled",
+    # "BootSourceOverrideMode": "Legacy",
+    # "BootSourceOverrideTarget": "None",
+    # "BootSourceOverrideTarget@Redfish.AllowableValues": [
+    # "None",
+    # "Pxe",
+    # "Hdd",
+    # "Cd",
+    # "Diags",
+    # "BiosSetup"]}
+
+    # The values set using Redfish are verified via IPMI using the command:
+    # chassis bootparam get 5
+    # Option 5 returns the boot parameters.
+    #
+    # Sample output:
+    # Boot parameter version: 1
+    # Boot parameter 5 is valid/unlocked
+    # Boot parameter data: c000000000
+    # Boot Flags :
+    # - Boot Flag Valid
+    # - Options apply to all future boots
+    # - BIOS PC Compatible (legacy) boot
+    # - Boot Device Selector : No override
+    # - Console Redirection control : System Default
+    # - BIOS verbosity : Console redirection occurs per BIOS configuration
+    #   setting (default)
+    # - BIOS Mux Control Override : BIOS uses recommended setting of the mux at
+    #   the end of POST
+
+    Redfish Set Boot Default  Continuous  ${override_target}  ${override_mode}
+
+    IF  '${is_bios_setup}' == 'True'
+         Repeat Keyword  ${loop_count} times  Host Reboot For Bios Setup
+    ELSE
+         RF SYS GracefulRestart
+         ${output}=  Run IPMI Standard Command  chassis bootparam get 5
+         Should Contain  ${output}  ${redfish_ipmi_enabled_map['Continuous']}
+         Should Contain  ${output}  ${redfish_ipmi_target_map['${override_target}']}
+         IF  '${PLATFORM_ARCH_TYPE}' == 'x86'
+             Should Contain  ${output}  ${redfish_ipmi_mode_map['${override_mode}']}
+         END
+    END
+
+    ${resp}=  Redfish.Get Attribute  /redfish/v1/Systems/system  Boot
+    Should Be Equal As Strings  ${resp["BootSourceOverrideEnabled"]}  Continuous
+    Should Be Equal As Strings  ${resp["BootSourceOverrideTarget"]}  ${override_target}
+    Run Keyword If  '${PLATFORM_ARCH_TYPE}' == 'x86'
+    ...  Should Be Equal As Strings  ${resp["BootSourceOverrideMode"]}  ${override_mode}
+
+
+Host Reboot For Bios Setup
+    [Documentation]  Rebooting Host without checking Host state.
+
+    Redfish Power Operation  GracefulRestart
+
+    Sleep  1min
+
+
 Suite Teardown Execution
     [Documentation]  Do the post suite teardown.