Simone Tiraboschi has uploaded a new change for review.

Change subject: engine-cleanup split
......................................................................

engine-cleanup split

Let the user decide to remove all the product
components or just some of that at cleanup.

Change-Id: I26017770262e313ad38ddfa96baeaea144c86e5f
Signed-off-by: Simone Tiraboschi <stira...@redhat.com>
---
M packaging/setup/ovirt_engine_setup/constants.py
M packaging/setup/ovirt_engine_setup/engine/engineconstants.py
M packaging/setup/plugins/ovirt-engine-remove/base/core/misc.py
M packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/config/ca.py
A packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/config/misc.py
M packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/db/clear.py
M packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/engine.py
M packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/sysctl.py
M packaging/setup/plugins/ovirt-engine-remove/websocket_proxy/misc.py
9 files changed, 196 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/79/28579/1

diff --git a/packaging/setup/ovirt_engine_setup/constants.py 
b/packaging/setup/ovirt_engine_setup/constants.py
index 862b49f..119e53b 100644
--- a/packaging/setup/ovirt_engine_setup/constants.py
+++ b/packaging/setup/ovirt_engine_setup/constants.py
@@ -439,14 +439,14 @@
     @osetupattrs(
         answerfile=True,
     )
-    def REMOVE_DATABASE(self):
-        return 'OVESETUP_REMOVE/database'
+    def REMOVE_ALL(self):
+        return 'OVESETUP_REMOVE/removeAll'
 
     @osetupattrs(
         answerfile=True,
     )
-    def REMOVE_ALL(self):
-        return 'OVESETUP_REMOVE/removeAll'
+    def REMOVE_OPTIONS(self):
+        return 'OVESETUP_REMOVE/removeOptions'
 
     FILES_TO_REMOVE = 'OVESETUP_REMOVE/filesToRemove'
 
diff --git a/packaging/setup/ovirt_engine_setup/engine/engineconstants.py 
b/packaging/setup/ovirt_engine_setup/engine/engineconstants.py
index fad03e2..8a2f443 100644
--- a/packaging/setup/ovirt_engine_setup/engine/engineconstants.py
+++ b/packaging/setup/ovirt_engine_setup/engine/engineconstants.py
@@ -641,4 +641,21 @@
         return 'OVESETUP_ASYNC/clearTasksWait'
 
 
+@util.export
+@util.codegen
+@osetupattrsclass
+class RemoveEnv(object):
+    @osetupattrs(
+        answerfile=True,
+    )
+    def REMOVE_ENGINE(self):
+        return 'OVESETUP_REMOVE/removeEngine'
+
+    @osetupattrs(
+        answerfile=True,
+    )
+    def REMOVE_ENGINE_DATABASE(self):
+        return 'OVESETUP_REMOVE/database'
+
+
 # vim: expandtab tabstop=4 shiftwidth=4
diff --git a/packaging/setup/plugins/ovirt-engine-remove/base/core/misc.py 
b/packaging/setup/plugins/ovirt-engine-remove/base/core/misc.py
index a4488de..f93430e 100644
--- a/packaging/setup/plugins/ovirt-engine-remove/base/core/misc.py
+++ b/packaging/setup/plugins/ovirt-engine-remove/base/core/misc.py
@@ -71,6 +71,10 @@
             osetupcons.RemoveEnv.REMOVE_ALL,
             None
         )
+        self.environment.setdefault(
+            osetupcons.RemoveEnv.REMOVE_OPTIONS,
+            []
+        )
 
     @plugin.event(
         stage=plugin.Stages.STAGE_SETUP,
@@ -121,15 +125,36 @@
         if self.environment[
             osetupcons.CoreEnv.REMOVE
         ] is None:
+            if self.environment[osetupcons.RemoveEnv.REMOVE_ALL]:
+                cnote = _(
+                    'All the installed ovirt components are about to be '
+                    'removed, data will be lost (@VALUES@) [@DEFAULT@]: '
+                )
+            elif self.environment[osetupcons.RemoveEnv.REMOVE_OPTIONS]:
+                cnote = _(
+                    ', '.join(
+                        self.environment[
+                            osetupcons.RemoveEnv.REMOVE_OPTIONS
+                        ]
+                    ) + ' is ' if len(
+                        self.environment[
+                            osetupcons.RemoveEnv.REMOVE_OPTIONS
+                        ]
+                    ) == 1 else ' are ' +
+                    'about to be removed, data will be lost '
+                    '(@VALUES@) [@DEFAULT@]: '
+                )
+            else:
+                raise RuntimeError(
+                    _('Nothing to remove')
+                )
+
             self.environment[
                 osetupcons.CoreEnv.REMOVE
             ] = dialog.queryBoolean(
                 dialog=self.dialog,
                 name='OVESETUP_CORE_REMOVE',
-                note=_(
-                    'Installed ovirt components are about to be removed, '
-                    'data will be lost (@VALUES@) [@DEFAULT@]: '
-                ),
+                note=cnote,
                 prompt=True,
                 true=_('OK'),
                 false=_('Cancel'),
diff --git 
a/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/config/ca.py 
b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/config/ca.py
index d71e55a..68c3377 100644
--- a/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/config/ca.py
+++ b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/config/ca.py
@@ -52,6 +52,9 @@
             self.environment[
                 osetupcons.RemoveEnv.REMOVE_ALL
             ] or
+            self.environment[
+                oenginecons.RemoveEnv.REMOVE_ENGINE
+            ] or
             'ca_pki' in [
                 x.strip()
                 for x in self.environment[
diff --git 
a/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/config/misc.py 
b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/config/misc.py
new file mode 100644
index 0000000..2d8f1ab
--- /dev/null
+++ b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/config/misc.py
@@ -0,0 +1,82 @@
+#
+# ovirt-engine-setup -- ovirt engine setup
+# Copyright (C) 2014 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.
+#
+
+
+"""Engine-remove plugin."""
+
+
+import gettext
+_ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-setup')
+
+
+from otopi import util
+from otopi import plugin
+
+
+from ovirt_engine_setup import constants as osetupcons
+from ovirt_engine_setup.engine import engineconstants as oenginecons
+from ovirt_engine_setup import dialog
+
+
+@util.export
+class Plugin(plugin.PluginBase):
+    """Engine-remove plugin."""
+
+    def __init__(self, context):
+        super(Plugin, self).__init__(context=context)
+
+    @plugin.event(
+        stage=plugin.Stages.STAGE_INIT,
+    )
+    def _init(self):
+        self.environment.setdefault(
+            oenginecons.RemoveEnv.REMOVE_ENGINE,
+            None
+        )
+
+    @plugin.event(
+        stage=plugin.Stages.STAGE_CUSTOMIZATION,
+        after=osetupcons.Stages.REMOVE_CUSTOMIZATION_COMMON,
+        condition=lambda self: not self.environment[
+            osetupcons.RemoveEnv.REMOVE_ALL
+        ],
+    )
+    def _customization(self):
+        if self.environment[
+            oenginecons.RemoveEnv.REMOVE_ENGINE
+        ] is None:
+            self.environment[
+                oenginecons.RemoveEnv.REMOVE_ENGINE
+            ] = dialog.queryBoolean(
+                dialog=self.dialog,
+                name='OVESETUP_REMOVE_ENGINE',
+                note=_(
+                    'Do you want to remove the engine? '
+                    '(@VALUES@) [@DEFAULT@]: '
+                ),
+                prompt=True,
+                true=_('Yes'),
+                false=_('No'),
+                default=True,
+            )
+            if self.environment[oenginecons.RemoveEnv.REMOVE_ENGINE]:
+                osetupcons.RemoveEnv.REMOVE_OPTIONS.append(
+                    oenginecons.Const.ENGINE_PACKAGE_NAME
+                )
+
+
+# vim: expandtab tabstop=4 shiftwidth=4
diff --git 
a/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/db/clear.py 
b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/db/clear.py
index 90c8230..6fdf935 100644
--- a/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/db/clear.py
+++ b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/db/clear.py
@@ -47,7 +47,7 @@
     )
     def _init(self):
         self.environment.setdefault(
-            osetupcons.RemoveEnv.REMOVE_DATABASE,
+            oenginecons.RemoveEnv.REMOVE_ENGINE_DATABASE,
             None
         )
         self._bkpfile = None
@@ -59,18 +59,23 @@
         ),
     )
     def _customization(self):
-        if self.environment[
-            osetupcons.RemoveEnv.REMOVE_ALL
-        ]:
+        if (
             self.environment[
-                osetupcons.RemoveEnv.REMOVE_DATABASE
+                osetupcons.RemoveEnv.REMOVE_ALL
+            ] or
+            self.environment[
+                oenginecons.RemoveEnv.REMOVE_ENGINE
+            ]
+        ):
+            self.environment[
+                oenginecons.RemoveEnv.REMOVE_ENGINE_DATABASE
             ] = True
 
         if self.environment[
-            osetupcons.RemoveEnv.REMOVE_DATABASE
+            oenginecons.RemoveEnv.REMOVE_ENGINE_DATABASE
         ] is None:
             self.environment[
-                osetupcons.RemoveEnv.REMOVE_DATABASE
+                oenginecons.RemoveEnv.REMOVE_ENGINE_DATABASE
             ] = dialog.queryBoolean(
                 dialog=self.dialog,
                 name='OVESETUP_ENGINE_DB_REMOVE',
@@ -88,7 +93,7 @@
         stage=plugin.Stages.STAGE_MISC,
         condition=lambda self: (
             self.environment[oengcommcons.EngineDBEnv.PASSWORD] is not None and
-            self.environment[osetupcons.RemoveEnv.REMOVE_DATABASE]
+            self.environment[oenginecons.RemoveEnv.REMOVE_ENGINE_DATABASE]
         ),
         after=(
             oengcommcons.Stages.DB_CREDENTIALS_AVAILABLE_LATE,
diff --git 
a/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/engine.py 
b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/engine.py
index e1ca950..be8bd26 100644
--- a/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/engine.py
+++ b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/engine.py
@@ -41,6 +41,14 @@
 
     @plugin.event(
         stage=plugin.Stages.STAGE_SETUP,
+        condition=lambda self: (
+            self.environment[
+                osetupcons.RemoveEnv.REMOVE_ALL
+            ] or
+            self.environment[
+                oenginecons.RemoveEnv.REMOVE_ENGINE
+            ]
+        ),
     )
     def _setup(self):
         if not os.path.exists(
@@ -62,9 +70,18 @@
 
     @plugin.event(
         stage=plugin.Stages.STAGE_MISC,
-        condition=lambda self: not self.environment[
-            osetupcons.CoreEnv.DEVELOPER_MODE
-        ],
+        condition=lambda self: (
+            (
+                self.environment[
+                    osetupcons.RemoveEnv.REMOVE_ALL
+                ] or
+                self.environment[
+                    oenginecons.RemoveEnv.REMOVE_ENGINE
+                ]
+            ) and not self.environment[
+                osetupcons.CoreEnv.DEVELOPER_MODE
+            ],
+        ),
     )
     def _misc(self):
         self.services.startup(
diff --git 
a/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/sysctl.py 
b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/sysctl.py
index f34eb41..e15b31c 100644
--- a/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/sysctl.py
+++ b/packaging/setup/plugins/ovirt-engine-remove/ovirt-engine/system/sysctl.py
@@ -42,6 +42,14 @@
 
     @plugin.event(
         stage=plugin.Stages.STAGE_MISC,
+        condition=lambda self: (
+            self.environment[
+                osetupcons.RemoveEnv.REMOVE_ALL
+            ] or
+            self.environment[
+                oenginecons.RemoveEnv.REMOVE_ENGINE
+            ]
+        ),
     )
     def _misc(self):
         if (
@@ -62,6 +70,14 @@
         after=(
             osetupcons.Stages.DIALOG_TITLES_S_SUMMARY,
         ),
+        condition=lambda self: (
+            self.environment[
+                osetupcons.RemoveEnv.REMOVE_ALL
+            ] or
+            self.environment[
+                oenginecons.RemoveEnv.REMOVE_ENGINE
+            ]
+        ),
     )
     def _closeup(self):
         if os.path.exists(
diff --git 
a/packaging/setup/plugins/ovirt-engine-remove/websocket_proxy/misc.py 
b/packaging/setup/plugins/ovirt-engine-remove/websocket_proxy/misc.py
index 486c715..294f51f 100644
--- a/packaging/setup/plugins/ovirt-engine-remove/websocket_proxy/misc.py
+++ b/packaging/setup/plugins/ovirt-engine-remove/websocket_proxy/misc.py
@@ -37,9 +37,18 @@
 
     @plugin.event(
         stage=plugin.Stages.STAGE_MISC,
-        condition=lambda self: not self.environment[
-            osetupcons.CoreEnv.DEVELOPER_MODE
-        ],
+        condition=lambda self: (
+            (
+                self.environment[
+                    osetupcons.RemoveEnv.REMOVE_ALL
+                ] or
+                self.environment[
+                    oenginecons.RemoveEnv.REMOVE_ENGINE
+                ]
+            ) and not self.environment[
+                osetupcons.CoreEnv.DEVELOPER_MODE
+            ],
+        ),
     )
     def _misc(self):
         if self.services.exists(


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I26017770262e313ad38ddfa96baeaea144c86e5f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Simone Tiraboschi <stira...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to