Sandro Bonazzola has uploaded a new change for review.

Change subject: packaging: setup: added postinstall file creation
......................................................................

packaging: setup: added postinstall file creation

Added a plugin for engine-setup-2 that creates a
postinstall file with answered questions so they
can be avoided on second run / upgrade.

Change-Id: I3516d6b9b29d50844835bb67c0a4a3f5485aa21f
Signed-off-by: Sandro Bonazzola <[email protected]>
---
M packaging/setup/ovirt_engine_setup/constants.py
M packaging/setup/plugins/ovirt-engine-setup/core/__init__.py
A packaging/setup/plugins/ovirt-engine-setup/core/postinstall.py
3 files changed, 104 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/57/15957/1

diff --git a/packaging/setup/ovirt_engine_setup/constants.py 
b/packaging/setup/ovirt_engine_setup/constants.py
index cb301b5..8cbbd9b 100644
--- a/packaging/setup/ovirt_engine_setup/constants.py
+++ b/packaging/setup/ovirt_engine_setup/constants.py
@@ -47,6 +47,7 @@
     answerfile=False,
     summary=False,
     description=None,
+    postinstallfile=False,
 ):
     class decorator(classproperty):
         def __init__(self, o):
@@ -55,6 +56,7 @@
                 answerfile=answerfile,
                 summary=summary,
                 description=description,
+                postinstallfile=postinstallfile
             )
     return decorator
 
@@ -287,6 +289,10 @@
     OVIRT_ENGINE_UNINSTALL_DIR = os.path.join(
         OVIRT_ENGINE_SYSCONFDIR,
         'uninstall.d'
+    )
+    OVIRT_SETUP_POST_INSTALL_CONFIG = os.path.join(
+        '%s.d' % OVIRT_OVIRT_SETUP_CONFIG_FILE,
+        '20-setup-ovirt-post.conf'
     )
 
     ISO_DOMAIN_DEFAULT_NFS_MOUNT_POINT = os.path.join(
@@ -530,6 +536,7 @@
     REGISTER_UNINSTALL_GROUPS = 'OVESETUP_CORE/registerUninstallGroups'
     CONFIRM_UNINSTALL_GROUPS = 'OVESETUP_CORE/confirmUninstallGroups'
     UPGRADE_SUPPORTED_VERSIONS = 'OVESETUP_CORE/upgradeSupportedVersions'
+    OVIRT_SETUP_POST_INSTALL_CONFIG = 'OVESETUP_CORE/postinstallFile'
 
     @osetupattrs(
         answerfile=True,
diff --git a/packaging/setup/plugins/ovirt-engine-setup/core/__init__.py 
b/packaging/setup/plugins/ovirt-engine-setup/core/__init__.py
index 1dac121..124d003 100644
--- a/packaging/setup/plugins/ovirt-engine-setup/core/__init__.py
+++ b/packaging/setup/plugins/ovirt-engine-setup/core/__init__.py
@@ -24,12 +24,14 @@
 
 from . import misc
 from . import uninstall
+from . import postinstall
 
 
 @util.export
 def createPlugins(context):
     misc.Plugin(context=context)
     uninstall.Plugin(context=context)
+    postinstall.Plugin(context=context)
 
 
 # vim: expandtab tabstop=4 shiftwidth=4
diff --git a/packaging/setup/plugins/ovirt-engine-setup/core/postinstall.py 
b/packaging/setup/plugins/ovirt-engine-setup/core/postinstall.py
new file mode 100644
index 0000000..529ebb5
--- /dev/null
+++ b/packaging/setup/plugins/ovirt-engine-setup/core/postinstall.py
@@ -0,0 +1,95 @@
+#
+# ovirt-engine-setup -- ovirt engine setup
+# Copyright (C) 2013 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+
+"""post install config file plugin."""
+
+
+import gettext
+_ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-setup')
+
+
+from otopi import util
+from otopi import common
+from otopi import plugin
+from otopi import constants as otopicons
+from otopi import filetransaction
+
+
+from ovirt_engine_setup import constants as osetupcons
+
+
[email protected]
+class Plugin(plugin.PluginBase):
+    """post install config file plugin."""
+
+    def __init__(self, context):
+        super(Plugin, self).__init__(context=context)
+
+    @plugin.event(
+        stage=plugin.Stages.STAGE_INIT,
+    )
+    def _init(self):
+        self.environment.setdefault(
+            osetupcons.CoreEnv.OVIRT_SETUP_POST_INSTALL_CONFIG,
+            osetupcons.FileLocations.OVIRT_SETUP_POST_INSTALL_CONFIG
+        )
+
+    @plugin.event(
+        stage=plugin.Stages.STAGE_MISC,
+        priority=plugin.Stages.PRIORITY_LAST,
+        condition=lambda self: self.environment[
+            osetupcons.CoreEnv.OVIRT_SETUP_POST_INSTALL_CONFIG
+        ] is not None
+    )
+    def _misc(self):
+        filename = self.environment[
+            osetupcons.CoreEnv.OVIRT_SETUP_POST_INSTALL_CONFIG
+        ]
+        self.logger.info(
+            _("Generating post install configuration file '{name}'").format(
+                name=filename,
+            )
+        )
+        content = ['[environment:default]']
+        for c in osetupcons.__dict__['__osetup_attrs__']:
+            for k in c.__dict__.values():
+                if hasattr(k, '__osetup_attrs__'):
+                    if k.__osetup_attrs__['postinstallfile']:
+                        k = k.fget(None)
+                        if k in self.environment:
+                            v = self.environment[k]
+                            content.append(
+                                '%s=%s:%s' % (
+                                    k,
+                                    common.typeName(v),
+                                    '\n'.join(v) if isinstance(v, list)
+                                    else v,
+                                )
+                            )
+        self.environment[otopicons.CoreEnv.MAIN_TRANSACTION].append(
+            filetransaction.FileTransaction(
+                name=filename,
+                content=content,
+                modifiedList=self.environment[
+                    otopicons.CoreEnv.MODIFIED_FILES
+                ],
+            )
+        )
+
+
+# vim: expandtab tabstop=4 shiftwidth=4


-- 
To view, visit http://gerrit.ovirt.org/15957
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3516d6b9b29d50844835bb67c0a4a3f5485aa21f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Sandro Bonazzola <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to