Sandro Bonazzola has uploaded a new change for review.

Change subject: vdsm: use startMonitoringDomain
......................................................................

vdsm: use startMonitoringDomain

Use startMonitoringDomain VDSM API for monitoring
hosted engine storage domain in order to support
shared:exclusive images without a pool.
Use getVdsStats for waiting the start of the domain
monitor.
Updated vdsm minimum version required according
to VDSM API documentation for startMonitoringDomain.

Change-Id: I3099081b79d461685901a1a32e9d526bd3bb758a
Requires: http://gerrit.ovirt.org/19762
Requires: http://gerrit.ovirt.org/20099
Bug-Url: https://bugzilla.redhat.com/1015136
Signed-off-by: Sandro Bonazzola <[email protected]>
---
M ovirt-hosted-engine-setup.spec.in
M src/ovirt_hosted_engine_setup/tasks.py
M src/plugins/ovirt-hosted-engine-setup/storage/storage.py
3 files changed, 53 insertions(+), 4 deletions(-)


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

diff --git a/ovirt-hosted-engine-setup.spec.in 
b/ovirt-hosted-engine-setup.spec.in
index e21672a..6265a99 100644
--- a/ovirt-hosted-engine-setup.spec.in
+++ b/ovirt-hosted-engine-setup.spec.in
@@ -40,9 +40,9 @@
 Requires:       python
 Requires:       python-ethtool >= 0.6-3
 Requires:       otopi >= 1.1.0
-Requires:       vdsm >= 4.12.0
-Requires:       vdsm-cli >= 4.12.0
-Requires:       vdsm-python >= 4.12.0
+Requires:       vdsm >= 4.12.2
+Requires:       vdsm-cli >= 4.12.2
+Requires:       vdsm-python >= 4.12.2
 Requires:       ovirt-host-deploy >= 1.1.0
 Requires:       openssh-server
 Requires:       python-paramiko
diff --git a/src/ovirt_hosted_engine_setup/tasks.py 
b/src/ovirt_hosted_engine_setup/tasks.py
index 77fad58..49dd910 100644
--- a/src/ovirt_hosted_engine_setup/tasks.py
+++ b/src/ovirt_hosted_engine_setup/tasks.py
@@ -107,4 +107,38 @@
         return destroyed
 
 
[email protected]
+class DomainMonitorWaiter(base.Base):
+    """
+    VM down waiting utility.
+    """
+
+    POLLING_INTERVAL = 5
+
+    def __init__(self, environment):
+        super(DomainMonitorWaiter, self).__init__()
+        self.environment = environment
+
+    def wait(self, sdUUID):
+        serv = self.environment[ohostedcons.VDSMEnv.VDS_CLI]
+        acquired = False
+        while not acquired:
+            time.sleep(self.POLLING_INTERVAL)
+            self.logger.debug('Waiting for domain monitor')
+            response = serv.s.getVdsStats()
+            self.logger.debug(response)
+            if response['status']['code'] != 0:
+                self.logger.debug(response['status']['message'])
+                raise RuntimeError(_('Error acquiring VDS status'))
+            try:
+                domains = response['info']['storageDomains']
+                acquired = domains[sdUUID]['acquired']
+            except KeyError:
+                self.logger.debug(
+                    'Error getting VDS status',
+                    exc_info=True,
+                )
+                raise RuntimeError(_('Error acquiring VDS status'))
+
+
 # vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/plugins/ovirt-hosted-engine-setup/storage/storage.py 
b/src/plugins/ovirt-hosted-engine-setup/storage/storage.py
index 1adeef0..6016ea2 100644
--- a/src/plugins/ovirt-hosted-engine-setup/storage/storage.py
+++ b/src/plugins/ovirt-hosted-engine-setup/storage/storage.py
@@ -463,6 +463,19 @@
         if status != 0:
             raise RuntimeError(message)
 
+    def _startMonitoringDomain(self):
+        self.logger.debug('_startMonitoringDomain')
+        status = self.serv.s.startMonitoringDomain(
+            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'])
+
+        waiter = tasks.DomainMonitorWaiter(self.environment)
+        waiter.wait(self.environment[ohostedcons.StorageEnv.SD_UUID])
+
     def _storagePoolConnection(self, disconnect=False):
         spUUID = self.environment[ohostedcons.StorageEnv.SP_UUID]
         sdUUID = self.environment[ohostedcons.StorageEnv.SD_UUID]
@@ -804,10 +817,12 @@
         ],
     )
     def _disconnect_pool(self):
-        self.logger.info(_('Disonnecting Storage Pool'))
+        self.logger.info(_('Disconnecting Storage Pool'))
         self.waiter.wait()
         self._spmStop()
         self._storagePoolConnection(disconnect=True)
+        self.logger.info(_('Start monitoring domain'))
+        self._startMonitoringDomain()
 
 
 # vim: expandtab tabstop=4 shiftwidth=4


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

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