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