The root cause exception contains the useful information about what
really failed during loading of some resource, or running of a
command.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
guests/lcitool | 54 +++++++++++++++++++++++++-------------------------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/guests/lcitool b/guests/lcitool
index 759eff6..bd32d1f 100755
--- a/guests/lcitool
+++ b/guests/lcitool
@@ -95,10 +95,10 @@ class Config:
if not os.path.exists(config_dir):
try:
os.mkdir(config_dir)
- except Exception:
+ except Exception as ex:
raise Error(
- "Can't create configuration directory ({})".format(
- config_dir,
+ "Can't create configuration directory ({}):
{}".format(
+ config_dir, ex,
)
)
@@ -117,10 +117,10 @@ class Config:
try:
with open(flavor_file, "w") as infile:
infile.write("{}\n".format(flavor))
- except Exception:
+ except Exception as ex:
raise Error(
- "Can't write flavor file ({})".format(
- flavor_file,
+ "Can't write flavor file ({}): {}".format(
+ flavor_file, ex
)
)
@@ -141,10 +141,10 @@ class Config:
with open(vault_pass_file, "r") as infile:
if not infile.readline().strip():
raise ValueError
- except Exception:
+ except Exception as ex:
raise Error(
- "Missing or invalid vault password file ({})".format(
- vault_pass_file,
+ "Missing or invalid vault password file ({}): {}".format(
+ vault_pass_file, ex
)
)
@@ -157,10 +157,10 @@ class Config:
with open(root_pass_file, "r") as infile:
if not infile.readline().strip():
raise ValueError
- except Exception:
+ except Exception as ex:
raise Error(
- "Missing or invalid root password file ({})".format(
- root_pass_file,
+ "Missing or invalid root password file ({}): {}".format(
+ root_pass_file, ex
)
)
@@ -177,8 +177,8 @@ class Inventory:
parser = configparser.SafeConfigParser()
parser.read(ansible_cfg_path)
inventory_path = parser.get("defaults", "inventory")
- except Exception:
- raise Error("Can't find inventory location in ansible.cfg")
+ except Exception as ex:
+ raise Error("Can't read inventory location in ansible.cfg:
{}".format(ex))
inventory_path = os.path.join(base, inventory_path)
@@ -191,10 +191,10 @@ class Inventory:
for line in infile:
host = line.strip()
self._facts[host] = {}
- except Exception:
+ except Exception as ex:
raise Error(
- "Missing or invalid inventory ({})".format(
- inventory_path,
+ "Missing or invalid inventory ({}): {}".format(
+ inventory_path, ex
)
)
@@ -202,8 +202,8 @@ class Inventory:
try:
self._facts[host] = self._read_all_facts(host)
self._facts[host]["inventory_hostname"] = host
- except Exception:
- raise Error("Can't load facts for
'{}'".format(host))
+ except Exception as ex:
+ raise Error("Can't load facts for '{}':
{}".format(host, ex))
@staticmethod
def _add_facts_from_file(facts, yaml_path):
@@ -254,8 +254,8 @@ class Projects:
with open(mappings_path, "r") as infile:
mappings = yaml.load(infile)
self._mappings = mappings["mappings"]
- except Exception:
- raise Error("Can't load mappings")
+ except Exception as ex:
+ raise Error("Can't load mappings: {}".format(ex))
source = os.path.join(base, "vars", "projects")
@@ -273,8 +273,8 @@ class Projects:
with open(yaml_path, "r") as infile:
packages = yaml.load(infile)
self._packages[project] = packages["packages"]
- except Exception:
- raise Error("Can't load packages for
'{}'".format(project))
+ except Exception as ex:
+ raise Error("Can't load packages for '{}':
{}".format(project, ex))
def expand_pattern(self, pattern):
projects = Util.expand_pattern(pattern, self._packages, "project")
@@ -398,8 +398,8 @@ class Application:
try:
subprocess.check_call(cmd)
- except Exception:
- raise Error("Failed to run {} on '{}'".format(playbook,
hosts))
+ except Exception as ex:
+ raise Error("Failed to run {} on '{}': {}".format(playbook,
hosts), ex)
def _action_hosts(self, _hosts, _projects, _revision):
for host in self._inventory.expand_pattern("all"):
@@ -478,8 +478,8 @@ class Application:
try:
subprocess.check_call(cmd)
- except Exception:
- raise Error("Failed to install '{}'".format(host))
+ except Exception as ex:
+ raise Error("Failed to install '{}': {}".format(host,
ex))
def _action_update(self, hosts, projects, git_revision):
self._execute_playbook("update", hosts, projects, git_revision)
--
2.20.1