From 40a005329f98ecb219af7de4a3ebdbc0822314a0 Mon Sep 17 00:00:00 2001 From: "Michael N. Lipp" Date: Fri, 11 Aug 2023 12:21:50 +0200 Subject: [PATCH] Handle all image variants. --- .../vmoperator/manager/Reconciler.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java index 387a041..e0c18a9 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java @@ -31,6 +31,8 @@ import freemarker.template.TemplateNotFoundException; import io.kubernetes.client.openapi.ApiException; import io.kubernetes.client.util.generic.dynamic.DynamicKubernetesApi; import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; import static org.jdrupes.vmoperator.manager.Constants.VM_OP_GROUP; @@ -135,9 +137,20 @@ public class Reconciler extends Component { continue; } String image = cdrom.get("image").getAsString(); - if (!image.contains("/") && !image.isEmpty()) { - cdrom.addProperty("image", - Constants.IMAGE_REPO_PATH + "/" + image); + if (image.isEmpty()) { + continue; + } + try { + @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") + var imageUri = new URI("file://" + Constants.IMAGE_REPO_PATH + + "/").resolve(image); + if ("file".equals(imageUri.getScheme())) { + cdrom.addProperty("image", imageUri.getPath()); + } else { + cdrom.addProperty("image", imageUri.toString()); + } + } catch (URISyntaxException e) { + logger.warning(() -> "Invalid CDROM image: " + image); } } return vmDef;