Add default error IDs everywhere else.

The idea here is to make sure all return points have the same type for
the error cases.  There's not really all that many, so they just go in
one patch.  Some of these could potentially turn into more specialized
errors later.

(cherry picked from commit fd901c5e3f)
This commit is contained in:
Chris Lumens 2018-08-09 11:05:59 -04:00
parent 7b977745c7
commit 90aa81e964
2 changed files with 38 additions and 22 deletions

View File

@ -24,6 +24,9 @@ BAD_COMPOSE_TYPE = "BadComposeType"
# not convert into an integer.
BAD_LIMIT_OR_OFFSET = "BadLimitOrOffset"
# Returned from the API for all other errors from a /blueprints/* route.
BLUEPRINTS_ERROR = "BlueprintsError"
# Returned from the API for any other error resulting from /compose failing.
BUILD_FAILED = "BuildFailed"
@ -32,6 +35,13 @@ BUILD_FAILED = "BuildFailed"
# a build that is not yet done.
BUILD_IN_WRONG_STATE = "BuildInWrongState"
# Returned from the API when some file is requested that is not present - a log
# file, the compose results, etc.
BUILD_MISSING_FILE = "BuildMissingFile"
# Returned from the API for all other errors from a /compose/* route.
COMPOSE_ERROR = "ComposeError"
# Returned from the API when a blueprint name or other similar identifier is
# given that contains invalid characters.
INVALID_NAME = "InvalidName"
@ -40,6 +50,12 @@ INVALID_NAME = "InvalidName"
# what to compose.
MISSING_POST = "MissingPost"
# Returned from the API for all other errors from a /modules/* route.
MODULES_ERROR = "ModulesError"
# Returned from the API for all other errors from a /projects/* route.
PROJECTS_ERROR = "ProjectsError"
# Returned from the API when someone tries to modify an immutable system source.
SYSTEM_SOURCE = "SystemSource"

View File

@ -1138,7 +1138,7 @@ def v0_api(api):
with api.config["GITLOCK"].lock:
commits = take_limits(list_commits(api.config["GITLOCK"].repo, branch, filename), offset, limit)
except Exception as e:
errors.append("%s: %s" % (blueprint_name, str(e)))
errors.append({"id": BLUEPRINTS_ERROR, "msg": "%s: %s" % (blueprint_name, str(e))})
log.error("(v0_blueprints_changes) %s", str(e))
else:
blueprints.append({"name":blueprint_name, "changes":commits, "total":len(commits)})
@ -1172,7 +1172,7 @@ def v0_api(api):
workspace_write(api.config["GITLOCK"].repo, branch, blueprint)
except Exception as e:
log.error("(v0_blueprints_new) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": BLUEPRINTS_ERROR, "msg": str(e)}]), 400
else:
return jsonify(status=True)
@ -1194,7 +1194,7 @@ def v0_api(api):
delete_recipe(api.config["GITLOCK"].repo, branch, blueprint_name)
except Exception as e:
log.error("(v0_blueprints_delete) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": BLUEPRINTS_ERROR, "msg": str(e)}]), 400
else:
return jsonify(status=True)
@ -1219,7 +1219,7 @@ def v0_api(api):
workspace_write(api.config["GITLOCK"].repo, branch, blueprint)
except Exception as e:
log.error("(v0_blueprints_workspace) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": BLUEPRINTS_ERROR, "msg": str(e)}]), 400
else:
return jsonify(status=True)
@ -1241,7 +1241,7 @@ def v0_api(api):
workspace_delete(api.config["GITLOCK"].repo, branch, blueprint_name)
except Exception as e:
log.error("(v0_blueprints_delete_workspace) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": BLUEPRINTS_ERROR, "msg": str(e)}]), 400
else:
return jsonify(status=True)
@ -1291,7 +1291,7 @@ def v0_api(api):
tag_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name)
except Exception as e:
log.error("(v0_blueprints_tag) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": BLUEPRINTS_ERROR, "msg": str(e)}]), 400
else:
return jsonify(status=True)
@ -1380,7 +1380,7 @@ def v0_api(api):
with api.config["GITLOCK"].lock:
blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name)
except Exception as e:
errors.append("%s: %s" % (blueprint_name, str(e)))
errors.append({"id": BLUEPRINTS_ERROR, "msg": "%s: %s" % (blueprint_name, str(e))})
log.error("(v0_blueprints_freeze) %s", str(e))
# No blueprint found, skip it.
@ -1398,7 +1398,7 @@ def v0_api(api):
with api.config["DNFLOCK"].lock:
deps = projects_depsolve(api.config["DNFLOCK"].dbo, projects, blueprint.group_names)
except ProjectsError as e:
errors.append("%s: %s" % (blueprint_name, str(e)))
errors.append({"id": BLUEPRINTS_ERROR, "msg": "%s: %s" % (blueprint_name, str(e))})
log.error("(v0_blueprints_freeze) %s", str(e))
blueprints.append({"blueprint": blueprint.freeze(deps)})
@ -1440,7 +1440,7 @@ def v0_api(api):
with api.config["GITLOCK"].lock:
blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name)
except Exception as e:
errors.append("%s: %s" % (blueprint_name, str(e)))
errors.append({"id": BLUEPRINTS_ERROR, "msg": "%s: %s" % (blueprint_name, str(e))})
log.error("(v0_blueprints_depsolve) %s", str(e))
# No blueprint found, skip it.
@ -1458,7 +1458,7 @@ def v0_api(api):
with api.config["DNFLOCK"].lock:
deps = projects_depsolve(api.config["DNFLOCK"].dbo, projects, blueprint.group_names)
except ProjectsError as e:
errors.append("%s: %s" % (blueprint_name, str(e)))
errors.append({"id": BLUEPRINTS_ERROR, "msg": "%s: %s" % (blueprint_name, str(e))})
log.error("(v0_blueprints_depsolve) %s", str(e))
# Get the NEVRA's of the modules and projects, add as "modules"
@ -1487,7 +1487,7 @@ def v0_api(api):
available = projects_list(api.config["DNFLOCK"].dbo)
except ProjectsError as e:
log.error("(v0_projects_list) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": PROJECTS_ERROR, "msg": str(e)}]), 400
projects = take_limits(available, offset, limit)
return jsonify(projects=projects, offset=offset, limit=limit, total=len(available))
@ -1506,7 +1506,7 @@ def v0_api(api):
projects = projects_info(api.config["DNFLOCK"].dbo, project_names.split(","))
except ProjectsError as e:
log.error("(v0_projects_info) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": PROJECTS_ERROR, "msg": str(e)}]), 400
if not projects:
msg = "one of the requested projects does not exist: %s" % project_names
@ -1529,7 +1529,7 @@ def v0_api(api):
deps = projects_depsolve(api.config["DNFLOCK"].dbo, [(n, "*") for n in project_names.split(",")], [])
except ProjectsError as e:
log.error("(v0_projects_depsolve) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": PROJECTS_ERROR, "msg": str(e)}]), 400
if not deps:
msg = "one of the requested projects does not exist: %s" % project_names
@ -1641,7 +1641,7 @@ def v0_api(api):
dbo.fill_sack(load_system_repo=False)
dbo.read_comps()
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": PROJECTS_ERROR, "msg": str(e)}]), 400
return jsonify(status=True)
@ -1698,7 +1698,7 @@ def v0_api(api):
available = modules_list(api.config["DNFLOCK"].dbo, module_names)
except ProjectsError as e:
log.error("(v0_modules_list) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": MODULES_ERROR, "msg": str(e)}]), 400
if module_names and not available:
msg = "one of the requested modules does not exist: %s" % module_names
@ -1721,7 +1721,7 @@ def v0_api(api):
modules = modules_info(api.config["DNFLOCK"].dbo, module_names.split(","))
except ProjectsError as e:
log.error("(v0_modules_info) %s", str(e))
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": MODULES_ERROR, "msg": str(e)}]), 400
if not modules:
msg = "one of the requested modules does not exist: %s" % module_names
@ -1852,7 +1852,7 @@ def v0_api(api):
try:
uuid_cancel(api.config["COMPOSER_CFG"], uuid)
except Exception as e:
return jsonify(status=False, errors=["%s: %s" % (uuid, str(e))]), 400
return jsonify(status=False, errors=[{"id": COMPOSE_ERROR, "msg": "%s: %s" % (uuid, str(e))}]),400
else:
return jsonify(status=True, uuid=uuid)
@ -1877,7 +1877,7 @@ def v0_api(api):
try:
uuid_delete(api.config["COMPOSER_CFG"], uuid)
except Exception as e:
errors.append("%s: %s" % (uuid, str(e)))
errors.append({"id": COMPOSE_ERROR, "msg": "%s: %s" % (uuid, str(e))})
else:
results.append({"uuid":uuid, "status":True})
return jsonify(uuids=results, errors=errors)
@ -1894,7 +1894,7 @@ def v0_api(api):
try:
info = uuid_info(api.config["COMPOSER_CFG"], uuid)
except Exception as e:
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": COMPOSE_ERROR, "msg": str(e)}]), 400
if info is None:
return jsonify(status=False, errors=[{"id": UNKNOWN_UUID, "msg": "%s is not a valid build uuid" % uuid}]), 400
@ -1980,7 +1980,7 @@ def v0_api(api):
# Make sure it really exists
if not os.path.exists(image_path):
return jsonify(status=False, errors=["Build %s is missing image file %s" % (uuid, image_name)]), 400
return jsonify(status=False, errors=[{"id": BUILD_MISSING_FILE, "msg": "Build %s is missing image file %s" % (uuid, image_name)}]), 400
# Make the image name unique
image_name = uuid + "-" + image_name
@ -1999,7 +1999,7 @@ def v0_api(api):
try:
size = int(request.args.get("size", "1024"))
except ValueError as e:
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": COMPOSE_ERROR, "msg": str(e)}]), 400
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
if status is None:
@ -2009,4 +2009,4 @@ def v0_api(api):
try:
return Response(uuid_log(api.config["COMPOSER_CFG"], uuid, size), direct_passthrough=True)
except RuntimeError as e:
return jsonify(status=False, errors=[str(e)]), 400
return jsonify(status=False, errors=[{"id": COMPOSE_ERROR, "msg": str(e)}]), 400