Since the program is self-contained and not exposing a library API there
is no reason to subclass the Exception object. Removing ensures that the
try/except block around the application execution will catch all
exceptions and print a pretty message.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
guests/lcitool | 58 ++++++++++++++++++++++----------------------------
1 file changed, 26 insertions(+), 32 deletions(-)
diff --git a/guests/lcitool b/guests/lcitool
index 1d17c04..487b67d 100755
--- a/guests/lcitool
+++ b/guests/lcitool
@@ -35,13 +35,6 @@ except ImportError:
import ConfigParser as configparser
-class Error(Exception):
-
- def __init__(self, message):
- super(Error, self).__init__()
- self.message = message
-
-
class Util:
@staticmethod
@@ -57,7 +50,7 @@ class Util:
@staticmethod
def expand_pattern(pattern, source, name):
if pattern is None:
- raise Error("Missing {} list".format(name))
+ raise Exception("Missing {} list".format(name))
if pattern == "all":
pattern = "*"
@@ -74,7 +67,7 @@ class Util:
partial_matches += [item]
if not partial_matches:
- raise Error("Invalid {} list '{}'".format(name,
pattern))
+ raise Exception("Invalid {} list '{}'".format(name,
pattern))
matches += partial_matches
@@ -142,7 +135,7 @@ class Config:
try:
os.mkdir(config_dir)
except Exception as ex:
- raise Error(
+ raise Exception(
"Can't create configuration directory ({}):
{}".format(
config_dir, ex,
)
@@ -164,14 +157,14 @@ class Config:
with open(flavor_file, "w") as infile:
infile.write("{}\n".format(flavor))
except Exception as ex:
- raise Error(
+ raise Exception(
"Can't write flavor file ({}): {}".format(
flavor_file, ex
)
)
if flavor not in ["test", "jenkins"]:
- raise Error("Invalid flavor '{}'".format(flavor))
+ raise Exception("Invalid flavor '{}'".format(flavor))
return flavor
@@ -188,7 +181,7 @@ class Config:
if not infile.readline().strip():
raise ValueError
except Exception as ex:
- raise Error(
+ raise Exception(
"Missing or invalid vault password file ({}): {}".format(
vault_pass_file, ex
)
@@ -204,7 +197,7 @@ class Config:
if not infile.readline().strip():
raise ValueError
except Exception as ex:
- raise Error(
+ raise Exception(
"Missing or invalid root password file ({}): {}".format(
root_pass_file, ex
)
@@ -224,7 +217,7 @@ class Inventory:
parser.read(ansible_cfg_path)
inventory_path = parser.get("defaults", "inventory")
except Exception as ex:
- raise Error(
+ raise Exception(
"Can't read inventory location in ansible.cfg:
{}".format(ex))
inventory_path = os.path.join(base, inventory_path)
@@ -239,7 +232,7 @@ class Inventory:
host = line.strip()
self._facts[host] = {}
except Exception as ex:
- raise Error(
+ raise Exception(
"Missing or invalid inventory ({}): {}".format(
inventory_path, ex
)
@@ -250,7 +243,8 @@ class Inventory:
self._facts[host] = self._read_all_facts(host)
self._facts[host]["inventory_hostname"] = host
except Exception as ex:
- raise Error("Can't load facts for '{}':
{}".format(host, ex))
+ raise Exception("Can't load facts for '{}':
{}".format(
+ host, ex))
@staticmethod
def _add_facts_from_file(facts, yaml_path):
@@ -302,7 +296,7 @@ class Projects:
mappings = yaml.load(infile)
self._mappings = mappings["mappings"]
except Exception as ex:
- raise Error("Can't load mappings: {}".format(ex))
+ raise Exception("Can't load mappings: {}".format(ex))
source = os.path.join(base, "vars", "projects")
@@ -321,7 +315,7 @@ class Projects:
packages = yaml.load(infile)
self._packages[project] = packages["packages"]
except Exception as ex:
- raise Error(
+ raise Exception(
"Can't load packages for '{}':
{}".format(project, ex))
def expand_pattern(self, pattern):
@@ -434,7 +428,7 @@ class Application:
if git_revision is not None:
tokens = git_revision.split("/")
if len(tokens) < 2:
- raise Error(
+ raise Exception(
"Missing or invalid git revision
'{}'".format(git_revision)
)
git_remote = tokens[0]
@@ -477,7 +471,7 @@ class Application:
try:
subprocess.check_call(cmd)
except Exception as ex:
- raise Error(
+ raise Exception(
"Failed to run {} on '{}': {}".format(playbook, hosts,
ex))
def _action_hosts(self, args):
@@ -519,7 +513,7 @@ class Application:
elif facts["os_name"] in ["CentOS", "Fedora"]:
install_config = "kickstart.cfg"
else:
- raise Error(
+ raise Exception(
"Host {} doesn't support installation".format(host)
)
initrd_inject = os.path.join(base, "configs", install_config)
@@ -558,7 +552,7 @@ class Application:
try:
subprocess.check_call(cmd)
except Exception as ex:
- raise Error("Failed to install '{}': {}".format(host,
ex))
+ raise Exception("Failed to install '{}':
{}".format(host, ex))
def _action_update(self, args):
self._execute_playbook("update", args.hosts, args.projects,
@@ -573,7 +567,7 @@ class Application:
hosts = self._inventory.expand_pattern(args.hosts)
if len(hosts) > 1:
- raise Error("Can't generate Dockerfile for multiple hosts")
+ raise Exception("Can't generate Dockerfile for multiple
hosts")
host = hosts[0]
facts = self._inventory.get_facts(host)
@@ -583,18 +577,18 @@ class Application:
os_full = os_name + os_version
if package_format not in ["deb", "rpm"]:
- raise Error("Host {} doesn't support
Dockerfiles".format(host))
+ raise Exception("Host {} doesn't support
Dockerfiles".format(host))
if args.cross_arch:
if os_name != "Debian":
- raise Error("Cannot cross compile on {}".format(os_name))
+ raise Exception("Cannot cross compile on {}".format(os_name))
if args.cross_arch == self._native_arch:
- raise Error("Cross arch {} should differ from native {}".
+ raise Exception("Cross arch {} should differ from native {}".
format(args.cross_arch, self._native_arch))
projects = self._projects.expand_pattern(args.projects)
for project in projects:
if project not in facts["projects"]:
- raise Error(
+ raise Exception(
"Host {} doesn't support project {}".format(
host,
project,
@@ -620,8 +614,8 @@ class Application:
if key in mappings[package]:
cross_policy = mappings[package][key]
if cross_policy not in ["native", "foreign",
"skip"]:
- raise Error("Unexpected cross arch policy {} for {}",
- cross_policy, package)
+ raise Exception("Unexpected cross arch policy {} for {}",
+ cross_policy, package)
for key in keys:
if key in mappings[package]:
@@ -702,6 +696,6 @@ class Application:
if __name__ == "__main__":
try:
Application().run()
- except Error as err:
- sys.stderr.write("{}: {}\n".format(sys.argv[0], err.message))
+ except Exception as err:
+ sys.stderr.write("{}: {}\n".format(sys.argv[0], err))
sys.exit(1)
--
2.20.1