Douglas Schilling Landgraf has uploaded a new change for review.

Change subject: autoinstall: Drop reading /var/log/message
......................................................................

autoinstall: Drop reading /var/log/message

This patch replaces the schema of reading kargs
params from /var/log/messages in favor of use
/etc/default/ovirt.  All karg parms used are
stored in /etc/default/ovirt with the prefix OVIRT_.

Change-Id: Icc4e25584947b16916169a51bc2ca83d05ba7562
Signed-off-by: Douglas Schilling Landgraf <dougsl...@redhat.com>
---
M autoinstall/ovirt-node-plugin-vdsm-autoreg
M src/config.py.in
2 files changed, 52 insertions(+), 81 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-node-plugin-vdsm 
refs/changes/34/42434/1

diff --git a/autoinstall/ovirt-node-plugin-vdsm-autoreg 
b/autoinstall/ovirt-node-plugin-vdsm-autoreg
old mode 100644
new mode 100755
index a012fac..5abb903
--- a/autoinstall/ovirt-node-plugin-vdsm-autoreg
+++ b/autoinstall/ovirt-node-plugin-vdsm-autoreg
@@ -22,12 +22,12 @@
 
 import ovirtnode.ovirtfunctions as _functions
 
-from ovirt.node import log, utils
+from ovirt.node import utils
 from ovirt.node.config.defaults import SSH
-from ovirt.node.setup.vdsm import engine_page
-from ovirt.node.utils import system
+from ovirt.node.setup.vdsm import engine_page, config
 
 from systemd import journal
+
 
 class AutoRegister(object):
 
@@ -38,7 +38,6 @@
         # doesn't check CA cert
         self.vdsm_tool_cmd = "vdsm-tool register --check-fqdn False "
 
-        self.kargs = None
         self.mserver = None
         self.mserver_port = None
 
@@ -54,69 +53,47 @@
         )
         return log
 
-    def _is_karg_set(self, key, debug=True):
-        """
-        Check if the key was used as kernel argument
-
-        Arguments:
-        key   -- The key to look for
-        debug -- Debugging prints
-
-        Returns: the key or False
-        """
-        if key in self.kargs and len(self.kargs[key]) > 0:
-            if debug:
-                self.logger.info("autoinstall: kernel argument "
-                                 "[%s] is set [%s]" % (key, self.kargs[key]))
-            return self.kargs[key]
-
-        return False
-
     def is_node_registered(self):
         """
-        Validate OVIRT_NODE_AUTO_REGISTER in /etc/default/ovirt
+        Validate OVIRT_NODE_REGISTER in /etc/default/ovirt
         if already set, no need to execute auto-register
 
         Return True or False
         """
-        self.logger.info("== autoinstall: validating /etc/default/ovirt")
+        self.logger.info("== autoinstall: validating {f}".format(
+            f=config.DEFAULT_OVIRT_FILE)
+        )
 
-        with open('/etc/default/ovirt', 'r') as f:
-            for line in f:
-                if "OVIRT_NODE_AUTO_REGISTER=True" in line:
-                    return True
+        if utils.AugeasWrapper().match(
+            '/files/etc/default/ovirt/OVIRT_NODE_REGISTER'
+        ):
+            return True
 
         return False
 
-    def get_kargs(self):
+    def get_key(self, key):
         """
-        Find in the boot kernel arguments from /var/log/messages,
-        the autoinstall keys that start with "management_"
-
-        Return a dict with the keys
+        Check if key is available in /etc/default/ovirt
         """
-        self.logger.info("== autoinstall: validating kernel arguments ==")
-        key_word_karg = "Command line"
-        with open('/var/log/messages', 'r') as f:
-            for line in f:
-                if key_word_karg in line and "management_server" in line:
-                    self.kargs = system.kernel_cmdline_arguments(
-                        line.split(key_word_karg)[1]
-                    )
-                    self.logger.info("autoinstall kargs: {k}".format(
-                        k=self.kargs)
-                    )
-                    break
+        node_entry = "/files{p}/{k}".format(p=config.DEFAULT_OVIRT_FILE,
+                                            k=key)
 
-        return self.kargs
+        aug = utils.AugeasWrapper()
+        # Autoinstall can save "" or "None" and even None type, check all
+        if aug.get(node_entry) and \
+                aug.get(node_entry) != "\"None\"" and \
+                aug.get(node_entry) is not None:
+            return aug.get(node_entry)
+
+        return False
 
     def get_management_server(self):
         """
-        If management_server exist in the kernel argument
+        If OVIRT_MANAGEMENT_SERVER exists in /etc/default/ovirt
         add it to the auto-register script call
         """
-        if self._is_karg_set("management_server"):
-            self.mserver = self.kargs["management_server"]
+        self.mserver = self.get_key("OVIRT_MANAGEMENT_SERVER")
+        if self.mserver:
             self.vdsm_tool_cmd += "--engine-fqdn {s} ".format(
                                   s=self.mserver)
         else:
@@ -124,48 +101,40 @@
 
     def get_management_server_port(self):
         """
-        If management_server_port exist in the kernel argument
+        If OVIRT_MANAGEMENT_SERVER_PORT exists in /etc/default/ovirt
         add it to the auto-register script call
         """
-        if self._is_karg_set("management_server_port"):
-            if not self._is_karg_set("management_server", debug=False):
+        self.mserver_port = self.get_key("OVIRT_MANAGEMENT_PORT")
+
+        if self.mserver_port:
+            if not self.get_key("OVIRT_MANAGEMENT_SERVER"):
                 raise RuntimeError("management_server_port requires"
                                    " to set management_server key too!")
             else:
-                self.mserver_port = self.kargs["management_server_port"]
                 self.vdsm_tool_cmd += "--engine-https-port {p} ".format(
                                       p=self.mserver_port)
 
     def get_management_server_fingerprint(self):
         """
-        If management_server_fingerprint exist in the kernel argument
+        If OVIRT_MANAGEMENT_SERVER_FINGERPRINT exists in /etc/default/ovirt
         add it to the auto-register script call
         """
-        if self._is_karg_set("management_server_fingerprint"):
-            if not self._is_karg_set("management_server", debug=False):
+        fprint = self.get_key("OVIRT_MANAGEMENT_SERVER_FINGERPRINT")
+
+        if fprint:
+            if not self.get_key("OVIRT_MANAGEMENT_SERVER"):
                 raise RuntimeError("management_server_fingerprint requires"
                                    " to set management_server key too!")
+
             else:
-                self.vdsm_tool_cmd += "--fingerprint {f}".format(
-                    f=self.kargs["management_server_fingerprint"]
-                )
+                self.vdsm_tool_cmd += "--fingerprint {f}".format(f=fprint)
 
     def write_changes(self):
         """
-        Write OVIRT_MANAGEMENT and OVIRT_MANAGEMENT_PORT
+        Write OVIRT_NODE_REGISTER
         """
-        # Updating OVIRT_MANAGEMENT_SERVER in /etc/default/ovirt
-
-        if self.mserver_port is not None:
-            engine_page.VDSM().update(server=self.mserver,
-                                      port=self.mserver_port,
-                                      cert_path="/etc/pki/ovirt-engine/ca.pem")
-        else:
-            engine_page.VDSM().update(server=self.mserver,
-                                      cert_path="/etc/pki/ovirt-engine/ca.pem")
-
-        with open('/etc/default/ovirt', 'a') as f:
-            f.write("OVIRT_NODE_AUTO_REGISTER=True")
+        with open(config.DEFAULT_OVIRT_FILE, 'a') as f:
+            f.write("OVIRT_NODE_REGISTER=True")
 
     def pass_sysadm(self):
         """
@@ -175,18 +144,16 @@
         Note: To generate password to use with rhevm_admin_password and
               engine_admin_password you must execute: openssl passwd -1
         """
-        admin_pwd = None
-        if self._is_karg_set("rhevm_admin_password"):
-            admin_pwd = "rhevm_admin_password"
+        admin_pwd = self.get_key("OVIRT_RHEVM_ADMIN_PASSWORD")
 
-        if self._is_karg_set("engine_admin_password"):
-            admin_pwd = "engine_admin_password"
+        if not admin_pwd:
+            admin_pwd = self.get_key("OVIRT_ENGINE_ADMIN_PASSWORD")
 
         if admin_pwd:
             _functions.unmount_config("/etc/shadow")
             _functions.unmount_config("/etc/passwd")
             engine_page.execute_cmd("/usr/sbin/usermod -p %s root" %
-                                    self.kargs[admin_pwd])
+                                    admin_pwd)
 
             engine_page.execute_cmd("chage -E -1 root")
             utils.fs.Config().persist("/etc/shadow")
@@ -213,9 +180,12 @@
     reg.logger.info("=======================================")
 
     if not reg.is_node_registered():
-        reg.logger.info("OVIRT_NODE_AUTO_REGISTER is NOT set, "
+        reg.logger.info("OVIRT_NODE_REGISTER is NOT set, "
                         "starting auto-register..")
-        if reg.get_kargs() is None:
+
+        if not utils.AugeasWrapper().match(
+            '/files/etc/default/ovirt/OVIRT_MANAGEMENT_SERVER'
+        ):
             reg.logger.info(
                 "autoinstall: Not found management_server, "
                 "management_server_port or "
@@ -225,7 +195,7 @@
             return 0
     else:
         reg.logger.info(
-            "No need to auto-register, OVIRT_NODE_AUTO_REGISTER is set!"
+            "No need to auto-register, OVIRT_NODE_REGISTER is set!"
         )
         return 0
 
diff --git a/src/config.py.in b/src/config.py.in
index eb7d5a5..947ec77 100644
--- a/src/config.py.in
+++ b/src/config.py.in
@@ -20,3 +20,4 @@
 PACKAGE_VERSION = '@PACKAGE_VERSION@'
 engine_name = '@ENGINENAME@'
 ENGINE_PORT = '443'
+DEFAULT_OVIRT_FILE = '/etc/default/ovirt'


-- 
To view, visit https://gerrit.ovirt.org/42434
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icc4e25584947b16916169a51bc2ca83d05ba7562
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-node-plugin-vdsm
Gerrit-Branch: master
Gerrit-Owner: Douglas Schilling Landgraf <dougsl...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to