responsible for handling delegation accounts.
"""
-import bwlimit
+try: from bwlimit import bwmin, bwmax
+except ImportError: bwmin, bwmax = 8, 1000*1000*1000
import accounts
import api
import database
import delegate
import logger
import sliver_vs
-import sioc
DEFAULT_ALLOCATION = {
'cpu_min': 0, # ms/s
'cpu_share': 32, # proportional share
# bandwidth parameters
- 'net_min': bwlimit.bwmin, # bps
- 'net_max': bwlimit.bwmax, # bps
+ 'net_min': bwmin, # bps
+ 'net_max': bwmax, # bps
'net_share': 1, # proportional share
# bandwidth parameters over routes exempt from node bandwidth limits
- 'net2_min': bwlimit.bwmin, # bps
- 'net2_max': bwlimit.bwmax, # bps
+ 'net2_min': bwmin, # bps
+ 'net2_max': bwmax, # bps
'net2_share': 1, # proportional share
'disk_max': 5000000 # bytes
}
@database.synchronized
-def GetSlivers_callback(data, fullupdate=True):
- """This function has two purposes. One, convert GetSlivers() data into a more convenient format. Two, even if no updates are coming in, use the GetSlivers() heartbeat as a cue to scan for expired slivers."""
+def GetSlivers(data, fullupdate=True):
+ """This function has two purposes. One, convert GetSlivers() data
+ into a more convenient format. Two, even if no updates are coming
+ in, use the GetSlivers() heartbeat as a cue to scan for expired
+ slivers."""
node_id = None
try:
finally: f.close()
except: logger.log_exc()
- # query running network interfaces
- devs = sioc.gifconf()
- ips = dict(zip(devs.values(), devs.keys()))
- macs = {}
- for dev in devs:
- macs[sioc.gifhwaddr(dev).lower()] = dev
-
for d in data:
if d['node_id'] != node_id: continue
-
- # XXX Exempt Internet2 destinations from node bwlimits
- # bwlimit.exempt_init('Internet2', internet2_ips)
-
- for network in d['networks']:
- if macs.has_key(network['mac'].lower()):
- dev = macs[network['mac'].lower()]
- elif ips.has_key(network['ip']):
- dev = ips[network['ip']]
- else:
- logger.log('%s: no such interface with address %s/%s' % (self.name, network['ip'], network['mac']))
- continue
-
- try:
- old_bwlimit = bwlimit.get_bwcap(dev)
- except:
- old_bwlimit = None
-
- if network['bwlimit'] is None:
- new_bwlimit = bwlimit.bwmax
- else:
- new_bwlimit = network['bwlimit']
-
- if old_bwlimit != new_bwlimit:
- # reinitialize bandwidth limits
- bwlimit.init(dev, new_bwlimit)
-
- # XXX this should trigger an rspec refresh in case
- # some previously invalid sliver bwlimit is now valid
- # again, or vice-versa.
-
for sliver in d['slivers']:
rec = sliver.copy()
rec.setdefault('timestamp', d['timestamp'])