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