Step 2: Move test folder to root
[integration/test.git] / csit / libraries / VtnCoKeywords.robot
1 *** Settings ***
2 Library           SSHLibrary
3 Library           String
4 Library           DateTime
5 Library           RequestsLibrary
6 Library           json
7 Library           SSHLibrary
8 Library           Collections
9 Library           XML
10 Variables         ../variables/Variables.py
11 Resource          ./Utils.robot
12
13 *** Keywords ***
14 Get VtnCo
15     [Documentation]    Download the VTN Coordinator from Controller VM
16     Log    Download the VTN Coordinator bz2 file
17     SSHLibrary.Open_Connection    ${CONTROLLER}
18     SSHLibrary.Login_With_Public_Key    ${CONTROLLER_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
19     ${VTNC_FILENAME}=    Catenate    SEPARATOR=/    ${WORKSPACE}    vtn_coordinator.tar.bz2
20     SSHLibrary.Get_File    ${WORKSPACE}/${BUNDLEFOLDER}/externalapps/*vtn-coordinator*-bin.tar.bz2    ${VTNC_FILENAME}
21     SSHLibrary.Close_Connection
22     SSHLibrary.Open_Connection    ${MININET}
23     SSHLibrary.Login_With_Public_Key    ${MININET_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
24     SSHLibrary.Put_File    ${VTNC_FILENAME}    /tmp
25     SSHLibrary.Close_Connection
26
27 Start SuiteVtnCo
28     [Documentation]    Download and startup the VTN Coordinator.
29     Log    Start the VTN Coordinator
30     Get VtnCo
31     ${vtnc_conn_id}=    Open Connection    ${MININET}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=30s
32     Set Suite Variable    ${vtnc_conn_id}
33     Login With Public Key    ${MININET_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
34     ${VTNC_FILENAME}=    Catenate    SEPARATOR=/    ${WORKSPACE}    vtn_coordinator.tar.bz2
35     Execute Command    tar -C/ -jxvf ${VTNC_FILENAME}
36     Execute Command    /usr/local/vtn/sbin/db_setup
37     Execute Command    /usr/local/vtn/bin/vtn_start
38     Execute Command    /usr/local/vtn/bin/unc_dmctl status
39     Execute Command    /usr/local/vtn/sbin/db_setup
40     Execute Command    sed -i 's/odcdrv_ping_interval = 30/odcdrv_ping_interval = 10/g' /usr/local/vtn/modules/odcdriver.conf
41     Execute Command    sed -i 's/physical_attributes_read_interval = 40/physical_attributes_read_interval = 15/g' /usr/local/vtn/modules/vtndrvintf.conf
42     Execute Command    /usr/local/vtn/bin/vtn_start
43     Execute Command    /usr/local/vtn/bin/unc_dmctl status
44     Execute Command    /usr/local/vtn/bin/drvodc_control loglevel trace
45     Execute Command    /usr/local/vtn/bin/lgcnw_control loglevel trace
46     Execute Command    exit
47
48 Stop SuiteVtnCo
49     [Documentation]    Exit the Launch Test
50     Log    Stop the Launch Test
51
52 Start SuiteVtnCoTest
53     [Documentation]    Start the VTNCo Test
54     Create Session    session    http://${MININET}:8083    headers=${VTNC_HEADERS}
55
56 Stop SuiteVtnCoTest
57     [Documentation]    Exit the VtnCo Test
58     Delete All Sessions
59
60 Get Coordinator Version
61     [Documentation]    Get API version for testing
62     ${resp}    RequestsLibrary.Get    session    ${VTNWEBAPI}/api_version
63     Should Be Equal As Strings    ${resp.status_code}    200
64
65 Add a Controller
66     [Arguments]    ${ctrlname}    ${ctrlip}
67     [Documentation]    Create a controller
68     ${controllerinfo}    Create Dictionary    controller_id=${ctrlname}    type=odc    ipaddr=${CONTROLLER}    version=1.0
69     ${controllercreate}    Create Dictionary    controller=${controllerinfo}
70     ${controllercreate_json}=    json.dumps    ${controllercreate}
71     ${resp}    RequestsLibrary.Post    session    ${VTNWEBAPI}/${CTRLS_CREATE}    data=${controllercreate_json}
72     Should Be Equal As Strings    ${resp.status_code}    201
73
74 Remove Controller
75     [Arguments]    ${ctrlname}
76     [Documentation]    Delete a Controller
77     ${resp}    RequestsLibrary.Delete    session    ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
78     Should Be Equal As Strings    ${resp.status_code}    204
79
80 Update Controller
81     [Arguments]    ${ctrlname}    ${ctrlip}    ${desc}
82     [Documentation]    Update controller
83     ${controllerinfo}    Create Dictionary    description=${desc}    ipaddr=${ctrlip}    version=1.0
84     ${controllerupdate}    Create Dictionary    controller=${controllerinfo}
85     ${controllerupdate_json}=    json.dumps    ${controllerupdate}
86     ${resp}    RequestsLibrary.Put    session    ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json    data=${controllerupdate_json}
87     Should Be Equal As Strings    ${resp.status_code}    204
88
89 Audit Controller
90     [Arguments]    ${ctrlname}
91     [Documentation]    Trigger Manual Audit
92     ${auditinfo}    Create Dictionary    force=false    real-network_audit=false
93     ${auditupdate}    Create Dictionary    audit=${auditinfo}
94     ${auditupdate_json}=    json.dumps    ${auditupdate}
95     ${resp}    RequestsLibrary.Put    session    ${VTNWEBAPI}/${CTRLS}/${ctrlname}/audit.json   data=${auditupdate_json}
96     Should Be Equal As Strings    ${resp.status_code}    204
97
98 Check Controller Status
99     [Arguments]    ${ctrlname}    ${stat}
100     [Documentation]    Get controller status
101     ${resp}    RequestsLibrary.Get    session    ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
102     ${contents}    To JSON    ${resp.content}
103     ${controllerblock}    Get From Dictionary    ${contents}    controller
104     ${status}    Get From Dictionary    ${controllerblock}    operstatus
105     Should Be Equal As Strings    ${status}    ${stat}
106
107 Add a VTN
108     [Arguments]    ${vtnname}    ${vtndescription}
109     [Documentation]    Create VTN in Coordinator
110     ${vtninfo}    Create Dictionary    vtn_name=${vtnname}    description=${vtndescription}
111     ${vtncreate}    Create Dictionary    vtn=${vtninfo}
112     ${vtncreate_json}=    json.dumps    ${vtncreate}
113     ${resp}    RequestsLibrary.Post    session    ${VTNWEBAPI}/${VTNS_CREATE}    data=${vtncreate_json}
114     Should Be Equal As Strings    ${resp.status_code}    201
115
116 Delete a VTN
117     [Arguments]    ${vtnname}
118     [Documentation]    Delete a VTN Created
119     ${resp}    RequestsLibrary.Delete    session    ${VTNWEBAPI}/${VTNS}/${vtnname}.json
120     Should Be Equal As Strings    ${resp.status_code}    204
121
122 Create VBR in VTN
123     [Arguments]    ${vtnname}    ${vbrname}    ${ctrlname}
124     [Documentation]    Create VBR for VTN in Coordinator
125     ${vbrinfo}    Create Dictionary    vbr_name=${vbrname}    controller_id=${ctrlname}    domain_id=(DEFAULT)
126     ${vbrcreate}    Create Dictionary    vbridge=${vbrinfo}
127     ${vbrcreate_json}=    json.dumps    ${vbrcreate}
128     ${resp}    RequestsLibrary.Post    session    ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS_CREATE}    data=${vbrcreate_json}
129     Should Be Equal As Strings    ${resp.status_code}    201
130
131 Create VBRIF in VBR
132     [Arguments]    ${vtnname}    ${vbrname}    ${vbrifname}    ${ifdescription}    ${retcode}
133     [Documentation]    Create VBR Interface in VBR
134     ${vbrifinfo}    Create Dictionary    if_name=${vbrifname}    description=${ifdescription}
135     ${vbrifcreate}    Create Dictionary    interface=${vbrifinfo}
136     ${vbrifcreate_json}=    json.dumps    ${vbrifcreate}
137     : For  ${i}  IN RANGE    1   5
138     \    ${resp}    RequestsLibrary.Post    session    ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS_CREATE}    data=${vbrifcreate_json}
139     \    Exit For Loop If    '${resp.status_code}' == '${retcode}'
140     Should Be Equal As Strings    ${resp.status_code}    ${retcode}
141
142 Define Portmap for VBRIF
143     [Arguments]    ${vtnname}    ${vbrname}    ${vbrifname}    ${logical_port_id}
144     [Documentation]    Map Interface to a logical port
145     ${logical_port_info}    Create Dictionary    logical_port_id=${logical_port_id}
146     ${portmapdefine}    Create Dictionary    portmap=${logical_port_info}
147     ${portmapdefine_json}=    json.dumps    ${portmapdefine}
148     ${resp}    RequestsLibrary.Put    session    ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS}/${vbrifname}/${PORTMAP_CREATE}    data=${portmapdefine_json}
149     Should Be Equal As Strings    ${resp.status_code}    204
150
151 Test Ping
152     [Arguments]    ${host1}    ${host2}
153     [Documentation]    Ping hosts to check connectivity
154     Write    ${host1} ping -c 4 ${host2}
155     ${result}    Read Until    mininet>
156     Should Contain    ${result}    64 bytes
157
158 Verify Switch
159     [Arguments]    ${ctrlname}    ${switch_id}
160     [Documentation]    Get switch
161     ${resp}    RequestsLibrary.Get    session    ${VTNWEBAPI}/${CTRLS}/${ctrlname}/${SW}/${switch_id}.json
162     ${contents}    To JSON    ${resp.content}
163     ${switchblock}    Get From Dictionary    ${contents}    switch
164     ${status}    Get From Dictionary    ${switchblock}    switch_id
165     Should Be Equal As Strings    ${status}    ${switch_id}
166
167 Verify SwitchPort
168     [Arguments]    ${ctrlname}    ${switch_id}
169     [Documentation]    Get switch
170     ${resp}    RequestsLibrary.Get    session    ${VTNWEBAPI}/${CTRLS}/${ctrlname}/${SW}/${switch_id}/${PORTS}
171     Should Be Equal As Strings    ${resp.status_code}    200