Sandro Bonazzola has uploaded a new change for review.

Change subject: packaging: setup: fixed memory requirements validation
......................................................................

packaging: setup: fixed memory requirements validation

aligned memory requirements validation with legacy setup

Change-Id: I46e125e418ec0f2951850825dbeca9a5f9eadfbf
Signed-off-by: Sandro Bonazzola <[email protected]>
---
M packaging/setup/plugins/ovirt-engine-setup/system/memcheck.py
1 file changed, 92 insertions(+), 38 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/14916/1

diff --git a/packaging/setup/plugins/ovirt-engine-setup/system/memcheck.py 
b/packaging/setup/plugins/ovirt-engine-setup/system/memcheck.py
index bd27552..7fa8ece 100644
--- a/packaging/setup/plugins/ovirt-engine-setup/system/memcheck.py
+++ b/packaging/setup/plugins/ovirt-engine-setup/system/memcheck.py
@@ -30,6 +30,7 @@
 from otopi import plugin
 
 from ovirt_engine_setup import constants as osetupcons
+from ovirt_engine_setup import dialog
 
 
 @util.export
@@ -51,6 +52,53 @@
 
     def __init__(self, context):
         super(Plugin, self).__init__(context=context)
+        self._total_memory = 0
+
+    def _warn_recomended(self):
+        self.dialog.note(
+            text=_(
+                'There is less than {recommended}MB available memory'
+            ).format(
+                recommended=self.environment[
+                    osetupcons.SystemEnv.MEMCHECK_RECOMMENDED_MB
+                ],
+            ),
+        )
+
+    def _check_requirements(self):
+        satisfied = False
+        if self._total_memory < self.environment[
+            osetupcons.SystemEnv.MEMCHECK_MINIMUM_MB
+        ] * 0.95:
+            self.logger.warn(
+                _(
+                    'Warning: Not enough available memory on the Host, '
+                    'the minimum requirement is {minimum}MB, and the '
+                    'recommended is {recommended}MB).'
+                ).format(
+                    minimum=self.environment[
+                        osetupcons.SystemEnv.MEMCHECK_MINIMUM_MB
+                    ],
+                    recommended=self.environment[
+                        osetupcons.SystemEnv.MEMCHECK_RECOMMENDED_MB
+                    ],
+                )
+            )
+        else:
+            satisfied = True
+            if self._total_memory < self.environment[
+                osetupcons.SystemEnv.MEMCHECK_RECOMMENDED_MB
+            ] * 0.95:
+                self.logger.warn(
+                    _(
+                        'There is less than {recommended}MB available memory'
+                    ).format(
+                        recommended=self.environment[
+                            osetupcons.SystemEnv.MEMCHECK_RECOMMENDED_MB
+                        ],
+                    )
+                )
+        return satisfied
 
     @plugin.event(
         stage=plugin.Stages.STAGE_INIT,
@@ -58,7 +106,7 @@
     def _init(self):
         self.environment.setdefault(
             osetupcons.SystemEnv.MEMCHECK_ENABLED,
-            osetupcons.Defaults.DEFAULT_SYSTEM_MEMCHECK_ENABLED
+            None
         )
         self.environment.setdefault(
             osetupcons.SystemEnv.MEMCHECK_MINIMUM_MB,
@@ -71,16 +119,20 @@
 
     @plugin.event(
         stage=plugin.Stages.STAGE_VALIDATION,
-        condition=lambda self: self.environment[
-            osetupcons.SystemEnv.MEMCHECK_ENABLED
-        ],
     )
     def _validation(self):
         """
         Check if the system met the memory requirements.
         """
+        interactive = self.environment[
+            osetupcons.SystemEnv.MEMCHECK_ENABLED
+        ] is None
+        if (
+            not interactive and
+            not self.environment[osetupcons.SystemEnv.MEMCHECK_ENABLED]
+        ):
+            return
         self.logger.debug('Checking total memory')
-        total_memory = 0
         with open('/proc/meminfo', 'r') as f:
             content = f.read()
 
@@ -88,45 +140,47 @@
         if match is None:
             raise RuntimeError(_("Unable to parse /proc/meminfo"))
 
-        total_memory = int(
+        self._total_memory = int(
             match.group('value')
         )
         if match.group('unit') == "kB":
-            total_memory //= 1024
+            self._total_memory //= 1024
 
-        # have tolerance of 5%
-        if total_memory < self.environment[
-            osetupcons.SystemEnv.MEMCHECK_MINIMUM_MB
-        ] * 0.95:
-            raise RuntimeError(
-                _(
-                    "Error: Not enough available memory on the Host, "
-                    "the minimum requirement is {minimum}MB, and the "
-                    "recommended is {recommended}MB)."
-                ).format(
-                    minimum=self.environment[
-                        osetupcons.SystemEnv.MEMCHECK_MINIMUM_MB
-                    ],
-                    recommended=self.environment[
-                        osetupcons.SystemEnv.MEMCHECK_RECOMMENDED_MB
-                    ],
+        satisfied = self._check_requirements()
+        print interactive
+        abort = False
+        if not satisfied:
+            if not interactive:
+                abort = osetupcons.Defaults.DEFAULT_SYSTEM_MEMCHECK_ENABLED
+            else:
+                abort = dialog.queryBoolean(
+                    dialog=self.dialog,
+                    name='OVESETUP_MEMORY_CHECK',
+                    note=_(
+                        'Do you want to exit the setup? '
+                        '(@VALUES@) [@DEFAULT@]: '
+                    ),
+                    prompt=True,
+                    true=_('Yes'),
+                    false=_('No'),
+                    default=(
+                        osetupcons.Defaults.DEFAULT_SYSTEM_MEMCHECK_ENABLED
+                    ),
                 )
-            )
+        if abort:
+            raise RuntimeError(_('Aborted by user'))
 
-        if total_memory < self.environment[
-            osetupcons.SystemEnv.MEMCHECK_RECOMMENDED_MB
-        ]:
-            self.logger.warn(
-                _(
-                    "There is less than {recommended}MB available memory"
-                ).format(
-                    recommended=self.environment[
-                        osetupcons.SystemEnv.MEMCHECK_RECOMMENDED_MB
-                    ],
-                )
-            )
-            #TODO: find out how to do this:
-            #controller.MESSAGES.append(output_messages.WARN_LOW_MEMORY)
+    @plugin.event(
+        stage=plugin.Stages.STAGE_CLOSEUP,
+        before=[
+            osetupcons.Stages.DIALOG_TITLES_E_SUMMARY,
+        ],
+        after=[
+            osetupcons.Stages.DIALOG_TITLES_S_SUMMARY,
+        ],
+    )
+    def _closeup(self):
+        self._check_requirements()
 
 
 # vim: expandtab tabstop=4 shiftwidth=4


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I46e125e418ec0f2951850825dbeca9a5f9eadfbf
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