mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
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:
committed by
Richard W.M. Jones
parent
d5f36bacf9
commit
f5442d2f04
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user