Change in vdsm[master]: Re-post: hba: Run fc-scan in supervdsm
piotr.kliczewski at gmail.com
piotr.kliczewski at gmail.com
Tue Jan 27 12:24:24 UTC 2015
Piotr Kliczewski has uploaded a new change for review.
Change subject: Re-post: hba: Run fc-scan in supervdsm
......................................................................
Re-post: hba: Run fc-scan in supervdsm
This is re-post of commit: 5a6ae1a266e6808861a10933d7cacb81838050f1
On master zombiereaper is available in supervdsm, so we can run fc-scan
from suprevdsm instead of using sudo.
Change-Id: I67649957e329955e70e0a35af7cde85b31d516e0
Signed-off-by: Nir Soffer <nsoffer at redhat.com>
Signed-off-by: pkliczewski <piotr.kliczewski at gmail.com>
---
M vdsm/storage/hba.py
M vdsm/sudoers.vdsm.in
M vdsm/supervdsmServer
3 files changed, 26 insertions(+), 7 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/19/37319/1
diff --git a/vdsm/storage/hba.py b/vdsm/storage/hba.py
index 0d4e688..efd0273 100644
--- a/vdsm/storage/hba.py
+++ b/vdsm/storage/hba.py
@@ -31,6 +31,7 @@
from vdsm.infra import zombiereaper
import misc
+import supervdsm
log = logging.getLogger("Storage.HBA")
@@ -43,27 +44,41 @@
NODE_NAME = "node_name"
+class Error(Exception):
+ """ hba operation failed """
+
+
@misc.samplingmethod
def rescan():
"""
Rescan HBAs discovering new devices.
"""
+ log.debug("Starting scan")
+ try:
+ supervdsm.getProxy().hbaRescan()
+ except Error as e:
+ log.error("Scan failed: %s", e)
+ else:
+ log.debug("Scan finished")
+
+
+def _rescan():
+ """
+ Called from supervdsm to perform rescan as root.
+ """
timeout = config.getint('irs', 'scsi_rescan_maximal_timeout')
- log.debug("Starting scan")
- proc = utils.execCmd([constants.EXT_FC_SCAN], sync=False, sudo=True,
+ proc = utils.execCmd([constants.EXT_FC_SCAN], sync=False,
execCmdLogger=log)
try:
proc.wait(timeout)
finally:
if proc.returncode is None:
- log.warning("Timeout scanning")
zombiereaper.autoReapPID(proc.pid)
+ raise Error("Timeout scanning (pid=%s)" % proc.pid)
elif proc.returncode != 0:
stderr = proc.stderr.read(512)
- log.error("Scan failed: %r", stderr)
- else:
- log.debug("Scan finished")
+ raise Error("Scan failed: %r" % stderr)
def getiSCSIInitiators():
diff --git a/vdsm/sudoers.vdsm.in b/vdsm/sudoers.vdsm.in
index 0572866..da88ff2 100644
--- a/vdsm/sudoers.vdsm.in
+++ b/vdsm/sudoers.vdsm.in
@@ -15,7 +15,6 @@
@BINDIR@/vdsm-tool service-restart multipathd, \
@BINDIR@/vdsm-tool service-reload multipathd, \
@ISCSIADM_PATH@ *, \
- @LIBEXECDIR@/fc-scan, \
@LVM_PATH@, \
@CAT_PATH@ /sys/block/*/device/../../*, \
@CAT_PATH@ /sys/devices/platform/host*, \
diff --git a/vdsm/supervdsmServer b/vdsm/supervdsmServer
index e1af020..3306b71 100755
--- a/vdsm/supervdsmServer
+++ b/vdsm/supervdsmServer
@@ -65,6 +65,7 @@
from storage.iscsi import getDevIscsiInfo as _getdeviSCSIinfo
from storage.iscsi import readSessionInfo as _readSessionInfo
from supervdsm import _SuperVdsmManager
+from storage import hba
from storage.fileUtils import chown, resolveGid, resolveUid
from storage.fileUtils import validateAccess as _validateAccess
from vdsm.constants import METADATA_GROUP, EXT_CHOWN, EXT_UDEVADM, \
@@ -348,6 +349,10 @@
return fuser.fuser(*args, **kwargs)
@logDecorator
+ def hbaRescan(self):
+ return hba._rescan()
+
+ @logDecorator
def set_rp_filter_loose(self, dev):
sysctl.set_rp_filter_loose(dev)
--
To view, visit http://gerrit.ovirt.org/37319
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I67649957e329955e70e0a35af7cde85b31d516e0
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Piotr Kliczewski <piotr.kliczewski at gmail.com>
More information about the vdsm-patches
mailing list