import sys
-import cPickle
+import pickle
import threading
import time
'net_i2_max_rate': 8,
'net_share': 1,
}
-LOANABLE_RESOURCES = MINIMUM_ALLOCATION.keys()
+LOANABLE_RESOURCES = list(MINIMUM_ALLOCATION.keys())
DB_FILE = '/var/lib/nodemanager/database.pickle'
* and variable resid_rspec, which is the amount of resources the sliver
has after giving out loans but not receiving any."""
slivers = {}
- for name, rec in self.iteritems():
+ for name, rec in self.items():
if 'rspec' in rec:
rec['_rspec'] = rec['rspec'].copy()
slivers[name] = rec
- for rec in slivers.itervalues():
+ for rec in slivers.values():
eff_rspec = rec['_rspec']
resid_rspec = rec['rspec'].copy()
for target, resource_name, amount in rec.get('_loans', []):
old_rec = self.get(name)
if old_rec == None: self[name] = rec
elif rec['timestamp'] > old_rec['timestamp']:
- for key in old_rec.keys():
+ for key in list(old_rec.keys()):
if not key.startswith('_'): del old_rec[key]
old_rec.update(rec)
We use it to determine if a record is stale.
This method should be called whenever new GetSlivers() data comes in."""
self._min_timestamp = ts
- for name, rec in self.items():
+ for name, rec in list(self.items()):
if rec['timestamp'] < ts: del self[name]
def sync(self):
# delete expired records
now = time.time()
- for name, rec in self.items():
+ for name, rec in list(self.items()):
if rec.get('expires', now) < now: del self[name]
self._compute_effective_rspecs()
if name not in self:
logger.verbose("database: sync : ensure_destroy'ing %s"%name)
account.get(name).ensure_destroyed()
- for name, rec in self.iteritems():
+ for name, rec in self.items():
# protect this; if anything fails for a given sliver
# we still need the other ones to be handled
try:
sliver = account.get(name)
- logger.verbose("database: sync : looping on %s (shell account class from pwd %s)" %(name,sliver._get_class()))
+ logger.verbose("database: sync : looping on %s (shell account class from pwd %s)" %(name, sliver._get_class()))
# Make sure we refresh accounts that are running
if rec['instantiation'] == 'plc-instantiated':
logger.verbose ("database: sync : ensure_create'ing 'instantiation' sliver %s"%name)
except SystemExit as e:
sys.exit(e)
except:
- logger.log_exc("database: sync failed to handle sliver",name=name)
+ logger.log_exc("database: sync failed to handle sliver", name=name)
# Wake up bwmom to update limits.
bwmon.lock.set()
while True:
db_lock.acquire()
while not dump_requested: db_cond.wait()
- db_pickle = cPickle.dumps(db, cPickle.HIGHEST_PROTOCOL)
+ db_pickle = pickle.dumps(db, pickle.HIGHEST_PROTOCOL)
dump_requested = False
db_lock.release()
try:
global db
try:
f = open(DB_FILE)
- try: db = cPickle.load(f)
+ try: db = pickle.load(f)
finally: f.close()
except IOError:
logger.log ("database: Could not load %s -- starting from a fresh database"%DB_FILE)