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