From 1674a7c141d1faac666cbb62275b64116281004b Mon Sep 17 00:00:00 2001 From: Faiyaz Ahmed Date: Thu, 29 Jan 2009 20:34:56 +0000 Subject: [PATCH] Supports turning off all queuing when the right flag is set. --- bwmon.py | 5 ++++- net.py | 15 ++++++++++----- nm.py | 22 +++++++++++++++++++--- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/bwmon.py b/bwmon.py index 495fabd..6f5c90e 100644 --- a/bwmon.py +++ b/bwmon.py @@ -662,7 +662,10 @@ def getDefaults(nmdbcopy): return status def allOff(): - # Get/set special slice IDs + """ + Turn off all slice HTBs + """ + # Get/set special slice IDs root_xid = bwlimit.get_xid("root") default_xid = bwlimit.get_xid("default") kernelhtbs = gethtbs(root_xid, default_xid) diff --git a/net.py b/net.py index c74cc95..d2cc7ed 100644 --- a/net.py +++ b/net.py @@ -13,10 +13,17 @@ import sioc, plnet # local modules import bwlimit, logger, iptables -def GetSlivers(plc, data): +def GetSlivers(plc, data, config): InitInterfaces(plc, data) - InitNodeLimit(data) - InitI2(plc, data) + if 'OVERRIDES' in dir(config): + if config.OVERRIDES.get('net_max_rate') != -1: + InitNodeLimit(data) + InitI2(plc, data) + else: + logger.log("Slice and node BW Limits disabled.") + if len(bwlimit.get()): + logger.verbose("*** DISABLING NODE BW LIMITS ***") + bwlimit.stop() InitNAT(plc, data) def InitNodeLimit(data): @@ -29,8 +36,6 @@ def InitNodeLimit(data): for dev in devs: macs[sioc.gifhwaddr(dev).lower()] = dev - # XXX Exempt Internet2 destinations from node bwlimits - # bwlimit.exempt_init('Internet2', internet2_ips) for network in data['networks']: # Get interface name preferably from MAC address, falling # back on IP address. diff --git a/nm.py b/nm.py index 36d121b..78c7bfa 100755 --- a/nm.py +++ b/nm.py @@ -50,11 +50,12 @@ if os.path.exists(options.path): modules = [] -def GetSlivers(plc): +def GetSlivers(plc, config): '''Run call backs defined in modules''' try: logger.log("Syncing w/ PLC") data = plc.GetSlivers() + getPLCDefaults(data, config) except: logger.log_exc() # XXX So some modules can at least boostrap. @@ -62,7 +63,7 @@ def GetSlivers(plc): if (options.verbose): logger.log_slivers(data) # Set i2 ip list for nodes in I2 nodegroup. - try: net.GetSlivers(plc, data) + try: net.GetSlivers(plc, data, config) # TODO - num of args needs to be unified across mods. except: logger.log_exc() # All other callback modules for module in modules: @@ -71,6 +72,21 @@ def GetSlivers(plc): callback(data) except: logger.log_exc() + +def getPLCDefaults(data, config): + ''' + Get PLC wide defaults from _default system slice. Adds them to config class. + ''' + for slice in data.get('slivers'): + if slice['name'] == config.PLC_SLICE_PREFIX+"_default": + attr_dict = {} + for attr in slice.get('attributes'): attr_dict[attr['name']] = attr['value'] + if len(attr_dict): + logger.verbose("Found default slice overrides.\n %s" % attr_dict) + config.OVERRIDES = attr_dict + elif 'OVERRIDES' in dir(config): del config.OVERRIDES + + def run(): try: if options.daemon: tools.daemon() @@ -119,7 +135,7 @@ def run(): while True: # Main NM Loop logger.verbose('mainloop - nm:getSlivers - period=%d random=%d'%(iperiod,irandom)) - GetSlivers(plc) + GetSlivers(plc, config) delay=iperiod + random.randrange(0,irandom) logger.verbose('mainloop - sleeping for %d s'%delay) time.sleep(delay) -- 2.43.0