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