X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=bwmon.py;h=476ef6daebc151780aed229660670be885d80a92;hb=570d234b7d7b40416b296de71225f28c826ee991;hp=01a072c97f91616a05cfbf7aba52f21be9f0090a;hpb=394b44e8be158f75c8b75827e7dfed9c096ec6f6;p=nodemanager.git diff --git a/bwmon.py b/bwmon.py index 01a072c..476ef6d 100644 --- a/bwmon.py +++ b/bwmon.py @@ -1,8 +1,5 @@ #!/usr/bin/python # -# $Id$ -# $URL$ -# # Average bandwidth monitoring script. Run periodically via NM db.sync to # enforce a soft limit on daily bandwidth usage for each slice. If a # slice is found to have transmitted 80% of its daily byte limit usage, @@ -26,10 +23,12 @@ import socket import copy import threading +import plnode.bwlimit as bwlimit + import logger import tools -import bwlimit import database +from config import Config priority = 20 @@ -41,14 +40,6 @@ ENABLE = True DB_FILE = "/var/lib/nodemanager/bwmon.pickle" -try: - sys.path.append("/etc/planetlab") - from plc_config import * -except: - DEBUG = True - logger.verbose("bwmon: Warning: Configuration file /etc/planetlab/plc_config.py not found") - logger.log("bwmon: Running in DEBUG mode. Logging to file and not emailing.") - # Constants seconds_per_day = 24 * 60 * 60 bits_per_byte = 8 @@ -144,16 +135,17 @@ def slicemail(slice, subject, body): ''' Front end to sendmail. Sends email to slice alias with given subject and body. ''' - - sendmail = os.popen("/usr/sbin/sendmail -N never -t -f%s" % PLC_MAIL_SUPPORT_ADDRESS, "w") + config = Config() + sendmail = os.popen("/usr/sbin/sendmail -N never -t -f%s" % config.PLC_MAIL_SUPPORT_ADDRESS, "w") # Parsed from MyPLC config - to = [PLC_MAIL_MOM_LIST_ADDRESS] + to = [config.PLC_MAIL_MOM_LIST_ADDRESS] if slice is not None and slice != "root": - to.append(PLC_MAIL_SLICE_ADDRESS.replace("SLICE", slice)) + to.append(config.PLC_MAIL_SLICE_ADDRESS.replace("SLICE", slice)) - header = {'from': "%s Support <%s>" % (PLC_NAME, PLC_MAIL_SUPPORT_ADDRESS), + header = {'from': "%s Support <%s>" % (config.PLC_NAME, + config.PLC_MAIL_SUPPORT_ADDRESS), 'to': ", ".join(to), 'version': sys.version.split(" ")[0], 'subject': subject} @@ -431,7 +423,7 @@ class Slice: if (runningrates['maxrate'] != new_maxrate) or \ (runningrates['minrate'] != self.MinRate * 1000) or \ (runningrates['maxexemptrate'] != new_maxi2rate) or \ - (runningrates['minexemptrate'] != self.Mini2Rate * 1000) or \ + ('minexemptrate' in runningrates and runningrates['minexemptrate'] != self.Mini2Rate * 1000) or \ (runningrates['share'] != self.Share): # Apply parameters bwlimit.set(xid = self.xid, dev = dev_default, @@ -490,8 +482,8 @@ def sync(nmdbcopy): period, \ default_MaxRate, \ default_Maxi2Rate, \ - default_MaxKByte,\ - default_Maxi2KByte,\ + default_MaxKByte, \ + default_Maxi2KByte, \ default_Share, \ dev_default @@ -505,6 +497,9 @@ def sync(nmdbcopy): if default_MaxRate == -1: default_MaxRate = 1000000 + # xxx $Id$ + # with svn we used to have a trick to detect upgrades of this file + # this has gone with the move to git, without any noticeable effect on operations though try: f = open(DB_FILE, "r+") logger.verbose("bwmon: Loading %s" % DB_FILE) @@ -661,7 +656,7 @@ def sync(nmdbcopy): # Update byte counts slice.update(kernelhtbs[xid], live[xid]['_rspec']) - logger.verbose("bwmon: Saving %s slices in %s" % (slices.keys().__len__(),DB_FILE)) + logger.verbose("bwmon: Saving %s slices in %s" % (slices.keys().__len__(), DB_FILE)) f = open(DB_FILE, "w") pickle.dump((version, slices, deaddb), f) f.close() @@ -674,7 +669,7 @@ def getDefaults(nmdbcopy): ''' status = True # default slice - dfltslice = nmdbcopy.get(PLC_SLICE_PREFIX+"_default") + dfltslice = nmdbcopy.get(Config().PLC_SLICE_PREFIX+"_default") if dfltslice: if dfltslice['rspec']['net_max_rate'] == -1: allOff()