xref: /openbmc/openbmc-test-automation/network/test_vlan_network.robot (revision 6fb70d98f2f1cb9273ba912deaa2cebe3c23ea86)
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