import logger
import api, api_calls
import database
-import accounts
+import account
import controller
-import sliver_vs
+import sliver_lxc
try: from bwlimit import bwmin, bwmax
except ImportError: bwmin, bwmax = 8, 1000*1000*1000
# CPU parameters
'cpu_pct': 0, # percent CPU reserved
'cpu_share': 1, # proportional share
+ 'cpu_cores': "0b", # reserved cpu cores <num_cores>[b]
# bandwidth parameters
'net_min_rate': bwmin / 1000, # kbps
'net_max_rate': bwmax / 1000, # kbps
if is_system_sliver(sliver):
sliver['reservation_alive']=True
continue
-
+
# regular slivers
if not active_lease:
# with 'idle_or_shared', just let the field out, behave like a shared node
if network['is_primary'] and network['bwlimit'] is not None:
DEFAULT_ALLOCATION['net_max_rate'] = network['bwlimit'] / 1000
- # Take initscripts (global) returned by API, make dict
+ # 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')
return
- initscripts = {}
- for is_rec in data['initscripts']:
- logger.verbose("slivermanager: initscript: %s" % is_rec['name'])
- initscripts[str(is_rec['name'])] = is_rec['script']
+ for initscript_rec in data['initscripts']:
+ logger.verbose("slivermanager: initscript: %s" % initscript_rec['name'])
+ iscripts_hash[str(initscript_rec['name'])] = initscript_rec['script']
adjustReservedSlivers (data)
for sliver in data['slivers']:
if rec['instantiation'].lower() == 'nm-controller':
rec.setdefault('type', attributes.get('type', 'controller.Controller'))
else:
- rec.setdefault('type', attributes.get('type', 'sliver.VServer'))
+ rec.setdefault('type', attributes.get('type', 'sliver.LXC'))
# set the vserver reference. If none, set to default.
rec.setdefault('vref', attributes.get('vref', 'default'))
- # set initscripts. first check if exists, if not, leave empty.
- is_name = attributes.get('initscript')
- if is_name is not None and is_name in initscripts:
- rec['initscript'] = initscripts[is_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','')
+ if iscode:
+ rec['initscript']=iscode
else:
- rec['initscript'] = ''
+ isname = attributes.get('initscript')
+ if isname is not None and isname in iscripts_hash:
+ rec['initscript'] = iscripts_hash[isname]
+ else:
+ rec['initscript'] = ''
# set delegations, if none, set empty
rec.setdefault('delegations', attributes.get("delegations", []))
for resname, default_amount in DEFAULT_ALLOCATION.iteritems():
try:
t = type(default_amount)
- amt = t.__new__(t, attributes[resname])
- except (KeyError, ValueError): amt = default_amount
- rspec[resname] = amt
+ amount = t.__new__(t, attributes[resname])
+ except (KeyError, ValueError): amount = default_amount
+ rspec[resname] = amount
# add in sysctl attributes into the rspec
for key in 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
+
database.db.deliver_record(rec)
if fullupdate: database.db.set_min_timestamp(data['timestamp'])
# slivers are created here.
return GetSlivers(data, fullupdate=False)
def start():
- for resname, default_amount in sliver_vs.DEFAULT_ALLOCATION.iteritems():
- DEFAULT_ALLOCATION[resname]=default_amount
+ # No default allocation values for LXC yet, think if its necessary given
+ # that they are also default allocation values in this module
+ #for resname, default_amount in sliver_vs.DEFAULT_ALLOCATION.iteritems():
+ # DEFAULT_ALLOCATION[resname]=default_amount
- accounts.register_class(sliver_vs.Sliver_VS)
- accounts.register_class(controller.Controller)
+ account.register_class(sliver_lxc.Sliver_LXC)
+ account.register_class(controller.Controller)
database.start()
api_calls.deliver_ticket = deliver_ticket
api.start()