def disable_vlan(device=None, vlan_id=None): logger.info("Disabling VLAN '%s' in device '%s' -- context: %s" %\ (vlan_id, device, request["context"])) swinst = get_switch_instance(device) swinst.disable_vlan(vlan_id=vlan_id) defer_save_switch_cfg(device) invalidate_cache("/vlans/%s" % device)
def disable_interface(device=None, interface_id=None): logger.info("Disabling interface '%s' in device '%s' -- context: %s" %\ (interface_id, device, request["context"])) swinst = get_switch_instance(device) swinst.disable_interface(interface_id=interface_id) defer_save_switch_cfg(device) invalidate_cache("/interfaces/%s" % device)
def disable_lag(device=None, lag_id=None): logger.info("Disabling LAG '%s' in device '%s' -- context: %s" %\ (lag_id, device, request["context"])) swinst = get_switch_instance(device) swinst.disable_lag(lag_id=lag_id) defer_save_switch_cfg(device) invalidate_cache("/lags/%s" % device)
def lag_detach_interface(device=None, lag_id=None): logger.info("Detaching an interface from LAG '%s' in device '%s' -- context: %s" %\ (lag_id, device, request["context"])) interface_id = request.forms.get("interface_id") swinst = get_switch_instance(device) swinst.lag_detach_interface(lag_id=lag_id, interface_id=interface_id) defer_save_switch_cfg(device) invalidate_cache("/lags/%s" % device)
def destroy_lag(device=None, lag_id=None): logger.info("Removing LAG '%s' from device '%s' -- context: %s" %\ (lag_id, device, context)) swinst = get_switch_instance(device) swinst.destroy_lag(lag_id=lag_id) defer_save_switch_cfg(device) invalidate_cache("/lags/%s" % device) response.status = 204
def destroy_vlan(device=None, vlan_id=None): logger.info("Removing VLAN '%s' from device '%s' -- context: %s" %\ (vlan_id, device, request["context"])) swinst = get_switch_instance(device) swinst.destroy_vlan(vlan_id=vlan_id) defer_save_switch_cfg(device) invalidate_cache("/vlans/%s" % device) response.status = 204
def lag_detach_vlan(device=None, lag_id=None): logger.info("Detaching a VLAN from LAG '%s' in device '%s' -- context: %s" %\ (lag_id, device, request["context"])) vlan_id = request.forms.get("vlan_id") tagged = request.forms.get("tagged", "").lower() == "true" swinst = get_switch_instance(device) swinst.lag_detach_vlan(lag_id=lag_id, vlan_id=vlan_id, tagged=tagged) defer_save_switch_cfg(device) invalidate_cache("/lags/%s" % device)
def create_lag(device=None, lag_id=None): logger.info("Creating new LAG with id '%s' in device '%s' -- context: %s" %\ (lag_id, device, request["context"])) lag_description = request.forms.get("lag_description") swinst = get_switch_instance(device) swinst.create_lag(lag_id=lag_id, lag_description=lag_description) defer_save_switch_cfg(device) invalidate_cache("/lags/%s" % device) response.status = 201
def change_vlan_description(device=None, vlan_id=None): logger.info("Changing VLAN '%s' description in device '%s' -- context: %s" %\ (vlan_id, device, request["context"])) vlan_description = request.forms.get("vlan_description") swinst = get_switch_instance(device) swinst.change_vlan_description(vlan_id=vlan_id, vlan_description=vlan_description) defer_save_switch_cfg(device) invalidate_cache("/vlans/%s" % device)
def create_vlan(device=None, vlan_id=None): logger.info("Creating new VLAN with id '%s' in device '%s' -- context: %s" %\ (vlan_id, device, request["context"])) vlan_description = request.forms.get("vlan_description") swinst = get_switch_instance(device) swinst.create_vlan(vlan_id=vlan_id, vlan_description=vlan_description) defer_save_switch_cfg(device) invalidate_cache("/vlans/%s" % device) response.status = 201
def change_interface_description(device=None, interface_id=None): logger.info("Changing interface '%s' description in device '%s' -- context: %s" %\ (interface_id, device, request["context"])) interface_description = request.forms.get("interface_description") swinst = get_switch_instance(device) swinst.change_interface_description(interface_id=interface_id, interface_description=interface_description) defer_save_switch_cfg(device) invalidate_cache("/interfaces/%s" % device)
def interface_detach_vlan(device=None, interface_id=None): logger.info("Detaching VLAN from the interface '%s' in device '%s' -- context: %s" %\ (device, interface_id, request["context"])) vlan_id = request.forms.get("vlan_id") tagged = request.forms.get("tagged", "").lower() == "true" swinst = get_switch_instance(device) swinst.interface_detach_vlan(interface_id=interface_id, vlan_id=vlan_id, tagged=tagged) defer_save_switch_cfg(device) invalidate_cache("/vlans/%s" % device)
def change_lag_description(device=None, lag_id=None): logger.info("Changing LAG '%s' description in device '%s' -- context: %s" %\ (lag_id, device, request["context"])) lag_description = request.forms.get("lag_description") swinst = get_switch_instance(device) swinst.change_lag_description(lag_id=lag_id, lag_description=lag_description) defer_save_switch_cfg(device) invalidate_cache("/lags/%s" % device)
def device_info(device=None): logger.info("Showing generic information for device %s -- context: %s" %\ (device, request["context"])) swinfo = {} swinst = get_switch_instance(device) swinfo["hostname"] = swinst.show_hostname() swinfo["version"] = swinst.show_version() swinfo["l2api"] = { "device.mgmt-api": "%s.%s" % (swinst.__class__.__module__, swinst.__class__.__name__), "device.mgmt-host": swinst.transport.host, "device.vendor": swinst.__VENDOR__, "device.hwtype": swinst.__HWTYPE__ } return swinfo
def worker(): logger.info("Waking up persistence-control worker...") devices = list_pending_persistence_jobs() if devices is None: logger.info("No pending persistence jobs found") return for device in devices: sw_cfg_persist_lock = acquire_persistence_lock(device) if sw_cfg_persist_lock is None: logger.warn("Could not acquire persistence lock for device '%s'" % device) continue try: swinst = get_switch_instance(device) swinst.save_config() finish_persistence_job(device) except NotImplementedError, e: logger.exception("Error on saving configuration on device '%s'" % device) finish_persistence_job(device) except Exception, e: logger.exception("Error on saving configuration on device '%s'" % device)
def worker(): logger.info("Waking up persistence-control worker...") devices = list_pending_persistence_jobs() if devices is None: logger.info("No pending persistence jobs found") return for device in devices: sw_cfg_persist_lock = acquire_persistence_lock(device) if sw_cfg_persist_lock is None: logger.warn("Could not acquire persistence lock for device '%s'. Probably because it's already acquired by another instance" % device) continue context = {"CTX-UUID": gen_context_uid()} try: logger.info("Starting persistence-job for device '%s' -- context: %s" % (device, context)) swinst = get_switch_instance(device) swinst.save_config() finish_persistence_job(device) except NotImplementedError, e: logger.exception("Error on saving configuration on device '%s' -- context: %s" % (device, context)) finish_persistence_job(device) except Exception, e: logger.exception("Error on saving configuration on device '%s' -- context: %s" % (device, context))
def show_system(device=None): logger.info("Showing system information from device '%s' -- context: %s" %\ (device, request["context"])) swinst = get_switch_instance(device) return swinst.show_system()
def show_version(device=None): logger.info("Showing version information from device '%s' -- context: %s" %\ (device, request["context"])) swinst = get_switch_instance(device) defer_save_switch_cfg(device) return swinst.show_version()
def show_vlans(device=None, vlan_id=None): logger.info("Showing VLAN information from device '%s' -- context: %s" %\ (device, request["context"])) swinst = get_switch_instance(device) return swinst.show_vlans(vlan_id=vlan_id)
def show_interfaces(device=None, interface_id=None): logger.info("Showing interfaces informations from device '%s' -- context: %s" %\ (device, request["context"])) swinst = get_switch_instance(device) return swinst.show_interfaces(interface_id=interface_id)
def show_lags(device=None, lag_id=None): logger.info("Showing LAG information from device '%s' -- context: %s" %\ (device, request["context"])) swinst = get_switch_instance(device) return swinst.show_lags(lag_id=lag_id)