responsible for handling delegation accounts.
"""
-import string,re
+import string
+import re
import time
import logger
sliver_class_to_register = sliver_lxc.Sliver_LXC
sliver_password_shell = sliver_lxc.Sliver_LXC.SHELL
except:
- import sliver_vs
- implementation='vs'
- sliver_default_type='sliver.VServer'
- sliver_class_to_register = sliver_vs.Sliver_VS
- sliver_password_shell = sliver_vs.Sliver_VS.SHELL
+ try:
+ import sliver_vs
+ implementation='vs'
+ sliver_default_type='sliver.VServer'
+ sliver_class_to_register = sliver_vs.Sliver_VS
+ sliver_password_shell = sliver_vs.Sliver_VS.SHELL
+ except:
+ logger.log("Could not import either sliver_lxc or sliver_vs - bailing out")
+ exit(1)
# just being safe
-try : from plnode.bwlimit import bwmin, bwmax
-except: bwmin, bwmax = 8, 1000*1000*1000
+try:
+ from plnode.bwlimit import bwmin, bwmax
+except:
+ bwmin, bwmax = 8, 1000*1000*1000
-priority=10
+priority = 10
DEFAULT_ALLOCATION = {
'cpu_pct': 0, # percent CPU reserved
'cpu_share': 1, # proportional share
'cpu_cores': "0b", # reserved cpu cores <num_cores>[b]
+ 'cpu_freezable': 0, # freeze processes if cpu_cores is 0
# bandwidth parameters
'net_min_rate': bwmin / 1000, # kbps
'net_max_rate': bwmax / 1000, # kbps
slivers."""
logger.verbose("slivermanager: Entering GetSlivers with fullupdate=%r"%fullupdate)
- for key in data.keys():
+ for key in list(data.keys()):
logger.verbose('slivermanager: GetSlivers key : ' + key)
node_id = None
try:
f = open('/etc/planetlab/node_id')
- try: node_id = int(f.read())
- finally: f.close()
- except: logger.log_exc("slivermanager: GetSlivers failed to read /etc/planetlab/node_id")
+ try:
+ node_id = int(f.read())
+ finally:
+ f.close()
+ except:
+ logger.log_exc("slivermanager: GetSlivers failed to read /etc/planetlab/node_id")
- if data.has_key('node_id') and data['node_id'] != node_id: return
+ if 'node_id' in data and data['node_id'] != node_id: return
- if data.has_key('networks'):
+ if 'networks' in data:
for network in data['networks']:
if network['is_primary'] and network['bwlimit'] is not None:
DEFAULT_ALLOCATION['net_max_rate'] = network['bwlimit'] / 1000
# Take initscripts (global) returned by API, build a hash scriptname->code
iscripts_hash = {}
if 'initscripts' not in data:
- logger.log_missing_data("slivermanager.GetSlivers",'initscripts')
+ logger.log_missing_data("slivermanager.GetSlivers", 'initscripts')
return
for initscript_rec in data['initscripts']:
logger.verbose("slivermanager: initscript: %s" % initscript_rec['name'])
### set initscripts; set empty rec['initscript'] if not
# if tag 'initscript_code' is set, that's what we use
- iscode = attributes.get('initscript_code','')
+ iscode = attributes.get('initscript_code', '')
if iscode:
- rec['initscript']=iscode
+ rec['initscript'] = iscode
else:
isname = attributes.get('initscript')
if isname is not None and isname in iscripts_hash:
# extract the implied rspec
rspec = {}
rec['rspec'] = rspec
- for resname, default_amount in DEFAULT_ALLOCATION.iteritems():
+ for resname, default_amount in DEFAULT_ALLOCATION.items():
try:
t = type(default_amount)
amount = t.__new__(t, attributes[resname])
rspec[resname] = amount
# add in sysctl attributes into the rspec
- for key in attributes.keys():
+ for key in list(attributes.keys()):
if key.find("sysctl.") == 0:
rspec[key] = attributes[key]
# also export tags in rspec so they make it to the sliver_vs.start call
- rspec['tags']=attributes
+ rspec['tags'] = attributes
database.db.deliver_record(rec)
- if fullupdate: database.db.set_min_timestamp(data['timestamp'])
+ if fullupdate:
+ database.db.set_min_timestamp(data['timestamp'])
# slivers are created here.
database.db.sync()
# No default allocation values for LXC yet, think if its necessary given
# that they are also default allocation values in this module
if implementation == 'vs':
- for resname, default_amount in sliver_vs.DEFAULT_ALLOCATION.iteritems():
+ for resname, default_amount in sliver_vs.DEFAULT_ALLOCATION.items():
DEFAULT_ALLOCATION[resname]=default_amount
account.register_class(sliver_class_to_register)