- for sliver in db.keys():
- live[bwlimit.get_xid(sliver)] = sliver
-
- # Setup new slices.
- # live.xids - runing(slices).xids = new.xids
- newslicesxids = []
- for plcxid in live.keys():
- if plcxid not in slices.keys():
- newslicesxids.append(plcxid)
- #newslicesxids = Set(live.keys()) - Set(slices.keys())
- for newslicexid in newslicesxids:
+ # db keys on name, bwmon keys on xid. db doesnt have xid either.
+ for plcSliver in nmdbcopy.keys():
+ live[bwlimit.get_xid(plcSliver)] = nmdbcopy[plcSliver]
+
+ logger.log("bwmon: Found %s instantiated slices" % live.keys().__len__(), 2)
+ logger.log("bwmon: Found %s slices in dat file" % slices.values().__len__(), 2)
+
+ # Get actual running values from tc.
+ # Update slice totals and bandwidth. {xid: {values}}
+ kernelhtbs = gethtbs(root_xid, default_xid)
+ logger.log("bwmon: Found %s running HTBs" % kernelhtbs.keys().__len__(), 2)
+
+ # The dat file has HTBs for slices, but the HTBs aren't running
+ nohtbslices = Set(slices.keys()) - Set(kernelhtbs.keys())
+ logger.log( "bwmon: Found %s slices in dat but not running." % nohtbslices.__len__(), 2)
+ # Reset tc counts.
+ for nohtbslice in nohtbslices:
+ if live.has_key(nohtbslice):
+ slices[nohtbslice].reset( {}, live[nohtbslice]['_rspec'] )
+ else:
+ logger.log("bwmon: Removing abondoned slice %s from dat." % nohtbslice)
+ del slices[nohtbslice]
+
+ # The dat file doesnt have HTB for the slice but kern has HTB
+ slicesnodat = Set(kernelhtbs.keys()) - Set(slices.keys())
+ logger.log( "bwmon: Found %s slices with HTBs but not in dat" % slicesnodat.__len__(), 2)
+ for slicenodat in slicesnodat:
+ # But slice is running
+ if live.has_key(slicenodat):
+ # init the slice. which means start accounting over since kernel
+ # htb was already there.
+ slices[slicenodat] = Slice(slicenodat,
+ live[slicenodat]['name'],
+ live[slicenodat]['_rspec'])
+
+ # Get new slices.
+ # Slices in GetSlivers but not running HTBs
+ newslicesxids = Set(live.keys()) - Set(kernelhtbs.keys())
+ logger.log("bwmon: Found %s new slices" % newslicesxids.__len__(), 2)
+
+ # Setup new slices
+ for newslice in newslicesxids: