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 continuous 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@{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 END 64 65Get Netmask And Verify 66 [Documentation] Get Netmask And Verify. 67 [Tags] Get_Netmask_And_Verify 68 69 FOR ${network_configuration} IN @{network_configurations} 70 Verify Netmask On BMC ${network_configuration['SubnetMask']} 71 END 72 73Get Gateway And Verify 74 [Documentation] Get gateway and verify it's existence on the BMC. 75 [Tags] Get_Gateway_And_Verify 76 77 FOR ${network_configuration} IN @{network_configurations} 78 Verify Gateway On BMC ${network_configuration['Gateway']} 79 END 80 81Get MAC Address And Verify 82 [Documentation] Get MAC address and verify it's existence on the BMC. 83 [Tags] Get_MAC_Address_And_Verify 84 85 ${active_channel_config}= Get Active Channel Config 86 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 87 88 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 89 ${macaddr}= Get From Dictionary ${resp.dict} MACAddress 90 Validate MAC On BMC ${macaddr} 91 92Verify All Configured IP And Netmask 93 [Documentation] Verify all configured IP and netmask on BMC. 94 [Tags] Verify_All_Configured_IP_And_Netmask 95 96 FOR ${network_configuration} IN @{network_configurations} 97 Verify IP And Netmask On BMC ${network_configuration['Address']} 98 ... ${network_configuration['SubnetMask']} 99 END 100 101Get Hostname And Verify 102 [Documentation] Get hostname via Redfish and verify. 103 [Tags] Get_Hostname_And_Verify 104 105 ${hostname}= Redfish_Utils.Get Attribute ${REDFISH_NW_PROTOCOL_URI} HostName 106 107 Validate Hostname On BMC ${hostname} 108 109Configure Hostname And Verify 110 [Documentation] Configure hostname via Redfish and verify. 111 [Tags] Configure_Hostname_And_Verify 112 [Teardown] Run Keywords 113 ... Configure Hostname ${hostname} AND Validate Hostname On BMC ${hostname} 114 115 ${hostname}= Redfish_Utils.Get Attribute ${REDFISH_NW_PROTOCOL_URI} HostName 116 117 Configure Hostname ${test_hostname} 118 Validate Hostname On BMC ${test_hostname} 119 120 121Add Valid IPv4 Address And Verify 122 [Documentation] Add IPv4 Address via Redfish and verify. 123 [Tags] Add_Valid_IPv4_Addres_And_Verify 124 [Teardown] Run Keywords 125 ... Delete IP Address ${test_ipv4_addr} AND Test Teardown Execution 126 127 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway} 128 129Add Invalid IPv4 Address And Verify 130 [Documentation] Add Invalid IPv4 Address via Redfish and verify. 131 [Tags] Add_Invalid_IPv4_Addres_And_Verify 132 133 Add IP Address ${test_ipv4_invalid_addr} ${test_subnet_mask} 134 ... ${test_gateway} valid_status_codes=${HTTP_BAD_REQUEST} 135 136Configure Out Of Range IP 137 [Documentation] Configure out-of-range IP address. 138 [Tags] Configure_Out_Of_Range_IP 139 [Template] Add IP Address 140 141 # ip subnet_mask gateway valid_status_codes 142 ${out_of_range_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 143 144Configure Broadcast IP 145 [Documentation] Configure broadcast IP address. 146 [Tags] Configure_Broadcast_IP 147 [Template] Add IP Address 148 [Teardown] Clear IP Settings On Fail ${broadcast_ip} 149 150 # ip subnet_mask gateway valid_status_codes 151 ${broadcast_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 152 153Configure Multicast IP 154 [Documentation] Configure multicast IP address. 155 [Tags] Configure_Multicast_IP 156 [Template] Add IP Address 157 [Teardown] Clear IP Settings On Fail ${multicast_ip} 158 159 # ip subnet_mask gateway valid_status_codes 160 ${multicast_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 161 162Configure Loopback IP 163 [Documentation] Configure loopback IP address. 164 [Tags] Configure_Loopback_IP 165 [Template] Add IP Address 166 [Teardown] Clear IP Settings On Fail ${loopback_ip} 167 168 # ip subnet_mask gateway valid_status_codes 169 ${loopback_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 170 171Add Valid IPv4 Address And Check Persistency 172 [Documentation] Add IPv4 address and check peristency. 173 [Tags] Add_Valid_IPv4_Addres_And_Check_Persistency 174 175 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway} 176 177 # Reboot BMC and verify persistency. 178 OBMC Reboot (off) 179 Redfish.Login 180 Verify IP On BMC ${test_ipv4_addr} 181 Delete IP Address ${test_ipv4_addr} 182 183Add Fourth Octet Threshold IP And Verify 184 [Documentation] Add fourth octet threshold IP and verify. 185 [Tags] Add_Fourth_Octet_Threshold_IP_And_Verify 186 [Teardown] Run Keywords 187 ... Delete IP Address 10.7.7.254 AND Test Teardown Execution 188 189 Add IP Address 10.7.7.254 ${test_subnet_mask} ${test_gateway} 190 191Add Fourth Octet Lowest IP And Verify 192 [Documentation] Add fourth octet lowest IP and verify. 193 [Tags] Add_Fourth_Octet_Lowest_IP_And_Verify 194 [Teardown] Run Keywords 195 ... Delete IP Address 10.7.7.1 AND Test Teardown Execution 196 197 Add IP Address 10.7.7.1 ${test_subnet_mask} ${test_gateway} 198 199Add Third Octet Threshold IP And Verify 200 [Documentation] Add third octet threshold IP and verify. 201 [Tags] Add_Third_Octet_Threshold_IP_And_Verify 202 [Teardown] Run Keywords 203 ... Delete IP Address 10.7.255.7 AND Test Teardown Execution 204 205 Add IP Address 10.7.255.7 ${test_subnet_mask} ${test_gateway} 206 207Add Third Octet Lowest IP And Verify 208 [Documentation] Add third octet lowest IP and verify. 209 [Tags] Add_Third_Octet_Lowest_IP_And_Verify 210 [Teardown] Run Keywords 211 ... Delete IP Address 10.7.0.7 AND Test Teardown Execution 212 213 Add IP Address 10.7.0.7 ${test_subnet_mask} ${test_gateway} 214 215Add Second Octet Threshold IP And Verify 216 [Documentation] Add second octet threshold IP and verify. 217 [Tags] Add_Second_Octet_Threshold_IP_And_Verify 218 [Teardown] Run Keywords 219 ... Delete IP Address 10.255.7.7 AND Test Teardown Execution 220 221 Add IP Address 10.255.7.7 ${test_subnet_mask} ${test_gateway} 222 223Add Second Octet Lowest IP And Verify 224 [Documentation] Add second octet lowest IP and verify. 225 [Tags] Add_Second_Octet_Lowest_IP_And_Verify 226 [Teardown] Run Keywords 227 ... Delete IP Address 10.0.7.7 AND Test Teardown Execution 228 229 Add IP Address 10.0.7.7 ${test_subnet_mask} ${test_gateway} 230 231Add First Octet Threshold IP And Verify 232 [Documentation] Add first octet threshold IP and verify. 233 [Tags] Add_First_Octet_Threshold_IP_And_Verify 234 [Teardown] Run Keywords 235 ... Delete IP Address 223.7.7.7 AND Test Teardown Execution 236 237 Add IP Address 223.7.7.7 ${test_subnet_mask} ${test_gateway} 238 239Add First Octet Lowest IP And Verify 240 [Documentation] Add first octet lowest IP and verify. 241 [Tags] Add_First_Octet_Lowest_IP_And_Verify 242 [Teardown] Run Keywords 243 ... Delete IP Address 1.7.7.7 AND Test Teardown Execution 244 245 Add IP Address 1.7.7.7 ${test_subnet_mask} ${test_gateway} 246 247Configure Invalid Netmask 248 [Documentation] Verify error while setting invalid netmask. 249 [Tags] Configure_Invalid_Netmask 250 [Template] Add IP Address 251 252 # ip subnet_mask gateway valid_status_codes 253 ${test_ipv4_addr} ${invalid_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 254 255Configure Out Of Range Netmask 256 [Documentation] Verify error while setting out of range netmask. 257 [Tags] Configure_Out_Of_Range_Netmask 258 [Template] Add IP Address 259 260 # ip subnet_mask gateway valid_status_codes 261 ${test_ipv4_addr} ${out_of_range_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 262 263Configure Alpha Netmask 264 [Documentation] Verify error while setting alpha netmask. 265 [Tags] Configure_Alpha_Netmask 266 [Template] Add IP Address 267 268 # ip subnet_mask gateway valid_status_codes 269 ${test_ipv4_addr} ${alpha_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 270 271Configure More Byte Netmask 272 [Documentation] Verify error while setting more byte netmask. 273 [Tags] Configure_More_Byte_Netmask 274 [Template] Add IP Address 275 276 # ip subnet_mask gateway valid_status_codes 277 ${test_ipv4_addr} ${more_byte_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 278 279Configure Less Byte Netmask 280 [Documentation] Verify error while setting less byte netmask. 281 [Tags] Configure_Less_Byte_Netmask 282 [Template] Add IP Address 283 284 # ip subnet_mask gateway valid_status_codes 285 ${test_ipv4_addr} ${less_byte_netmask} ${test_gateway} ${HTTP_BAD_REQUEST} 286 287Configure Threshold Netmask And Verify 288 [Documentation] Configure threshold netmask and verify. 289 [Tags] Configure_Threshold_Netmask_And_verify 290 [Teardown] Run Keywords 291 ... Delete IP Address ${test_ipv4_addr} AND Test Teardown Execution 292 293 Add IP Address ${test_ipv4_addr} ${threshold_netmask} ${test_gateway} 294 295Configure Lowest Netmask And Verify 296 [Documentation] Configure lowest netmask and verify. 297 [Tags] Configure_Lowest_Netmask_And_verify 298 [Teardown] Run Keywords 299 ... Delete IP Address ${test_ipv4_addr} AND Test Teardown Execution 300 301 Add IP Address ${test_ipv4_addr} ${lowest_netmask} ${test_gateway} 302 303Configure Network ID 304 [Documentation] Verify error while configuring network ID. 305 [Tags] Configure_Network_ID 306 [Template] Add IP Address 307 [Teardown] Clear IP Settings On Fail ${network_id} 308 309 # ip subnet_mask gateway valid_status_codes 310 ${network_id} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 311 312Configure Less Octet IP 313 [Documentation] Verify error while Configuring less octet IP address. 314 [Tags] Configure_Less_Octet_IP 315 [Template] Add IP Address 316 317 # ip subnet_mask gateway valid_status_codes 318 ${less_octet_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 319 320Configure Empty IP 321 [Documentation] Verify error while Configuring empty IP address. 322 [Tags] Configure_Empty_IP 323 [Template] Add IP Address 324 325 # ip subnet_mask gateway valid_status_codes 326 ${EMPTY} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 327 328Configure Special Char IP 329 [Documentation] Configure invalid IP address containing special chars. 330 [Tags] Configure_Special_Char_IP 331 [Template] Add IP Address 332 333 # ip subnet_mask gateway valid_status_codes 334 @@@.%%.44.11 ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 335 336Configure Hexadecimal IP 337 [Documentation] Configure invalid IP address containing hex value. 338 [Tags] Configure_Hexadecimal_IP 339 [Template] Add IP Address 340 341 # ip subnet_mask gateway valid_status_codes 342 ${hex_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 343 344Configure Negative Octet IP 345 [Documentation] Configure invalid IP address containing negative octet. 346 [Tags] Configure_Negative_Octet_IP 347 [Template] Add IP Address 348 349 # ip subnet_mask gateway valid_status_codes 350 ${negative_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST} 351 352Configure Incomplete IP For Gateway 353 [Documentation] Configure incomplete IP for gateway and expect an error. 354 [Tags] Configure_Incomplete_IP_For_Gateway 355 [Template] Add IP Address 356 357 # ip subnet_mask gateway valid_status_codes 358 ${test_ipv4_addr} ${test_subnet_mask} ${less_octet_ip} ${HTTP_BAD_REQUEST} 359 360Configure Special Char IP For Gateway 361 [Documentation] Configure special char IP for gateway and expect an error. 362 [Tags] Configure_Special_Char_IP_For_Gateway 363 [Template] Add IP Address 364 365 # ip subnet_mask gateway valid_status_codes 366 ${test_ipv4_addr} ${test_subnet_mask} @@@.%%.44.11 ${HTTP_BAD_REQUEST} 367 368Configure Hexadecimal IP For Gateway 369 [Documentation] Configure hexadecimal IP for gateway and expect an error. 370 [Tags] Configure_Hexadecimal_IP_For_Gateway 371 [Template] Add IP Address 372 373 # ip subnet_mask gateway valid_status_codes 374 ${test_ipv4_addr} ${test_subnet_mask} ${hex_ip} ${HTTP_BAD_REQUEST} 375 376Get DNS Server And Verify 377 [Documentation] Get DNS server via Redfish and verify. 378 [Tags] Get_DNS_Server_And_Verify 379 380 Verify CLI and Redfish Nameservers 381 382Configure DNS Server And Verify 383 [Documentation] Configure DNS server and verify. 384 [Tags] Configure_DNS_Server_And_Verify 385 [Setup] DNS Test Setup Execution 386 [Teardown] Run Keywords 387 ... Configure Static Name Servers AND Test Teardown Execution 388 389 Configure Static Name Servers ${static_name_servers} 390 Verify CLI and Redfish Nameservers 391 392Delete DNS Server And Verify 393 [Documentation] Delete DNS server and verify. 394 [Tags] Delete_DNS_Server_And_Verify 395 [Setup] DNS Test Setup Execution 396 [Teardown] Run Keywords 397 ... Configure Static Name Servers AND Test Teardown Execution 398 399 Delete Static Name Servers 400 Verify CLI and Redfish Nameservers 401 402Configure DNS Server And Check Persistency 403 [Documentation] Configure DNS server and check persistency on reboot. 404 [Tags] Configure_DNS_Server_And_Check_Persistency 405 [Setup] DNS Test Setup Execution 406 [Teardown] Run Keywords 407 ... Configure Static Name Servers AND Test Teardown Execution 408 409 Configure Static Name Servers ${static_name_servers} 410 # Reboot BMC and verify persistency. 411 OBMC Reboot (off) 412 Redfish.Login 413 Verify CLI and Redfish Nameservers 414 415Configure Loopback IP For Gateway 416 [Documentation] Configure loopback IP for gateway and expect an error. 417 [Tags] Configure_Loopback_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} ${loopback_ip} ${HTTP_BAD_REQUEST} 423 424Configure Network ID For Gateway 425 [Documentation] Configure network ID for gateway and expect an error. 426 [Tags] Configure_Network_ID_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} ${network_id} ${HTTP_BAD_REQUEST} 432 433Configure Multicast IP For Gateway 434 [Documentation] Configure multicast IP for gateway and expect an error. 435 [Tags] Configure_Multicast_IP_For_Gateway 436 [Template] Add IP Address 437 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr} 438 439 # ip subnet_mask gateway valid_status_codes 440 ${test_ipv4_addr} ${test_subnet_mask} ${multicast_ip} ${HTTP_BAD_REQUEST} 441 442Configure Broadcast IP For Gateway 443 [Documentation] Configure broadcast IP for gateway and expect an error. 444 [Tags] Configure_Broadcast_IP_For_Gateway 445 [Template] Add IP Address 446 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr} 447 448 # ip subnet_mask gateway valid_status_codes 449 ${test_ipv4_addr} ${test_subnet_mask} ${broadcast_ip} ${HTTP_BAD_REQUEST} 450 451Configure Null Value For DNS Server 452 [Documentation] Configure null value for DNS server and expect an error. 453 [Tags] Configure_Null_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 ${null_value} ${HTTP_BAD_REQUEST} 459 460Configure Empty Value For DNS Server 461 [Documentation] Configure empty value for DNS server and expect an error. 462 [Tags] Configure_Empty_Value_For_DNS_Server 463 [Setup] DNS Test Setup Execution 464 [Teardown] Run Keywords 465 ... Configure Static Name Servers AND Test Teardown Execution 466 467 Configure Static Name Servers ${empty_dictionary} ${HTTP_BAD_REQUEST} 468 469Configure String Value For DNS Server 470 [Documentation] Configure string value for DNS server and expect an error. 471 [Tags] Configure_String_Value_For_DNS_Server 472 [Setup] DNS Test Setup Execution 473 [Teardown] Run Keywords 474 ... Configure Static Name Servers AND Test Teardown Execution 475 476 Configure Static Name Servers ${string_value} ${HTTP_BAD_REQUEST} 477 478Modify IPv4 Address And Verify 479 [Documentation] Modify IP address via Redfish and verify. 480 [Tags] Modify_IPv4_Addres_And_Verify 481 [Teardown] Run Keywords 482 ... Delete IP Address ${test_ipv4_addr2} AND Test Teardown Execution 483 484 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway} 485 486 Update IP Address ${test_ipv4_addr} ${test_ipv4_addr2} ${test_subnet_mask} ${test_gateway} 487 488 489Configure Invalid Values For DNS Server 490 [Documentation] Configure invalid values for DNS server and expect an error. 491 [Tags] Configure_Invalid_Value_For_DNS_Server 492 [Setup] DNS Test Setup Execution 493 [Template] Configure Static Name Servers 494 [Teardown] Run Keywords 495 ... Configure Static Name Servers AND Test Teardown Execution 496 497 # static_name_servers valid_status_codes 498 0xa.0xb.0xc.0xd ${HTTP_BAD_REQUEST} 499 10.-7.-7.-7 ${HTTP_BAD_REQUEST} 500 10.3.36 ${HTTP_BAD_REQUEST} 501 @@@.%%.44.11 ${HTTP_BAD_REQUEST} 502 503 504Config Multiple DNS Servers And Verify 505 [Documentation] Config multiple DNS servers and verify. 506 [Tags] Config_Multiple_DNS_Servers_And_Verify 507 [Setup] DNS Test Setup Execution 508 [Teardown] Run Keywords 509 ... Configure Static Name Servers AND Test Teardown Execution 510 511 @{list_name_servers}= Create List 10.5.5.10 10.20.5.10 10.5.6.7 512 Configure Static Name Servers ${list_name_servers} 513 Verify CLI and Redfish Nameservers 514 515 516Configure And Verify Multiple Static IPv4 Addresses 517 [Documentation] Configure multiple static ipv4 address via Redfish and verify. 518 [Tags] Configure_And_Verify_Multiple_Static_IPv4_Addresses 519 [Teardown] Run Keywords Delete Multiple Static IPv4 Addresses ${test_ipv4_addresses} 520 ... AND Test Teardown Execution 521 522 ${test_ipv4_addresses}= Create List ${test_ipv4_addr} ${test_ipv4_addr2} 523 Configure Multiple Static IPv4 Addresses ${test_ipv4_addresses} ${test_subnet_mask} ${test_gateway} 524 525 526Configure Multiple Static IPv4 Addresses And Check Persistency 527 [Documentation] Configure multiple static ipv4 address via Redfish and check persistency. 528 [Tags] Configure_Multiple_Static_IPv4_Addresses_And_Check_Persistency 529 [Teardown] Run Keywords Delete Multiple Static IPv4 Addresses ${test_ipv4_addresses} 530 ... AND Test Teardown Execution 531 532 ${test_ipv4_addresses}= Create List ${test_ipv4_addr} ${test_ipv4_addr2} 533 Configure Multiple Static IPv4 Addresses ${test_ipv4_addresses} ${test_subnet_mask} ${test_gateway} 534 535 # Reboot BMC and verify persistency. 536 OBMC Reboot (off) 537 Redfish.Login 538 FOR ${ip} IN @{test_ipv4_addresses} 539 Verify IP And Netmask On BMC ${ip} ${test_subnet_mask} 540 END 541 542 543Configure And Verify Multiple IPv4 Addresses 544 [Documentation] Configure multiple IPv4 addresses and verify. 545 [Tags] Configure_And_Verify_Multiple_IPv4_Addresse 546 [Teardown] Run Keywords 547 ... Delete IP Address ${test_ipv4_addr} AND Delete IP Address ${test_ipv4_addr2} 548 ... AND Test Teardown Execution 549 550 ${ip1}= Create dictionary Address=${test_ipv4_addr} 551 ... SubnetMask=255.255.0.0 Gateway=${test_gateway} 552 ${ip2}= Create dictionary Address=${test_ipv4_addr2} 553 ... SubnetMask=255.255.252.0 Gateway=${test_gateway} 554 555 ${empty_dict}= Create Dictionary 556 ${patch_list}= Create List 557 ${network_configurations}= Get Network Configuration 558 ${num_entries}= Get Length ${network_configurations} 559 560 FOR ${INDEX} IN RANGE 0 ${num_entries} 561 Append To List ${patch_list} ${empty_dict} 562 END 563 564 # We need not check for existence of IP on BMC while adding. 565 Append To List ${patch_list} ${ip1} ${ip2} 566 ${payload}= Create Dictionary IPv4StaticAddresses=${patch_list} 567 ${active_channel_config}= Get Active Channel Config 568 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 569 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{payload} 570 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}] 571 572 # Note: Network restart takes around 15-18s after patch request processing. 573 Sleep ${NETWORK_TIMEOUT}s 574 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 575 Verify IP On BMC ${test_ipv4_addr} 576 Verify IP On BMC ${test_ipv4_addr2} 577 578 579Config Multiple DNS Servers And Check Persistency 580 [Documentation] Config multiple DNS and check persistency. 581 [Tags] Config_Multiple_DNS_Servers_And_Check_Persistency 582 [Setup] DNS Test Setup Execution 583 [Teardown] Run Keywords 584 ... Configure Static Name Servers AND Test Teardown Execution 585 586 @{list_name_servers}= Create List 10.5.5.10 10.20.5.10 10.5.6.7 587 Configure Static Name Servers ${list_name_servers} 588 589 # Reboot BMC and verify persistency. 590 OBMC Reboot (off) 591 Redfish.Login 592 Verify CLI and Redfish Nameservers 593 594 595Configure Static IP Without Using Gateway And Verify 596 [Documentation] Configure static IP without using gateway and verify error. 597 [Tags] Configure_Static_IP_Without_Using_Gateway_And_Verify 598 599 ${ip}= Create dictionary Address=${test_ipv4_addr} 600 ... SubnetMask=${test_subnet_mask} 601 ${empty_dict}= Create Dictionary 602 ${patch_list}= Create List 603 ${network_configurations}= Get Network Configuration 604 605 ${num_entries}= Get Length ${network_configurations} 606 FOR ${INDEX} IN RANGE 0 ${num_entries} 607 Append To List ${patch_list} ${empty_dict} 608 END 609 610 # We need not check for existence of IP on BMC while adding. 611 Append To List ${patch_list} ${ip} 612 ${payload}= Create Dictionary IPv4StaticAddresses=${patch_list} 613 ${active_channel_config}= Get Active Channel Config 614 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 615 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 616 ... body=&{payload} valid_status_codes=[${HTTP_BAD_REQUEST}] 617 618 619Test Network Response On Specified Host State 620 [Documentation] Verifying the BMC network response when host is on and off. 621 [Tags] Test_Network_Response_On_Specified_Host_State 622 [Template] Verify Network Response On Specified Host State 623 624 # host_state 625 on 626 off 627 628*** Keywords *** 629 630Test Setup Execution 631 [Documentation] Test setup execution. 632 633 Redfish.Login 634 635 @{network_configurations}= Get Network Configuration 636 Set Test Variable @{network_configurations} 637 638 # Get BMC IP address and prefix length. 639 ${ip_data}= Get BMC IP Info 640 Set Test Variable ${ip_data} 641 642 643Verify Netmask On BMC 644 [Documentation] Verify netmask on BMC. 645 [Arguments] ${netmask} 646 647 # Description of the argument(s): 648 # netmask netmask value to be verified. 649 650 ${prefix_length}= Netmask Prefix Length ${netmask} 651 652 Should Contain Match ${ip_data} */${prefix_length} 653 ... msg=Prefix length does not exist. 654 655Verify IP And Netmask On BMC 656 [Documentation] Verify IP and netmask on BMC. 657 [Arguments] ${ip} ${netmask} 658 659 # Description of the argument(s): 660 # ip IP address to be verified. 661 # netmask netmask value to be verified. 662 663 ${prefix_length}= Netmask Prefix Length ${netmask} 664 @{ip_data}= Get BMC IP Info 665 666 ${ip_with_netmask}= Catenate ${ip}/${prefix_length} 667 Should Contain ${ip_data} ${ip_with_netmask} 668 ... msg=IP and netmask pair does not exist. 669 670Validate Hostname On BMC 671 [Documentation] Verify that the hostname read via Redfish is the same as the 672 ... hostname configured on system. 673 [Arguments] ${hostname} 674 675 # Description of argument(s): 676 # hostname A hostname value which is to be compared to the hostname 677 # configured on system. 678 679 ${sys_hostname}= Get BMC Hostname 680 Should Be Equal ${sys_hostname} ${hostname} 681 ... ignore_case=True msg=Hostname does not exist. 682 683Test Teardown Execution 684 [Documentation] Test teardown execution. 685 686 FFDC On Test Case Fail 687 Redfish.Logout 688 689Clear IP Settings On Fail 690 [Documentation] Clear IP settings on fail. 691 [Arguments] ${ip} 692 693 # Description of argument(s): 694 # ip IP address to be deleted. 695 696 Run Keyword If '${TEST STATUS}' == 'FAIL' 697 ... Delete IP Address ${ip} 698 699 Test Teardown Execution 700 701Verify CLI and Redfish Nameservers 702 [Documentation] Verify that nameservers obtained via Redfish do not 703 ... match those found in /etc/resolv.conf. 704 705 ${active_channel_config}= Get Active Channel Config 706 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 707 708 ${redfish_nameservers}= Redfish.Get Attribute 709 ... ${REDFISH_NW_ETH_IFACE}${ethernet_interface} StaticNameServers 710 ${resolve_conf_nameservers}= CLI Get Nameservers 711 Rqprint Vars redfish_nameservers resolve_conf_nameservers 712 713 # Check that the 2 lists are equivalent. 714 ${match}= Evaluate set($redfish_nameservers) == set($resolve_conf_nameservers) 715 Should Be True ${match} 716 ... The nameservers obtained via Redfish do not match those found in /etc/resolv.conf. 717 718 719Configure Static Name Servers 720 [Documentation] Configure DNS server on BMC. 721 [Arguments] ${static_name_servers}=${original_nameservers} 722 ... ${valid_status_codes}=${HTTP_OK} 723 724 # Description of the argument(s): 725 # static_name_servers A list of static name server IPs to be 726 # configured on the BMC. 727 728 ${active_channel_config}= Get Active Channel Config 729 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 730 731 ${type} = Evaluate type($static_name_servers).__name__ 732 ${static_name_servers}= Set Variable If '${type}'=='str' 733 ... '${static_name_servers}' ${static_name_servers} 734 735 # Currently BMC is sending 500 response code instead of 400 for invalid scenarios. 736 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 737 ... body={'StaticNameServers': ${static_name_servers}} 738 ... valid_status_codes=[${valid_status_codes}, ${HTTP_INTERNAL_SERVER_ERROR}] 739 740 # Patch operation takes 1 to 3 seconds to set new value. 741 Sleep 3s 742 743 # Check if newly added DNS server is configured on BMC. 744 ${cli_nameservers}= CLI Get Nameservers 745 ${cmd_status}= Run Keyword And Return Status 746 ... List Should Contain Sub List ${cli_nameservers} ${static_name_servers} 747 748 Run Keyword If '${valid_status_codes}' == '${HTTP_OK}' 749 ... Should Be True ${cmd_status} == ${True} 750 ... ELSE Should Be True ${cmd_status} == ${False} 751 752Delete Static Name Servers 753 [Documentation] Delete static name servers. 754 755 Configure Static Name Servers static_name_servers=@{EMPTY} 756 757 # Check if all name servers deleted on BMC. 758 ${nameservers}= CLI Get Nameservers 759 Should Be Empty ${nameservers} 760 761DNS Test Setup Execution 762 [Documentation] Do DNS test setup execution. 763 764 Redfish.Login 765 766 ${active_channel_config}= Get Active Channel Config 767 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 768 769 ${original_nameservers}= Redfish.Get Attribute 770 ... ${REDFISH_NW_ETH_IFACE}${ethernet_interface} StaticNameServers 771 772 Rprint Vars original_nameservers 773 # Set suite variables to trigger restoration during teardown. 774 Set Suite Variable ${original_nameservers} 775 776Suite Setup Execution 777 [Documentation] Do suite setup execution. 778 779 ${test_gateway}= Get BMC Default Gateway 780 Set Suite Variable ${test_gateway} 781 782Update IP Address 783 [Documentation] Update IP address of BMC. 784 [Arguments] ${ip} ${new_ip} ${netmask} ${gw_ip} 785 ... ${valid_status_codes}=[${HTTP_OK}, ${HTTP_NO_CONTENT}] 786 787 # Description of argument(s): 788 # ip IP address to be replaced (e.g. "10.7.7.7"). 789 # new_ip New IP address to be configured. 790 # netmask Netmask value. 791 # gw_ip Gateway IP address. 792 # valid_status_codes Expected return code from patch operation 793 # (e.g. "200"). See prolog of rest_request 794 # method in redfish_plus.py for details. 795 796 ${empty_dict}= Create Dictionary 797 ${patch_list}= Create List 798 ${ip_data}= Create Dictionary Address=${new_ip} SubnetMask=${netmask} Gateway=${gw_ip} 799 800 # Find the position of IP address to be modified. 801 @{network_configurations}= Get Network Configuration 802 FOR ${network_configuration} IN @{network_configurations} 803 Run Keyword If '${network_configuration['Address']}' == '${ip}' 804 ... Append To List ${patch_list} ${ip_data} 805 ... ELSE Append To List ${patch_list} ${empty_dict} 806 END 807 808 ${ip_found}= Run Keyword And Return Status List Should Contain Value 809 ... ${patch_list} ${ip_data} msg=${ip} does not exist on BMC 810 Pass Execution If ${ip_found} == ${False} ${ip} does not exist on BMC 811 812 # Run patch command only if given IP is found on BMC 813 ${data}= Create Dictionary IPv4StaticAddresses=${patch_list} 814 815 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data} valid_status_codes=${valid_status_codes} 816 817 # Note: Network restart takes around 15-18s after patch request processing. 818 Sleep ${NETWORK_TIMEOUT}s 819 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 820 821 Verify IP On BMC ${new_ip} 822 Validate Network Config On BMC 823 824Configure Multiple Static IPv4 Addresses 825 [Documentation] Configure multiple static ipv4 address via Redfish and verify. 826 [Arguments] ${ip_addreses} ${subnet_mask} ${gateway} 827 828 # Description of argument(s): 829 # ip_addreses A list of IP addresses to be added (e.g.["10.7.7.7"]). 830 # subnet_mask Subnet mask for the IP to be added (e.g. "255.255.0.0"). 831 # gateway Gateway for the IP to be added (e.g. "10.7.7.1"). 832 833 FOR ${ip} IN @{ip_addreses} 834 Add IP Address ${ip} ${subnet_mask} ${gateway} 835 END 836 Validate Network Config On BMC 837 838 839Delete Multiple Static IPv4 Addresses 840 [Documentation] Delete multiple static ipv4 address via Redfish. 841 [Arguments] ${ip_addreses} 842 843 # Description of argument(s): 844 # ip_addreses A list of IP addresses to be deleted (e.g.["10.7.7.7"]). 845 846 FOR ${ip} IN @{ip_addreses} 847 Delete IP Address ${ip} 848 END 849 Validate Network Config On BMC 850 851Verify Network Response On Specified Host State 852 [Documentation] Verifying the BMC network response when host is on and off. 853 [Arguments] ${host_state} 854 855 # Description of argument(s): 856 # host_state if host_state is on then host is booted to operating system. 857 # if host_state is off then host is power off. 858 # (eg. on, off). 859 860 ${active_channel_config}= Get Active Channel Config 861 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']} 862 863 Run Keyword If '${host_state}' == 'on' 864 ... Redfish Power On stack_mode=skip 865 ... ELSE 866 ... Redfish Power off stack_mode=skip 867 868 Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface} 869 Ping Host ${OPENBMC_HOST} 870 871