Added range check for extra resources (#15)

Signed-off-by: Knut-Erik Johnsen <abstract@knut-erik.org>
This commit is contained in:
Knut-Erik Johnsen 2024-06-27 14:33:10 +02:00 committed by GitHub
parent f25bf16b83
commit 58cf299286
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 30 deletions

View File

@ -4,7 +4,6 @@ import com.google.protobuf.util.JsonFormat;
import io.crossplane.compositefunctions.protobuf.ResourceSelector;
import io.crossplane.compositefunctions.protobuf.Resources;
import io.crossplane.compositefunctions.starter.exception.CrossplaneUnexpectedItemsException;
import io.crossplane.compositefunctions.starter.exception.CrossplaneUnmarshallException;
import io.fabric8.kubernetes.api.model.HasMetadata;
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) {
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) {
List<Optional<T>> result = new ArrayList<>();
Resources resources = extraResources.get(resourceName);
if (resources != null ) {
if (resources.getItemsCount() != expectedResources) {
throw new CrossplaneUnexpectedItemsException("Unexpected number of resources. Expected " + expectedResources + " but got " + resources.getItemsCount() + ".");
}
if (resources != null && resources.getItemsCount() == expectedResources) {
for (int i = 0; i < expectedResources; i++) {
try {
logger.debug("We have an extra resource " + clazz.getSimpleName());

View File

@ -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);
}
}