5 Library RequestsLibrary
10 Variables ../variables/Variables.py
11 Resource ./Utils.robot
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
28 [Documentation] Download and startup the VTN Coordinator.
29 Log Start the VTN Coordinator
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
49 [Documentation] Exit the Launch Test
50 Log Stop the Launch Test
53 [Documentation] Start the VTNCo Test
54 Create Session session http://${MININET}:8083 headers=${VTNC_HEADERS}
57 [Documentation] Exit the VtnCo Test
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
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
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
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
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
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}
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
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
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
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}
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
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
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}
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