blob: 78c8135a5fae7297a7b971eecc38d1c20cf790c2 [file] [log] [blame]
Kailash Khalasic930eac2018-09-05 12:18:23 -07001# Copyright 2017-present Open Networking Foundation
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15*** Settings ***
Suchitra Vemuri6357e692018-09-07 11:11:47 -070016Documentation Library of functions related to RG (source host)
Kailash Khalasic930eac2018-09-05 12:18:23 -070017Library OperatingSystem
18Library SSHLibrary
Suchitra Vemurief989602018-09-10 13:45:26 -070019Library restApi.py
You Wangaee35112018-09-28 16:07:49 -070020Resource ../../Framework/utils/utils.robot
Kailash Khalasic930eac2018-09-05 12:18:23 -070021
22*** Keywords ***
Suchitra Vemuri6357e692018-09-07 11:11:47 -070023Subscriber Status Check
24 [Arguments] ${onu_device}
25 [Documentation] Returns Status from Subscribers List for a particular ONU device
26 ${json_result}= restApi.ApiGet VOLT_SUBSCRIBER
27 Log ${json_result}
28 ${json_result_list}= Get From dictionary ${json_result} items
Suchitra Vemurief989602018-09-10 13:45:26 -070029 ${getJsonDict}= utils.getDictFromListOfDict ${json_result_list} onu_device ${onu_device}
Suchitra Vemuri32fc2f22018-09-10 12:06:01 -070030 ${status}= Get From Dictionary ${getJsonDict} status
Suchitra Vemuri6357e692018-09-07 11:11:47 -070031 [Return] ${status}
Kailash Khalasi30a6a392018-09-10 14:32:39 -070032
33Create Subscriber
34 [Arguments] ${subscriber_list} ${list_index}
35 [Documentation] Sends a POST to create a subscriber in XOS
36 ${slist} = Get Variable Value ${subscriber_list}
37 ${subscriber_dictionary}= utils.listToDict ${slist} ${list_index}
38 ${api_result}= restApi.ApiPost VOLT_SUBSCRIBER ${subscriber_dictionary}
39 Should Be True ${api_result}
40 ${Subscriber_id}= Get From Dictionary ${api_result} id
41 Set Global Variable ${Subscriber_id}
42 [Return] ${Subscriber_id}
43
44Retrieve Subscriber
45 [Arguments] ${ctag}
46 [Documentation] Returns the subscriber id based on the subscriber's C-Tag
47 ${json_result}= restApi.ApiGet VOLT_SUBSCRIBER
48 Log ${json_result}
49 ${json_result_list}= Get From dictionary ${json_result} items
50 ${getJsonDict}= utils.getDictFromListOfDict ${json_result_list} c_tag ${ctag}
51 ${id}= Get From Dictionary ${getJsonDict} id
52 [Return] ${id}
53
54Delete Subscriber
55 [Arguments] ${ctag}
56 [Documentation] Deletes a given subscriber based on its c_tag
57 ${id}= Retrieve Subscriber ${ctag}
58 ${api_result}= restApi.ApiChameleonDelete VOLT_SUBSCRIBER ${id}
59 Should Be True ${api_result}
Kailash Khalasi052cbb12018-09-13 16:50:13 -070060
You Wang88e1d852018-10-05 11:44:19 -070061Send EAPOL Message
You Wang9f7eb392018-10-09 17:49:34 -070062 [Arguments] ${iface} ${conf_file} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
You Wang88e1d852018-10-05 11:44:19 -070063 [Documentation] Executes a particular auth request on the RG via wpa_supplicant client. Requested packet should exist on src.
You Wang59ded6c2018-10-05 17:43:44 -070064 Login And Run Command On Remote System sudo rm -f /tmp/wpa.log; sudo wpa_supplicant -B -i ${iface} -Dwired -c /etc/wpa_supplicant/${conf_file} -f /tmp/wpa.log ${ip} ${user} ${pass} ${container_name}
Kailash Khalasi6dab16e2018-09-17 20:24:08 -070065
66Start DHCP Server on Remote Host
You Wang59ded6c2018-10-05 17:43:44 -070067 [Arguments] ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
68 ${result}= Login And Run Command On Remote System sudo dhcpd -cf /etc/dhcp/dhcpd.conf ${interface} ${ip} ${user} ${pass} ${container_name}
Kailash Khalasi6dab16e2018-09-17 20:24:08 -070069 Should Contain ${result} Listening on LPF/${interface}
You Wang88e1d852018-10-05 11:44:19 -070070
71Delete IP Addresses from Interface on Remote Host
You Wang59ded6c2018-10-05 17:43:44 -070072 [Arguments] ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
73 Login And Run Command On Remote System sudo ip addr flush dev ${interface} ${ip} ${user} ${pass} ${container_name}
You Wang88e1d852018-10-05 11:44:19 -070074
75Add Double Vlan Interface on Host
You Wang59ded6c2018-10-05 17:43:44 -070076 [Arguments] ${interface} ${stag} ${ctag} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
77 Login And Run Command On Remote System sudo ip link add link ${interface} name ${interface}.${stag} type vlan id ${stag} ${ip} ${user} ${pass} ${container_name}
78 Login And Run Command On Remote System sudo ip link set ${interface}.${stag} up ${ip} ${user} ${pass} ${container_name}
79 Login And Run Command On Remote System sudo ip link add link ${interface}.${stag} name ${interface}.${stag}.${ctag} type vlan id ${ctag} ${ip} ${user} ${pass} ${container_name}
80 Login And Run Command On Remote System sudo ip link set ${interface}.${stag}.${ctag} up ${ip} ${user} ${pass} ${container_name}
81 Login And Run Command On Remote System ifconfig ${interface}.${stag}.${ctag} ${ip} ${user} ${pass} ${container_name}
You Wang88e1d852018-10-05 11:44:19 -070082
83Delete Interface on Remote Host
You Wang59ded6c2018-10-05 17:43:44 -070084 [Arguments] ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
85 Login And Run Command On Remote System sudo ip link del ${interface} ${ip} ${user} ${pass} ${container_name}
You Wang88e1d852018-10-05 11:44:19 -070086
87Add Ip Address on Interface on Host
You Wang59ded6c2018-10-05 17:43:44 -070088 [Arguments] ${ip_address} ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
89 Login And Run Command On Remote System sudo ip addr add ${ip_address} dev ${interface} ${ip} ${user} ${pass} ${container_name}
Kailash Khalasi6dab16e2018-09-17 20:24:08 -070090
91Add Route to Remote Host
You Wang59ded6c2018-10-05 17:43:44 -070092 [Arguments] ${subnet} ${gateway} ${interface} ${ip} ${user} ${pass}=${None} ${container_name}=${None}
93 Login And Run Command On Remote System sudo ip route add ${subnet} via ${gateway} dev ${interface} ${ip} ${user} ${pass} ${container_name}