From d0e1915dc36ffe6e3bbe9da967b6e50ba08878e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sombra=20Gonz=C3=A1lez?= Date: Fri, 8 Jul 2022 13:32:10 +0200 Subject: [PATCH] Fix #24308: improve container image repository checks for some dev services This commit improves container image name checks for these dev services: - Apicurio Registry - ActiveMQ Artemis (AMQP) - RabbitMQ These dev services used to verify that the image repository is equal to a hard-coded string. This commit changes that to verify that the image repository _ends with_ the same hard-coded string, which allows for repository namespacing in private container registries. --- .../devservice/ApicurioRegistryDevServicesBuildTimeConfig.java | 1 + .../devservice/DevServicesApicurioRegistryProcessor.java | 2 +- .../amqp/deployment/AmqpDevServicesBuildTimeConfig.java | 3 ++- .../amqp/deployment/AmqpDevServicesProcessor.java | 2 +- .../deployment/RabbitMQDevServicesBuildTimeConfig.java | 2 ++ .../rabbitmq/deployment/RabbitMQDevServicesProcessor.java | 2 +- 6 files changed, 8 insertions(+), 4 deletions(-) diff --git a/extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/ApicurioRegistryDevServicesBuildTimeConfig.java b/extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/ApicurioRegistryDevServicesBuildTimeConfig.java index 215893702e397..8a9e06a4a9b96 100644 --- a/extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/ApicurioRegistryDevServicesBuildTimeConfig.java +++ b/extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/ApicurioRegistryDevServicesBuildTimeConfig.java @@ -29,6 +29,7 @@ public class ApicurioRegistryDevServicesBuildTimeConfig { /** * The Apicurio Registry image to use. * Note that only Apicurio Registry 2.x images are supported. + * Specifically, the image repository must end with {@code apicurio/apicurio-registry-mem}. */ @ConfigItem(defaultValue = "quay.io/apicurio/apicurio-registry-mem:2.2.3.Final") public String imageName; diff --git a/extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/DevServicesApicurioRegistryProcessor.java b/extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/DevServicesApicurioRegistryProcessor.java index 89019e19ccfda..7328d978c35a3 100644 --- a/extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/DevServicesApicurioRegistryProcessor.java +++ b/extensions/schema-registry/devservice/deployment/src/main/java/io/quarkus/apicurio/registry/devservice/DevServicesApicurioRegistryProcessor.java @@ -259,7 +259,7 @@ private ApicurioRegistryContainer(DockerImageName dockerImageName, int fixedExpo withLabel(DEV_SERVICE_LABEL, serviceName); } withEnv("QUARKUS_PROFILE", "prod"); - if (!dockerImageName.getRepository().equals("apicurio/apicurio-registry-mem")) { + if (!dockerImageName.getRepository().endsWith("apicurio/apicurio-registry-mem")) { throw new IllegalArgumentException("Only apicurio/apicurio-registry-mem images are supported"); } } diff --git a/extensions/smallrye-reactive-messaging-amqp/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/amqp/deployment/AmqpDevServicesBuildTimeConfig.java b/extensions/smallrye-reactive-messaging-amqp/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/amqp/deployment/AmqpDevServicesBuildTimeConfig.java index e5b8527883bfc..8ff1ec2900272 100644 --- a/extensions/smallrye-reactive-messaging-amqp/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/amqp/deployment/AmqpDevServicesBuildTimeConfig.java +++ b/extensions/smallrye-reactive-messaging-amqp/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/amqp/deployment/AmqpDevServicesBuildTimeConfig.java @@ -27,7 +27,8 @@ public class AmqpDevServicesBuildTimeConfig { /** * The image to use. - * Note that only {@code quay.io/artemiscloud/activemq-artemis-broker} images are supported. + * Note that only ActiveMQ Artemis images are supported. + * Specifically, the image repository must end with {@code artemiscloud/activemq-artemis-broker}. * * Check https://quay.io/repository/artemiscloud/activemq-artemis-broker to find the available versions. */ diff --git a/extensions/smallrye-reactive-messaging-amqp/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/amqp/deployment/AmqpDevServicesProcessor.java b/extensions/smallrye-reactive-messaging-amqp/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/amqp/deployment/AmqpDevServicesProcessor.java index 3ba67d99a20d3..7203c06c09981 100644 --- a/extensions/smallrye-reactive-messaging-amqp/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/amqp/deployment/AmqpDevServicesProcessor.java +++ b/extensions/smallrye-reactive-messaging-amqp/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/amqp/deployment/AmqpDevServicesProcessor.java @@ -282,7 +282,7 @@ private ArtemisContainer(DockerImageName dockerImageName, String extra, int fixe if (serviceName != null) { // Only adds the label in dev mode. withLabel(DEV_SERVICE_LABEL, serviceName); } - if (dockerImageName.getRepository().equals("artemiscloud/activemq-artemis-broker")) { + if (dockerImageName.getRepository().endsWith("artemiscloud/activemq-artemis-broker")) { waitingFor(Wait.forLogMessage(".*AMQ241004.*", 1)); // Artemis console available. } else { throw new IllegalArgumentException("Only artemiscloud/activemq-artemis-broker images are supported"); diff --git a/extensions/smallrye-reactive-messaging-rabbitmq/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/deployment/RabbitMQDevServicesBuildTimeConfig.java b/extensions/smallrye-reactive-messaging-rabbitmq/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/deployment/RabbitMQDevServicesBuildTimeConfig.java index 8f677373d338f..ff4617cdd6d8a 100644 --- a/extensions/smallrye-reactive-messaging-rabbitmq/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/deployment/RabbitMQDevServicesBuildTimeConfig.java +++ b/extensions/smallrye-reactive-messaging-rabbitmq/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/deployment/RabbitMQDevServicesBuildTimeConfig.java @@ -122,6 +122,8 @@ public static class Binding { /** * The image to use. + * Note that only official RabbitMQ images are supported. + * Specifically, the image repository must end with {@code rabbitmq}. */ @ConfigItem(defaultValue = "rabbitmq:3.9-management") public String imageName; diff --git a/extensions/smallrye-reactive-messaging-rabbitmq/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/deployment/RabbitMQDevServicesProcessor.java b/extensions/smallrye-reactive-messaging-rabbitmq/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/deployment/RabbitMQDevServicesProcessor.java index 666ff26f49868..9698887ca2ff4 100644 --- a/extensions/smallrye-reactive-messaging-rabbitmq/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/deployment/RabbitMQDevServicesProcessor.java +++ b/extensions/smallrye-reactive-messaging-rabbitmq/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/rabbitmq/deployment/RabbitMQDevServicesProcessor.java @@ -374,7 +374,7 @@ private ConfiguredRabbitMQContainer(DockerImageName dockerImageName, int fixedEx if (serviceName != null) { // Only adds the label in dev mode. withLabel(DEV_SERVICE_LABEL, serviceName); } - if (!dockerImageName.getRepository().equals("rabbitmq")) { + if (!dockerImageName.getRepository().endsWith("rabbitmq")) { throw new IllegalArgumentException("Only official rabbitmq images are supported"); } }