Added range check for extra resources (#15)
Signed-off-by: Knut-Erik Johnsen <abstract@knut-erik.org>
This commit is contained in:
parent
f25bf16b83
commit
58cf299286
|
@ -4,7 +4,6 @@ import com.google.protobuf.util.JsonFormat;
|
||||||
|
|
||||||
import io.crossplane.compositefunctions.protobuf.ResourceSelector;
|
import io.crossplane.compositefunctions.protobuf.ResourceSelector;
|
||||||
import io.crossplane.compositefunctions.protobuf.Resources;
|
import io.crossplane.compositefunctions.protobuf.Resources;
|
||||||
import io.crossplane.compositefunctions.starter.exception.CrossplaneUnexpectedItemsException;
|
|
||||||
import io.crossplane.compositefunctions.starter.exception.CrossplaneUnmarshallException;
|
import io.crossplane.compositefunctions.starter.exception.CrossplaneUnmarshallException;
|
||||||
import io.fabric8.kubernetes.api.model.HasMetadata;
|
import io.fabric8.kubernetes.api.model.HasMetadata;
|
||||||
import io.fabric8.kubernetes.client.utils.Serialization;
|
import io.fabric8.kubernetes.client.utils.Serialization;
|
||||||
|
@ -31,17 +30,19 @@ public class CrossplaneExtraResourcesService {
|
||||||
|
|
||||||
|
|
||||||
public <T> Optional<T> getExtraResource(Map<String, Resources> extraResources, String resourceName, Class<T> clazz) {
|
public <T> Optional<T> getExtraResource(Map<String, Resources> extraResources, String resourceName, Class<T> clazz) {
|
||||||
return getExtraResources(extraResources, resourceName, 1, clazz).get(0);
|
List<Optional<T>> resources = getExtraResources(extraResources, resourceName, 1, clazz);
|
||||||
|
|
||||||
|
if (resources.isEmpty()) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
return resources.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> List<Optional<T>> getExtraResources(Map<String, Resources> extraResources, String resourceName, int expectedResources, Class<T> clazz) {
|
public <T> List<Optional<T>> getExtraResources(Map<String, Resources> extraResources, String resourceName, int expectedResources, Class<T> clazz) {
|
||||||
List<Optional<T>> result = new ArrayList<>();
|
List<Optional<T>> result = new ArrayList<>();
|
||||||
Resources resources = extraResources.get(resourceName);
|
Resources resources = extraResources.get(resourceName);
|
||||||
|
|
||||||
if (resources != null ) {
|
if (resources != null && resources.getItemsCount() == expectedResources) {
|
||||||
if (resources.getItemsCount() != expectedResources) {
|
|
||||||
throw new CrossplaneUnexpectedItemsException("Unexpected number of resources. Expected " + expectedResources + " but got " + resources.getItemsCount() + ".");
|
|
||||||
}
|
|
||||||
for (int i = 0; i < expectedResources; i++) {
|
for (int i = 0; i < expectedResources; i++) {
|
||||||
try {
|
try {
|
||||||
logger.debug("We have an extra resource " + clazz.getSimpleName());
|
logger.debug("We have an extra resource " + clazz.getSimpleName());
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
package io.crossplane.compositefunctions.starter.exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Exception for unexpected items encountered when converting
|
|
||||||
*/
|
|
||||||
public class CrossplaneUnexpectedItemsException extends RuntimeException {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor with message
|
|
||||||
* @param message The exception message
|
|
||||||
*/
|
|
||||||
public CrossplaneUnexpectedItemsException(String message) {
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor with message and cause
|
|
||||||
* @param message The exception message
|
|
||||||
* @param cause The throwable that caused the exception
|
|
||||||
*/
|
|
||||||
public CrossplaneUnexpectedItemsException(String message, Throwable cause) {
|
|
||||||
super(message, cause);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue