Skip to content
Snippets Groups Projects

SWS-31: Enable and disable capability views

Merged Nathan Hertz requested to merge SWS-31-disable-capability into main
6 files
+ 129
10
Compare changes
  • Side-by-side
  • Inline
Files
6
@@ -42,6 +42,7 @@ def create_capability(request: Request) -> Response:
URL: capability/create
:param request: POST request, expecting JSON parameters ["capability_name", "steps", "max_jobs"]
optionally, accepts a boolean "enabled" parameter
:return: Response with JSON-formatted capability info of newly created capability
or 400 response (HTTPBadRequest) if expected parameters not given
or 412 response (HTTPPreconditionFailed) if capability with given name already exists
@@ -67,6 +68,7 @@ def create_capability(request: Request) -> Response:
name=params["capability_name"],
steps=params["steps"],
max_jobs=params["max_jobs"],
enabled=params.get("enabled", True),
)
request.capability_info.save_entity(new_capability)
return Response(json_body=new_capability.__json__())
@@ -98,11 +100,11 @@ def edit_capability(request: Request) -> Response:
return HTTPBadRequest(detail=params_not_given_msg)
elif not request.capability_info.lookup_capability(capability_name):
# Capability with given name does not exist
already_exists_msg = (
does_not_exist_msg = (
f"Capability {capability_name} does not exist.",
f"To instead create a new capability, use capability/create with the same parameters.",
)
return HTTPPreconditionFailed(detail=already_exists_msg)
return HTTPPreconditionFailed(detail=does_not_exist_msg)
else:
steps = params.get("steps", None)
max_jobs = params.get("max_jobs", None)
@@ -111,3 +113,35 @@ def edit_capability(request: Request) -> Response:
return Response(body="Capability successfully edited!")
else:
return HTTPExpectationFailed(detail=f"Unable to edit capability {capability_name}.")
@view_config(route_name="enable_capability", renderer="json")
def enable_capability(request: Request) -> Response:
capability_name = request.matchdict["capability_name"]
if not request.capability_info.lookup_capability(capability_name):
# Capability with given name does not exist
does_not_exist_msg = f"Capability {capability_name} does not exist. Cannot enable."
return HTTPPreconditionFailed(detail=does_not_exist_msg)
else:
success = request.capability_info.edit_capability(capability_name, enabled=True)
if success:
return Response(body="Capability successfully enabled!")
else:
return HTTPExpectationFailed(detail=f"Unable to enable capability {capability_name}.")
@view_config(route_name="disable_capability", renderer="json")
def disable_capability(request: Request) -> Response:
capability_name = request.matchdict["capability_name"]
if not request.capability_info.lookup_capability(capability_name):
# Capability with given name does not exist
does_not_exist_msg = f"Capability {capability_name} does not exist. Cannot disable."
return HTTPPreconditionFailed(detail=does_not_exist_msg)
else:
success = request.capability_info.edit_capability(capability_name, enabled=False)
if success:
return Response(body="Capability successfully disabled!")
else:
return HTTPExpectationFailed(detail=f"Unable to disable capability {capability_name}.")
Loading