bugfix in child processes management - review initscript install
[nodemanager.git] / accounts.py
index 2afa333..4357b8b 100644 (file)
@@ -3,9 +3,9 @@
 
 """Functionality common to all account classes.
 
-Each subclass of Account must provide five methods: 
-  (*) create() and destroy(), which are static; 
-  (*) configure(), start(), and stop(), which are not.  
+Each subclass of Account must provide five methods:
+  (*) create() and destroy(), which are static;
+  (*) configure(), start(), and stop(), which are not.
 
 configure(), which takes a record as its only argument, does
 things like set up ssh keys. In addition, an Account subclass must
@@ -25,7 +25,6 @@ numbers of accounts, this may cause the NM process to run out of
 maximum stack size.
 """
 
-#import Queue
 import os
 import pwd, grp
 import threading
@@ -78,7 +77,6 @@ class Account:
         logger.verbose('accounts: Initing account %s'%rec['name'])
         self.name = rec['name']
         self.keys = ''
-        self.initscriptchanged = False
         self.configure(rec)
 
     @staticmethod
@@ -133,8 +131,10 @@ class Worker:
         self._acct = None  # the account object currently associated with this worker
 
     def ensure_created(self, rec, startingup = Startingup):
-        """Check account type is still valid.  If not, recreate sliver.  If still valid,
-        check if running and configure/start if not."""
+        """Check account type is still valid.  If not, recreate sliver.
+If still valid, check if running and configure/start if not."""
+        logger.log_data_in_file(rec,"/var/lib/nodemanager/%s.rec.txt"%rec['name'],
+                                'raw rec captured in ensure_created',logger.LOG_VERBOSE)
         curr_class = self._get_class()
         next_class = type_acct_class[rec['type']]
         if next_class != curr_class:
@@ -143,22 +143,19 @@ class Worker:
             try: next_class.create(self.name, rec['vref'])
             finally: create_sem.release()
         if not isinstance(self._acct, next_class): self._acct = next_class(rec)
-        if startingup or \
-          not self.is_running() or \
-          next_class != curr_class or \
-          self._acct.initscriptchanged:
+        if not self.is_running() or startingup or next_class != curr_class:
             self.start(rec)
         else: self._acct.configure(rec)
 
     def ensure_destroyed(self): self._destroy(self._get_class())
 
-    def start(self, rec, d = 0): 
+    def start(self, rec, d = 0):
         self._acct.configure(rec)
         self._acct.start(delay=d)
 
     def stop(self): self._acct.stop()
 
-    def is_running(self): 
+    def is_running(self):
         if (self._acct != None) and self._acct.is_running():
             status = True
         else: