expects the 'interfaces' key in GetSlivers - review logs to always mention module
[nodemanager.git] / controller.py
index 264b3bb..2f2bc0c 100644 (file)
@@ -1,9 +1,13 @@
+# $Id$
+# $URL$
+
 """Delegate accounts are used to provide secure access to the XMLRPC API.  They are normal Unix accounts with a shell that tunnels XMLRPC requests to the API server."""
 
 import accounts
 import logger
 import tools
 """Delegate accounts are used to provide secure access to the XMLRPC API.  They are normal Unix accounts with a shell that tunnels XMLRPC requests to the API server."""
 
 import accounts
 import logger
 import tools
-
+from pwd import getpwnam
+from grp import getgrnam
 
 class Controller(accounts.Account):
     SHELL = '/usr/bin/forward_api_calls'  # tunneling shell
 
 class Controller(accounts.Account):
     SHELL = '/usr/bin/forward_api_calls'  # tunneling shell
@@ -12,11 +16,17 @@ class Controller(accounts.Account):
     @staticmethod
     def create(name, vref = None):
         add_shell(Controller.SHELL)
     @staticmethod
     def create(name, vref = None):
         add_shell(Controller.SHELL)
-        logger.log_call('/usr/sbin/useradd', '-p', '*', '-s', Controller.SHELL, name)
+        group = getgrnam("slices")[2]
+        logger.log_call('/usr/sbin/useradd', '-p', '*', '-g', str(group), '-s', Controller.SHELL, name)
 
     @staticmethod
     def destroy(name): logger.log_call('/usr/sbin/userdel', '-r', name)
 
 
     @staticmethod
     def destroy(name): logger.log_call('/usr/sbin/userdel', '-r', name)
 
+    def is_running(self):
+        logger.verbose("controller: is_running:  %s" % self.name)
+        return getpwnam(self.name)[6] == self.SHELL
+    
+
 def add_shell(shell):
     """Add <shell> to /etc/shells if it's not already there."""
     etc_shells = open('/etc/shells')
 def add_shell(shell):
     """Add <shell> to /etc/shells if it's not already there."""
     etc_shells = open('/etc/shells')