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