Update the error responses to just return lists of strings.
This makes error handling consistent and easier than a couple layers of fields to fetch.
This commit is contained in:
parent
d44957aa95
commit
f40f7cc0fd
@ -177,8 +177,10 @@ def blueprints_diff(socket_path, api_version, args, show_json=False):
|
|||||||
print(json.dumps(result, indent=4))
|
print(json.dumps(result, indent=4))
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if result.get("error", False):
|
for err in result.get("errors", []):
|
||||||
log.error(result["error"]["msg"])
|
log.error(err)
|
||||||
|
|
||||||
|
if result.get("errors", False):
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
for diff in result["diff"]:
|
for diff in result["diff"]:
|
||||||
@ -380,7 +382,7 @@ def blueprints_freeze(socket_path, api_version, args, show_json=False):
|
|||||||
|
|
||||||
# Print any errors
|
# Print any errors
|
||||||
for err in result.get("errors", []):
|
for err in result.get("errors", []):
|
||||||
log.error("%s: %s", err["blueprint"], err["msg"])
|
log.error(err)
|
||||||
|
|
||||||
# Return a 1 if there are any errors
|
# Return a 1 if there are any errors
|
||||||
if result.get("errors", []):
|
if result.get("errors", []):
|
||||||
@ -507,8 +509,9 @@ def blueprints_workspace(socket_path, api_version, args, show_json=False):
|
|||||||
result = client.post_url_toml(socket_path, api_route, blueprint_toml)
|
result = client.post_url_toml(socket_path, api_route, blueprint_toml)
|
||||||
if show_json:
|
if show_json:
|
||||||
print(json.dumps(result, indent=4))
|
print(json.dumps(result, indent=4))
|
||||||
elif result.get("error", False):
|
|
||||||
log.error(result["error"]["msg"])
|
for err in result.get("errors", []):
|
||||||
|
log.error(err)
|
||||||
|
|
||||||
# Any errors results in returning a 1, but we continue with the rest first
|
# Any errors results in returning a 1, but we continue with the rest first
|
||||||
if not result.get("status", False):
|
if not result.get("status", False):
|
||||||
|
@ -181,11 +181,10 @@ def compose_start(socket_path, api_version, args, show_json=False, testmode=0):
|
|||||||
print(json.dumps(result, indent=4))
|
print(json.dumps(result, indent=4))
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if result.get("error", False):
|
for err in result.get("errors", []):
|
||||||
log.error(result["error"]["msg"])
|
log.error(err)
|
||||||
return 1
|
|
||||||
|
|
||||||
if result["status"] == False:
|
if result["status"] == False or result.get("errors", False):
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
print("Compose %s added to the queue" % result["build_id"])
|
print("Compose %s added to the queue" % result["build_id"])
|
||||||
@ -290,7 +289,7 @@ def compose_delete(socket_path, api_version, args, show_json=False, testmode=0):
|
|||||||
|
|
||||||
# Print any errors
|
# Print any errors
|
||||||
for err in result.get("errors", []):
|
for err in result.get("errors", []):
|
||||||
log.error("%s: %s", err["uuid"], err["msg"])
|
log.error(err)
|
||||||
|
|
||||||
if result.get("errors", []):
|
if result.get("errors", []):
|
||||||
return 1
|
return 1
|
||||||
@ -324,8 +323,11 @@ def compose_details(socket_path, api_version, args, show_json=False, testmode=0)
|
|||||||
if show_json:
|
if show_json:
|
||||||
print(json.dumps(result, indent=4))
|
print(json.dumps(result, indent=4))
|
||||||
return 0
|
return 0
|
||||||
if "status" in result:
|
|
||||||
print(result["error"]["msg"])
|
for err in result.get("errors", []):
|
||||||
|
log.error(err)
|
||||||
|
|
||||||
|
if result.get("errors", []):
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
if result["image_size"] > 0:
|
if result["image_size"] > 0:
|
||||||
|
@ -61,8 +61,9 @@ def handle_api_result(result, show_json=False):
|
|||||||
"""
|
"""
|
||||||
if show_json:
|
if show_json:
|
||||||
print(json.dumps(result, indent=4))
|
print(json.dumps(result, indent=4))
|
||||||
elif result.get("error", False):
|
|
||||||
log.error(result["error"]["msg"])
|
for err in result.get("errors", []):
|
||||||
|
log.error(err)
|
||||||
|
|
||||||
if result["status"] == True:
|
if result["status"] == True:
|
||||||
return 0
|
return 0
|
||||||
|
@ -50,7 +50,7 @@ def get_url_raw(socket_path, url):
|
|||||||
if r.status == 400:
|
if r.status == 400:
|
||||||
err = json.loads(r.data.decode("utf-8"))
|
err = json.loads(r.data.decode("utf-8"))
|
||||||
if "status" in err and err["status"] == False:
|
if "status" in err and err["status"] == False:
|
||||||
raise RuntimeError(err["error"]["msg"])
|
raise RuntimeError(", ".join(err["errors"]))
|
||||||
|
|
||||||
return r.data.decode('utf-8')
|
return r.data.decode('utf-8')
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ def download_file(socket_path, url, progress=True):
|
|||||||
if r.status == 400:
|
if r.status == 400:
|
||||||
err = json.loads(r.data.decode("utf-8"))
|
err = json.loads(r.data.decode("utf-8"))
|
||||||
if not err["status"]:
|
if not err["status"]:
|
||||||
raise RuntimeError(err["error"]["msg"])
|
raise RuntimeError(", ".join(err["errors"]))
|
||||||
|
|
||||||
filename = get_filename(r.headers)
|
filename = get_filename(r.headers)
|
||||||
if os.path.exists(filename):
|
if os.path.exists(filename):
|
||||||
|
@ -35,9 +35,7 @@ Some requests only return a status/error response.
|
|||||||
Error response::
|
Error response::
|
||||||
|
|
||||||
{
|
{
|
||||||
"error": {
|
"errors": ["ggit-error: Failed to remove entry. File isn't in the tree - jboss.toml (-1)"]
|
||||||
"msg": "ggit-error: Failed to remove entry. File isn't in the tree - jboss.toml (-1)"
|
|
||||||
},
|
|
||||||
"status": false
|
"status": false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,12 +114,7 @@ store the new blueprint on the new branch.
|
|||||||
|
|
||||||
{
|
{
|
||||||
"changes": [],
|
"changes": [],
|
||||||
"errors": [
|
"errors": ["ggit-error: the path 'missing.toml' does not exist in the given tree (-3)"]
|
||||||
{
|
|
||||||
"msg": "ggit-error: the path 'missing.toml' does not exist in the given tree (-3)",
|
|
||||||
"blueprint": "missing"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"blueprints": []
|
"blueprints": []
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -924,7 +917,7 @@ def v0_api(api):
|
|||||||
limit = int(request.args.get("limit", "20"))
|
limit = int(request.args.get("limit", "20"))
|
||||||
offset = int(request.args.get("offset", "0"))
|
offset = int(request.args.get("offset", "0"))
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
with api.config["GITLOCK"].lock:
|
with api.config["GITLOCK"].lock:
|
||||||
blueprints = take_limits(map(lambda f: f[:-5], list_branch_files(api.config["GITLOCK"].repo, branch)), offset, limit)
|
blueprints = take_limits(map(lambda f: f[:-5], list_branch_files(api.config["GITLOCK"].repo, branch)), offset, limit)
|
||||||
@ -961,7 +954,7 @@ def v0_api(api):
|
|||||||
|
|
||||||
if not ws_blueprint and not git_blueprint:
|
if not ws_blueprint and not git_blueprint:
|
||||||
# Neither blueprint, return an error
|
# Neither blueprint, return an error
|
||||||
errors.append({"blueprint":blueprint_name, "msg":", ".join(exceptions)})
|
errors.append("%s: %s" % (blueprint_name, ", ".join(exceptions)))
|
||||||
elif ws_blueprint and not git_blueprint:
|
elif ws_blueprint and not git_blueprint:
|
||||||
# No git blueprint, return the workspace blueprint
|
# No git blueprint, return the workspace blueprint
|
||||||
changes.append({"name":blueprint_name, "changed":True})
|
changes.append({"name":blueprint_name, "changed":True})
|
||||||
@ -978,7 +971,7 @@ def v0_api(api):
|
|||||||
# Sort all the results by case-insensitive blueprint name
|
# Sort all the results by case-insensitive blueprint name
|
||||||
changes = sorted(changes, key=lambda c: c["name"].lower())
|
changes = sorted(changes, key=lambda c: c["name"].lower())
|
||||||
blueprints = sorted(blueprints, key=lambda r: r["name"].lower())
|
blueprints = sorted(blueprints, key=lambda r: r["name"].lower())
|
||||||
errors = sorted(errors, key=lambda e: e["blueprint"].lower())
|
errors = sorted(errors, key=lambda e: e.lower())
|
||||||
|
|
||||||
if out_fmt == "toml":
|
if out_fmt == "toml":
|
||||||
# With TOML output we just want to dump the raw blueprint, skipping the rest.
|
# With TOML output we just want to dump the raw blueprint, skipping the rest.
|
||||||
@ -995,7 +988,7 @@ def v0_api(api):
|
|||||||
limit = int(request.args.get("limit", "20"))
|
limit = int(request.args.get("limit", "20"))
|
||||||
offset = int(request.args.get("offset", "0"))
|
offset = int(request.args.get("offset", "0"))
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
blueprints = []
|
blueprints = []
|
||||||
errors = []
|
errors = []
|
||||||
@ -1005,13 +998,13 @@ def v0_api(api):
|
|||||||
with api.config["GITLOCK"].lock:
|
with api.config["GITLOCK"].lock:
|
||||||
commits = take_limits(list_commits(api.config["GITLOCK"].repo, branch, filename), offset, limit)
|
commits = take_limits(list_commits(api.config["GITLOCK"].repo, branch, filename), offset, limit)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
errors.append({"blueprint":blueprint_name, "msg":e})
|
errors.append("%s: %s" % (blueprint_name, str(e)))
|
||||||
log.error("(v0_blueprints_changes) %s", str(e))
|
log.error("(v0_blueprints_changes) %s", str(e))
|
||||||
else:
|
else:
|
||||||
blueprints.append({"name":blueprint_name, "changes":commits, "total":len(commits)})
|
blueprints.append({"name":blueprint_name, "changes":commits, "total":len(commits)})
|
||||||
|
|
||||||
blueprints = sorted(blueprints, key=lambda r: r["name"].lower())
|
blueprints = sorted(blueprints, key=lambda r: r["name"].lower())
|
||||||
errors = sorted(errors, key=lambda e: e["blueprint"].lower())
|
errors = sorted(errors, key=lambda e: e.lower())
|
||||||
|
|
||||||
return jsonify(blueprints=blueprints, errors=errors, offset=offset, limit=limit)
|
return jsonify(blueprints=blueprints, errors=errors, offset=offset, limit=limit)
|
||||||
|
|
||||||
@ -1034,7 +1027,7 @@ def v0_api(api):
|
|||||||
workspace_write(api.config["GITLOCK"].repo, branch, blueprint)
|
workspace_write(api.config["GITLOCK"].repo, branch, blueprint)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error("(v0_blueprints_new) %s", str(e))
|
log.error("(v0_blueprints_new) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
else:
|
else:
|
||||||
return jsonify(status=True)
|
return jsonify(status=True)
|
||||||
|
|
||||||
@ -1048,7 +1041,7 @@ def v0_api(api):
|
|||||||
delete_recipe(api.config["GITLOCK"].repo, branch, blueprint_name)
|
delete_recipe(api.config["GITLOCK"].repo, branch, blueprint_name)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error("(v0_blueprints_delete) %s", str(e))
|
log.error("(v0_blueprints_delete) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
else:
|
else:
|
||||||
return jsonify(status=True)
|
return jsonify(status=True)
|
||||||
|
|
||||||
@ -1067,7 +1060,7 @@ def v0_api(api):
|
|||||||
workspace_write(api.config["GITLOCK"].repo, branch, blueprint)
|
workspace_write(api.config["GITLOCK"].repo, branch, blueprint)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error("(v0_blueprints_workspace) %s", str(e))
|
log.error("(v0_blueprints_workspace) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
else:
|
else:
|
||||||
return jsonify(status=True)
|
return jsonify(status=True)
|
||||||
|
|
||||||
@ -1081,7 +1074,7 @@ def v0_api(api):
|
|||||||
workspace_delete(api.config["GITLOCK"].repo, branch, blueprint_name)
|
workspace_delete(api.config["GITLOCK"].repo, branch, blueprint_name)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error("(v0_blueprints_delete_workspace) %s", str(e))
|
log.error("(v0_blueprints_delete_workspace) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, error=[str(e)]), 400
|
||||||
else:
|
else:
|
||||||
return jsonify(status=True)
|
return jsonify(status=True)
|
||||||
|
|
||||||
@ -1099,7 +1092,7 @@ def v0_api(api):
|
|||||||
workspace_write(api.config["GITLOCK"].repo, branch, blueprint)
|
workspace_write(api.config["GITLOCK"].repo, branch, blueprint)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error("(v0_blueprints_undo) %s", str(e))
|
log.error("(v0_blueprints_undo) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
else:
|
else:
|
||||||
return jsonify(status=True)
|
return jsonify(status=True)
|
||||||
|
|
||||||
@ -1113,7 +1106,7 @@ def v0_api(api):
|
|||||||
tag_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name)
|
tag_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error("(v0_blueprints_tag) %s", str(e))
|
log.error("(v0_blueprints_tag) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
else:
|
else:
|
||||||
return jsonify(status=True)
|
return jsonify(status=True)
|
||||||
|
|
||||||
@ -1131,7 +1124,7 @@ def v0_api(api):
|
|||||||
old_blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name, from_commit)
|
old_blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name, from_commit)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error("(v0_blueprints_diff) %s", str(e))
|
log.error("(v0_blueprints_diff) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if to_commit == "WORKSPACE":
|
if to_commit == "WORKSPACE":
|
||||||
@ -1149,7 +1142,7 @@ def v0_api(api):
|
|||||||
new_blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name, to_commit)
|
new_blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name, to_commit)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error("(v0_blueprints_diff) %s", str(e))
|
log.error("(v0_blueprints_diff) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
diff = recipe_diff(old_blueprint, new_blueprint)
|
diff = recipe_diff(old_blueprint, new_blueprint)
|
||||||
return jsonify(diff=diff)
|
return jsonify(diff=diff)
|
||||||
@ -1178,12 +1171,12 @@ def v0_api(api):
|
|||||||
with api.config["GITLOCK"].lock:
|
with api.config["GITLOCK"].lock:
|
||||||
blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name)
|
blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
errors.append({"blueprint":blueprint_name, "msg":str(e)})
|
errors.append("%s: %s" % (blueprint_name, str(e)))
|
||||||
log.error("(v0_blueprints_freeze) %s", str(e))
|
log.error("(v0_blueprints_freeze) %s", str(e))
|
||||||
|
|
||||||
# No blueprint found, skip it.
|
# No blueprint found, skip it.
|
||||||
if not blueprint:
|
if not blueprint:
|
||||||
errors.append({"blueprint":blueprint_name, "msg":"blueprint not found"})
|
errors.append("%s: blueprint_not_found" % (blueprint_name))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Combine modules and packages and depsolve the list
|
# Combine modules and packages and depsolve the list
|
||||||
@ -1196,7 +1189,7 @@ def v0_api(api):
|
|||||||
with api.config["YUMLOCK"].lock:
|
with api.config["YUMLOCK"].lock:
|
||||||
deps = projects_depsolve(api.config["YUMLOCK"].yb, projects)
|
deps = projects_depsolve(api.config["YUMLOCK"].yb, projects)
|
||||||
except ProjectsError as e:
|
except ProjectsError as e:
|
||||||
errors.append({"blueprint":blueprint_name, "msg":str(e)})
|
errors.append("%s: %s" % (blueprint_name, str(e)))
|
||||||
log.error("(v0_blueprints_freeze) %s", str(e))
|
log.error("(v0_blueprints_freeze) %s", str(e))
|
||||||
|
|
||||||
blueprints.append({"blueprint": blueprint.freeze(deps)})
|
blueprints.append({"blueprint": blueprint.freeze(deps)})
|
||||||
@ -1230,12 +1223,12 @@ def v0_api(api):
|
|||||||
with api.config["GITLOCK"].lock:
|
with api.config["GITLOCK"].lock:
|
||||||
blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name)
|
blueprint = read_recipe_commit(api.config["GITLOCK"].repo, branch, blueprint_name)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
errors.append({"blueprint":blueprint_name, "msg":str(e)})
|
errors.append("%s: %s" % (blueprint_name, str(e)))
|
||||||
log.error("(v0_blueprints_depsolve) %s", str(e))
|
log.error("(v0_blueprints_depsolve) %s", str(e))
|
||||||
|
|
||||||
# No blueprint found, skip it.
|
# No blueprint found, skip it.
|
||||||
if not blueprint:
|
if not blueprint:
|
||||||
errors.append({"blueprint":blueprint_name, "msg":"blueprint not found"})
|
errors.append("%s: blueprint not found" % blueprint_name)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Combine modules and packages and depsolve the list
|
# Combine modules and packages and depsolve the list
|
||||||
@ -1248,7 +1241,7 @@ def v0_api(api):
|
|||||||
with api.config["YUMLOCK"].lock:
|
with api.config["YUMLOCK"].lock:
|
||||||
deps = projects_depsolve(api.config["YUMLOCK"].yb, projects)
|
deps = projects_depsolve(api.config["YUMLOCK"].yb, projects)
|
||||||
except ProjectsError as e:
|
except ProjectsError as e:
|
||||||
errors.append({"blueprint":blueprint_name, "msg":str(e)})
|
errors.append("%s: %s" % (blueprint_name, str(e)))
|
||||||
log.error("(v0_blueprints_depsolve) %s", str(e))
|
log.error("(v0_blueprints_depsolve) %s", str(e))
|
||||||
|
|
||||||
# Get the NEVRA's of the modules and projects, add as "modules"
|
# Get the NEVRA's of the modules and projects, add as "modules"
|
||||||
@ -1270,14 +1263,14 @@ def v0_api(api):
|
|||||||
limit = int(request.args.get("limit", "20"))
|
limit = int(request.args.get("limit", "20"))
|
||||||
offset = int(request.args.get("offset", "0"))
|
offset = int(request.args.get("offset", "0"))
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with api.config["YUMLOCK"].lock:
|
with api.config["YUMLOCK"].lock:
|
||||||
available = projects_list(api.config["YUMLOCK"].yb)
|
available = projects_list(api.config["YUMLOCK"].yb)
|
||||||
except ProjectsError as e:
|
except ProjectsError as e:
|
||||||
log.error("(v0_projects_list) %s", str(e))
|
log.error("(v0_projects_list) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
projects = take_limits(available, offset, limit)
|
projects = take_limits(available, offset, limit)
|
||||||
return jsonify(projects=projects, offset=offset, limit=limit, total=len(available))
|
return jsonify(projects=projects, offset=offset, limit=limit, total=len(available))
|
||||||
@ -1291,7 +1284,7 @@ def v0_api(api):
|
|||||||
projects = projects_info(api.config["YUMLOCK"].yb, project_names.split(","))
|
projects = projects_info(api.config["YUMLOCK"].yb, project_names.split(","))
|
||||||
except ProjectsError as e:
|
except ProjectsError as e:
|
||||||
log.error("(v0_projects_info) %s", str(e))
|
log.error("(v0_projects_info) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
return jsonify(projects=projects)
|
return jsonify(projects=projects)
|
||||||
|
|
||||||
@ -1304,7 +1297,7 @@ def v0_api(api):
|
|||||||
deps = projects_depsolve(api.config["YUMLOCK"].yb, project_names.split(","))
|
deps = projects_depsolve(api.config["YUMLOCK"].yb, project_names.split(","))
|
||||||
except ProjectsError as e:
|
except ProjectsError as e:
|
||||||
log.error("(v0_projects_depsolve) %s", str(e))
|
log.error("(v0_projects_depsolve) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
return jsonify(projects=deps)
|
return jsonify(projects=deps)
|
||||||
|
|
||||||
@ -1317,7 +1310,7 @@ def v0_api(api):
|
|||||||
limit = int(request.args.get("limit", "20"))
|
limit = int(request.args.get("limit", "20"))
|
||||||
offset = int(request.args.get("offset", "0"))
|
offset = int(request.args.get("offset", "0"))
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
if module_names:
|
if module_names:
|
||||||
module_names = module_names.split(",")
|
module_names = module_names.split(",")
|
||||||
@ -1327,7 +1320,7 @@ def v0_api(api):
|
|||||||
available = modules_list(api.config["YUMLOCK"].yb, module_names)
|
available = modules_list(api.config["YUMLOCK"].yb, module_names)
|
||||||
except ProjectsError as e:
|
except ProjectsError as e:
|
||||||
log.error("(v0_modules_list) %s", str(e))
|
log.error("(v0_modules_list) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
modules = take_limits(available, offset, limit)
|
modules = take_limits(available, offset, limit)
|
||||||
return jsonify(modules=modules, offset=offset, limit=limit, total=len(available))
|
return jsonify(modules=modules, offset=offset, limit=limit, total=len(available))
|
||||||
@ -1341,7 +1334,7 @@ def v0_api(api):
|
|||||||
modules = modules_info(api.config["YUMLOCK"].yb, module_names.split(","))
|
modules = modules_info(api.config["YUMLOCK"].yb, module_names.split(","))
|
||||||
except ProjectsError as e:
|
except ProjectsError as e:
|
||||||
log.error("(v0_modules_info) %s", str(e))
|
log.error("(v0_modules_info) %s", str(e))
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
return jsonify(modules=modules)
|
return jsonify(modules=modules)
|
||||||
|
|
||||||
@ -1366,7 +1359,7 @@ def v0_api(api):
|
|||||||
|
|
||||||
errors = []
|
errors = []
|
||||||
if not compose:
|
if not compose:
|
||||||
return jsonify(status=False, error={"msg":"Missing POST body"}), 400
|
return jsonify(status=False, errors=["Missing POST body"]), 400
|
||||||
|
|
||||||
if "blueprint_name" not in compose:
|
if "blueprint_name" not in compose:
|
||||||
errors.append("No 'blueprint_name' in the JSON request")
|
errors.append("No 'blueprint_name' in the JSON request")
|
||||||
@ -1384,13 +1377,13 @@ def v0_api(api):
|
|||||||
compose_type = compose["compose_type"]
|
compose_type = compose["compose_type"]
|
||||||
|
|
||||||
if errors:
|
if errors:
|
||||||
return jsonify(status=False, error={"msg":"\n".join(errors)}), 400
|
return jsonify(status=False, errors=errors), 400
|
||||||
|
|
||||||
try:
|
try:
|
||||||
build_id = start_build(api.config["COMPOSER_CFG"], api.config["YUMLOCK"], api.config["GITLOCK"],
|
build_id = start_build(api.config["COMPOSER_CFG"], api.config["YUMLOCK"], api.config["GITLOCK"],
|
||||||
branch, blueprint_name, compose_type, test_mode)
|
branch, blueprint_name, compose_type, test_mode)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
return jsonify(status=True, build_id=build_id)
|
return jsonify(status=True, build_id=build_id)
|
||||||
|
|
||||||
@ -1440,15 +1433,15 @@ def v0_api(api):
|
|||||||
"""Cancel a running compose and delete its results directory"""
|
"""Cancel a running compose and delete its results directory"""
|
||||||
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
||||||
if status is None:
|
if status is None:
|
||||||
return jsonify(status=False, error={"msg":"%s is not a valid build uuid" % uuid}), 400
|
return jsonify(status=False, errors=["%s is not a valid build uuid" % uuid]), 400
|
||||||
|
|
||||||
if status["queue_status"] not in ["WAITING", "RUNNING"]:
|
if status["queue_status"] not in ["WAITING", "RUNNING"]:
|
||||||
return jsonify(status=False, uuid=uuid, msg="Cannot cancel a build that is in the %s state" % status["queue_status"])
|
return jsonify(status=False, errors=["Build %s is not in WAITING or RUNNING." % uuid])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
uuid_cancel(api.config["COMPOSER_CFG"], uuid)
|
uuid_cancel(api.config["COMPOSER_CFG"], uuid)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify(status=False, uuid=uuid, error={"msg":str(e)}),400
|
return jsonify(status=False, errors=["%s: %s" % (uuid, str(e))]),400
|
||||||
else:
|
else:
|
||||||
return jsonify(status=True, uuid=uuid)
|
return jsonify(status=True, uuid=uuid)
|
||||||
|
|
||||||
@ -1461,14 +1454,14 @@ def v0_api(api):
|
|||||||
for uuid in [n.strip().lower() for n in uuids.split(",")]:
|
for uuid in [n.strip().lower() for n in uuids.split(",")]:
|
||||||
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
||||||
if status is None:
|
if status is None:
|
||||||
errors.append({"uuid": uuid, "msg": "Not a valid build uuid"})
|
errors.append("%s is not a valid build uuid" % uuid)
|
||||||
elif status["queue_status"] not in ["FINISHED", "FAILED"]:
|
elif status["queue_status"] not in ["FINISHED", "FAILED"]:
|
||||||
errors.append({"uuid":uuid, "msg":"Build not in FINISHED or FAILED."})
|
errors.append("Build %s is not in FINISHED or FAILED." % uuid)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
uuid_delete(api.config["COMPOSER_CFG"], uuid)
|
uuid_delete(api.config["COMPOSER_CFG"], uuid)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
errors.append({"uuid":uuid, "msg":str(e)})
|
errors.append("%s: %s" % (uuid, str(e)))
|
||||||
else:
|
else:
|
||||||
results.append({"uuid":uuid, "status":True})
|
results.append({"uuid":uuid, "status":True})
|
||||||
return jsonify(uuids=results, errors=errors)
|
return jsonify(uuids=results, errors=errors)
|
||||||
@ -1480,7 +1473,7 @@ def v0_api(api):
|
|||||||
try:
|
try:
|
||||||
info = uuid_info(api.config["COMPOSER_CFG"], uuid)
|
info = uuid_info(api.config["COMPOSER_CFG"], uuid)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
return jsonify(**info)
|
return jsonify(**info)
|
||||||
|
|
||||||
@ -1490,9 +1483,9 @@ def v0_api(api):
|
|||||||
"""Return a tar of the metadata for the build"""
|
"""Return a tar of the metadata for the build"""
|
||||||
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
||||||
if status is None:
|
if status is None:
|
||||||
return jsonify(status=False, error={"msg":"%s is not a valid build uuid" % uuid}), 400
|
return jsonify(status=False, errors=["%s is not a valid build uuid" % uuid]), 400
|
||||||
if status["queue_status"] not in ["FINISHED", "FAILED"]:
|
if status["queue_status"] not in ["FINISHED", "FAILED"]:
|
||||||
return jsonify(status=False, error={"msg":"Build %s not in FINISHED or FAILED state." % uuid}), 400
|
return jsonify(status=False, errors=["Build %s not in FINISHED or FAILED state." % uuid]), 400
|
||||||
else:
|
else:
|
||||||
return Response(uuid_tar(api.config["COMPOSER_CFG"], uuid, metadata=True, image=False, logs=False),
|
return Response(uuid_tar(api.config["COMPOSER_CFG"], uuid, metadata=True, image=False, logs=False),
|
||||||
mimetype="application/x-tar",
|
mimetype="application/x-tar",
|
||||||
@ -1505,9 +1498,9 @@ def v0_api(api):
|
|||||||
"""Return a tar of the metadata and the results for the build"""
|
"""Return a tar of the metadata and the results for the build"""
|
||||||
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
||||||
if status is None:
|
if status is None:
|
||||||
return jsonify(status=False, error={"msg":"%s is not a valid build uuid" % uuid}), 400
|
return jsonify(status=False, errors=["%s is not a valid build uuid" % uuid]), 400
|
||||||
elif status["queue_status"] not in ["FINISHED", "FAILED"]:
|
elif status["queue_status"] not in ["FINISHED", "FAILED"]:
|
||||||
return jsonify(status=False, error={"msg":"Build %s not in FINISHED or FAILED state." % uuid}), 400
|
return jsonify(status=False, errors=["Build %s not in FINISHED or FAILED state." % uuid]), 400
|
||||||
else:
|
else:
|
||||||
return Response(uuid_tar(api.config["COMPOSER_CFG"], uuid, metadata=True, image=True, logs=True),
|
return Response(uuid_tar(api.config["COMPOSER_CFG"], uuid, metadata=True, image=True, logs=True),
|
||||||
mimetype="application/x-tar",
|
mimetype="application/x-tar",
|
||||||
@ -1520,9 +1513,9 @@ def v0_api(api):
|
|||||||
"""Return a tar of the metadata for the build"""
|
"""Return a tar of the metadata for the build"""
|
||||||
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
||||||
if status is None:
|
if status is None:
|
||||||
return jsonify(status=False, error={"msg":"%s is not a valid build uuid" % uuid}), 400
|
return jsonify(status=False, errors=["%s is not a valid build uuid" % uuid]), 400
|
||||||
elif status["queue_status"] not in ["FINISHED", "FAILED"]:
|
elif status["queue_status"] not in ["FINISHED", "FAILED"]:
|
||||||
return jsonify(status=False, error={"msg":"Build %s not in FINISHED or FAILED state." % uuid}), 400
|
return jsonify(status=False, errors=["Build %s not in FINISHED or FAILED state." % uuid]), 400
|
||||||
else:
|
else:
|
||||||
return Response(uuid_tar(api.config["COMPOSER_CFG"], uuid, metadata=False, image=False, logs=True),
|
return Response(uuid_tar(api.config["COMPOSER_CFG"], uuid, metadata=False, image=False, logs=True),
|
||||||
mimetype="application/x-tar",
|
mimetype="application/x-tar",
|
||||||
@ -1535,15 +1528,15 @@ def v0_api(api):
|
|||||||
"""Return the output image for the build"""
|
"""Return the output image for the build"""
|
||||||
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
||||||
if status is None:
|
if status is None:
|
||||||
return jsonify(status=False, error={"msg":"%s is not a valid build uuid" % uuid}), 400
|
return jsonify(status=False, errors=["%s is not a valid build uuid" % uuid]), 400
|
||||||
elif status["queue_status"] not in ["FINISHED", "FAILED"]:
|
elif status["queue_status"] not in ["FINISHED", "FAILED"]:
|
||||||
return jsonify(status=False, error={"msg":"Build %s not in FINISHED or FAILED state." % uuid}), 400
|
return jsonify(status=False, errors=["Build %s not in FINISHED or FAILED state." % uuid]), 400
|
||||||
else:
|
else:
|
||||||
image_name, image_path = uuid_image(api.config["COMPOSER_CFG"], uuid)
|
image_name, image_path = uuid_image(api.config["COMPOSER_CFG"], uuid)
|
||||||
|
|
||||||
# Make sure it really exists
|
# Make sure it really exists
|
||||||
if not os.path.exists(image_path):
|
if not os.path.exists(image_path):
|
||||||
return jsonify(status=False, error={"msg":"Build %s is missing image file %s" % (uuid, image_name)}), 400
|
return jsonify(status=False, errors=["Build %s is missing image file %s" % (uuid, image_name)]), 400
|
||||||
|
|
||||||
# Make the image name unique
|
# Make the image name unique
|
||||||
image_name = uuid + "-" + image_name
|
image_name = uuid + "-" + image_name
|
||||||
@ -1557,14 +1550,14 @@ def v0_api(api):
|
|||||||
try:
|
try:
|
||||||
size = int(request.args.get("size", "1024"))
|
size = int(request.args.get("size", "1024"))
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return jsonify(status=False, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
|
||||||
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
status = uuid_status(api.config["COMPOSER_CFG"], uuid)
|
||||||
if status is None:
|
if status is None:
|
||||||
return jsonify(status=False, error={"msg":"%s is not a valid build uuid" % uuid}), 400
|
return jsonify(status=False, errors=["%s is not a valid build uuid" % uuid]), 400
|
||||||
elif status["queue_status"] == "WAITING":
|
elif status["queue_status"] == "WAITING":
|
||||||
return jsonify(status=False, uuid=uuid, error={"msg":"Build has not started yet. No logs to view"})
|
return jsonify(status=False, errors=["Build %s has not started yet. No logs to view" % uuid])
|
||||||
try:
|
try:
|
||||||
return Response(uuid_log(api.config["COMPOSER_CFG"], uuid, size), direct_passthrough=True)
|
return Response(uuid_log(api.config["COMPOSER_CFG"], uuid, size), direct_passthrough=True)
|
||||||
except RuntimeError as e:
|
except RuntimeError as e:
|
||||||
return jsonify(status=False, uuid=uuid, error={"msg":str(e)}), 400
|
return jsonify(status=False, errors=[str(e)]), 400
|
||||||
|
Loading…
Reference in New Issue
Block a user