def test_error_instantition(): """ Validate exception are raised when params are missing :return: """ with pytest.raises(Exception): sw = cisco_switch() with pytest.raises(Exception): sw = cisco_switch(hostname="test")
def del_vlan(vlan_id: int): logger.info(f"Received del vlan {vlan_id} in api") vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) del_result = vservice.del_vlan(vlan_id=vlan_id, device_obj=sw) return del_result
def test_switch_instantition(): sw = cisco_switch(hostname="test", user="******", psswd="foo", device_type="cisco_nexus") assert sw is not None assert sw.hostname == "test"
def main(): this_parser = argparse.ArgumentParser() populate_parser(this_parser) args = this_parser.parse_args() vservice = VlanService(db_name=DB_NAME) device_params = get_params_from_env() sw = cisco_switch(**device_params) if args.cmd is not None: cmd = args.cmd if cmd == "add": #add_vlan(args) tvlan = vlan(id=args.vlanid, name=args.name, description=args.description) vservice.add_vlan(vlan_obj=tvlan, device_obj=sw) elif cmd == "del": #del_vlan(args) vservice.del_vlan(vlan_id=args.vlanid, device_obj=sw) elif cmd == "dumpdb": vservice.dump_db(device_obj=sw) elif cmd == "checksync": sync = vservice.check_sync(device_obj=sw) print(f"In Sync = {sync.data}") elif cmd == "syncfrom": vservice.sync_from(device_obj=sw, ) elif cmd == "syncto": vservice.sync_to(device_obj=sw) elif cmd == "dumprouter": vlan_result = vservice.get_vlans_from_device(device_obj=sw) if vlan_result.success: for id, vlanobj in vlan_result.data.items(): print(vlanobj.id, vlanobj.name) else: print(f"Error getting vlans from device: {vlan_result.errmsg}") elif cmd == "canmerge": mergeable_result = vservice.can_merge(device_obj=sw) print(f"Can merge == {mergeable_result.data}") elif cmd == "update": tvlan = vlan(id=args.vlanid, name=args.name, description=args.description) vservice.update_vlan(vlan_obj=tvlan, device_obj=sw) elif cmd == "merge": mresult = vservice.merge(device_obj=sw) print( f"Successful merge = {mresult.success}, {mresult.error}, {mresult.errmsg}" )
def add_vlan(v: Vlan, vlanid): logger.info(f"adding vlan {vlanid} through api") this_vlan = vlan(id=v.id, name=v.name, description=v.description) vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) add_result = vservice.add_vlan(vlan_obj=this_vlan, device_obj=sw) return add_result
def update_vlan(v: Vlan, vlanid): logger.info(f"Updating vlan {vlanid} in api") this_vlan = vlan(id=v.id, name=v.name, description=v.description) vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) update_result = vservice.update_vlan(vlan_obj=this_vlan, device_obj=sw) return update_result
def check_sync(): vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) sync = vservice.check_sync(device_obj=sw) return sync
def db_vlans(): vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) db_vlan_result = vservice.get_vlans_from_db(device_obj=sw) vlans = [] db_vlans = db_vlan_result.data # jsonify the data for vlanid, vlan_obj in db_vlans.items(): logger.info(vlanid) vlans.append(vlan_obj.toJSON()) logger.info(json.dumps(vlans)) return db_vlan_result
def device_vlans(): vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) device_vlans_result = vservice.get_vlans_from_device(device_obj=sw) if device_vlans_result.success == 0: return device_vlans_result vlans = [] device_vlans = device_vlans_result.data for vlanid, vlan_obj in device_vlans.items(): logger.info(vlanid) vlans.append(vlan_obj.toJSON()) logger.info(json.dumps(vlans)) device_vlans_result.data = vlans return device_vlans_result
def trigger_device_vlan_add_update(vobj: Vlan): vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) return vservice.merge_from_device(device_obj=sw, vlans=[vobj.id])
def can_merge(): vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) can_merge_result = vservice.can_merge(device_obj=sw) return can_merge_result
def merge_from(vlans: VlanList): vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) merge_reult = vservice.merge_from_device(device_obj=sw, vlans=vlans.vlans) return merge_reult
def sync_from_device(): vservice = VlanService(db_name=DB_URI) sw = cisco_switch(**get_params_from_env()) sync_result = vservice.sync_to(device_obj=sw) return sync_result