Moving vpn-instance yang from VPNMgr > NeutronVPN
[integration/test.git] / csit / suites / vpnservice / 020__configure_vpn.robot
1 *** Settings ***
2 Documentation     Test Suite for vpn instance
3 Suite Setup       Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
4 Suite Teardown    Delete All Sessions
5 Library           OperatingSystem
6 Library           String
7 Library           RequestsLibrary
8 Variables         ../../variables/Variables.py
9 Library           Collections
10 Resource          CompareStream.robot
11
12 *** Variables ***
13 ${REST_CON}       /restconf/config/
14 @{vpn_inst_values}    testVpn1    1000:1    1000:1,2000:1    3000:1,4000:1
15 @{vm_int_values}    s1-eth1    l2vlan    openflow:1:1
16 @{vm_vpnint_values}    s1-eth1    testVpn1    10.0.0.1    12:f8:57:a8:b9:a1
17 ${VPN_CONFIG_DIR}    ${CURDIR}/../../variables/vpnservice
18
19 *** Test Cases ***
20 Create VPN Instance
21     [Documentation]    Creates VPN Instance through restconf
22     [Tags]    Post
23     ${body}    OperatingSystem.Get File    ${VPN_CONFIG_DIR}/vpn_instance.json
24     CompareStream.Run_Keyword_If_Less_Than_Magnesium    ${resp}    RequestsLibrary.Post Request    session    ${REST_CON}l3vpn:vpn-instances/    data=${body}
25     CompareStream.Run_Keyword_If_At_Least_Magnesium    ${resp}    RequestsLibrary.Post Request    session    ${REST_CON}l3vpn-instances-interfaces:vpn-instances/    data=${body}
26     Log    ${resp.content}
27     Should Be Equal As Strings    ${resp.status_code}    204
28
29 Verify VPN instance
30     [Documentation]    Verifies the vpn instance is created
31     [Tags]    Get
32     CompareStream.Run_Keyword_If_Less_Than_Magnesium    ${resp}    RequestsLibrary.Get Request    session    ${REST_CON}l3vpn:vpn-instances/vpn-instance/${vpn_inst_values[0]}/    headers=${ACCEPT_XML}
33     CompareStream.Run_Keyword_If_At_Least_Magnesium    ${resp}    RequestsLibrary.Get Request    session    ${REST_CON}l3vpn-instances-interfaces:vpn-instances/vpn-instance/${vpn_inst_values[0]}/    headers=${ACCEPT_XML}
34     Should Be Equal As Strings    ${resp.status_code}    200
35     Log    ${resp.content}
36     FOR    ${value}    IN    @{vpn_inst_values}
37         Should Contain    ${resp.content}    ${value}
38     END
39
40 Create ietf vm interface
41     [Documentation]    Creates ietf interface through the restconf
42     [Tags]    Post
43     ${body}    OperatingSystem.Get File    ${VPN_CONFIG_DIR}/vm_interface.json
44     ${resp}    RequestsLibrary.Post Request    session    ${REST_CON}ietf-interfaces:interfaces/    data=${body}
45     Should Be Equal As Strings    ${resp.status_code}    204
46
47 Verify ietf vm interface
48     [Documentation]    Verifies ietf interface created
49     [Tags]    Get
50     ${resp}    RequestsLibrary.Get Request    session    ${REST_CON}ietf-interfaces:interfaces/interface/${vm_int_values[0]}/    headers=${ACCEPT_XML}
51     Should Be Equal As Strings    ${resp.status_code}    200
52     Log    ${resp.content}
53     FOR    ${value}    IN    @{vm_int_values}
54         Should Contain    ${resp.content}    ${value}
55     END
56
57 Create VPN interface
58     [Documentation]    Creates vpn interface for the corresponding ietf interface
59     [Tags]    Post
60     ${body}    OperatingSystem.Get File    ${VPN_CONFIG_DIR}/vm_vpninterface.json
61     CompareStream.Run_Keyword_If_Less_Than_Magnesium    ${resp}    RequestsLibrary.Post Request    session    ${REST_CON}l3vpn:vpn-interfaces/    data=${body}
62     CompareStream.Run_Keyword_If_At_Least_Magnesium    ${resp}    RequestsLibrary.Post Request    session    ${REST_CON}l3vpn-instances-interfaces:vpn-interfaces/    data=${body}
63     Should Be Equal As Strings    ${resp.status_code}    204
64
65 Verify VPN interface
66     [Documentation]    Verifies the vpn interface created
67     [Tags]    Get
68     CompareStream.Run_Keyword_If_Less_Than_Magnesium    ${resp}    RequestsLibrary.Get Request    session    ${REST_CON}l3vpn:vpn-interfaces/    headers=${ACCEPT_XML}
69     CompareStream.Run_Keyword_If_At_Least_Magnesium    ${resp}    RequestsLibrary.Get Request    session    ${REST_CON}l3vpn-instances-interfaces:vpn-interfaces/    headers=${ACCEPT_XML}
70     Should Be Equal As Strings    ${resp.status_code}    200
71     Log    ${resp.content}
72     FOR    ${value}    IN    @{vm_vpnint_values}
73         Should Contain    ${resp.content}    ${value}
74     END
75
76 Verify FIB entry after create
77     [Documentation]    Verifies the fib entry for the corresponding vpn interface
78     [Tags]    Get
79     Wait Until Keyword Succeeds    5s    1s    Ensure The Fib Entry Is Present    ${vm_vpnint_values[2]}
80
81 Delete vm vpn interface
82     [Documentation]    Deletes the vpn interface
83     [Tags]    Delete
84     CompareStream.Run_Keyword_If_Less_Than_Magnesium    ${resp}    RequestsLibrary.Delete Request    session    ${REST_CON}l3vpn:vpn-interfaces/
85     CompareStream.Run_Keyword_If_At_Least_Magnesium    ${resp}    RequestsLibrary.Delete Request    session    ${REST_CON}l3vpn-instances-interfaces:vpn-interfaces/
86     Should Be Equal As Strings    ${resp.status_code}    200
87
88 Verify after deleteing vm vpn interface
89     [Documentation]    Verifies vpn interface after delete
90     [Tags]    Verify after delete
91     CompareStream.Run_Keyword_If_Less_Than_Magnesium    ${resp}    RequestsLibrary.Get Request    session    ${REST_CON}l3vpn:vpn-interfaces/    headers=${ACCEPT_XML}
92     CompareStream.Run_Keyword_If_At_Least_Magnesium    ${resp}    RequestsLibrary.Get Request    session    ${REST_CON}l3vpn-instances-interfaces:vpn-interfaces/    headers=${ACCEPT_XML}
93     Should Be Equal As Strings    ${resp.status_code}    404
94
95 Delete VPN Instance
96     [Documentation]    Deletes the VPN Instance
97     [Tags]    Delete
98     CompareStream.Run_Keyword_If_Less_Than_Magnesium    ${resp}    RequestsLibrary.Delete Request    session    ${REST_CON}l3vpn:vpn-instances/vpn-instance/${vpn_inst_values[0]}/
99     CompareStream.Run_Keyword_If_At_Least_Magnesium    ${resp}    RequestsLibrary.Delete Requestt    session    ${REST_CON}l3vpn-instances-interfaces:vpn-instances/vpn-instance/${vpn_inst_values[0]}/
100     Should Be Equal As Strings    ${resp.status_code}    200
101
102 Verify after deleting the vpn instance
103     [Documentation]    Verifies after deleting the vpn instance
104     [Tags]    Verfiy after delete
105     CompareStream.Run_Keyword_If_Less_Than_Magnesium    ${resp}    RequestsLibrary.Post Request    session    ${REST_CON}l3vpn:vpn-instances/vpn-instance/${vpn_inst_values[0]}/    headers=${ACCEPT_XML}
106     CompareStream.Run_Keyword_If_At_Least_Magnesium    ${resp}    RequestsLibrary.Post Request    session    ${REST_CON}l3vpn-instances-interfaces:vpn-instances/vpn-instance/${vpn_inst_values[0]}/    headers=${ACCEPT_XML}
107     Should Be Equal As Strings    ${resp.status_code}    404
108
109 Delete vm ietf interface
110     [Documentation]    Deletes the ietf interface
111     [Tags]    Delete
112     ${resp}    RequestsLibrary.Delete Request    session    ${REST_CON}ietf-interfaces:interfaces/interface/${vm_int_values[0]}
113     Should Be Equal As Strings    ${resp.status_code}    200
114
115 Verify after deleting vm ietf interface
116     [Documentation]    Verifies ietf interface after delete
117     [Tags]    Verify after delete
118     ${resp}    RequestsLibrary.Get Request    session    ${REST_CON}ietf-interfaces:interfaces/interface/${vm_int_values[0]}    headers=${ACCEPT_XML}
119     Should Be Equal As Strings    ${resp.status_code}    404
120
121 Verify FIB entry after delete
122     [Documentation]    Verifies the fib entry is deleted for the corresponding vpn interface
123     [Tags]    Get
124     Wait Until Keyword Succeeds    5s    1s    Ensure The Fib Entry Is Removed    ${vm_vpnint_values[2]}
125
126 *** Keywords ***
127 Ensure The Fib Entry Is Present
128     [Arguments]    ${prefix}
129     [Documentation]    Will succeed if the fib entry is present for the vpn
130     ${resp}    RequestsLibrary.Get Request    session    /restconf/operational/odl-fib:fibEntries/    headers=${ACCEPT_XML}
131     Should Be Equal As Strings    ${resp.status_code}    200
132     Log    ${resp.content}
133     Should Contain    ${resp.content}    ${prefix}
134     Should Contain    ${resp.content}    label
135
136 Ensure the Fib Entry Is Removed
137     [Arguments]    ${prefix}
138     [Documentation]    Will succeed if the fib entry is removed for the vpn
139     ${resp}    RequestsLibrary.Get Request    session    /restconf/operational/odl-fib:fibEntries/    headers=${ACCEPT_XML}
140     Should Be Equal As Strings    ${resp.status_code}    200
141     Should Not Contain    ${resp.content}    ${prefix}