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 /usr/local/vtn/bin/vtn_start
41 Execute Command /usr/local/vtn/bin/unc_dmctl status
45 [Documentation] Exit the Launch Test
46 Log Stop the Launch Test
49 [Documentation] Start the VTNCo Test
50 Create Session session http://${MININET}:8083 headers=${VTNC_HEADERS}
53 [Documentation] Exit the VtnCo Test
56 Get Coordinator Version
57 [Documentation] Get API version for testing
58 ${resp} RequestsLibrary.Get session ${VTNWEBAPI}/api_version
59 Should Be Equal As Strings ${resp.status_code} 200
62 [Arguments] ${ctrlname} ${ctrlip}
63 [Documentation] Create a controller
64 ${controllerinfo} Create Dictionary controller_id=${ctrlname} type=odc ipaddr=${CONTROLLER} version=1.0 auditstatus=enable
65 ${controllercreate} Create Dictionary controller=${controllerinfo}
66 ${controllercreate_json}= json.dumps ${controllercreate}
67 ${resp} RequestsLibrary.Post session ${VTNWEBAPI}/${CTRLS_CREATE} data=${controllercreate_json}
68 Should Be Equal As Strings ${resp.status_code} 201
71 [Arguments] ${ctrlname}
72 [Documentation] Delete a Controller
73 ${resp} RequestsLibrary.Delete session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
74 Should Be Equal As Strings ${resp.status_code} 204
77 [Arguments] ${ctrlname} ${ctrlip} ${desc}
78 [Documentation] Update controller
79 ${controllerinfo} Create Dictionary description=${desc} ipaddr=${ctrlip} version=1.0 auditstatus=enable
80 ${controllerupdate} Create Dictionary controller=${controllerinfo}
81 ${controllerupdate_json}= json.dumps ${controllerupdate}
82 ${resp} RequestsLibrary.Put session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json data=${controllerupdate_json}
83 Should Be Equal As Strings ${resp.status_code} 204
85 Check Controller Status
86 [Arguments] ${ctrlname} ${stat}
87 [Documentation] Get controller status
88 ${resp} RequestsLibrary.Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
89 ${contents} To JSON ${resp.content}
90 ${controllerblock} Get From Dictionary ${contents} controller
91 ${status} Get From Dictionary ${controllerblock} operstatus
92 Should Be Equal As Strings ${status} ${stat}
95 [Arguments] ${vtnname} ${vtndescription}
96 [Documentation] Create VTN in Coordinator
97 ${vtninfo} Create Dictionary vtn_name=${vtnname} description=${vtndescription}
98 ${vtncreate} Create Dictionary vtn=${vtninfo}
99 ${vtncreate_json}= json.dumps ${vtncreate}
100 ${resp} RequestsLibrary.Post session ${VTNWEBAPI}/${VTNS_CREATE} data=${vtncreate_json}
101 Should Be Equal As Strings ${resp.status_code} 201
104 [Arguments] ${vtnname}
105 [Documentation] Delete a VTN Created
106 ${resp} RequestsLibrary.Delete session ${VTNWEBAPI}/${VTNS}/${vtnname}.json
107 Should Be Equal As Strings ${resp.status_code} 204
110 [Arguments] ${vtnname} ${vbrname} ${ctrlname}
111 [Documentation] Create VBR for VTN in Coordinator
112 ${vbrinfo} Create Dictionary vbr_name=${vbrname} controller_id=${ctrlname} domain_id=(DEFAULT)
113 ${vbrcreate} Create Dictionary vbridge=${vbrinfo}
114 ${vbrcreate_json}= json.dumps ${vbrcreate}
115 ${resp} RequestsLibrary.Post session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS_CREATE} data=${vbrcreate_json}
116 Should Be Equal As Strings ${resp.status_code} 201
119 [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${ifdescription} ${retcode}
120 [Documentation] Create VBR Interface in VBR
121 ${vbrifinfo} Create Dictionary if_name=${vbrifname} description=${ifdescription}
122 ${vbrifcreate} Create Dictionary interface=${vbrifinfo}
123 ${vbrifcreate_json}= json.dumps ${vbrifcreate}
124 ${resp} RequestsLibrary.Post session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS_CREATE} data=${vbrifcreate_json}
125 Should Be Equal As Strings ${resp.status_code} ${retcode}
127 Define Portmap for VBRIF
128 [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${logical_port_id}
129 [Documentation] Map Interface to a logical port
130 ${logical_port_info} Create Dictionary logical_port_id=${logical_port_id}
131 ${portmapdefine} Create Dictionary portmap=${logical_port_info}
132 ${portmapdefine_json}= json.dumps ${portmapdefine}
133 ${resp} RequestsLibrary.Put session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS}/${vbrifname}/${PORTMAP_CREATE} data=${portmapdefine_json}
134 Should Be Equal As Strings ${resp.status_code} 204
137 [Arguments] ${host1} ${host2}
138 [Documentation] Ping hosts to check connectivity
139 Write ${host1} ping -c 10 ${host2}
140 ${result} Read Until mininet>
141 Should Contain ${result} 64 bytes
144 [Arguments] ${ctrlname} ${switch_id}
145 [Documentation] Get switch
146 ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}/${SW}/${switch_id}.json
147 ${contents} To JSON ${resp.content}
148 ${switchblock} Get From Dictionary ${contents} switch
149 ${status} Get From Dictionary ${switchblock} switch_id
150 Should Be Equal As Strings ${status} ${switch_id}
153 [Arguments] ${ctrlname} ${switch_id}
154 [Documentation] Get switch
155 ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}/${SW}/${switch_id}/${PORTS}
156 Should Be Equal As Strings ${resp.status_code} 200