Sandro Bonazzola has uploaded a new change for review.

Change subject: packaging: setup: cleanup storagePool/domainMonitor on error
......................................................................

packaging: setup: cleanup storagePool/domainMonitor on error

disconnect storage pool connection and domain monitoring
if an error occurs while deploying the hosted engine VM

Change-Id: If8a408a7291b7a4478380fb6a98a0120699563e3
Bug-Url: https://bugzilla.redhat.com/1026344
Signed-off-by: Sandro Bonazzola <[email protected]>
---
M src/plugins/ovirt-hosted-engine-setup/storage/storage.py
1 file changed, 31 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-hosted-engine-setup 
refs/changes/15/21915/1

diff --git a/src/plugins/ovirt-hosted-engine-setup/storage/storage.py 
b/src/plugins/ovirt-hosted-engine-setup/storage/storage.py
index 8e4b4f3..ade3b57 100644
--- a/src/plugins/ovirt-hosted-engine-setup/storage/storage.py
+++ b/src/plugins/ovirt-hosted-engine-setup/storage/storage.py
@@ -31,6 +31,7 @@
 import time
 
 
+from otopi import constants as otopicons
 from otopi import util
 from otopi import plugin
 
@@ -71,6 +72,8 @@
         self.storageType = None
         self.domain_exists = False
         self.pool_exists = False
+        self._connected = False
+        self._monitoring = False
 
     def _mount(self, path, connection, domain_type):
         mount_cmd = (
@@ -500,6 +503,16 @@
         waiter = tasks.DomainMonitorWaiter(self.environment)
         waiter.wait(self.environment[ohostedcons.StorageEnv.SD_UUID])
 
+    def _stopMonitoringDomain(self):
+        self.logger.debug('_stopMonitoringDomain')
+        status = self.serv.s.stopMonitoringDomain(
+            self.environment[ohostedcons.StorageEnv.SD_UUID],
+            self.environment[ohostedcons.StorageEnv.HOST_ID]
+        )
+        self.logger.debug(status)
+        if status['status']['code'] != 0:
+            raise RuntimeError(status['status']['message'])
+
     def _storagePoolConnection(self, disconnect=False):
         spUUID = self.environment[ohostedcons.StorageEnv.SP_UUID]
         sdUUID = self.environment[ohostedcons.StorageEnv.SD_UUID]
@@ -526,6 +539,7 @@
         status, message = method(args=method_args)
         if status != 0:
             raise RuntimeError(message)
+        self._connected = not disconnect
 
     def _spmStart(self):
         self.logger.debug('spmStart')
@@ -852,6 +866,23 @@
         self._storagePoolConnection(disconnect=True)
         self.logger.info(_('Start monitoring domain'))
         self._startMonitoringDomain()
+        self._monitoring = True
+
+    @plugin.event(
+        stage=plugin.Stages.STAGE_CLEANUP,
+        condition=lambda self: self.environment[
+            otopicons.BaseEnv.ERROR
+        ],
+    )
+    def _cleanup(self):
+        if self._connected:
+            try:
+                self._spmStop()
+            except RuntimeError:
+                self.logger.debug('Not SPM?', exc_info=True)
+            self._storagePoolConnection(disconnect=True)
+        if self._monitoring:
+            self._stopMonitoringDomain()
 
 
 # vim: expandtab tabstop=4 shiftwidth=4


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

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

Reply via email to