Amador Pahim has uploaded a new change for review. Change subject: Skip netdev probe from sessions missing iscsi sysfs (i.e. using hardware iSCSI) ......................................................................
Skip netdev probe from sessions missing iscsi sysfs (i.e. using hardware iSCSI) In https://gerrit.ovirt.org/#/c/31534/, we introduced the iface.net_ifacename probe for active sessions. To do so, we had to use the sessionID (S) to access the iscsi sysfs, looking for /sys/devices/platform/hostN/sessionS to then use the probed hostN into the path /sys/class/iscsi_host/hostN/netdev, where netdev contains the value for iface.net_ifacename, if any. As we didn't expect /sys/devices/platform/hostN/sessionS to be missing, the adopted policy was to raise an exception if that happens. Now we learned the hard way that there is a valid case for missing /sys/devices/platform/hostN/sessionS, which is using hardware iSCSI (qla4xxx). This patch is fixing the code to allow missing /sys/devices/platform/hostN/sessionS. Change-Id: Ie6f273fddff2235f15197c6689de5e6374fda6f0 Signed-off-by: Amador Pahim <apa...@redhat.com> --- M vdsm/storage/iscsi.py 1 file changed, 8 insertions(+), 4 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/54/38354/1 diff --git a/vdsm/storage/iscsi.py b/vdsm/storage/iscsi.py index e7c25a0..fed236d 100644 --- a/vdsm/storage/iscsi.py +++ b/vdsm/storage/iscsi.py @@ -105,6 +105,7 @@ sessionID - the iSCSI session ID. Returns: - iSCSI host path - e.g. '/sys/class/iscsi_host/host17/' + - None if host session is not present (i.e. hardware iSCSI) """ pattern = '/sys/devices/platform/host*/session%s' % sessionID @@ -112,13 +113,18 @@ host = os.path.basename(os.path.dirname(path)) return '/sys/class/iscsi_host/' + host - raise OSError(errno.ENOENT, "No iscsi_host for session [%s]" % sessionID) + return None def readSessionInfo(sessionID): iscsi_session = getIscsiSessionPath(sessionID) iscsi_connection = getIscsiConnectionPath(sessionID) + iscsi_host = getIscsiHostPath(sessionID) + if iscsi_host is not None: + netdev = os.path.join(iscsi_host, "netdev") + else: + netdev = None if not os.path.isdir(iscsi_session) or not os.path.isdir(iscsi_connection): raise OSError(errno.ENOENT, "No such session") @@ -133,14 +139,12 @@ paddr = os.path.join(iscsi_connection, "persistent_address") pport = os.path.join(iscsi_connection, "persistent_port") - netdev = os.path.join(iscsi_host, "netdev") - res = [] for fname in (targetname, iface, tpgt, user, passwd, paddr, pport, netdev): try: with open(fname, "r") as f: res.append(f.read().strip()) - except (OSError, IOError): + except (OSError, IOError, TypeError): res.append("") iqn, iface, tpgt, username, password, ip, port, netdev = res -- To view, visit https://gerrit.ovirt.org/38354 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie6f273fddff2235f15197c6689de5e6374fda6f0 Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Amador Pahim <apa...@redhat.com> _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches