@PUT
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Path("{addressSpace}")
public Response replaceAddressSpace(@Context SecurityContext securityContext, @PathParam("namespace") String namespace, @PathParam("addressSpace") String addressSpaceName, @NotNull @Valid AddressSpace payload) throws Exception {
checkRequestBodyNotNull(payload);
checkAddressSpaceObjectNameNotNull(payload, addressSpaceName);
checkMatchingAddressSpaceName(addressSpaceName, payload);
return doRequest("Error replacing address space " + payload.getMetadata().getName(), () -> {
verifyAuthorized(securityContext, namespace, ResourceVerb.update);
AddressSpace existing = addressSpaceApi.getAddressSpaceWithName(namespace, addressSpaceName).orElse(null);
AddressSpace addressSpace = setAddressSpaceDefaults(securityContext, namespace, payload, existing);
DefaultValidator.validate(addressSpace);
AddressSpaceResolver addressSpaceResolver = new AddressSpaceResolver(schemaProvider.getSchema());
addressSpaceResolver.validate(addressSpace);
if (!addressSpaceApi.replaceAddressSpace(addressSpace)) {
return Response.status(404).entity(Status.notFound("AddressSpace", addressSpaceName)).build();
}
AddressSpace replaced = addressSpaceApi.getAddressSpaceWithName(namespace, addressSpace.getMetadata().getName()).orElse(addressSpace);
return Response.ok().entity(removeSecrets(replaced)).build();
});
}