1*** Settings *** 2Documentation Network interface configuration and verification 3 ... tests. 4 5Resource ../../lib/bmc_redfish_resource.robot 6Resource ../../lib/bmc_network_utils.robot 7Resource ../../lib/openbmc_ffdc.robot 8Library ../../lib/bmc_network_utils.py 9Library Collections 10 11Test Setup Test Setup Execution 12Test Teardown Test Teardown Execution 13Suite Setup Suite Setup Execution 14 15Force Tags Network_Conf_Test 16 17*** Variables *** 18${test_hostname} openbmc 19${test_ipv4_addr} 10.7.7.7 20${test_ipv4_invalid_addr} 0.0.1.a 21${test_subnet_mask} 255.255.0.0 22${broadcast_ip} 10.7.7.255 23${loopback_ip} 127.0.0.2 24${multicast_ip} 224.6.6.6 25${out_of_range_ip} 10.7.7.256 26${test_ipv4_addr2} 10.7.7.8 27 28# Valid netmask is 4 bytes long and has continuos block of 1s. 29# Maximum valid value in each octet is 255 and least value is 0. 30# 253 is not valid, as binary value is 11111101. 31${invalid_netmask} 255.255.253.0 32${alpha_netmask} ff.ff.ff.ff 33# Maximum value of octet in netmask is 255. 34${out_of_range_netmask} 255.256.255.0 35${more_byte_netmask} 255.255.255.0.0 36${less_byte_netmask} 255.255.255 37${threshold_netmask} 255.255.255.255 38${lowest_netmask} 128.0.0.0 39 40# There will be 4 octets in IP address (e.g. xx.xx.xx.xx) 41# but trying to configure xx.xx.xx 42${less_octet_ip} 10.3.36 43 44# For the address 10.6.6.6, the 10.6.6.0 portion describes the 45# network ID and the 6 describe the host. 46 47${network_id} 10.7.7.0 48${hex_ip} 0xa.0xb.0xc.0xd 49${negative_ip} 10.-7.-7.7 50${hex_ip} 0xa.0xb.0xc.0xd 51@{static_name_servers} 10.5.5.5 52@{null_value} null 53@{empty_dictionary} {} 54@{string_value} aa.bb.cc.dd 55 56*** Test Cases *** 57 58Get IP Address And Verify 59 [Documentation] Get IP Address And Verify. 60 [Tags] Get_IP_Address_And_Verify 61 62 FOR ${network_configuration} IN @{network_configurations} 63 Verify IP On BMC ${network_configuration['Address']} 64 END 65 66Get Netmask And Verify 67 [Documentation] Get Netmask And Verify. 68 [Tags] Get_Netmask_And_Verify 69 70 FOR ${network_configuration} IN @{network_configurations} 71 Verify Netmask On BMC ${network_configuration['SubnetMask']} 72 END 73 74Get Gateway And Verify 75 [Documentation] Get gateway and verify it's existence on the BMC. 76 [Tags] Get_Gateway_And_Verify 77 78 FOR ${network_configuration} IN @{network_configurations} 79 Verify Gateway On BMC ${network_configuration['Gateway']} 80 END 81 82Get MAC Address And Verify 83 [Documentation] Get MAC address and verify it's existence on the BMC. 84 [Tags] Get_MAC_Address_And_Verify 85 86 ${active_channel_config}= Get Active Channel Config 87 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 88 89 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 90 ${macaddr}= Get From Dictionary ${resp.dict} MACAddress 91 Validate MAC On BMC ${macaddr} 92 93Verify All Configured IP And Netmask 94 [Documentation] Verify all configured IP and netmask on BMC. 95 [Tags] Verify_All_Configured_IP_And_Netmask 96 97 FOR ${network_configuration} IN @{network_configurations} 98 Verify IP And Netmask On BMC ${network_configuration['Address']} 99 ... ${network_configuration['SubnetMask']} 100 END 101 102Get Hostname And Verify 103 [Documentation] Get hostname via Redfish and verify. 104 [Tags] Get_Hostname_And_Verify 105 106 ${hostname}= Redfish_Utils.Get Attribute ${REDFISH_NW_PROTOCOL_URI} HostName 107 108 Validate Hostname On BMC ${hostname} 109 110Configure Hostname And Verify 111 [Documentation] Configure hostname via Redfish and verify. 112 [Tags] Configure_Hostname_And_Verify 113 [Teardown] Run Keywords 114 ... Configure Hostname ${hostname} AND Validate Hostname On BMC ${hostname} 115 116 ${hostname}= Redfish_Utils.Get Attribute ${REDFISH_NW_PROTOCOL_URI} HostName 117 118 Configure Hostname ${test_hostname} 119 Validate Hostname On BMC ${test_hostname} 120 121 122Add Valid IPv4 Address And Verify 123 [Documentation] Add IPv4 Address via Redfish and verify. 124 [Tags] Add_Valid_IPv4_Addres_And_Verify 125 [Teardown] Run Keywords 126 ... Delete IP Address ${test_ipv4_addr} AND Test Teardown Execution 127 128 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway} 129 130Add Invalid IPv4 Address And Verify 131 [Documentation] Add Invalid IPv4 Address via Redfish and verify. 132 [Tags] Add_Invalid_IPv4_Addres_And_Verify 133 134 Add IP Address ${test_ipv4_invalid_addr} ${test_subnet_mask} 135 ... ${test_gateway} valid_status_codes=${HTTP_BAD_REQUEST} 136 137Configure Out Of Range IP 138 [Documentation] Configure out-of-range IP address. 139 [Tags] Configure_Out_Of_Range_IP 140 [Template] Add IP Address 141 142 # ip subnet_mask gateway valid_status_codes 143 ${out_of_range_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 144 145Configure Broadcast IP 146 [Documentation] Configure broadcast IP address. 147 [Tags] Configure_Broadcast_IP 148 [Template] Add IP Address 149 [Teardown] Clear IP Settings On Fail ${broadcast_ip} 150 151 # ip subnet_mask gateway valid_status_codes 152 ${broadcast_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 153 154Configure Multicast IP 155 [Documentation] Configure multicast IP address. 156 [Tags] Configure_Multicast_IP 157 [Template] Add IP Address 158 [Teardown] Clear IP Settings On Fail ${multicast_ip} 159 160 # ip subnet_mask gateway valid_status_codes 161 ${multicast_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 162 163Configure Loopback IP 164 [Documentation] Configure loopback IP address. 165 [Tags] Configure_Loopback_IP 166 [Template] Add IP Address 167 [Teardown] Clear IP Settings On Fail ${loopback_ip} 168 169 # ip subnet_mask gateway valid_status_codes 170 ${loopback_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 171 172Add Valid IPv4 Address And Check Persistency 173 [Documentation] Add IPv4 address and check peristency. 174 [Tags] Add_Valid_IPv4_Addres_And_Check_Persistency 175 [Teardown] Run Keywords 176 ... Delete IP Address ${test_ipv4_addr} AND Test Teardown Execution 177 178 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway} 179 180 # Reboot BMC and verify persistency. 181 OBMC Reboot (off) 182 Redfish.Login 183 Verify IP On BMC ${test_ipv4_addr} 184 185Add Fourth Octet Threshold IP And Verify 186 [Documentation] Add fourth octet threshold IP and verify. 187 [Tags] Add_Fourth_Octet_Threshold_IP_And_Verify 188 [Teardown] Run Keywords 189 ... Delete IP Address 10.7.7.254 AND Test Teardown Execution 190 191 Add IP Address 10.7.7.254 ${test_subnet_mask} ${test_gateway} 192 193Add Fourth Octet Lowest IP And Verify 194 [Documentation] Add fourth octet lowest IP and verify. 195 [Tags] Add_Fourth_Octet_Lowest_IP_And_Verify 196 [Teardown] Run Keywords 197 ... Delete IP Address 10.7.7.1 AND Test Teardown Execution 198 199 Add IP Address 10.7.7.1 ${test_subnet_mask} ${test_gateway} 200 201Add Third Octet Threshold IP And Verify 202 [Documentation] Add third octet threshold IP and verify. 203 [Tags] Add_Third_Octet_Threshold_IP_And_Verify 204 [Teardown] Run Keywords 205 ... Delete IP Address 10.7.255.7 AND Test Teardown Execution 206 207 Add IP Address 10.7.255.7 ${test_subnet_mask} ${test_gateway} 208 209Add Third Octet Lowest IP And Verify 210 [Documentation] Add third octet lowest IP and verify. 211 [Tags] Add_Third_Octet_Lowest_IP_And_Verify 212 [Teardown] Run Keywords 213 ... Delete IP Address 10.7.0.7 AND Test Teardown Execution 214 215 Add IP Address 10.7.0.7 ${test_subnet_mask} ${test_gateway} 216 217Add Second Octet Threshold IP And Verify 218 [Documentation] Add second octet threshold IP and verify. 219 [Tags] Add_Second_Octet_Threshold_IP_And_Verify 220 [Teardown] Run Keywords 221 ... Delete IP Address 10.255.7.7 AND Test Teardown Execution 222 223 Add IP Address 10.255.7.7 ${test_subnet_mask} ${test_gateway} 224 225Add Second Octet Lowest IP And Verify 226 [Documentation] Add second octet lowest IP and verify. 227 [Tags] Add_Second_Octet_Lowest_IP_And_Verify 228 [Teardown] Run Keywords 229 ... Delete IP Address 10.0.7.7 AND Test Teardown Execution 230 231 Add IP Address 10.0.7.7 ${test_subnet_mask} ${test_gateway} 232 233Add First Octet Threshold IP And Verify 234 [Documentation] Add first octet threshold IP and verify. 235 [Tags] Add_First_Octet_Threshold_IP_And_Verify 236 [Teardown] Run Keywords 237 ... Delete IP Address 223.7.7.7 AND Test Teardown Execution 238 239 Add IP Address 223.7.7.7 ${test_subnet_mask} ${test_gateway} 240 241Add First Octet Lowest IP And Verify 242 [Documentation] Add first octet lowest IP and verify. 243 [Tags] Add_First_Octet_Lowest_IP_And_Verify 244 [Teardown] Run Keywords 245 ... Delete IP Address 1.7.7.7 AND Test Teardown Execution 246 247 Add IP Address 1.7.7.7 ${test_subnet_mask} ${test_gateway} 248 249Configure Invalid Netmask 250 [Documentation] Verify error while setting invalid netmask. 251 [Tags] Configure_Invalid_Netmask 252 [Template] Add IP Address 253 254 # ip subnet_mask gateway valid_status_codes 255 ${test_ipv4_addr} ${invalid_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 256 257Configure Out Of Range Netmask 258 [Documentation] Verify error while setting out of range netmask. 259 [Tags] Configure_Out_Of_Range_Netmask 260 [Template] Add IP Address 261 262 # ip subnet_mask gateway valid_status_codes 263 ${test_ipv4_addr} ${out_of_range_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 264 265Configure Alpha Netmask 266 [Documentation] Verify error while setting alpha netmask. 267 [Tags] Configure_Alpha_Netmask 268 [Template] Add IP Address 269 270 # ip subnet_mask gateway valid_status_codes 271 ${test_ipv4_addr} ${alpha_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 272 273Configure More Byte Netmask 274 [Documentation] Verify error while setting more byte netmask. 275 [Tags] Configure_More_Byte_Netmask 276 [Template] Add IP Address 277 278 # ip subnet_mask gateway valid_status_codes 279 ${test_ipv4_addr} ${more_byte_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 280 281Configure Less Byte Netmask 282 [Documentation] Verify error while setting less byte netmask. 283 [Tags] Configure_Less_Byte_Netmask 284 [Template] Add IP Address 285 286 # ip subnet_mask gateway valid_status_codes 287 ${test_ipv4_addr} ${less_byte_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 288 289Configure Threshold Netmask And Verify 290 [Documentation] Configure threshold netmask and verify. 291 [Tags] Configure_Threshold_Netmask_And_verify 292 [Teardown] Run Keywords 293 ... Delete IP Address ${test_ipv4_addr} AND Test Teardown Execution 294 295 Add IP Address ${test_ipv4_addr} ${threshold_netmask} ${test_gateway} 296 297Configure Lowest Netmask And Verify 298 [Documentation] Configure lowest netmask and verify. 299 [Tags] Configure_Lowest_Netmask_And_verify 300 [Teardown] Run Keywords 301 ... Delete IP Address ${test_ipv4_addr} AND Test Teardown Execution 302 303 Add IP Address ${test_ipv4_addr} ${lowest_netmask} ${test_gateway} 304 305Configure Network ID 306 [Documentation] Verify error while configuring network ID. 307 [Tags] Configure_Network_ID 308 [Template] Add IP Address 309 [Teardown] Clear IP Settings On Fail ${network_id} 310 311 # ip subnet_mask gateway valid_status_codes 312 ${network_id} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 313 314Configure Less Octet IP 315 [Documentation] Verify error while Configuring less octet IP address. 316 [Tags] Configure_Less_Octet_IP 317 [Template] Add IP Address 318 319 # ip subnet_mask gateway valid_status_codes 320 ${less_octet_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 321 322Configure Empty IP 323 [Documentation] Verify error while Configuring empty IP address. 324 [Tags] Configure_Empty_IP 325 [Template] Add IP Address 326 327 # ip subnet_mask gateway valid_status_codes 328 ${EMPTY} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 329 330Configure Special Char IP 331 [Documentation] Configure invalid IP address containing special chars. 332 [Tags] Configure_Special_Char_IP 333 [Template] Add IP Address 334 335 # ip subnet_mask gateway valid_status_codes 336 @@@.%%.44.11 ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 337 338Configure Hexadecimal IP 339 [Documentation] Configure invalid IP address containing hex value. 340 [Tags] Configure_Hexadecimal_IP 341 [Template] Add IP Address 342 343 # ip subnet_mask gateway valid_status_codes 344 ${hex_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 345 346Configure Negative Octet IP 347 [Documentation] Configure invalid IP address containing negative octet. 348 [Tags] Configure_Negative_Octet_IP 349 [Template] Add IP Address 350 351 # ip subnet_mask gateway valid_status_codes 352 ${negative_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 353 354Configure Incomplete IP For Gateway 355 [Documentation] Configure incomplete IP for gateway and expect an error. 356 [Tags] Configure_Incomplete_IP_For_Gateway 357 [Template] Add IP Address 358 359 # ip subnet_mask gateway valid_status_codes 360 ${test_ipv4_addr} ${test_subnet_mask} ${less_octet_ip} ${HTTP_BAD_REQUEST} 361 362Configure Special Char IP For Gateway 363 [Documentation] Configure special char IP for gateway and expect an error. 364 [Tags] Configure_Special_Char_IP_For_Gateway 365 [Template] Add IP Address 366 367 # ip subnet_mask gateway valid_status_codes 368 ${test_ipv4_addr} ${test_subnet_mask} @@@.%%.44.11 ${HTTP_BAD_REQUEST} 369 370Configure Hexadecimal IP For Gateway 371 [Documentation] Configure hexadecimal IP for gateway and expect an error. 372 [Tags] Configure_Hexadecimal_IP_For_Gateway 373 [Template] Add IP Address 374 375 # ip subnet_mask gateway valid_status_codes 376 ${test_ipv4_addr} ${test_subnet_mask} ${hex_ip} ${HTTP_BAD_REQUEST} 377 378Get DNS Server And Verify 379 [Documentation] Get DNS server via Redfish and verify. 380 [Tags] Get_DNS_Server_And_Verify 381 382 Verify CLI and Redfish Nameservers 383 384Configure DNS Server And Verify 385 [Documentation] Configure DNS server and verify. 386 [Tags] Configure_DNS_Server_And_Verify 387 [Setup] DNS Test Setup Execution 388 [Teardown] Run Keywords 389 ... Configure Static Name Servers AND Test Teardown Execution 390 391 Configure Static Name Servers ${static_name_servers} 392 Verify CLI and Redfish Nameservers 393 394Delete DNS Server And Verify 395 [Documentation] Delete DNS server and verify. 396 [Tags] Delete_DNS_Server_And_Verify 397 [Setup] DNS Test Setup Execution 398 [Teardown] Run Keywords 399 ... Configure Static Name Servers AND Test Teardown Execution 400 401 Delete Static Name Servers 402 Verify CLI and Redfish Nameservers 403 404Configure DNS Server And Check Persistency 405 [Documentation] Configure DNS server and check persistency on reboot. 406 [Tags] Configure_DNS_Server_And_Check_Persistency 407 [Setup] DNS Test Setup Execution 408 [Teardown] Run Keywords 409 ... Configure Static Name Servers AND Test Teardown Execution 410 411 Configure Static Name Servers ${static_name_servers} 412 # Reboot BMC and verify persistency. 413 OBMC Reboot (off) 414 Verify CLI and Redfish Nameservers 415 416Configure Loopback IP For Gateway 417 [Documentation] Configure loopback IP for gateway and expect an error. 418 [Tags] Configure_Loopback_IP_For_Gateway 419 [Template] Add IP Address 420 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr} 421 422 # ip subnet_mask gateway valid_status_codes 423 ${test_ipv4_addr} ${test_subnet_mask} ${loopback_ip} ${HTTP_BAD_REQUEST} 424 425Configure Network ID For Gateway 426 [Documentation] Configure network ID for gateway and expect an error. 427 [Tags] Configure_Network_ID_For_Gateway 428 [Template] Add IP Address 429 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr} 430 431 # ip subnet_mask gateway valid_status_codes 432 ${test_ipv4_addr} ${test_subnet_mask} ${network_id} ${HTTP_BAD_REQUEST} 433 434Configure Multicast IP For Gateway 435 [Documentation] Configure multicast IP for gateway and expect an error. 436 [Tags] Configure_Multicast_IP_For_Gateway 437 [Template] Add IP Address 438 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr} 439 440 # ip subnet_mask gateway valid_status_codes 441 ${test_ipv4_addr} ${test_subnet_mask} ${multicast_ip} ${HTTP_BAD_REQUEST} 442 443Configure Broadcast IP For Gateway 444 [Documentation] Configure broadcast IP for gateway and expect an error. 445 [Tags] Configure_Broadcast_IP_For_Gateway 446 [Template] Add IP Address 447 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr} 448 449 # ip subnet_mask gateway valid_status_codes 450 ${test_ipv4_addr} ${test_subnet_mask} ${broadcast_ip} ${HTTP_BAD_REQUEST} 451 452Configure Null Value For DNS Server 453 [Documentation] Configure null value for DNS server and expect an error. 454 [Tags] Configure_Null_Value_For_DNS_Server 455 [Setup] DNS Test Setup Execution 456 [Teardown] Run Keywords 457 ... Configure Static Name Servers AND Test Teardown Execution 458 459 Configure Static Name Servers ${null_value} ${HTTP_BAD_REQUEST} 460 461Configure Empty Value For DNS Server 462 [Documentation] Configure empty value for DNS server and expect an error. 463 [Tags] Configure_Empty_Value_For_DNS_Server 464 [Setup] DNS Test Setup Execution 465 [Teardown] Run Keywords 466 ... Configure Static Name Servers AND Test Teardown Execution 467 468 Configure Static Name Servers ${empty_dictionary} ${HTTP_BAD_REQUEST} 469 470Configure String Value For DNS Server 471 [Documentation] Configure string value for DNS server and expect an error. 472 [Tags] Configure_String_Value_For_DNS_Server 473 [Setup] DNS Test Setup Execution 474 [Teardown] Run Keywords 475 ... Configure Static Name Servers AND Test Teardown Execution 476 477 Configure Static Name Servers ${string_value} ${HTTP_BAD_REQUEST} 478 479Modify IPv4 Address And Verify 480 [Documentation] Modify IP address via Redfish and verify. 481 [Tags] Modify_IPv4_Addres_And_Verify 482 [Teardown] Run Keywords 483 ... Delete IP Address ${test_ipv4_addr2} AND Delete IP Address ${test_ipv4_addr} 484 ... AND Test Teardown Execution 485 486 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway} 487 488 Update IP Address ${test_ipv4_addr} ${test_ipv4_addr2} ${test_subnet_mask} ${test_gateway} 489 490 491*** Keywords *** 492 493Test Setup Execution 494 [Documentation] Test setup execution. 495 496 Redfish.Login 497 498 @{network_configurations}= Get Network Configuration 499 Set Test Variable @{network_configurations} 500 501 # Get BMC IP address and prefix length. 502 ${ip_data}= Get BMC IP Info 503 Set Test Variable ${ip_data} 504 505 506Verify Netmask On BMC 507 [Documentation] Verify netmask on BMC. 508 [Arguments] ${netmask} 509 510 # Description of the argument(s): 511 # netmask netmask value to be verified. 512 513 ${prefix_length}= Netmask Prefix Length ${netmask} 514 515 Should Contain Match ${ip_data} */${prefix_length} 516 ... msg=Prefix length does not exist. 517 518Verify IP And Netmask On BMC 519 [Documentation] Verify IP and netmask on BMC. 520 [Arguments] ${ip} ${netmask} 521 522 # Description of the argument(s): 523 # ip IP address to be verified. 524 # netmask netmask value to be verified. 525 526 ${prefix_length}= Netmask Prefix Length ${netmask} 527 @{ip_data}= Get BMC IP Info 528 529 ${ip_with_netmask}= Catenate ${ip}/${prefix_length} 530 Should Contain ${ip_data} ${ip_with_netmask} 531 ... msg=IP and netmask pair does not exist. 532 533Validate Hostname On BMC 534 [Documentation] Verify that the hostname read via Redfish is the same as the 535 ... hostname configured on system. 536 [Arguments] ${hostname} 537 538 # Description of argument(s): 539 # hostname A hostname value which is to be compared to the hostname 540 # configured on system. 541 542 ${sys_hostname}= Get BMC Hostname 543 Should Be Equal ${sys_hostname} ${hostname} 544 ... ignore_case=True msg=Hostname does not exist. 545 546Test Teardown Execution 547 [Documentation] Test teardown execution. 548 549 FFDC On Test Case Fail 550 Redfish.Logout 551 552Clear IP Settings On Fail 553 [Documentation] Clear IP settings on fail. 554 [Arguments] ${ip} 555 556 # Description of argument(s): 557 # ip IP address to be deleted. 558 559 Run Keyword If '${TEST STATUS}' == 'FAIL' 560 ... Delete IP Address ${ip} 561 562 Test Teardown Execution 563 564Verify CLI and Redfish Nameservers 565 [Documentation] Verify that nameservers obtained via Redfish do not 566 ... match those found in /etc/resolv.conf. 567 568 ${active_channel_config}= Get Active Channel Config 569 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 570 571 ${redfish_nameservers}= Redfish.Get Attribute 572 ... ${REDFISH_NW_ETH_IFACE}${ethernet_interface} StaticNameServers 573 ${resolve_conf_nameservers}= CLI Get Nameservers 574 Rqprint Vars redfish_nameservers resolve_conf_nameservers 575 576 # Check that the 2 lists are equivalent. 577 ${match}= Evaluate set($redfish_nameservers) == set($resolve_conf_nameservers) 578 Should Be True ${match} 579 ... The nameservers obtained via Redfish do not match those found in /etc/resolv.conf. 580 581 582Configure Static Name Servers 583 [Documentation] Configure DNS server on BMC. 584 [Arguments] ${static_name_servers}=${original_nameservers} 585 ... ${valid_status_codes}=${HTTP_OK} 586 587 # Description of the argument(s): 588 # static_name_servers A list of static name server IPs to be 589 # configured on the BMC. 590 591 ${active_channel_config}= Get Active Channel Config 592 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 593 594 # Currently BMC is sending 500 response code instead of 400 for invalid scenarios. 595 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 596 ... body={'StaticNameServers': ${static_name_servers}} 597 ... valid_status_codes=[${valid_status_codes}, ${HTTP_INTERNAL_SERVER_ERROR}] 598 599 # Patch operation takes 1 to 3 seconds to set new value. 600 Sleep 3s 601 602 # Check if newly added DNS server is configured on BMC. 603 ${cli_nameservers}= CLI Get Nameservers 604 ${cmd_status}= Run Keyword And Return Status 605 ... List Should Contain Sub List ${cli_nameservers} ${static_name_servers} 606 607 Run Keyword If '${valid_status_codes}' == '${HTTP_OK}' 608 ... Should Be True ${cmd_status} == ${True} 609 ... ELSE Should Be True ${cmd_status} == ${False} 610 611Delete Static Name Servers 612 [Documentation] Delete static name servers. 613 614 Configure Static Name Servers @{EMPTY} 615 616 # Check if all name servers deleted on BMC. 617 ${nameservers}= CLI Get Nameservers 618 Should Be Empty ${nameservers} 619 620DNS Test Setup Execution 621 [Documentation] Do DNS test setup execution. 622 623 Redfish.Login 624 625 ${active_channel_config}= Get Active Channel Config 626 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 627 628 ${original_nameservers}= Redfish.Get Attribute 629 ... ${REDFISH_NW_ETH_IFACE}${ethernet_interface} StaticNameServers 630 631 Rprint Vars original_nameservers 632 # Set suite variables to trigger restoration during teardown. 633 Set Suite Variable ${original_nameservers} 634 635Suite Setup Execution 636 [Documentation] Do suite setup execution. 637 638 ${test_gateway}= Get BMC Default Gateway 639 Set Suite Variable ${test_gateway} 640 641Update IP Address 642 [Documentation] Update IP address of BMC. 643 [Arguments] ${ip} ${new_ip} ${netmask} ${gw_ip} ${valid_status_codes}=${HTTP_OK} 644 645 # Description of argument(s): 646 # ip IP address to be replaced (e.g. "10.7.7.7"). 647 # new_ip New IP address to be configured. 648 # netmask Netmask value. 649 # gw_ip Gateway IP address. 650 # valid_status_codes Expected return code from patch operation 651 # (e.g. "200"). See prolog of rest_request 652 # method in redfish_plus.py for details. 653 654 ${empty_dict}= Create Dictionary 655 ${patch_list}= Create List 656 ${ip_data}= Create Dictionary Address=${new_ip} SubnetMask=${netmask} Gateway=${gw_ip} 657 658 # Find the position of IP address to be modified. 659 @{network_configurations}= Get Network Configuration 660 FOR ${network_configuration} IN @{network_configurations} 661 Run Keyword If '${network_configuration['Address']}' == '${ip}' 662 ... Append To List ${patch_list} ${ip_data} 663 ... ELSE Append To List ${patch_list} ${empty_dict} 664 END 665 666 ${ip_found}= Run Keyword And Return Status List Should Contain Value 667 ... ${patch_list} ${ip_data} msg=${ip} does not exist on BMC 668 Pass Execution If ${ip_found} == ${False} ${ip} does not exist on BMC 669 670 # Run patch command only if given IP is found on BMC 671 ${data}= Create Dictionary IPv4StaticAddresses=${patch_list} 672 673 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data} valid_status_codes=[${valid_status_codes}] 674 675 # Note: Network restart takes around 15-18s after patch request processing. 676 Sleep ${NETWORK_TIMEOUT}s 677 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 678 679 Verify IP On BMC ${new_ip} 680 Validate Network Config On BMC 681