Martin Polednik has uploaded a new change for review.
Change subject: supervdsm: move udevadm methods to udevadm module
......................................................................
supervdsm: move udevadm methods to udevadm module
udevadm module already exists, so there is no reason to keep the
method logic in supervdsm.
Change-Id: Ie2b72b580e77872068ae6357410d940a83626b05
Signed-off-by: Martin Polednik <mpolednik(a)redhat.com>
---
M lib/vdsm/udevadm.py
M vdsm/supervdsmServer
2 files changed, 52 insertions(+), 42 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/08/44808/1
diff --git a/lib/vdsm/udevadm.py b/lib/vdsm/udevadm.py
index 2e9bdc2..9c58075 100644
--- a/lib/vdsm/udevadm.py
+++ b/lib/vdsm/udevadm.py
@@ -19,10 +19,14 @@
#
from __future__ import absolute_import
+import errno
import logging
from . import utils
+from vdsm.constants import EXT_UDEVADM
+
_UDEVADM = utils.CommandPath("udevadm", "/sbin/udevadm",
"/usr/sbin/udevadm")
+_UDEV_WITH_RELOAD_VERSION = 181
class Error(Exception):
@@ -61,6 +65,50 @@
logging.error("%s", e)
+def trigger(attr_matches=(), property_matches=()):
+ _reload()
+ cmd = [EXT_UDEVADM, 'trigger', '--verbose', '--action',
'change']
+
+ for name, value in property_matches:
+ cmd.append('--property-match={}={}'.format(name, value))
+
+ for name, value in attr_matches:
+ cmd.append('--property-match={}={}'.format(name, value))
+
+ rc, out, err = utils.execCmd(cmd)
+ if rc:
+ raise OSError(errno.EINVAL, 'Could not trigger change '
+ 'out %s\nerr %s' % (out, err))
+
+
+def _reload():
+ if _has_reload():
+ reload = "--reload"
+ else:
+ reload = "--reload-rules"
+ cmd = [EXT_UDEVADM, 'control', reload]
+ rc, out, err = utils.execCmd(cmd)
+ if rc:
+ logging.error("Udevadm reload-rules command failed rc=%s, "
+ "out=\"%s\", err=\"%s\"", rc, out,
err)
+ raise OSError(errno.EINVAL, "Could not reload rules")
+
+
+(a)utils.memoized
+def _version():
+ cmd = [EXT_UDEVADM, '--version']
+ rc, out, err = utils.execCmd(cmd)
+ if rc:
+ logging.error("Udevadm version command failed rc=%s, "
+ "out=\"%s\", err=\"%s\"", rc, out,
err)
+ raise RuntimeError("Could not get udev version number")
+ return int(out[0])
+
+
+def _has_reload():
+ return _version() > _UDEV_WITH_RELOAD_VERSION
+
+
def _run_command(args):
cmd = [_UDEVADM.cmd]
cmd.extend(args)
diff --git a/vdsm/supervdsmServer b/vdsm/supervdsmServer
index 57b7b4d..17f12f3 100755
--- a/vdsm/supervdsmServer
+++ b/vdsm/supervdsmServer
@@ -35,6 +35,7 @@
from vdsm.infra import zombiereaper
from caps import Architecture
+from vdsm import udevadm
import numaUtils
LOG_CONF_PATH = "/etc/vdsm/svdsm.logger.conf"
@@ -73,7 +74,7 @@
from storage import multipath
from storage.fileUtils import chown, resolveGid, resolveUid
from storage.fileUtils import validateAccess as _validateAccess
-from vdsm.constants import METADATA_GROUP, EXT_CHOWN, EXT_UDEVADM, \
+from vdsm.constants import METADATA_GROUP, EXT_CHOWN, \
DISKIMAGE_USER, DISKIMAGE_GROUP, \
P_LIBVIRT_VMCHANNELS, P_OVIRT_VMCONSOLES, \
VDSM_USER, QEMU_PROCESS_USER, QEMU_PROCESS_GROUP
@@ -119,8 +120,6 @@
class _SuperVdsm(object):
-
- UDEV_WITH_RELOAD_VERSION = 181
log = logging.getLogger("SuperVdsm.ServerCallback")
@@ -283,20 +282,8 @@
return setSafeNetworkConfig()
@logDecorator
- def udevTrigger(self, attr_matches=(), property_matches=()):
- self.__udevReloadRules()
- cmd = [EXT_UDEVADM, 'trigger', '--verbose', '--action',
'change']
-
- for name, value in property_matches:
- cmd.append('--property-match={}={}'.format(name, value))
-
- for name, value in attr_matches:
- cmd.append('--property-match={}={}'.format(name, value))
-
- rc, out, err = utils.execCmd(cmd)
- if rc:
- raise OSError(errno.EINVAL, 'Could not trigger change '
- 'out %s\nerr %s' % (out, err))
+ def udevTrigger(self, *args, **kwargs):
+ udevadm.trigger(*args, **kwargs)
@logDecorator
def appropriateDevice(self, guid, thiefId):
@@ -453,31 +440,6 @@
@logDecorator
def set_rp_filter_strict(self, dev):
sysctl.set_rp_filter_strict(dev)
-
- def __udevReloadRules(self):
- if self.__udevOperationReload():
- reload = "--reload"
- else:
- reload = "--reload-rules"
- cmd = [EXT_UDEVADM, 'control', reload]
- rc, out, err = utils.execCmd(cmd)
- if rc:
- self.log.error("Udevadm reload-rules command failed rc=%s, "
- "out=\"%s\", err=\"%s\"", rc,
out, err)
- raise OSError(errno.EINVAL, "Could not reload rules")
-
- @utils.memoized
- def __udevVersion(self):
- cmd = [EXT_UDEVADM, '--version']
- rc, out, err = utils.execCmd(cmd)
- if rc:
- self.log.error("Udevadm version command failed rc=%s, "
- " out=\"%s\", err=\"%s\"", rc,
out, err)
- raise RuntimeError("Could not get udev version number")
- return int(out[0])
-
- def __udevOperationReload(self):
- return self.__udevVersion() > self.UDEV_WITH_RELOAD_VERSION
def terminate(signo, frame):
--
To view, visit
https://gerrit.ovirt.org/44808
To unsubscribe, visit
https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie2b72b580e77872068ae6357410d940a83626b05
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Martin Polednik <mpolednik(a)redhat.com>