1*** Settings *** 2Documentation Test BMC DHCP multiple network interface functionalities. 3 4Resource ../../lib/resource.robot 5Resource ../../lib/common_utils.robot 6Resource ../../lib/connection_client.robot 7Resource ../../lib/bmc_network_utils.robot 8Resource ../../lib/openbmc_ffdc.robot 9 10Suite Setup Suite Setup Execution 11Test Teardown FFDC On Test Case Fail 12Suite Teardown Redfish.Logout 13 14*** Variables *** 15 16&{DHCP_ENABLED} DHCPEnabled=${True} 17&{DHCP_DISABLED} DHCPEnabled=${False} 18&{ENABLE_DHCP} DHCPv4=${DHCP_ENABLED} 19&{DISABLE_DHCP} DHCPv4=${DHCP_DISABLED} 20${ethernet_interface} eth1 21 22&{dns_enable_dict} UseDNSServers=${True} 23&{dns_disable_dict} UseDNSServers=${False} 24&{ntp_enable_dict} UseNTPServers=${True} 25&{ntp_disable_dict} UseNTPServers=${False} 26&{domain_name_enable_dict} UseDomainName=${True} 27&{domain_name_disable_dict} UseDomainName=${False} 28&{enable_multiple_properties} UseDomainName=${True} 29... UseNTPServers=${True} 30... UseDNSServers=${True} 31&{disable_multiple_properties} UseDomainName=${False} 32... UseNTPServers=${False} 33... UseDNSServers=${False} 34 35*** Test Cases *** 36 37Disable DHCP On Eth1 And Verify System Is Accessible By Eth0 38 [Documentation] Disable DHCP on eth1 using Redfish and verify 39 ... if system is accessible by eth0. 40 [Tags] Disable_DHCP_On_Eth1_And_Verify_System_Is_Accessible_By_Eth0 41 [Teardown] Set DHCPEnabled To Enable Or Disable True eth1 42 43 Set DHCPEnabled To Enable Or Disable False eth1 44 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 45 46Enable DHCP On Eth1 And Verify System Is Accessible By Eth0 47 [Documentation] Enable DHCP on eth1 using Redfish and verify if system 48 ... is accessible by eth0. 49 [Tags] Enable_DHCP_On_Eth1_And_Verify_System_Is_Accessible_By_Eth0 50 [Setup] Set DHCPEnabled To Enable Or Disable False eth1 51 52 Set DHCPEnabled To Enable Or Disable True eth1 53 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 54 55Set Network Property via Redfish And Verify 56 [Documentation] Set network property via Redfish and verify. 57 [Tags] Set_Network_Property_via_Redfish_And_Verify 58 [Teardown] Restore Configuration 59 [Template] Apply DHCP Config 60 61 # property 62 ${dns_enable_dict} 63 ${dns_disable_dict} 64 ${domain_name_enable_dict} 65 ${domain_name_disable_dict} 66 ${ntp_enable_dict} 67 ${ntp_disable_dict} 68 ${enable_multiple_properties} 69 ${disable_multiple_properties} 70 71*** Keywords *** 72 73Set DHCPEnabled To Enable Or Disable 74 [Documentation] Enable or Disable DHCP on the interface. 75 [Arguments] ${dhcp_enabled}=${False} ${interface}=${ethernet_interface} 76 ... ${valid_status_code}=[${HTTP_OK},${HTTP_ACCEPTED}] 77 78 # Description of argument(s): 79 # dhcp_enabled False for disabling DHCP and True for Enabling DHCP. 80 # interface eth0 or eth1. Default is eth1. 81 # valid_status_code Expected valid status code from Patch request. 82 # Default is HTTP_OK. 83 84 ${data}= Set Variable If ${dhcp_enabled} == ${False} ${DISABLE_DHCP} ${ENABLE_DHCP} 85 ${resp}= Redfish.Patch 86 ... /redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/${interface} 87 ... body=${data} valid_status_codes=${valid_status_code} 88 89Apply DHCP Config 90 [Documentation] Apply DHCP Config 91 [Arguments] ${property} 92 93 # Description of Argument(s): 94 # property DHCP property values. 95 96 ${active_channel_config}= Get Active Channel Config 97 Redfish.Patch 98 ... /redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}/ 99 ... body={"DHCPv4":${property}} valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}] 100 101 ${resp}= Redfish.Get 102 ... /redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']} 103 Verify Ethernet Config Property ${property} ${resp.dict["DHCPv4"]} 104 105 106Verify Ethernet Config Property 107 [Documentation] verify ethernet config properties. 108 [Arguments] ${property} ${response_data} 109 110 # Description of argument(s): 111 # ${property} DHCP Properties in dictionary. 112 # Example: 113 # property value 114 # DHCPEnabled :False 115 # UseDomainName :True 116 # UseNTPServers :True 117 # UseDNSServers :True 118 # ${response_data} DHCP Response data in dictionary. 119 # Example: 120 # property value 121 # DHCPEnabled :False 122 # UseDomainName :True 123 # UseNTPServers :True 124 # UseDNSServers :True 125 126 ${key_map}= Get Dictionary Items ${property} 127 FOR ${key} ${value} IN @{key_map} 128 Should Be Equal As Strings ${response_data['${key}']} ${value} 129 END 130 131Restore Configuration 132 [Documentation] Restore the configuration to Both Static Network 133 134 Run Keyword If '${CHANNEL_NUMBER}' == '1' Add IP Address ${OPENBMC_HOST} ${eth0_subnet_mask} ${eth0_gateway} 135 ... ELSE IF '${CHANNEL_NUMBER}' == '2' Add IP Address ${OPENBMC_HOST_1} ${eth1_subnet_mask} ${eth1_gateway} 136 137Get Network Configuration Using Channel Number 138 [Documentation] Get ethernet interface. 139 [Arguments] ${channel_number} 140 141 # Description of argument(s): 142 # channel_number Ethernet channel number, 1 is for eth0 and 2 is for eth1 (e.g. "1"). 143 144 ${active_channel_config}= Get Active Channel Config 145 ${ethernet_interface}= Set Variable ${active_channel_config['${channel_number}']['name']} 146 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 147 148 @{network_configurations}= Get From Dictionary ${resp.dict} IPv4StaticAddresses 149 [Return] @{network_configurations} 150 151Suite Setup Execution 152 [Documentation] Do suite setup task. 153 154 Ping Host ${OPENBMC_HOST} 155 Ping Host ${OPENBMC_HOST_1} 156 Redfish.Login 157 158 # Get the configuration of eth1 159 ${network_configurations}= Get Network Configuration Using Channel Number ${2} 160 FOR ${network_configuration} IN @{network_configurations} 161 Run Keyword If '${network_configuration['Address']}' == '${OPENBMC_HOST_1}' 162 ... Run Keywords Set Suite Variable ${eth1_subnet_mask} ${network_configuration['SubnetMask']} 163 ... AND Set Suite Variable ${eth1_gateway} ${network_configuration['Gateway']} 164 ... AND Exit For Loop 165 END 166 167 # Get the configuration of eth0 168 ${network_configurations}= Get Network Configuration Using Channel Number ${1} 169 FOR ${network_configuration} IN @{network_configurations} 170 Run Keyword If '${network_configuration['Address']}' == '${OPENBMC_HOST}' 171 ... Run Keywords Set Suite Variable ${eth0_subnet_mask} ${network_configuration['SubnetMask']} 172 ... AND Set Suite Variable ${eth0_gateway} ${network_configuration['Gateway']} 173 ... AND Exit For Loop 174 END 175 176