1ad14a721SNaman Navin Hegde*** Settings *** 2ad14a721SNaman Navin HegdeDocumentation Test setting VLAN and its configuration. 3ad14a721SNaman Navin Hegde 4ad14a721SNaman Navin Hegde 5ad14a721SNaman Navin HegdeResource ../lib/rest_client.robot 6ad14a721SNaman Navin HegdeResource ../lib/ipmi_client.robot 7ad14a721SNaman Navin HegdeResource ../lib/utils.robot 8ad14a721SNaman Navin HegdeResource ../lib/common_utils.robot 9ad14a721SNaman Navin HegdeResource ../lib/openbmc_ffdc.robot 10ad14a721SNaman Navin HegdeResource ../lib/ipmi_client.robot 11ad14a721SNaman Navin HegdeResource ../lib/bmc_network_utils.robot 12ad14a721SNaman Navin HegdeResource ../lib/state_manager.robot 13ad14a721SNaman Navin HegdeLibrary ../lib/utilities.py 14ad14a721SNaman Navin HegdeLibrary ../lib/ipmi_utils.py 15ad14a721SNaman Navin HegdeLibrary ../lib/var_funcs.py 1614455f46SAnvesh Kumar RayankulaLibrary ../lib/func_args.py 17ad14a721SNaman Navin HegdeLibrary Collections 18ad14a721SNaman Navin Hegde 19ad14a721SNaman Navin HegdeSuite Teardown Suite Teardown Execution 20ad14a721SNaman Navin Hegde 21*6fb70d98SMatt FischerTest Tags VLAN_Network 22ad14a721SNaman Navin Hegde 23ad14a721SNaman Navin Hegde*** Variables *** 2487dc442cSGeorge Keishing 25ad14a721SNaman Navin Hegde${vlan_id} ${53} 2614455f46SAnvesh Kumar Rayankula@{vlan_ids} ${35} ${55} 27ad14a721SNaman Navin Hegde${invalid_vlan_id} abc 28ad14a721SNaman Navin Hegde${vlan_resource} ${NETWORK_MANAGER}action/VLAN 29ad14a721SNaman Navin Hegde${network_resource} xyz.openbmc_project.Network.IP.Protocol.IPv4 30ad14a721SNaman Navin Hegde${static_network_resource} xyz.openbmc_project.Network.IP.AddressOrigin.Static 31ad14a721SNaman Navin Hegde${ip} 10.6.6.10 3214455f46SAnvesh Kumar Rayankula@{ip_addresses} 10.5.5.10 10.4.5.7 33ad14a721SNaman Navin Hegde${netmask} ${24} 34ad14a721SNaman Navin Hegde${gateway} 0.0.0.0 35ad14a721SNaman Navin Hegde${initial_vlan_config} @{EMPTY} 36ad14a721SNaman Navin Hegde 37ad14a721SNaman Navin Hegde 38ad14a721SNaman Navin Hegde*** Test Cases *** 39ad14a721SNaman Navin Hegde 40ad14a721SNaman Navin HegdeAdd VLAN Via REST And Verify 41ad14a721SNaman Navin Hegde [Documentation] Add VLAN via REST and verify it via REST and IPMI. 42ad14a721SNaman Navin Hegde [Tags] Add_VLAN_Via_REST_And_Verify 43ad14a721SNaman Navin Hegde [Setup] Test Setup Execution 4414455f46SAnvesh Kumar Rayankula [Teardown] Delete VLANs [${vlan_id}] 45ad14a721SNaman Navin Hegde 46ad14a721SNaman Navin Hegde Create VLAN ${vlan_id} 47ad14a721SNaman Navin Hegde Verify Existence Of VLAN ${vlan_id} 48ad14a721SNaman Navin Hegde 49ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 50ad14a721SNaman Navin Hegde Valid Value lan_config['802.1q VLAN ID'] ["${vlan_id}"] 51ad14a721SNaman Navin Hegde 52ad14a721SNaman Navin Hegde 53ad14a721SNaman Navin HegdeAdd Invalid VLAN Via REST And Verify 54ad14a721SNaman Navin Hegde [Documentation] Add Invalid VLAN via REST and verify. 55ad14a721SNaman Navin Hegde [Tags] Add_Invalid_VLAN_Via_REST_And_Verify 56ad14a721SNaman Navin Hegde 57ad14a721SNaman Navin Hegde Create VLAN ${invalid_vlan_id} expected_result=error 58ad14a721SNaman Navin Hegde 59ad14a721SNaman Navin Hegde 60ad14a721SNaman Navin HegdeDelete VLAN Via REST 61ad14a721SNaman Navin Hegde [Documentation] Delete VLAN via REST and verify it via REST and IPMI. 62ad14a721SNaman Navin Hegde [Tags] Delete_VLAN_Via_REST 63ad14a721SNaman Navin Hegde [Setup] Run Keywords Test Setup Execution AND Create VLAN ${vlan_id} 64ad14a721SNaman Navin Hegde 65ad14a721SNaman Navin Hegde Verify Existence Of VLAN ${vlan_id} 6614455f46SAnvesh Kumar Rayankula Delete VLANs [${vlan_id}] 67ad14a721SNaman Navin Hegde Verify Existence Of VLAN ${vlan_id} expected_result=error 68ad14a721SNaman Navin Hegde 69ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 70ad14a721SNaman Navin Hegde Valid Value lan_config['802.1q VLAN ID'] ["Disabled"] 71ad14a721SNaman Navin Hegde 72ad14a721SNaman Navin Hegde 73ad14a721SNaman Navin HegdeConfigure Network Settings On VLAN Via REST 74ad14a721SNaman Navin Hegde [Documentation] Configure IP on VLAN and verify it via REST and IPMI. 75ad14a721SNaman Navin Hegde [Tags] Configure_Network_Settings_On_VLAN_Via_REST 76ad14a721SNaman Navin Hegde [Setup] Run Keywords Test Setup Execution AND Create VLAN ${vlan_id} 7714455f46SAnvesh Kumar Rayankula [Teardown] Delete VLANs [${vlan_id}] 78ad14a721SNaman Navin Hegde 79ad14a721SNaman Navin Hegde Configure Network Settings On VLAN ${vlan_id} ${ip} ${netmask} 80ad14a721SNaman Navin Hegde Get VLAN URI For IP ${vlan_id} ${ip} 81ad14a721SNaman Navin Hegde 82ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 83ad14a721SNaman Navin Hegde Valid Value lan_config['IP Address'] ["${ip}"] 84ad14a721SNaman Navin Hegde 85ad14a721SNaman Navin Hegde 86ad14a721SNaman Navin HegdeDelete IP On VLAN Via REST 87ad14a721SNaman Navin Hegde [Documentation] Delete IP on VLAN and verify it via REST and IPMI. 88ad14a721SNaman Navin Hegde [Tags] Delete_IP_On_VLAN_Via_REST 89ad14a721SNaman Navin Hegde [Setup] Run Keywords Test Setup Execution AND Create VLAN ${vlan_id} 9014455f46SAnvesh Kumar Rayankula [Teardown] Delete VLANs [${vlan_id}] 91ad14a721SNaman Navin Hegde 92ad14a721SNaman Navin Hegde Configure Network Settings On VLAN ${vlan_id} ${ip} ${netmask} 93ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 94ad14a721SNaman Navin Hegde Valid Value lan_config['IP Address'] ["${ip}"] 95ad14a721SNaman Navin Hegde 96ad14a721SNaman Navin Hegde ${vlan_ip_uri}= Get VLAN URI For IP ${vlan_id} ${ip} 97ad14a721SNaman Navin Hegde Delete IP And Object ${ip} ${vlan_ip_uri} 98ad14a721SNaman Navin Hegde 99ad14a721SNaman Navin Hegde Get VLAN URI For IP ${vlan_id} ${ip} expected_result=error 100ad14a721SNaman Navin Hegde 101ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 102ad14a721SNaman Navin Hegde Should Not Match ${lan_config['IP Address']} ${ip} 103ad14a721SNaman Navin Hegde 104ad14a721SNaman Navin Hegde 105ad14a721SNaman Navin HegdeDelete VLAN When IP Is Configured Via REST 106ad14a721SNaman Navin Hegde [Documentation] Delete IP on VLAN and verify using IPMI. 107ad14a721SNaman Navin Hegde [Tags] Delete_VLAN_When_IP_Is_Configured_Via_REST 108ad14a721SNaman Navin Hegde [Setup] Run Keywords Test Setup Execution AND Create VLAN ${vlan_id} 10914455f46SAnvesh Kumar Rayankula [Teardown] Delete VLANs [${vlan_id}] 110ad14a721SNaman Navin Hegde 111ad14a721SNaman Navin Hegde Configure Network Settings On VLAN ${vlan_id} ${ip} ${netmask} 112ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 113ad14a721SNaman Navin Hegde Valid Value lan_config['IP Address'] ["${ip}"] 11414455f46SAnvesh Kumar Rayankula Delete VLANs [${vlan_id}] 115ad14a721SNaman Navin Hegde 116ad14a721SNaman Navin Hegde Verify Existence Of VLAN ${vlan_id} expected_result=error 117ad14a721SNaman Navin Hegde 118ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 119ad14a721SNaman Navin Hegde Valid Value lan_config['802.1q VLAN ID'] ["Disabled"] 120ad14a721SNaman Navin Hegde 121ad14a721SNaman Navin Hegde 122ad14a721SNaman Navin HegdeConfigure VLAN And Check Persistency On Reboot 123ad14a721SNaman Navin Hegde [Documentation] Create VLAN ID & IP , reboot and verify. 124ad14a721SNaman Navin Hegde [Tags] Configure_VLAN_And_Check_Persistency_On_Reboot 125ad14a721SNaman Navin Hegde [Setup] Test Setup Execution 12614455f46SAnvesh Kumar Rayankula [Teardown] Delete VLANs [${vlan_id}] 127ad14a721SNaman Navin Hegde 128ad14a721SNaman Navin Hegde Create VLAN ${vlan_id} 129ad14a721SNaman Navin Hegde Configure Network Settings On VLAN ${vlan_id} ${ip} ${netmask} 130ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 131ad14a721SNaman Navin Hegde Valid Value lan_config['IP Address'] ["${ip}"] 132ad14a721SNaman Navin Hegde Valid Value lan_config['802.1q VLAN ID'] ["${vlan_id}"] 133ad14a721SNaman Navin Hegde 134ad14a721SNaman Navin Hegde Initiate BMC Reboot 135ad14a721SNaman Navin Hegde 136ad14a721SNaman Navin Hegde Verify Existence Of VLAN ${vlan_id} 137ad14a721SNaman Navin Hegde Get VLAN URI For IP ${vlan_id} ${ip} 138ad14a721SNaman Navin Hegde 139ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 140ad14a721SNaman Navin Hegde Valid Value lan_config['IP Address'] ["${ip}"] 141ad14a721SNaman Navin Hegde Valid Value lan_config['802.1q VLAN ID'] ["${vlan_id}"] 142ad14a721SNaman Navin Hegde 143ad14a721SNaman Navin Hegde 14414455f46SAnvesh Kumar RayankulaAdd Multiple VLANs Via REST And Verify 14514455f46SAnvesh Kumar Rayankula [Documentation] Add multiple VLANs via REST and verify them via CLI. 14614455f46SAnvesh Kumar Rayankula [Tags] Add_Multiple_VLANs_Via_REST_And_Verify 14714455f46SAnvesh Kumar Rayankula [Setup] Test Setup Execution 14814455f46SAnvesh Kumar Rayankula [Teardown] Delete VLANs ${vlan_ids} 14914455f46SAnvesh Kumar Rayankula 15014455f46SAnvesh Kumar Rayankula FOR ${vlan_id} IN @{vlan_ids} 15114455f46SAnvesh Kumar Rayankula Create VLAN ${vlan_id} 15214455f46SAnvesh Kumar Rayankula Verify Existence Of VLAN ${vlan_id} 15314455f46SAnvesh Kumar Rayankula END 15414455f46SAnvesh Kumar Rayankula 15514455f46SAnvesh Kumar Rayankula ${lan_config}= Get LAN Print Dict 15614455f46SAnvesh Kumar Rayankula ${vlan_id_ipmi}= Convert To Integer ${lan_config["802.1q VLAN ID"]} 15714455f46SAnvesh Kumar Rayankula Valid List vlan_ids required_values=[${vlan_id_ipmi}] 15814455f46SAnvesh Kumar Rayankula 15914455f46SAnvesh Kumar RayankulaDelete Multiple IPs On VLAN And Verify 16014455f46SAnvesh Kumar Rayankula [Documentation] Delete multiple IPs on VLAN and verify each via REST and IPMI. 161b98036a9SGeorge Keishing [Tags] Delete_Multiple_IPs_On_VLAN_And_Verify 16214455f46SAnvesh Kumar Rayankula [Setup] Run Keywords Test Setup Execution AND Create VLAN ${vlan_id} 16314455f46SAnvesh Kumar Rayankula [Teardown] Delete VLANs [${vlan_id}] 16414455f46SAnvesh Kumar Rayankula 16514455f46SAnvesh Kumar Rayankula FOR ${ip} IN @{ip_addresses} 16614455f46SAnvesh Kumar Rayankula Configure Network Settings On VLAN ${vlan_id} ${ip} ${netmask} 16714455f46SAnvesh Kumar Rayankula ${vlan_ip_uri}= Get VLAN URI For IP ${vlan_id} ${ip} 16814455f46SAnvesh Kumar Rayankula Delete IP And Object ${ip} ${vlan_ip_uri} 16914455f46SAnvesh Kumar Rayankula 17014455f46SAnvesh Kumar Rayankula Get VLAN URI For IP ${vlan_id} ${ip} expected_result=error 17114455f46SAnvesh Kumar Rayankula 17214455f46SAnvesh Kumar Rayankula ${lan_config}= Get LAN Print Dict 17314455f46SAnvesh Kumar Rayankula Should Not Match ${lan_config['IP Address']} ${ip} 17414455f46SAnvesh Kumar Rayankula END 17514455f46SAnvesh Kumar Rayankula 17614455f46SAnvesh Kumar RayankulaDelete Multiple VLANs Via REST 17714455f46SAnvesh Kumar Rayankula [Documentation] Delete multiple VLANs via REST and verify each via REST and IPMI. 17814455f46SAnvesh Kumar Rayankula [Tags] Delete_Multiple_VLANs_Via_REST 17914455f46SAnvesh Kumar Rayankula [Setup] Test Setup Execution 18014455f46SAnvesh Kumar Rayankula 18114455f46SAnvesh Kumar Rayankula FOR ${vlan_id} IN @{vlan_ids} 18214455f46SAnvesh Kumar Rayankula Create VLAN ${vlan_id} 18314455f46SAnvesh Kumar Rayankula END 18414455f46SAnvesh Kumar Rayankula 18514455f46SAnvesh Kumar Rayankula Delete VLANs ${vlan_ids} 18614455f46SAnvesh Kumar Rayankula 18714455f46SAnvesh Kumar Rayankula ${lan_config}= Get LAN Print Dict 18814455f46SAnvesh Kumar Rayankula Valid Value lan_config['802.1q VLAN ID'] ["Disabled"] 18914455f46SAnvesh Kumar Rayankula 19014455f46SAnvesh Kumar RayankulaConfigure Multiple IPs On VLAN Via REST 19114455f46SAnvesh Kumar Rayankula [Documentation] Configure Multiple IPs on VLAN and verify each via REST. 19214455f46SAnvesh Kumar Rayankula [Tags] Configure_Multiple_IPs_On_VLAN_Via_REST 19314455f46SAnvesh Kumar Rayankula [Setup] Run Keywords Test Setup Execution AND Create VLAN ${vlan_id} 19414455f46SAnvesh Kumar Rayankula [Teardown] Delete VLANs [${vlan_id}] 19514455f46SAnvesh Kumar Rayankula 19614455f46SAnvesh Kumar Rayankula FOR ${ip} IN @{ip_addresses} 19714455f46SAnvesh Kumar Rayankula Configure Network Settings On VLAN ${vlan_id} ${ip} ${netmask} 19814455f46SAnvesh Kumar Rayankula END 19914455f46SAnvesh Kumar Rayankula 20014455f46SAnvesh Kumar Rayankula ${lan_config}= Get LAN Print Dict 20114455f46SAnvesh Kumar Rayankula Valid Value lan_config['IP Address'] ["${ip_addresses[0]}"] 20214455f46SAnvesh Kumar Rayankula 20380d6b5a6SAnvesh Kumar Rayankula 20480d6b5a6SAnvesh Kumar RayankulaCreate And Delete VLAN And IP On It Multiple Times With BMC Reboot 20580d6b5a6SAnvesh Kumar Rayankula [Documentation] Create and delete VLAN and IP on it multiple times with BMC reboot. 20680d6b5a6SAnvesh Kumar Rayankula [Tags] Create_And_Delete_VLAN_And_IP_On_It_Multiple_Times_With_BMC_Reboot 20780d6b5a6SAnvesh Kumar Rayankula [Setup] Test Setup Execution 20880d6b5a6SAnvesh Kumar Rayankula 20980d6b5a6SAnvesh Kumar Rayankula FOR ${i} IN RANGE ${5} 21080d6b5a6SAnvesh Kumar Rayankula Create VLAN ${vlan_id} 21180d6b5a6SAnvesh Kumar Rayankula Verify Existence Of VLAN ${vlan_id} 21280d6b5a6SAnvesh Kumar Rayankula Configure Network Settings On VLAN ${vlan_id} ${ip} ${netmask} 21380d6b5a6SAnvesh Kumar Rayankula ${vlan_ip_uri}= Get VLAN URI For IP ${vlan_id} ${ip} 21480d6b5a6SAnvesh Kumar Rayankula Delete IP And Object ${ip} ${vlan_ip_uri} 21580d6b5a6SAnvesh Kumar Rayankula Get VLAN URI For IP ${vlan_id} ${ip} expected_result=error 21680d6b5a6SAnvesh Kumar Rayankula Delete VLANs [${vlan_id}] 21780d6b5a6SAnvesh Kumar Rayankula Verify Existence Of VLAN ${vlan_id} expected_result=error 21880d6b5a6SAnvesh Kumar Rayankula Initiate BMC Reboot 21980d6b5a6SAnvesh Kumar Rayankula Sleep ${NETWORK_TIMEOUT}s 22080d6b5a6SAnvesh Kumar Rayankula Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT} 22180d6b5a6SAnvesh Kumar Rayankula Verify Existence Of VLAN ${vlan_id} expected_result=error 22280d6b5a6SAnvesh Kumar Rayankula END 22380d6b5a6SAnvesh Kumar Rayankula 22480d6b5a6SAnvesh Kumar Rayankula ${lan_config}= Get LAN Print Dict 22580d6b5a6SAnvesh Kumar Rayankula Valid Value lan_config['802.1q VLAN ID'] ["Disabled"] 22680d6b5a6SAnvesh Kumar Rayankula 22780d6b5a6SAnvesh Kumar Rayankula 228ad14a721SNaman Navin Hegde*** Keywords *** 229ad14a721SNaman Navin Hegde 230ad14a721SNaman Navin Hegde 231ad14a721SNaman Navin HegdeTest Setup Execution 232ad14a721SNaman Navin Hegde [Documentation] Check and delete all previously created VLAN if any. 233ad14a721SNaman Navin Hegde 23414455f46SAnvesh Kumar Rayankula Printn 235ad14a721SNaman Navin Hegde ${lan_config}= Get LAN Print Dict 236ad14a721SNaman Navin Hegde Return From Keyword If '${lan_config['802.1q VLAN ID']}' == 'Disabled' 237ad14a721SNaman Navin Hegde 238ad14a721SNaman Navin Hegde # Get all VLAN ID on interface eth0. 239ad14a721SNaman Navin Hegde ${vlan_ids}= Get VLAN IDs 240ad14a721SNaman Navin Hegde 241ad14a721SNaman Navin Hegde ${initial_vlan_config}= Create List 242ad14a721SNaman Navin Hegde Set Suite Variable ${initial_vlan_config} 243ad14a721SNaman Navin Hegde 244ad14a721SNaman Navin Hegde FOR ${vlan_id} IN @{vlan_ids} 245ad14a721SNaman Navin Hegde ${vlan_records}= Read Properties 246ad14a721SNaman Navin Hegde ... ${NETWORK_MANAGER}eth0_${vlan_id}${/}enumerate quiet=1 247ad14a721SNaman Navin Hegde ${vlan_record}= Filter Struct 248ad14a721SNaman Navin Hegde ... ${vlan_records} [('Origin', '${static_network_resource}')] 249ad14a721SNaman Navin Hegde 250ad14a721SNaman Navin Hegde ${id}= Convert To Integer ${vlan_id} 251ad14a721SNaman Navin Hegde Set Initial VLAN Config ${vlan_record} ${id} 252ad14a721SNaman Navin Hegde END 253ad14a721SNaman Navin Hegde Rprint Vars initial_vlan_config 254ad14a721SNaman Navin Hegde 25514455f46SAnvesh Kumar Rayankula Delete VLANs ${vlan_ids} 256ad14a721SNaman Navin Hegde 257ad14a721SNaman Navin Hegde 258ad14a721SNaman Navin HegdeSet Initial VLAN Config 259ad14a721SNaman Navin Hegde [Documentation] Set suite level list of Initial VLAN Config. 260ad14a721SNaman Navin Hegde [Arguments] ${vlan_record} ${id} 261ad14a721SNaman Navin Hegde 262ad14a721SNaman Navin Hegde # Description of argument(s): 263ad14a721SNaman Navin Hegde # vlan_record Dictionary of IP configuration information of a VLAN. 264ad14a721SNaman Navin Hegde # Example: 265ad14a721SNaman Navin Hegde # /xyz/openbmc_project/network/eth0_55/ipv4/5fb2cfe6": { 266ad14a721SNaman Navin Hegde # "Address": "x.x.x.x", 267ad14a721SNaman Navin Hegde # "Gateway": "", 268ad14a721SNaman Navin Hegde # "Origin": "xyz.openbmc_project.Network.IP.AddressOrigin.Static", 269ad14a721SNaman Navin Hegde # "PrefixLength": 16, 270ad14a721SNaman Navin Hegde # "Type": "xyz.openbmc_project.Network.IP.Protocol.IPv4"} 271ad14a721SNaman Navin Hegde # 272ad14a721SNaman Navin Hegde # id The VLAN ID corresponding to the IP Configuration records contained 273ad14a721SNaman Navin Hegde # in the variable "vlan_record". 274ad14a721SNaman Navin Hegde 275ad14a721SNaman Navin Hegde ${uris}= Get Dictionary Keys ${vlan_record} 27614455f46SAnvesh Kumar Rayankula 277ad14a721SNaman Navin Hegde FOR ${uri} IN @{uris} 278ad14a721SNaman Navin Hegde Append To List ${initial_vlan_config} ${id} ${vlan_record['${uri}']['Address']} 279ad14a721SNaman Navin Hegde ... ${vlan_record['${uri}']['PrefixLength']} 280ad14a721SNaman Navin Hegde END 28114455f46SAnvesh Kumar Rayankula 282ad14a721SNaman Navin Hegde Run Keyword If @{uris} == @{EMPTY} 283ad14a721SNaman Navin Hegde ... Append To List ${initial_vlan_config} ${id} ${EMPTY} ${EMPTY} 284ad14a721SNaman Navin Hegde 285ad14a721SNaman Navin Hegde 286ad14a721SNaman Navin HegdeSuite Teardown Execution 287ad14a721SNaman Navin Hegde [Documentation] Restore VLAN configuration. 288ad14a721SNaman Navin Hegde 289ad14a721SNaman Navin Hegde ${length}= Get Length ${initial_vlan_config} 290ad14a721SNaman Navin Hegde Return From Keyword If ${length} == ${0} 291ad14a721SNaman Navin Hegde 292ad14a721SNaman Navin Hegde ${previous_id}= Set Variable ${EMPTY} 293ad14a721SNaman Navin Hegde FOR ${index} IN RANGE 0 ${length} 3 294ad14a721SNaman Navin Hegde 295ad14a721SNaman Navin Hegde Run Keyword If '${initial_vlan_config[${index+1}]}' == '${EMPTY}' 296ad14a721SNaman Navin Hegde ... Create VLAN ${initial_vlan_config[${index}]} 297ad14a721SNaman Navin Hegde ... ELSE IF '${previous_id}' == '${initial_vlan_config[${index}]}' 298ad14a721SNaman Navin Hegde ... Configure Network Settings On VLAN ${initial_vlan_config[${index}]} 299ad14a721SNaman Navin Hegde ... ${initial_vlan_config[${index+1}]} ${initial_vlan_config[${index+2}]} 300ad14a721SNaman Navin Hegde ... ELSE Run Keywords Create VLAN ${initial_vlan_config[${index}]} AND 301ad14a721SNaman Navin Hegde ... Configure Network Settings On VLAN ${initial_vlan_config[${index}]} 302ad14a721SNaman Navin Hegde ... ${initial_vlan_config[${index+1}]} ${initial_vlan_config[${index+2}]} 303ad14a721SNaman Navin Hegde 304ad14a721SNaman Navin Hegde ${previous_id}= Set Variable ${initial_vlan_config[${index}]} 305ad14a721SNaman Navin Hegde END 306ad14a721SNaman Navin Hegde 307ad14a721SNaman Navin Hegde 30814455f46SAnvesh Kumar RayankulaDelete VLANs 30914455f46SAnvesh Kumar Rayankula [Documentation] Delete one or more VLANs. 31014455f46SAnvesh Kumar Rayankula [Arguments] ${ids} ${interface}=eth0 311ad14a721SNaman Navin Hegde 312ad14a721SNaman Navin Hegde # Description of argument(s): 31314455f46SAnvesh Kumar Rayankula # ids A list of VLAN IDs (e.g. ['53'] or ['53', '35', '12']). Note that the 31414455f46SAnvesh Kumar Rayankula # caller may simply pass a list variable or he/she may specify a 31514455f46SAnvesh Kumar Rayankula # python-like list specification (see examples below). 316ad14a721SNaman Navin Hegde # interface The physical interface for the VLAN (e.g. 'eth0'). 317ad14a721SNaman Navin Hegde 31814455f46SAnvesh Kumar Rayankula # Example calls: 31914455f46SAnvesh Kumar Rayankula # Delete VLANs ${vlan_ids} 32014455f46SAnvesh Kumar Rayankula # Delete Vlans [53, 35] 32114455f46SAnvesh Kumar Rayankula 32214455f46SAnvesh Kumar Rayankula # Allow for python-like list specifications (e.g. ids=['53']). 32314455f46SAnvesh Kumar Rayankula ${vlan_ids}= Source To Object ${ids} 32414455f46SAnvesh Kumar Rayankula 32514455f46SAnvesh Kumar Rayankula FOR ${id} IN @{vlan_ids} 326ad14a721SNaman Navin Hegde OpenBMC Delete Request ${NETWORK_MANAGER}${interface}_${id} 32714455f46SAnvesh Kumar Rayankula END 32814455f46SAnvesh Kumar Rayankula Run Key U Sleep \ ${NETWORK_TIMEOUT}s 329ad14a721SNaman Navin Hegde 330ad14a721SNaman Navin Hegde 331ad14a721SNaman Navin HegdeGet VLAN IDs 332ad14a721SNaman Navin Hegde [Documentation] Return all VLAN IDs. 333ad14a721SNaman Navin Hegde 334ad14a721SNaman Navin Hegde ${vlan_ids} ${stderr} ${rc}= BMC Execute Command 335ad14a721SNaman Navin Hegde ... /sbin/ip addr | grep @eth0 | cut -f1 -d@ | cut -f2 -d. 336ad14a721SNaman Navin Hegde ${vlan_ids}= Split String ${vlan_ids} 337ad14a721SNaman Navin Hegde 338409df05dSGeorge Keishing RETURN @{vlan_ids} 339ad14a721SNaman Navin Hegde 340ad14a721SNaman Navin Hegde 341ad14a721SNaman Navin HegdeGet VLAN URI For IP 342ad14a721SNaman Navin Hegde [Documentation] Get and return the URI for a VLAN IP. 343ad14a721SNaman Navin Hegde [Arguments] ${vlan_id} ${vlan_ip} ${expected_result}=valid 344ad14a721SNaman Navin Hegde 345ad14a721SNaman Navin Hegde # Description of argument(s): 346ad14a721SNaman Navin Hegde # vlan_id The VLAN ID (e.g. '53'). 347ad14a721SNaman Navin Hegde # vlan_ip The VLAN IP (e.g. 'x.x.x.x'). 348ad14a721SNaman Navin Hegde 349ad14a721SNaman Navin Hegde ${vlan_records}= Read Properties 350ad14a721SNaman Navin Hegde ... ${NETWORK_MANAGER}eth0_${vlan_id}${/}enumerate quiet=1 351ad14a721SNaman Navin Hegde ${vlan_record}= Filter Struct ${vlan_records} [('Address', '${vlan_ip}')] 352ad14a721SNaman Navin Hegde ${num_vlan_records}= Get Length ${vlan_record} 353ad14a721SNaman Navin Hegde ${status}= Run Keyword And Return Status Should Be True ${num_vlan_records} > 0 354ad14a721SNaman Navin Hegde ... msg=Could not find a uri for vlan "${vlan_id}" with IP "${vlan_ip}". 355ad14a721SNaman Navin Hegde 356ad14a721SNaman Navin Hegde Run Keyword If '${expected_result}' == 'valid' 357ad14a721SNaman Navin Hegde ... Should Be Equal ${status} ${True} 358f702219fSGeorge Keishing ... msg=VLAN IP URI doesn't exist!. 359ad14a721SNaman Navin Hegde ... ELSE 360ad14a721SNaman Navin Hegde ... Should Be Equal ${status} ${False} 361ad14a721SNaman Navin Hegde ... msg=VLAN IP URI exists!. 362ad14a721SNaman Navin Hegde ${uris}= Get Dictionary Keys ${vlan_record} 363ad14a721SNaman Navin Hegde Return From Keyword If @{uris} == @{EMPTY} 364ad14a721SNaman Navin Hegde 365409df05dSGeorge Keishing RETURN ${uris[${0}]} 366ad14a721SNaman Navin Hegde 367ad14a721SNaman Navin Hegde 368ad14a721SNaman Navin HegdeVerify Existence Of VLAN 369ad14a721SNaman Navin Hegde [Documentation] Verify VLAN ID exists. 370ad14a721SNaman Navin Hegde [Arguments] ${id} ${interface}=eth0 ${expected_result}=valid 371ad14a721SNaman Navin Hegde 372ad14a721SNaman Navin Hegde # Description of argument(s): 373ad14a721SNaman Navin Hegde # id The VLAN ID (e.g. id:'53'). 374ad14a721SNaman Navin Hegde # interface Physical Interface on which the VLAN is defined. 375ad14a721SNaman Navin Hegde # expected_result Expected status to check existence or non-existence of VLAN. 376ad14a721SNaman Navin Hegde 377ad14a721SNaman Navin Hegde ${vlan_ids}= Get VLAN IDs 378ad14a721SNaman Navin Hegde ${cli_status}= Run Keyword And Return Status 379ad14a721SNaman Navin Hegde ... Valid List vlan_ids required_values=['${id}'] 380ad14a721SNaman Navin Hegde 381ad14a721SNaman Navin Hegde ${network_records}= Read Properties ${NETWORK_MANAGER} 382ad14a721SNaman Navin Hegde ${rest_status}= Run Keyword And Return Status Valid List network_records 383ad14a721SNaman Navin Hegde ... required_values=['${NETWORK_MANAGER}${interface}_${id}'] 384ad14a721SNaman Navin Hegde 385ad14a721SNaman Navin Hegde Should Be Equal ${rest_status} ${cli_status} 386ad14a721SNaman Navin Hegde ... msg=REST and CLI Output are not the same. 387ad14a721SNaman Navin Hegde Run Keyword If '${expected_result}' == 'valid' 388ad14a721SNaman Navin Hegde ... Should Be Equal ${rest_status} ${True} 389f702219fSGeorge Keishing ... msg=VLAN ID doesn't exist!. 390ad14a721SNaman Navin Hegde ... ELSE 391ad14a721SNaman Navin Hegde ... Should Be Equal ${rest_status} ${False} 392ad14a721SNaman Navin Hegde ... msg=VLAN ID exists!. 393