mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-03 04:07:52 +00:00
qvlans: Fix creating qvlans
Make it look more like macvlans, including logic to set IP addresses, and to verify qvlans were created properly. Signed-off-by: Ben Greear <greearb@candelatech.com>
This commit is contained in:
@@ -729,9 +729,11 @@ def wait_until_ports_appear(base_url="http://localhost:8080", port_list=(), debu
|
|||||||
resource_id = eid[1]
|
resource_id = eid[1]
|
||||||
port_name = eid[2]
|
port_name = eid[2]
|
||||||
uri = "%s/%s/%s" % (port_url, resource_id, port_name)
|
uri = "%s/%s/%s" % (port_url, resource_id, port_name)
|
||||||
|
#print("port-eid: %s uri: %s" % (port_eid, uri))
|
||||||
lf_r = LFRequest.LFRequest(base_url, uri, debug_=debug)
|
lf_r = LFRequest.LFRequest(base_url, uri, debug_=debug)
|
||||||
json_response = lf_r.get_as_json()
|
json_response = lf_r.get_as_json()
|
||||||
if json_response is not None:
|
if json_response is not None:
|
||||||
|
#pprint.pprint(json_response)
|
||||||
if not json_response['interface']['phantom']:
|
if not json_response['interface']['phantom']:
|
||||||
found_stations.add("%s.%s.%s" % (shelf, resource_id, port_name))
|
found_stations.add("%s.%s.%s" % (shelf, resource_id, port_name))
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -115,8 +115,8 @@ class QVLANProfile(LFCliBase):
|
|||||||
else:
|
else:
|
||||||
raise ValueError("Unknown param name: " + param_name)
|
raise ValueError("Unknown param name: " + param_name)
|
||||||
|
|
||||||
def create(self, sleep_time=1):
|
def create(self, debug=False, sleep_time=1):
|
||||||
print("Creating qvlans...")
|
print("Creating 802.1q Vlans...")
|
||||||
req_url = "/cli-json/add_vlan"
|
req_url = "/cli-json/add_vlan"
|
||||||
|
|
||||||
if not self.dhcp and self.first_ip_addr and self.netmask and self.gateway:
|
if not self.dhcp and self.first_ip_addr and self.netmask and self.gateway:
|
||||||
@@ -137,20 +137,38 @@ class QVLANProfile(LFCliBase):
|
|||||||
set_port.set_port_interest_flags)
|
set_port.set_port_interest_flags)
|
||||||
set_port_r = LFRequest.LFRequest(self.lfclient_url + "/cli-json/set_port")
|
set_port_r = LFRequest.LFRequest(self.lfclient_url + "/cli-json/set_port")
|
||||||
|
|
||||||
|
qv_parent_bare = self.local_realm.name_to_eid(self.qvlan_parent)[2];
|
||||||
for i in range(len(self.desired_qvlans)):
|
for i in range(len(self.desired_qvlans)):
|
||||||
data = {
|
data = {
|
||||||
"shelf": self.shelf,
|
"shelf": self.shelf,
|
||||||
"resource": self.resource,
|
"resource": self.resource,
|
||||||
"port": self.local_realm.name_to_eid(self.qvlan_parent)[2],
|
"port": qv_parent_bare,
|
||||||
"vid": i + 1
|
"vid": i + 1
|
||||||
}
|
}
|
||||||
self.created_qvlans.append("%s.%s.%s#%d" % (self.shelf, self.resource,
|
self.created_qvlans.append("%s.%s.%s.%d" % (self.shelf, self.resource,
|
||||||
self.qvlan_parent, int(self.desired_qvlans[i][self.desired_qvlans[i].index('#') + 1:])))
|
qv_parent_bare, i + 1))
|
||||||
self.local_realm.json_post(req_url, data)
|
self.local_realm.json_post(req_url, data)
|
||||||
time.sleep(sleep_time)
|
time.sleep(sleep_time)
|
||||||
|
|
||||||
|
if not LFUtils.wait_until_ports_appear(base_url=self.lfclient_url, port_list=self.created_qvlans, debug=debug):
|
||||||
|
return False
|
||||||
|
|
||||||
print(self.created_qvlans)
|
print(self.created_qvlans)
|
||||||
|
|
||||||
|
for i in range(len(self.created_qvlans)):
|
||||||
|
eid = self.local_realm.name_to_eid(self.created_qvlans[i])
|
||||||
|
name = eid[2]
|
||||||
|
self.set_port_data["port"] = name # for set_port calls.
|
||||||
|
if not self.dhcp and self.first_ip_addr and self.netmask and self.gateway:
|
||||||
|
self.set_port_data["ip_addr"] = self.ip_list[i]
|
||||||
|
self.set_port_data["netmask"] = self.netmask
|
||||||
|
self.set_port_data["gateway"] = self.gateway
|
||||||
|
set_port_r.addPostData(self.set_port_data)
|
||||||
|
set_port_r.jsonPost(debug)
|
||||||
|
time.sleep(sleep_time)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
print("Cleaning up qvlans...")
|
print("Cleaning up qvlans...")
|
||||||
print(self.created_qvlans)
|
print(self.created_qvlans)
|
||||||
|
|||||||
@@ -3,9 +3,12 @@ import sys
|
|||||||
import os
|
import os
|
||||||
import importlib
|
import importlib
|
||||||
import argparse
|
import argparse
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
if sys.version_info[0] != 3:
|
if sys.version_info[0] != 3:
|
||||||
print("This script requires Python 3")
|
logger.critical("This script requires Python 3")
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
@@ -17,6 +20,7 @@ LFUtils = importlib.import_module("py-json.LANforge.LFUtils")
|
|||||||
add_file_endp = importlib.import_module("py-json.LANforge.add_file_endp")
|
add_file_endp = importlib.import_module("py-json.LANforge.add_file_endp")
|
||||||
realm = importlib.import_module("py-json.realm")
|
realm = importlib.import_module("py-json.realm")
|
||||||
Realm = realm.Realm
|
Realm = realm.Realm
|
||||||
|
lf_logger_config = importlib.import_module("py-scripts.lf_logger_config")
|
||||||
|
|
||||||
|
|
||||||
class CreateQVlan(Realm):
|
class CreateQVlan(Realm):
|
||||||
@@ -57,9 +61,14 @@ class CreateQVlan(Realm):
|
|||||||
self.qvlan_profile.dhcp = dhcp
|
self.qvlan_profile.dhcp = dhcp
|
||||||
|
|
||||||
def build(self):
|
def build(self):
|
||||||
print("Creating QVLAN stations")
|
logger.info("Creating QVLAN stations")
|
||||||
self.qvlan_profile.create(
|
if self.qvlan_profile.create(
|
||||||
sleep_time=.5)
|
debug=self.debug,
|
||||||
|
sleep_time=0,
|
||||||
|
):
|
||||||
|
self._pass("802.1q VLAN creation successful.")
|
||||||
|
else:
|
||||||
|
self._fail("802.1q VLAN creation failed.")
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@@ -118,8 +127,20 @@ def main():
|
|||||||
action='store_true',
|
action='store_true',
|
||||||
default=False)
|
default=False)
|
||||||
|
|
||||||
|
# TODO: Use lfcli_base for common arguments.
|
||||||
|
parser.add_argument('--log_level',
|
||||||
|
default=None,
|
||||||
|
help='Set logging level: debug | info | warning | error | critical')
|
||||||
|
parser.add_argument('--lf_logger_config_json',
|
||||||
|
help="--lf_logger_config_json <json file> , json configuration of logger")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
logger_config = lf_logger_config.lf_logger_config()
|
||||||
|
# set the logger level to requested value
|
||||||
|
logger_config.set_level(level=args.log_level)
|
||||||
|
logger_config.set_json(json_file=args.lf_logger_config_json)
|
||||||
|
|
||||||
update_group_args = {
|
update_group_args = {
|
||||||
"name": None,
|
"name": None,
|
||||||
"action": None,
|
"action": None,
|
||||||
@@ -200,7 +221,14 @@ def main():
|
|||||||
ip_list=ip_list,
|
ip_list=ip_list,
|
||||||
debug=args.debug)
|
debug=args.debug)
|
||||||
create_qvlan.build()
|
create_qvlan.build()
|
||||||
print('Created %s QVLAN stations' % args.num_ports)
|
|
||||||
|
# TODO: Add code to clean up the stations built, unless --noclean is specified.
|
||||||
|
|
||||||
|
if create_qvlan.passes():
|
||||||
|
logging.info('Created %s QVLAN stations' % args.num_ports)
|
||||||
|
create_qvlan.exit_success()
|
||||||
|
else:
|
||||||
|
create_vlan.exit_fail()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user