class Account:
def __init__(self, rec):
- logger.verbose('accounts: Initing account %s'%rec['name'])
+ logger.verbose('account: Initing account %s'%rec['name'])
self.name = rec['name']
self.keys = ''
self.configure(rec)
def configure(self, rec):
"""Write <rec['keys']> to my authorized_keys file."""
- logger.verbose('accounts: configuring %s'%self.name)
+ logger.verbose('account: configuring %s'%self.name)
new_keys = rec['keys']
if new_keys != self.keys:
# get the unix account info
dot_ssh = os.path.join(pw_dir,'.ssh')
if not os.path.isdir(dot_ssh):
if not os.path.isdir(pw_dir):
- logger.verbose('accounts: WARNING: homedir %s does not exist for %s!'%(pw_dir,self.name))
+ logger.verbose('account: WARNING: homedir %s does not exist for %s!'%(pw_dir,self.name))
os.mkdir(pw_dir)
os.chown(pw_dir, uid, gid)
os.mkdir(dot_ssh)
# set self.keys to new_keys only when all of the above ops succeed
self.keys = new_keys
- logger.log('accounts: %s: installed ssh keys' % self.name)
+ logger.log('account: %s: installed ssh keys' % self.name)
def start(self, delay=0): pass
def stop(self): pass
try: next_class.create(self.name, rec)
finally: create_sem.release()
if not isinstance(self._acct, next_class): self._acct = next_class(rec)
- logger.verbose("accounts.ensure_created: %s, running=%r"%(self.name,self.is_running()))
+ logger.verbose("account.ensure_created: %s, running=%r"%(self.name,self.is_running()))
# reservation_alive is set on reervable nodes, and its value is a boolean
if 'reservation_alive' in rec:
status = True
else:
status = False
- logger.verbose("accounts: Worker(%s): is not running" % self.name)
+ logger.verbose("account: Worker(%s): is not running" % self.name)
return status
def _destroy(self, curr_class):
import xmlrpclib
import sys
-import accounts
import database
-import sliver_vs
-import ticket
import tools
from api_calls import *
import logger
def Mixed(a = None, b = None, c = None): pass
-import accounts
+import account
import logger
# TODO: These try/excepts are a hack to allow doc/DocBookLocal.py to
"""Create a non-PLC-instantiated sliver"""
rec = sliver_name
if rec['instantiation'] == 'delegated':
- accounts.get(rec['name']).ensure_created(rec)
+ account.get(rec['name']).ensure_created(rec)
logger.log("api_calls: Create %s"%rec['name'])
else:
raise Exception, "Only PLC can create non delegated slivers."
"""Destroy a non-PLC-instantiated sliver"""
rec = sliver_name
if rec['instantiation'] == 'delegated':
- accounts.get(rec['name']).ensure_destroyed()
+ account.get(rec['name']).ensure_destroyed()
logger.log("api_calls: Destroy %s"%rec['name'])
else:
raise Exception, "Only PLC can destroy non delegated slivers."
def Start(sliver_name):
"""Configure and start sliver."""
rec = sliver_name
- accounts.get(rec['name']).start(rec)
+ account.get(rec['name']).start(rec)
logger.log("api_calls: Start %s"%rec['name'])
def Stop(sliver_name):
"""Kill all processes belonging to the specified sliver"""
rec = sliver_name
- accounts.get(rec['name']).stop()
+ account.get(rec['name']).stop()
logger.log("api_calls: Stop %s"%rec['name'])
def ReCreate(sliver_name):
"""Stop, Destroy, Create, Start sliver in order to reinstall it."""
rec = sliver_name
- accounts.get(rec['name']).stop()
- accounts.get(rec['name']).ensure_created(rec)
- accounts.get(rec['name']).start(rec)
+ account.get(rec['name']).stop()
+ account.get(rec['name']).ensure_created(rec)
+ account.get(rec['name']).start(rec)
logger.log("api_calls: ReCreate %s"%rec['name'])
@export_to_docbook(roles=['nm-controller', 'self'],
import logger
import tools
-import accounts
+import account
-class Controller(accounts.Account):
+class Controller(account.Account):
SHELL = '/usr/bin/forward_api_calls' # tunneling shell
TYPE = 'controller.Controller'
import threading
import time
-import accounts
+import account
import coresched
import logger
import tools
# create and destroy accounts as needed
logger.verbose("database: sync : fetching accounts")
- existing_acct_names = accounts.all()
+ existing_acct_names = account.all()
for name in existing_acct_names:
if name not in self:
logger.verbose("database: sync : ensure_destroy'ing %s"%name)
- accounts.get(name).ensure_destroyed()
+ account.get(name).ensure_destroyed()
for name, rec in self.iteritems():
# protect this; if anything fails for a given sliver
# we still need the other ones to be handled
try:
- sliver = accounts.get(name)
+ sliver = account.get(name)
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':
import threading
import logger
-import accounts
+import account
import database
# there is an implicit assumption that this triggers after slicemanager
def is_running (self, slicename):
try:
- return accounts.get(slicename).is_running()
+ return account.get(slicename).is_running()
except:
return False
- # quick an d dirty - this does not obey the accounts/sliver_vs/controller hierarchy
+ # quick an d dirty - this does not obey the account/sliver_vs/controller hierarchy
def suspend_slice(self, slicename):
logger.log('reservation: Suspending slice %s'%(slicename))
self.debug_box('before suspending',slicename)
- worker=accounts.get(slicename)
+ worker=account.get(slicename)
try:
logger.log("reservation: Located worker object %r"%worker)
worker.stop()
def restart_slice(self, slicename):
logger.log('reservation: Restarting slice %s'%(slicename))
self.debug_box('before restarting',slicename)
- worker=accounts.get(slicename)
+ worker=account.get(slicename)
try:
# dig in self.data to retrieve corresponding rec
slivers = [ sliver for sliver in self.data['slivers'] if sliver['name']==slicename ]
setup(
py_modules=[
- 'accounts',
+ 'account',
'api',
'api_calls',
'bwmon',
# the util-vserver-pl module
import vserver
-import accounts
+import account
import logger
import tools
DEFAULT_ALLOCATION["%s_soft"%rlim]=KEEP_LIMIT
DEFAULT_ALLOCATION["%s_hard"%rlim]=KEEP_LIMIT
-class Sliver_VS(accounts.Account, vserver.VServer):
+class Sliver_VS(account.Account, vserver.VServer):
"""This class wraps vserver.VServer to make its interface closer to what we need."""
SHELL = '/bin/vsh'
#self.initscriptchanged = True
self.refresh_slice_vinit()
- accounts.Account.configure(self, rec) # install ssh keys
+ account.Account.configure(self, rec) # install ssh keys
# unconditionnally install and enable the generic vinit script
# mimicking chkconfig for enabling the generic vinit script
import logger
import api, api_calls
import database
-import accounts
+import account
import controller
import sliver_vs
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_vs.Sliver_VS)
+ account.register_class(controller.Controller)
database.start()
api_calls.deliver_ticket = deliver_ticket
api.start()