v2v: rhv-upload-plugin: Improve error handling

When optimizing the connection using unix socket, we handle these cases:

- The local host is not an oVirt host (no /etc/vdsm/vdsm.id).
- The local host is an oVirt host, but is not registered with engine.
- Creating UnixHTTPConnection() fails. Unlikely and probably a bug in
  the plugin, but we can recover by using the https connection.

The current code handle these cases silently, making it harder to
understand why the unix socket optimization did no happen. Add debug
message to make this clear.

Also comment in the error handler why we take this path instead of
failing the operation.
This commit is contained in:
Nir Soffer
2018-06-30 01:21:50 +03:00
committed by Richard W.M. Jones
parent d5f36bacf9
commit f5442d2f04

View File

@@ -63,7 +63,10 @@ def find_host(connection):
with builtins.open("/etc/vdsm/vdsm.id") as f:
vdsm_id = f.readline().strip()
except Exception as e:
# This is most likely not an oVirt host.
debug("cannot read /etc/vdsm/vdsm.id, using any host: %s" % e)
return None
debug("hw_id = %r" % vdsm_id)
hosts_service = connection.system_service().hosts_service()
@@ -72,6 +75,8 @@ def find_host(connection):
case_sensitive=False,
)
if len(hosts) == 0:
# This oVirt host is not registered with engine.
debug("cannot find host with hw_id=%r, using any host" % vdsm_id)
return None
host = hosts[0]
@@ -233,9 +238,12 @@ def open(readonly):
if host is not None and unix_socket is not None:
try:
http = UnixHTTPConnection(unix_socket)
except Exception as e:
# Very unlikely failure, but we can recover by using the https
# connection.
debug("cannot create unix socket connection, using https: %s" % e)
else:
debug("optimizing connection using unix socket %r" % unix_socket)
except:
pass
# Save everything we need to make requests in the handle.
return {