@GET @Produces({MediaType.APPLICATION_JSON}) public Response getSchema(@PathParam("namespace") String namespace) { try { return Response.ok(fromSchema(schemaProvider.getSchema())).build(); } catch (Exception e) { log.warn("Exception handling GET schema", e); return Response.serverError().build(); } }
protected ServiceMapping getServiceMapping() { return new ServiceMapping(schemaProvider.getSchema()); }
@GET @Produces({MediaType.APPLICATION_JSON}) @Path("{addressSpaceType}") public Response getSchema(@PathParam("namespace") String namespace, @PathParam("addressSpaceType") String addressSpaceType) { try { Schema schema = schemaProvider.getSchema(); AddressSpaceType type = schema.findAddressSpaceType(addressSpaceType).orElse(null); if (type == null) { return Response.status(404).entity(Status.notFound("AddressSpaceSchema", addressSpaceType)).build(); } else { return Response.ok(fromAddressSpaceType(schema.getCreationTimestamp(), type)).build(); } } catch (Exception e) { log.warn("Exception handling GET schema", e); return Response.serverError().build(); } } }
private void checkComponentsReady(AddressSpace addressSpace) { try { InfraConfig infraConfig = Optional.ofNullable(parseCurrentInfraConfig(schemaProvider.getSchema(), addressSpace)).orElseGet(() -> getInfraConfig(addressSpace)); List<HasMetadata> requiredResources = infraResourceFactory.createInfraResources(addressSpace, infraConfig); checkDeploymentsReady(addressSpace, requiredResources); checkStatefulSetsReady(addressSpace, requiredResources); } catch (Exception e) { String msg = String.format("Error checking for ready components: %s", e.getMessage()); log.warn(msg, e); addressSpace.getStatus().setReady(false); addressSpace.getStatus().appendMessage(msg); } }
@POST @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) public Response createAddressSpace(@Context SecurityContext securityContext, @Context UriInfo uriInfo, @PathParam("namespace") String namespace, @NotNull @Valid AddressSpace input) throws Exception { return doRequest("Error creating address space " + input.getMetadata().getName(), () -> { verifyAuthorized(securityContext, namespace, ResourceVerb.create); AddressSpace addressSpace = setAddressSpaceDefaults(securityContext, namespace, input, null); DefaultValidator.validate(addressSpace); AddressSpaceResolver addressSpaceResolver = new AddressSpaceResolver(schemaProvider.getSchema()); addressSpaceResolver.validate(addressSpace); addressSpaceApi.createAddressSpace(addressSpace); AddressSpace created = addressSpaceApi.getAddressSpaceWithName(namespace, addressSpace.getMetadata().getName()).orElse(addressSpace); UriBuilder builder = uriInfo.getAbsolutePathBuilder(); builder.path(created.getMetadata().getName()); return Response.created(builder.build()).entity(removeSecrets(created)).build(); }); }
@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(); }); }
private AddressResolver getAddressResolver(AddressSpace addressSpace) { Schema schema = schemaProvider.getSchema(); AddressSpaceType type = schema.findAddressSpaceType(addressSpace.getSpec().getType()).orElseThrow(() -> new UnresolvedAddressSpaceException("Unable to resolve address space type " + addressSpace.getSpec().getType())); return new AddressResolver(type); }
private InfraConfig getInfraConfig(AddressSpace addressSpace) { AddressSpaceResolver addressSpaceResolver = new AddressSpaceResolver(schemaProvider.getSchema()); return addressSpaceResolver.getInfraConfig(addressSpace.getSpec().getType(), addressSpace.getSpec().getPlan()); }
private InfraConfig getInfraConfig(AddressSpace addressSpace) { AddressSpaceResolver addressSpaceResolver = new AddressSpaceResolver(schemaProvider.getSchema()); return addressSpaceResolver.getInfraConfig(addressSpace.getSpec().getType(), addressSpace.getSpec().getPlan()); }
log.info("Check address spaces: {}", resources.stream().map(a -> a.getMetadata().getNamespace()+":"+a.getMetadata().getName()).collect(Collectors.toSet())); if (schemaProvider.getSchema() == null) { log.info("No schema available"); return;
@Override public AddressSpace handle(AddressSpace addressSpace) throws Exception { Schema schema = schemaProvider.getSchema(); AddressSpaceResolver addressSpaceResolver = new AddressSpaceResolver(schema); addressSpaceResolver.validate(addressSpace); InfraConfig currentInfraConfig = parseCurrentInfraConfig(schemaProvider.getSchema(), addressSpace); if (currentInfraConfig == null && !kubernetes.existsAddressSpace(addressSpace)) { KubernetesList resourceList = new KubernetesListBuilder()
@Override public AddressSpace handle(AddressSpace addressSpace) throws Exception { NetworkPolicy networkPolicy = null; InfraConfig infraConfig = parseCurrentInfraConfig(schemaProvider.getSchema(), addressSpace); if (infraConfig != null) { networkPolicy = infraConfig.getNetworkPolicy(); } if (addressSpace.getSpec().getNetworkPolicy() != null) { networkPolicy = addressSpace.getSpec().getNetworkPolicy(); } io.fabric8.kubernetes.api.model.networking.NetworkPolicy existingPolicy = kubernetesClient.network().networkPolicies().withName(KubeUtil.getNetworkPolicyName(addressSpace)).get(); if (networkPolicy != null) { String infraUuid = addressSpace.getAnnotation(AnnotationKeys.INFRA_UUID); List<Service> services = kubernetesClient.services().withLabel(LabelKeys.INFRA_UUID, infraUuid).list().getItems(); io.fabric8.kubernetes.api.model.networking.NetworkPolicy newPolicy = createNetworkPolicy(networkPolicy, addressSpace, services); if (existingPolicy == null) { kubernetesClient.network().networkPolicies().create(newPolicy); } else if (hasChanged(existingPolicy, newPolicy)) { kubernetesClient.network().networkPolicies().withName(existingPolicy.getMetadata().getName()).replace(newPolicy); } } else if (existingPolicy != null) { kubernetesClient.network().networkPolicies().delete(existingPolicy); } return addressSpace; }