reguire gnupg1 on f>=31; sense the system to use gpg1 when installed
[nodemanager.git] / initscript.py
index 8e6e4a3..392b66b 100644 (file)
@@ -18,7 +18,7 @@ class Initscript:
         self.initscript = new_initscript
         code = self.initscript
         sliver_initscript = "/vservers/%s/etc/rc.d/init.d/vinit.slice" % self.name
-        if tools.replace_file_with_string(sliver_initscript, code, remove_if_empty=True, chmod=0755):
+        if tools.replace_file_with_string(sliver_initscript, code, remove_if_empty=True, chmod=0o755):
             if code:
                 logger.log("Initscript: %s: Installed new initscript in %s" % (self.name, sliver_initscript))
                 if self.is_running():
@@ -29,6 +29,7 @@ class Initscript:
                     self.rerun_slice_vinit()
             else:
                 logger.log("Initscript: %s: Removed obsolete initscript %s" % (self.name, sliver_initscript))
+
     def install_and_enable_vinit(self):
         "prepare sliver rootfs init and systemd so the vinit service kicks in"
         # the fact that systemd attempts to run old-style services 
@@ -54,13 +55,14 @@ class Initscript:
         enable_link = "/vservers/%s/etc/rc.d/rc3.d/S99vinit" % self.name
         enable_target = "../init.d/vinit"
         # install in sliver
-        code = file(vinit_source).read()
-        if tools.replace_file_with_string(vinit_script, code, chmod=0755):
+        with open(vinit_source) as f:
+            code = f.read()
+        if tools.replace_file_with_string(vinit_script, code, chmod=0o755):
             logger.log("Initscript: %s: installed generic vinit rc script" % self.name)
         # create symlink for runlevel 3
         if not os.path.islink(enable_link):
             try:
-                logger.log("Initscript: %s: creating runlevel3 symlink %s" % (self.name,enable_link))
+                logger.log("Initscript: %s: creating runlevel3 symlink %s" % (self.name, enable_link))
                 os.symlink(enable_target, enable_link)
             except:
                 logger.log_exc("Initscript failed to create runlevel3 symlink %s" % enable_link, name=self.name)
@@ -70,13 +72,32 @@ class Initscript:
         """
         suitable for systemd-based VMs
         """
+
+        ##########
+        ########## initscripts : current status - march 2015
+        ##########
+        #
+        # the initscripts business worked smoothly up to f18 inclusive
+        # with f20 and the apparition of machinectl, things started to
+        # behave really weird
+        #
+        # so starting with f20, after having tried pretty hard to get this right,
+        # but to no success obviously, and in order to stay on the safe side
+        # of the force, I am turning off the initscript machinery completely
+        # that is to say: the vinit.service does not get installed at all
+        # 
+        if os.path.isfile('/usr/bin/machinectl'):
+            logger.log("WARNING: initscripts are not supported anymore in nodes that have machinectl")
+            return
+
         vinit_source = "/usr/share/NodeManager/sliver-systemd/vinit.service"
         vinit_unit_file = "/vservers/%s/usr/lib/systemd/system/vinit.service" % self.name
         enable_link = "/vservers/%s/etc/systemd/system/multi-user.target.wants/vinit.service" % self.name
         enable_target = "/usr/lib/systemd/system/vinit.service"
         # install in sliver
-        code = file(vinit_source).read()
-        if tools.replace_file_with_string(vinit_unit_file, code, chmod=0755):
+        with open(vinit_source) as f:
+            code = f.read()
+        if tools.replace_file_with_string(vinit_unit_file, code, chmod=0o755):
             logger.log("Initscript: %s: installed vinit.service unit file" % self.name)
         # create symlink for enabling this unit
         if not os.path.islink(enable_link):
@@ -84,4 +105,4 @@ class Initscript:
                 logger.log("Initscript: %s: creating enabling symlink %s" % (self.name, enable_link))
                 os.symlink(enable_target, enable_link)
             except:
-                logger.log_exc("Initscript failed to create enabling symlink %s" % enable_link,name=name)
+                logger.log_exc("Initscript failed to create enabling symlink %s" % enable_link, name=name)