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