--- /dev/null
+import accounts
+import logger
+import tools
+
+
+class Delegate:
+ SHELL = '/bin/forward_api_calls'
+ TYPE = 'delegate'
+
+ def __init__(self, name): self.name = name
+
+ @staticmethod
+ def create(name):
+ add_shell(Delegate.SHELL)
+ logger.log_call('/usr/sbin/useradd',
+ '-p', '*', '-s', Delegate.SHELL, name)
+
+ @staticmethod
+ def destroy(name): logger.log_call('/usr/sbin/userdel', '-r', name)
+
+ def configure(self, rec): accounts.install_ssh_keys(rec)
+ def start(self): pass
+ def stop(self): pass
+
+
+def add_shell(shell):
+ """Add <shell> to /etc/shells if it's not already there."""
+ etc_shells = open('/etc/shells')
+ valid_shells = etc_shells.read().split()
+ etc_shells.close()
+ if shell not in valid_shells:
+ etc_shells = open('/etc/shells', 'a')
+ print >>etc_shells, shell
+ etc_shells.close()