@Override public Optional<AddressSpace> getAddressSpaceWithName(String namespace, String name) { ConfigMap map = client.configMaps().withName(getConfigMapName(namespace, name)).get(); if (map == null) { return Optional.empty(); } else { return Optional.of(getAddressSpaceFromConfig(map)); } }
@Override public boolean deleteAddressSpace(AddressSpace addressSpace) { String name = getConfigMapName(addressSpace.getMetadata().getNamespace(), addressSpace.getMetadata().getName()); Boolean deleted = client.configMaps().withName(name).delete(); return deleted != null && deleted; }
@Override public void createAddressSpace(AddressSpace addressSpace) { String name = getConfigMapName(addressSpace.getMetadata().getNamespace(), addressSpace.getMetadata().getName()); ConfigMap map = create(addressSpace); client.configMaps().withName(name).create(map); }
private ConfigMap create(AddressSpace addressSpace) { Map<String, String> labels = addressSpace.getMetadata().getLabels(); if ( labels == null ) { labels = new HashMap<>(); addressSpace.getMetadata().setLabels(labels); } String name = getConfigMapName(addressSpace.getMetadata().getNamespace(), addressSpace.getMetadata().getName()); labels.put(LabelKeys.TYPE, "address-space"); labels.put(LabelKeys.NAMESPACE, addressSpace.getMetadata().getNamespace()); ConfigMapBuilder builder = new ConfigMapBuilder() .editOrNewMetadata() .withName(name) .addToLabels(labels) .addToAnnotations(addressSpace.getMetadata().getAnnotations()) .endMetadata(); if (addressSpace.getMetadata().getResourceVersion() != null) { builder.editOrNewMetadata() .withResourceVersion(addressSpace.getMetadata().getResourceVersion()) .endMetadata(); } try { // Reset resource version to avoid unneeded extra writes AddressSpace newAddressSpace = new AddressSpaceBuilder(addressSpace).editOrNewMetadata().withResourceVersion(null).endMetadata().build(); builder.addToData("config.json", mapper.writeValueAsString(newAddressSpace)); return builder.build(); } catch (IOException e) { log.info("Error serializing addressspace for {}", addressSpace, e); throw new UncheckedIOException(e); } }
@Override public boolean replaceAddressSpace(AddressSpace addressSpace) { ConfigMap newMap = null; try { String name = getConfigMapName(addressSpace.getMetadata().getNamespace(), addressSpace.getMetadata().getName()); newMap = create(addressSpace); ConfigMap result; if (addressSpace.getMetadata().getResourceVersion() != null) { result = client.configMaps() .withName(name) .lockResourceVersion(addressSpace.getMetadata().getResourceVersion()) .replace(newMap); } else { result = client.configMaps() .withName(name) .replace(newMap); } cache.replace(newMap); return result != null; } catch (KubernetesClientException e) { if (e.getStatus().getCode() == 404) { return false; } else { throw e; } } }