public AddressList getAddresses(String namespace, String addressSpaceId) throws Exception { return queryAddresses(getAddressSpaces(namespace, addressSpaceId), (ns, api) -> api.listAddresses(ns)); }
private void garbageCollectTerminating(Set<Address> addresses, AddressResolver addressResolver) throws Exception { Map<Address, Integer> okMap = checkStatuses(addresses, addressResolver); for (Map.Entry<Address, Integer> entry : okMap.entrySet()) { if (entry.getValue() == 0) { log.info("Garbage collecting {}", entry.getKey()); addressApi.deleteAddress(entry.getKey()); } } }
public void deleteAddresses(String namespace) { for (AddressSpace addressSpace : addressSpaceApi.listAddressSpaces(namespace)) { AddressApi addressApi = addressSpaceApi.withAddressSpace(addressSpace); addressApi.deleteAddresses(namespace); } } }
addressApi = addressSpaceApi.withAddressSpace(addressSpace); addressResolver = getAddressResolver(addressSpace); existingAddresses = addressApi.listAddresses(a.getMetadata().getNamespace()); apiMap.forEach((addr, api) -> api.createAddress(addr));
public Address deleteAddress(String namespace, String addressSpaceId, String name) throws Exception { AddressSpace addressSpace = getAddressSpace(namespace, addressSpaceId); AddressApi addressApi = addressSpaceApi.withAddressSpace(addressSpace); Optional<Address> addressOptional = addressApi.getAddressWithName(namespace, name); return addressOptional.filter(addressApi::deleteAddress).orElse(null); }
public AddressList getAllAddressesWithLabels(final Map<String, String> labels) throws Exception { return queryAddresses(addressSpaceApi.listAllAddressSpaces(), (ns, api) -> api.listAddressesWithLabels(ns, labels)); }
public void start() throws Exception { ResourceChecker<Address> checker = new ResourceChecker<>(this, options.getRecheckInterval()); checker.start(); watch = addressApi.watchAddresses(checker, options.getResyncInterval()); }
public Address createAddress(String addressSpaceId, Address address) throws Exception { AddressSpace addressSpace = getAddressSpace(address.getMetadata().getNamespace(), addressSpaceId); validateAddress(addressSpace, address); AddressApi addressApi = addressSpaceApi.withAddressSpace(addressSpace); addressApi.createAddress(address); return address; }
public Address replaceAddress(String addressSpaceId, Address address) throws Exception { AddressSpace addressSpace = getAddressSpace(address.getMetadata().getNamespace(), addressSpaceId); validateAddress(addressSpace, address); AddressApi addressApi = addressSpaceApi.withAddressSpace(addressSpace); if (!addressApi.replaceAddress(address)) { throw new NotFoundException("Address " + address.getMetadata().getName() + " not found"); } return address; }
public Optional<Address> getAddress(String namespace, String addressSpaceId, String address) throws Exception { AddressSpace addressSpace = getAddressSpace(namespace, addressSpaceId); return addressSpaceApi.withAddressSpace(addressSpace).getAddressWithName(namespace, address); }
public AddressList getAddressesWithLabels(String namespace, String addressSpaceId, Map<String, String> labels) throws Exception { return queryAddresses(getAddressSpaces(namespace, addressSpaceId), (ns, api) -> api.listAddressesWithLabels(ns, labels)); }
public AddressList getAllAddresses() throws Exception { return queryAddresses(addressSpaceApi.listAllAddressSpaces(), (ns, api) -> api.listAddresses(ns)); }
private boolean checkExceedsQuota(AddressSpaceType addressSpaceType, AddressSpacePlan plan, AddressSpace addressSpace) { AddressApi addressApi = addressSpaceApi.withAddressSpace(addressSpace); Set<Address> addresses = addressApi.listAddresses(addressSpace.getMetadata().getNamespace()).stream() .filter(address -> addressSpace.getMetadata().getName().equals(Address.extractAddressSpace(address))) .collect(Collectors.toSet());
private void validateAddress(AddressSpace addressSpace, Address address) { AddressResolver addressResolver = getAddressResolver(addressSpace); Set<Address> existingAddresses = addressSpaceApi.withAddressSpace(addressSpace).listAddresses(address.getMetadata().getNamespace()); addressResolver.validate(address); for (Address existing : existingAddresses) { if (address.getSpec().getAddress().equals(existing.getSpec().getAddress()) && !address.getMetadata().getName().equals(existing.getMetadata().getName())) { throw new BadRequestException("Address '" + address.getSpec().getAddress() + "' already exists with resource name '" + existing.getMetadata().getName() + "'"); } } }