From 38a4f722c8e3dfd13fd57a8256f46c4bd24e0789 Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Thu, 28 Apr 2022 22:26:30 -0700 Subject: [PATCH 01/12] debugging --- .../kubernetes/ItMiiAuxiliaryImage.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java index 7520ab2c06d..bacd45c81db 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java @@ -149,6 +149,7 @@ class ItMiiAuxiliaryImage { @BeforeAll public static void initAll(@Namespaces(4) List namespaces) { logger = getLogger(); + logAll(); // get a new unique opNamespace logger.info("Creating unique namespace for Operator"); assertNotNull(namespaces.get(0), "Namespace list is null"); @@ -1354,4 +1355,42 @@ private void verifyIntrospectorPodLogContainsExpectedErrorMsg(String domainUid, introspectorPodLogContainsExpectedErrorMsg(domainUid, namespace, expectedErrorMsg)); } + private static void logAll() { + logger.info("BASE_IMAGES_REPO:{0}", TestConstants.BASE_IMAGES_REPO); + logger.info("BASE_IMAGES_REPO_SECRET:{0}", TestConstants.BASE_IMAGES_REPO_SECRET); + logger.info("OCIR_DEFAULT:{0}", TestConstants.OCIR_DEFAULT); + logger.info("OCIR_EMAIL:{0}", TestConstants.OCIR_EMAIL); + logger.info("OCIR_FMWINFRA_IMAGE_NAME:{0}", TestConstants.OCIR_FMWINFRA_IMAGE_NAME); + logger.info("OCIR_FMWINFRA_IMAGE_TAG:{0}", TestConstants.OCIR_FMWINFRA_IMAGE_TAG); + logger.info("OCIR_PASSWORD:{0}", TestConstants.OCIR_PASSWORD); + logger.info("OCIR_REGISTRY:{0}", TestConstants.OCIR_REGISTRY); + logger.info("OCIR_SECRET_NAME:{0}", TestConstants.OCIR_SECRET_NAME); + logger.info("OCIR_USERNAME:{0}", TestConstants.OCIR_USERNAME); + logger.info("OCIR_WEBLOGIC_IMAGE_NAME:{0}", TestConstants.OCIR_WEBLOGIC_IMAGE_NAME); + logger.info("OCIR_WEBLOGIC_IMAGE_TAG:{0}", TestConstants.OCIR_WEBLOGIC_IMAGE_TAG); + logger.info("OCIR_DB_IMAGE_NAME:{0}", TestConstants.OCIR_DB_IMAGE_NAME); + logger.info("OCIR_DB_IMAGE_TAG:{0}", TestConstants.OCIR_DB_IMAGE_TAG); + + logger.info("OCR_DB_IMAGE_NAME:{0}", TestConstants.OCR_DB_IMAGE_NAME); + logger.info("OCR_DB_IMAGE_TAG:{0}", TestConstants.OCR_DB_IMAGE_TAG); + logger.info("OCR_EMAIL:{0}", TestConstants.OCR_EMAIL); + logger.info("OCR_FMWINFRA_IMAGE_NAME:{0}", TestConstants.OCR_FMWINFRA_IMAGE_NAME); + logger.info("OCR_FMWINFRA_IMAGE_TAG:{0}", TestConstants.OCR_FMWINFRA_IMAGE_TAG); + logger.info("OCR_PASSWORD:{0}", TestConstants.OCR_PASSWORD); + logger.info("OCR_REGISTRY:{0}", TestConstants.OCR_REGISTRY); + logger.info("OCR_SECRET_NAME:{0}", TestConstants.OCR_SECRET_NAME); + logger.info("OCR_USERNAME:{0}", TestConstants.OCR_USERNAME); + logger.info("OCR_WEBLOGIC_IMAGE_NAME:{0}", TestConstants.OCR_WEBLOGIC_IMAGE_NAME); + logger.info("OCR_WEBLOGIC_IMAGE_TAG:{0}", TestConstants.OCR_WEBLOGIC_IMAGE_TAG); + + logger.info("WEBLOGIC_IMAGE_NAME:{0}", TestConstants.WEBLOGIC_IMAGE_NAME); + logger.info("WEBLOGIC_IMAGE_TAGS:{0}", TestConstants.WEBLOGIC_IMAGE_TAGS); + logger.info("WEBLOGIC_IMAGE_TO_USE_IN_SPEC:{0}", TestConstants.WEBLOGIC_IMAGE_TO_USE_IN_SPEC); + + logger.info("FMWINFRA_IMAGE_NAME:{0}", TestConstants.FMWINFRA_IMAGE_NAME); + logger.info("DB_IMAGE_NAME:{0}", TestConstants.DB_IMAGE_NAME); + logger.info("DB_IMAGE_TAG:{0}", TestConstants.DB_IMAGE_TAG); + logger.info("DB_IMAGE_TO_USE_IN_SPEC:{0}", TestConstants.DB_IMAGE_TO_USE_IN_SPEC); + } + } From edd416f1a83e40084ac1bc517aa15c303fc0a720 Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Thu, 28 Apr 2022 22:27:52 -0700 Subject: [PATCH 02/12] debug --- .../java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java index bacd45c81db..b422f3637f7 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java @@ -16,6 +16,7 @@ import io.kubernetes.client.custom.V1Patch; import io.kubernetes.client.openapi.ApiException; import io.kubernetes.client.openapi.models.V1Pod; +import io.kubernetes.client.util.Yaml; import oracle.weblogic.domain.AuxiliaryImage; import oracle.weblogic.domain.Domain; import oracle.weblogic.kubernetes.actions.impl.primitive.Command; @@ -289,6 +290,8 @@ void testCreateDomainUsingMultipleAuxiliaryImages() { encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, miiAuxiliaryImage1, miiAuxiliaryImage2); + logger.info(Yaml.dump(domainCR)); + // create domain and verify its running logger.info("Creating domain {0} with auxiliary images {1} {2} in namespace {3}", domainUid, miiAuxiliaryImage1, miiAuxiliaryImage2, domainNamespace); From 96d96fe55f131b124ea0da3b490d723984fd7743 Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Fri, 29 Apr 2022 07:24:43 -0700 Subject: [PATCH 03/12] use base images repo secret --- .../kubernetes/ItMiiAuxiliaryImage.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java index b422f3637f7..6704378ce3f 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java @@ -37,6 +37,7 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_DEFAULT; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_DEFAULT; +import static oracle.weblogic.kubernetes.TestConstants.BASE_IMAGES_REPO_SECRET; import static oracle.weblogic.kubernetes.TestConstants.BUSYBOX_IMAGE; import static oracle.weblogic.kubernetes.TestConstants.BUSYBOX_TAG; import static oracle.weblogic.kubernetes.TestConstants.DOMAIN_IMAGES_REPO; @@ -45,7 +46,6 @@ import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_APP_NAME; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_WDT_MODEL_FILE; -import static oracle.weblogic.kubernetes.TestConstants.OCIR_SECRET_NAME; import static oracle.weblogic.kubernetes.TestConstants.OPERATOR_RELEASE_NAME; import static oracle.weblogic.kubernetes.TestConstants.RESULTS_ROOT; import static oracle.weblogic.kubernetes.TestConstants.WDT_TEST_VERSION; @@ -87,6 +87,7 @@ import static oracle.weblogic.kubernetes.utils.FileUtils.replaceStringInFile; import static oracle.weblogic.kubernetes.utils.FileUtils.unzipWDTInstallationFile; import static oracle.weblogic.kubernetes.utils.ImageUtils.createOcirRepoSecret; +import static oracle.weblogic.kubernetes.utils.ImageUtils.createSecretForBaseImages; import static oracle.weblogic.kubernetes.utils.ImageUtils.dockerLoginAndPushImageToRegistry; import static oracle.weblogic.kubernetes.utils.JobUtils.getIntrospectJobName; import static oracle.weblogic.kubernetes.utils.K8sEvents.DOMAIN_PROCESSING_FAILED; @@ -168,6 +169,10 @@ public static void initAll(@Namespaces(4) List namespaces) { assertNotNull(namespaces.get(3), "Namespace list is null"); wdtDomainNamespace = namespaces.get(3); + // Create the repo secret to pull the image + // this secret is used only for non-kind cluster + createSecretForBaseImages(domainNamespace); + // install and verify operator installAndVerifyOperator(opNamespace, domainNamespace, errorpathDomainNamespace, wdtDomainNamespace); } @@ -191,7 +196,7 @@ void testCreateDomainUsingMultipleAuxiliaryImages() { // Create the repo secret to pull the image // this secret is used only for non-kind cluster - createOcirRepoSecret(domainNamespace); + createSecretForBaseImages(domainNamespace); // create secret for admin credentials logger.info("Create secret for admin credentials"); @@ -286,7 +291,7 @@ void testCreateDomainUsingMultipleAuxiliaryImages() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary images {1} {2}", domainUid, miiAuxiliaryImage1, miiAuxiliaryImage2); Domain domainCR = createDomainResource(domainUid, domainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, OCIR_SECRET_NAME, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, miiAuxiliaryImage1, miiAuxiliaryImage2); @@ -612,7 +617,7 @@ void testErrorPathDomainMismatchMountPath() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage1); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, OCIR_SECRET_NAME, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage1); @@ -695,7 +700,7 @@ void testErrorPathDomainMissingWDTBinary() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage2); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, OCIR_SECRET_NAME, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage2); @@ -785,7 +790,7 @@ void testErrorPathDomainMissingDomainConfig() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage3); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, OCIR_SECRET_NAME, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage3); @@ -894,7 +899,7 @@ void testErrorPathFilePermission() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage4); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, OCIR_SECRET_NAME, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage4); @@ -1060,7 +1065,7 @@ void testUpdateWDTVersionUsingMultipleAuxiliaryImages() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary images {1} {2}", domainUid, miiAuxiliaryImage4, miiAuxiliaryImage5); Domain domainCR = createDomainResource(domainUid, wdtDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, OCIR_SECRET_NAME, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, miiAuxiliaryImage4, miiAuxiliaryImage5); @@ -1256,9 +1261,6 @@ private void createAuxiliaryImage(String stageDirPath, String dockerFileLocation } private void createSecretsForDomain(String adminSecretName, String encryptionSecretName, String domainNamespace) { - if (!secretExists(OCIR_SECRET_NAME, domainNamespace)) { - createOcirRepoSecret(domainNamespace); - } // create secret for admin credentials logger.info("Create secret for admin credentials"); From a20fa8295f675991e76ac374042b706543fb8287 Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Fri, 29 Apr 2022 10:40:59 -0700 Subject: [PATCH 04/12] create multiple secrets to be used in domain resource spec --- .../kubernetes/ItMiiAuxiliaryImage.java | 40 +++++++++++++------ .../kubernetes/utils/CommonMiiTestUtils.java | 10 ++++- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java index 6704378ce3f..4f1e698c17f 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java @@ -8,6 +8,7 @@ import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.time.OffsetDateTime; +import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; @@ -16,7 +17,6 @@ import io.kubernetes.client.custom.V1Patch; import io.kubernetes.client.openapi.ApiException; import io.kubernetes.client.openapi.models.V1Pod; -import io.kubernetes.client.util.Yaml; import oracle.weblogic.domain.AuxiliaryImage; import oracle.weblogic.domain.Domain; import oracle.weblogic.kubernetes.actions.impl.primitive.Command; @@ -37,7 +37,7 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_DEFAULT; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_DEFAULT; -import static oracle.weblogic.kubernetes.TestConstants.BASE_IMAGES_REPO_SECRET; +import static oracle.weblogic.kubernetes.TestConstants.BASE_IMAGES_REPO; import static oracle.weblogic.kubernetes.TestConstants.BUSYBOX_IMAGE; import static oracle.weblogic.kubernetes.TestConstants.BUSYBOX_TAG; import static oracle.weblogic.kubernetes.TestConstants.DOMAIN_IMAGES_REPO; @@ -46,6 +46,9 @@ import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_APP_NAME; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_WDT_MODEL_FILE; +import static oracle.weblogic.kubernetes.TestConstants.OCIR_SECRET_NAME; +import static oracle.weblogic.kubernetes.TestConstants.OCR_REGISTRY; +import static oracle.weblogic.kubernetes.TestConstants.OCR_SECRET_NAME; import static oracle.weblogic.kubernetes.TestConstants.OPERATOR_RELEASE_NAME; import static oracle.weblogic.kubernetes.TestConstants.RESULTS_ROOT; import static oracle.weblogic.kubernetes.TestConstants.WDT_TEST_VERSION; @@ -87,6 +90,7 @@ import static oracle.weblogic.kubernetes.utils.FileUtils.replaceStringInFile; import static oracle.weblogic.kubernetes.utils.FileUtils.unzipWDTInstallationFile; import static oracle.weblogic.kubernetes.utils.ImageUtils.createOcirRepoSecret; +import static oracle.weblogic.kubernetes.utils.ImageUtils.createOcrRepoSecret; import static oracle.weblogic.kubernetes.utils.ImageUtils.createSecretForBaseImages; import static oracle.weblogic.kubernetes.utils.ImageUtils.dockerLoginAndPushImageToRegistry; import static oracle.weblogic.kubernetes.utils.JobUtils.getIntrospectJobName; @@ -136,6 +140,7 @@ class ItMiiAuxiliaryImage { private String adminSvcExtHost = null; private String adminSecretName = "weblogic-credentials"; private String encryptionSecretName = "encryptionsecret"; + private static String[] imageSecrets; ConditionFactory withStandardRetryPolicy = with().pollDelay(0, SECONDS) @@ -171,7 +176,7 @@ public static void initAll(@Namespaces(4) List namespaces) { // Create the repo secret to pull the image // this secret is used only for non-kind cluster - createSecretForBaseImages(domainNamespace); + imageSecrets = createSecretsForImageRepos(domainNamespace, errorpathDomainNamespace); // install and verify operator installAndVerifyOperator(opNamespace, domainNamespace, errorpathDomainNamespace, wdtDomainNamespace); @@ -291,12 +296,10 @@ void testCreateDomainUsingMultipleAuxiliaryImages() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary images {1} {2}", domainUid, miiAuxiliaryImage1, miiAuxiliaryImage2); Domain domainCR = createDomainResource(domainUid, domainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, miiAuxiliaryImage1, miiAuxiliaryImage2); - logger.info(Yaml.dump(domainCR)); - // create domain and verify its running logger.info("Creating domain {0} with auxiliary images {1} {2} in namespace {3}", domainUid, miiAuxiliaryImage1, miiAuxiliaryImage2, domainNamespace); @@ -617,7 +620,7 @@ void testErrorPathDomainMismatchMountPath() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage1); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage1); @@ -700,7 +703,7 @@ void testErrorPathDomainMissingWDTBinary() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage2); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage2); @@ -790,7 +793,7 @@ void testErrorPathDomainMissingDomainConfig() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage3); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage3); @@ -899,7 +902,7 @@ void testErrorPathFilePermission() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage4); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage4); @@ -1065,7 +1068,7 @@ void testUpdateWDTVersionUsingMultipleAuxiliaryImages() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary images {1} {2}", domainUid, miiAuxiliaryImage4, miiAuxiliaryImage5); Domain domainCR = createDomainResource(domainUid, wdtDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, BASE_IMAGES_REPO_SECRET, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, miiAuxiliaryImage4, miiAuxiliaryImage5); @@ -1261,7 +1264,6 @@ private void createAuxiliaryImage(String stageDirPath, String dockerFileLocation } private void createSecretsForDomain(String adminSecretName, String encryptionSecretName, String domainNamespace) { - // create secret for admin credentials logger.info("Create secret for admin credentials"); if (!secretExists(adminSecretName, domainNamespace)) { @@ -1276,6 +1278,20 @@ private void createSecretsForDomain(String adminSecretName, String encryptionSec } } + private static String[] createSecretsForImageRepos(String... namespaces) { + List secrets = new ArrayList<>(); + for (String namespace : namespaces) { + //create base images repo secret and repo registry secret + createOcirRepoSecret(namespace); + secrets.add(OCIR_SECRET_NAME); + if (BASE_IMAGES_REPO.equals(OCR_REGISTRY)) { + createOcrRepoSecret(namespace); + secrets.add(OCR_SECRET_NAME); + } + } + return secrets.toArray(new String[secrets.size()]); + } + private void checkConfiguredJMSresouce(String domainNamespace, String adminServerPodName) { int adminServiceNodePort = getServiceNodePort(domainNamespace, getExternalServicePodName(adminServerPodName), "default"); diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/CommonMiiTestUtils.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/CommonMiiTestUtils.java index c43279542d9..49062f320f2 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/CommonMiiTestUtils.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/CommonMiiTestUtils.java @@ -223,11 +223,16 @@ public static Domain createDomainResource( String domNamespace, String imageName, String adminSecretName, - String repoSecretName, + String[] repoSecretName, String encryptionSecretName, int replicaCount, String clusterName) { + // create secrets + List secrets = new ArrayList<>(); + for (String secret : repoSecretName) { + secrets.add(secret); + } // create the domain CR Domain domain = new Domain() .apiVersion(DOMAIN_API_VERSION) @@ -268,6 +273,7 @@ public static Domain createDomainResource( .domainType("WLS") .runtimeEncryptionSecret(encryptionSecretName)) .introspectorJobActiveDeadlineSeconds(300L))); + domain.spec().setImagePullSecrets(secrets); setPodAntiAffinity(domain); return domain; @@ -296,7 +302,7 @@ public static Domain createDomainResource( String domNamespace, String baseImageName, String adminSecretName, - String repoSecretName, + String[] repoSecretName, String encryptionSecretName, int replicaCount, String clusterName, From 0f803d4730ed6ed2b67a96d0aed80177423872a3 Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Fri, 29 Apr 2022 11:28:43 -0700 Subject: [PATCH 05/12] fix build failure and move createSecretsForImageRepos to SecretUtils.java --- .../kubernetes/ItMiiAuxiliaryImage.java | 20 +------------- .../ItMiiAuxiliaryImageCluster.java | 4 +-- .../kubernetes/ItMiiDomainModelInPV.java | 5 ++-- .../kubernetes/utils/CommonMiiTestUtils.java | 10 +++---- .../kubernetes/utils/SecretUtils.java | 27 +++++++++++++++++++ 5 files changed, 37 insertions(+), 29 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java index 4f1e698c17f..e25e8ef4a29 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java @@ -8,7 +8,6 @@ import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.time.OffsetDateTime; -import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; @@ -37,7 +36,6 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_DEFAULT; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_DEFAULT; -import static oracle.weblogic.kubernetes.TestConstants.BASE_IMAGES_REPO; import static oracle.weblogic.kubernetes.TestConstants.BUSYBOX_IMAGE; import static oracle.weblogic.kubernetes.TestConstants.BUSYBOX_TAG; import static oracle.weblogic.kubernetes.TestConstants.DOMAIN_IMAGES_REPO; @@ -46,9 +44,6 @@ import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_APP_NAME; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_WDT_MODEL_FILE; -import static oracle.weblogic.kubernetes.TestConstants.OCIR_SECRET_NAME; -import static oracle.weblogic.kubernetes.TestConstants.OCR_REGISTRY; -import static oracle.weblogic.kubernetes.TestConstants.OCR_SECRET_NAME; import static oracle.weblogic.kubernetes.TestConstants.OPERATOR_RELEASE_NAME; import static oracle.weblogic.kubernetes.TestConstants.RESULTS_ROOT; import static oracle.weblogic.kubernetes.TestConstants.WDT_TEST_VERSION; @@ -90,7 +85,6 @@ import static oracle.weblogic.kubernetes.utils.FileUtils.replaceStringInFile; import static oracle.weblogic.kubernetes.utils.FileUtils.unzipWDTInstallationFile; import static oracle.weblogic.kubernetes.utils.ImageUtils.createOcirRepoSecret; -import static oracle.weblogic.kubernetes.utils.ImageUtils.createOcrRepoSecret; import static oracle.weblogic.kubernetes.utils.ImageUtils.createSecretForBaseImages; import static oracle.weblogic.kubernetes.utils.ImageUtils.dockerLoginAndPushImageToRegistry; import static oracle.weblogic.kubernetes.utils.JobUtils.getIntrospectJobName; @@ -106,6 +100,7 @@ import static oracle.weblogic.kubernetes.utils.PodUtils.getPodCreationTime; import static oracle.weblogic.kubernetes.utils.PodUtils.getPodsWithTimeStamps; import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretWithUsernamePassword; +import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretsForImageRepos; import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; import static org.awaitility.Awaitility.with; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; @@ -1278,19 +1273,6 @@ private void createSecretsForDomain(String adminSecretName, String encryptionSec } } - private static String[] createSecretsForImageRepos(String... namespaces) { - List secrets = new ArrayList<>(); - for (String namespace : namespaces) { - //create base images repo secret and repo registry secret - createOcirRepoSecret(namespace); - secrets.add(OCIR_SECRET_NAME); - if (BASE_IMAGES_REPO.equals(OCR_REGISTRY)) { - createOcrRepoSecret(namespace); - secrets.add(OCR_SECRET_NAME); - } - } - return secrets.toArray(new String[secrets.size()]); - } private void checkConfiguredJMSresouce(String domainNamespace, String adminServerPodName) { int adminServiceNodePort diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java index da1c9b76388..04010687485 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java @@ -33,7 +33,6 @@ import static oracle.weblogic.kubernetes.TestConstants.DOMAIN_IMAGES_REPO; import static oracle.weblogic.kubernetes.TestConstants.MII_AUXILIARY_IMAGE_NAME; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; -import static oracle.weblogic.kubernetes.TestConstants.OCIR_SECRET_NAME; import static oracle.weblogic.kubernetes.TestConstants.RESULTS_ROOT; import static oracle.weblogic.kubernetes.TestConstants.WEBLOGIC_IMAGE_TO_USE_IN_SPEC; import static oracle.weblogic.kubernetes.actions.ActionConstants.MODEL_DIR; @@ -50,6 +49,7 @@ import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator; import static oracle.weblogic.kubernetes.utils.PodUtils.getExternalServicePodName; import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretWithUsernamePassword; +import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretsForImageRepos; import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; import static org.awaitility.Awaitility.with; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; @@ -186,7 +186,7 @@ void testCreateDomainUsingAuxiliaryImagesWClusterConfig() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary images {1} {2}", domainUid, auxiliaryImageDomainScopeNames.toString(), auxiliaryImageClusterScopeNames.toString()); Domain domainCR = createDomainResourceWithAuxiliaryImageClusterScope(domainUid, domainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, OCIR_SECRET_NAME, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, createSecretsForImageRepos(domainNamespace), encryptionSecretName, replicaCount, clusterName, Map.of(auxiliaryImagePath, List.of(auxiliaryImageVolumeName)), auxiliaryImageDomainScopeNames, auxiliaryImageClusterScopeNames); diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiDomainModelInPV.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiDomainModelInPV.java index a355c40cda7..38197c1de0b 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiDomainModelInPV.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiDomainModelInPV.java @@ -47,7 +47,6 @@ import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_NAME; import static oracle.weblogic.kubernetes.TestConstants.OCIR_PASSWORD; import static oracle.weblogic.kubernetes.TestConstants.OCIR_REGISTRY; -import static oracle.weblogic.kubernetes.TestConstants.OCIR_SECRET_NAME; import static oracle.weblogic.kubernetes.TestConstants.OCIR_USERNAME; import static oracle.weblogic.kubernetes.TestConstants.OKD; import static oracle.weblogic.kubernetes.TestConstants.OKE_CLUSTER; @@ -83,6 +82,7 @@ import static oracle.weblogic.kubernetes.utils.PodUtils.execInPod; import static oracle.weblogic.kubernetes.utils.PodUtils.getExternalServicePodName; import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretWithUsernamePassword; +import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretsForImageRepos; import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -254,7 +254,8 @@ void testMiiDomainWithModelAndApplicationInPV(Entry params) { logger.info("Creating domain custom resource with domainUid {0} and image {1}", domainUid, image); Domain domainCR = CommonMiiTestUtils.createDomainResource(domainUid, domainNamespace, - image, adminSecretName, OCIR_SECRET_NAME, encryptionSecretName, replicaCount, clusterName); + image, adminSecretName, createSecretsForImageRepos(domainNamespace), + encryptionSecretName, replicaCount, clusterName); domainCR.spec().configuration().model().withModelHome(modelMountPath + "/model"); domainCR.spec().serverPod() .addVolumesItem(new V1Volume() diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/CommonMiiTestUtils.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/CommonMiiTestUtils.java index 49062f320f2..9c0202399fe 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/CommonMiiTestUtils.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/CommonMiiTestUtils.java @@ -171,7 +171,7 @@ public static Domain createMiiDomainAndVerify( domainNamespace, imageName, adminSecretName, - OCIR_SECRET_NAME, + new String[]{OCIR_SECRET_NAME}, encryptionSecretName, replicaCount, "cluster-1"); @@ -231,7 +231,7 @@ public static Domain createDomainResource( // create secrets List secrets = new ArrayList<>(); for (String secret : repoSecretName) { - secrets.add(secret); + secrets.add(new V1LocalObjectReference().name(secret)); } // create the domain CR Domain domain = new Domain() @@ -244,8 +244,6 @@ public static Domain createDomainResource( .domainUid(domainResourceName) .domainHomeSourceType("FromModel") .image(imageName) - .addImagePullSecretsItem(new io.kubernetes.client.openapi.models.V1LocalObjectReference() - .name(repoSecretName)) .webLogicCredentialsSecret(new io.kubernetes.client.openapi.models.V1SecretReference() .name(adminSecretName) .namespace(domNamespace)) @@ -349,7 +347,7 @@ public static Domain createDomainResourceWithAuxiliaryImage( String domNamespace, String baseImageName, String adminSecretName, - String repoSecretName, + String[] repoSecretName, String encryptionSecretName, int replicaCount, String clusterName, @@ -400,7 +398,7 @@ public static Domain createDomainResourceWithAuxiliaryImageClusterScope( String domNamespace, String baseImageName, String adminSecretName, - String repoSecretName, + String[] repoSecretName, String encryptionSecretName, int replicaCount, String clusterName, diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SecretUtils.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SecretUtils.java index 86765d3a7d2..1b8fbfd5016 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SecretUtils.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SecretUtils.java @@ -6,6 +6,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; import java.util.Base64; import java.util.HashMap; import java.util.List; @@ -24,10 +25,16 @@ import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.SECONDS; +import static oracle.weblogic.kubernetes.TestConstants.BASE_IMAGES_REPO; import static oracle.weblogic.kubernetes.TestConstants.GEN_EXTERNAL_REST_IDENTITY_FILE; import static oracle.weblogic.kubernetes.TestConstants.K8S_NODEPORT_HOST; +import static oracle.weblogic.kubernetes.TestConstants.OCIR_SECRET_NAME; +import static oracle.weblogic.kubernetes.TestConstants.OCR_REGISTRY; +import static oracle.weblogic.kubernetes.TestConstants.OCR_SECRET_NAME; import static oracle.weblogic.kubernetes.actions.TestActions.createSecret; import static oracle.weblogic.kubernetes.assertions.TestAssertions.secretExists; +import static oracle.weblogic.kubernetes.utils.ImageUtils.createOcirRepoSecret; +import static oracle.weblogic.kubernetes.utils.ImageUtils.createOcrRepoSecret; import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; import static org.awaitility.Awaitility.with; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; @@ -207,4 +214,24 @@ public static void verifyDefaultTokenExists() { return false; }); } + + /** + * Create multiple secrets if base images repository and domain images repository are different. + * + * @param namespaces list of namespaces in which to create image repository secrets + * @return string array of secret names created + */ + public static String[] createSecretsForImageRepos(String... namespaces) { + List secrets = new ArrayList<>(); + for (String namespace : namespaces) { + //create base images repo secret and repo registry secret + createOcirRepoSecret(namespace); + secrets.add(OCIR_SECRET_NAME); + if (BASE_IMAGES_REPO.equals(OCR_REGISTRY)) { + createOcrRepoSecret(namespace); + secrets.add(OCR_SECRET_NAME); + } + } + return secrets.toArray(new String[secrets.size()]); + } } From 9e546e2708aa049cb735999048f773855ab5c2ed Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Fri, 29 Apr 2022 11:49:11 -0700 Subject: [PATCH 06/12] wip --- .../kubernetes/ItMiiAuxiliaryImage.java | 21 ++++++------------- .../kubernetes/utils/SecretUtils.java | 17 ++++++++------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java index e25e8ef4a29..041227475bd 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java @@ -85,7 +85,6 @@ import static oracle.weblogic.kubernetes.utils.FileUtils.replaceStringInFile; import static oracle.weblogic.kubernetes.utils.FileUtils.unzipWDTInstallationFile; import static oracle.weblogic.kubernetes.utils.ImageUtils.createOcirRepoSecret; -import static oracle.weblogic.kubernetes.utils.ImageUtils.createSecretForBaseImages; import static oracle.weblogic.kubernetes.utils.ImageUtils.dockerLoginAndPushImageToRegistry; import static oracle.weblogic.kubernetes.utils.JobUtils.getIntrospectJobName; import static oracle.weblogic.kubernetes.utils.K8sEvents.DOMAIN_PROCESSING_FAILED; @@ -169,10 +168,6 @@ public static void initAll(@Namespaces(4) List namespaces) { assertNotNull(namespaces.get(3), "Namespace list is null"); wdtDomainNamespace = namespaces.get(3); - // Create the repo secret to pull the image - // this secret is used only for non-kind cluster - imageSecrets = createSecretsForImageRepos(domainNamespace, errorpathDomainNamespace); - // install and verify operator installAndVerifyOperator(opNamespace, domainNamespace, errorpathDomainNamespace, wdtDomainNamespace); } @@ -194,10 +189,6 @@ void testCreateDomainUsingMultipleAuxiliaryImages() { final String auxiliaryImageVolumeName = "auxiliaryImageVolume1"; final String auxiliaryImagePath = "/auxiliary"; - // Create the repo secret to pull the image - // this secret is used only for non-kind cluster - createSecretForBaseImages(domainNamespace); - // create secret for admin credentials logger.info("Create secret for admin credentials"); String adminSecretName = "weblogic-credentials"; @@ -291,7 +282,7 @@ void testCreateDomainUsingMultipleAuxiliaryImages() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary images {1} {2}", domainUid, miiAuxiliaryImage1, miiAuxiliaryImage2); Domain domainCR = createDomainResource(domainUid, domainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, createSecretsForImageRepos(domainNamespace), encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, miiAuxiliaryImage1, miiAuxiliaryImage2); @@ -615,7 +606,7 @@ void testErrorPathDomainMismatchMountPath() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage1); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, createSecretsForImageRepos(errorpathDomainNamespace), encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage1); @@ -698,7 +689,7 @@ void testErrorPathDomainMissingWDTBinary() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage2); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, createSecretsForImageRepos(errorpathDomainNamespace), encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage2); @@ -788,7 +779,7 @@ void testErrorPathDomainMissingDomainConfig() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage3); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, createSecretsForImageRepos(errorpathDomainNamespace), encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage3); @@ -897,7 +888,7 @@ void testErrorPathFilePermission() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary image {1}", domainUid, errorPathAuxiliaryImage4); Domain domainCR = createDomainResource(domainUid, errorpathDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, createSecretsForImageRepos(errorpathDomainNamespace), encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, errorPathAuxiliaryImage4); @@ -1063,7 +1054,7 @@ void testUpdateWDTVersionUsingMultipleAuxiliaryImages() { logger.info("Creating domain custom resource with domainUid {0} and auxiliary images {1} {2}", domainUid, miiAuxiliaryImage4, miiAuxiliaryImage5); Domain domainCR = createDomainResource(domainUid, wdtDomainNamespace, - WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, imageSecrets, + WEBLOGIC_IMAGE_TO_USE_IN_SPEC, adminSecretName, createSecretsForImageRepos(wdtDomainNamespace), encryptionSecretName, replicaCount, "cluster-1", auxiliaryImagePath, auxiliaryImageVolumeName, miiAuxiliaryImage4, miiAuxiliaryImage5); diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SecretUtils.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SecretUtils.java index 1b8fbfd5016..56dfcbb4a53 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SecretUtils.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SecretUtils.java @@ -218,19 +218,22 @@ public static void verifyDefaultTokenExists() { /** * Create multiple secrets if base images repository and domain images repository are different. * - * @param namespaces list of namespaces in which to create image repository secrets + * @param namespace namespace in which to create image repository secrets * @return string array of secret names created */ - public static String[] createSecretsForImageRepos(String... namespaces) { + public static String[] createSecretsForImageRepos(String namespace) { List secrets = new ArrayList<>(); - for (String namespace : namespaces) { - //create base images repo secret and repo registry secret + //create repo registry secret + if (!secretExists(OCIR_SECRET_NAME, namespace)) { createOcirRepoSecret(namespace); - secrets.add(OCIR_SECRET_NAME); - if (BASE_IMAGES_REPO.equals(OCR_REGISTRY)) { + } + secrets.add(OCIR_SECRET_NAME); + if (BASE_IMAGES_REPO.equals(OCR_REGISTRY)) { + //create base images repo secret + if (!secretExists(OCR_SECRET_NAME, namespace)) { createOcrRepoSecret(namespace); - secrets.add(OCR_SECRET_NAME); } + secrets.add(OCR_SECRET_NAME); } return secrets.toArray(new String[secrets.size()]); } From 4cfe9310cfe46942d83e8c03285fbb20c1d7064f Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Fri, 29 Apr 2022 12:23:26 -0700 Subject: [PATCH 07/12] use OCIr for pushing updated image name --- .../java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java index 041227475bd..2782c2ae041 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java @@ -44,6 +44,8 @@ import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_APP_NAME; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_WDT_MODEL_FILE; +import static oracle.weblogic.kubernetes.TestConstants.OCIR_REGISTRY; +import static oracle.weblogic.kubernetes.TestConstants.OCIR_WEBLOGIC_IMAGE_NAME; import static oracle.weblogic.kubernetes.TestConstants.OPERATOR_RELEASE_NAME; import static oracle.weblogic.kubernetes.TestConstants.RESULTS_ROOT; import static oracle.weblogic.kubernetes.TestConstants.WDT_TEST_VERSION; @@ -405,7 +407,7 @@ void testUpdateBaseImageName() { String imageTag = getDateAndTimeStamp(); String imageUpdate = KIND_REPO != null ? KIND_REPO + (WEBLOGIC_IMAGE_NAME + ":" + imageTag).substring(TestConstants.BASE_IMAGES_REPO.length() + 1) - : WEBLOGIC_IMAGE_NAME + ":" + imageTag; + : OCIR_REGISTRY + "/" + OCIR_WEBLOGIC_IMAGE_NAME + ":" + imageTag; dockerTag(imageName, imageUpdate); dockerLoginAndPushImageToRegistry(imageUpdate); From a95ce37e7f025425ccc17d149056e1fb02f6608d Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Fri, 29 Apr 2022 20:15:39 -0700 Subject: [PATCH 08/12] replace BUSYBOX image location and tag in Dockerfile --- .../kubernetes/ItMiiAuxiliaryImageCluster.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java index 04010687485..4eb4fa2d6e2 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java @@ -30,6 +30,8 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_DEFAULT; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_DEFAULT; +import static oracle.weblogic.kubernetes.TestConstants.BUSYBOX_IMAGE; +import static oracle.weblogic.kubernetes.TestConstants.BUSYBOX_TAG; import static oracle.weblogic.kubernetes.TestConstants.DOMAIN_IMAGES_REPO; import static oracle.weblogic.kubernetes.TestConstants.MII_AUXILIARY_IMAGE_NAME; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; @@ -37,6 +39,7 @@ import static oracle.weblogic.kubernetes.TestConstants.WEBLOGIC_IMAGE_TO_USE_IN_SPEC; import static oracle.weblogic.kubernetes.actions.ActionConstants.MODEL_DIR; import static oracle.weblogic.kubernetes.actions.ActionConstants.RESOURCE_DIR; +import static oracle.weblogic.kubernetes.actions.ActionConstants.WORK_DIR; import static oracle.weblogic.kubernetes.actions.TestActions.dockerPush; import static oracle.weblogic.kubernetes.actions.TestActions.getServiceNodePort; import static oracle.weblogic.kubernetes.utils.CommonMiiTestUtils.createDomainResourceWithAuxiliaryImageClusterScope; @@ -44,6 +47,7 @@ import static oracle.weblogic.kubernetes.utils.CommonMiiTestUtils.readFilesInPod; import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkSystemResourceConfiguration; import static oracle.weblogic.kubernetes.utils.DomainUtils.createDomainAndVerify; +import static oracle.weblogic.kubernetes.utils.FileUtils.replaceStringInFile; import static oracle.weblogic.kubernetes.utils.FileUtils.unzipWDTInstallationFile; import static oracle.weblogic.kubernetes.utils.ImageUtils.createOcirRepoSecret; import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator; @@ -357,8 +361,18 @@ void testPatchDomainToAddModelsToClusterConfigIgnored() { } private void createAuxiliaryImage(String stageDirPath, String dockerFileLocation, String auxiliaryImage) { + //replace the BUSYBOX_IMAGE and BUSYBOX_TAG in Dockerfile + Path dockerDestFile = Paths.get(WORK_DIR, "auximagescluster", "Dockerfile"); + assertDoesNotThrow(() -> { + Files.createDirectories(dockerDestFile.getParent()); + Files.copy(Paths.get(dockerFileLocation), + dockerDestFile, StandardCopyOption.REPLACE_EXISTING); + replaceStringInFile(dockerDestFile.toString(), "BUSYBOX_IMAGE", BUSYBOX_IMAGE); + replaceStringInFile(dockerDestFile.toString(), "BUSYBOX_TAG", BUSYBOX_TAG); + }); + String cmdToExecute = String.format("cd %s && docker build -f %s %s -t %s .", - stageDirPath, dockerFileLocation, + stageDirPath, dockerDestFile, "--build-arg AUXILIARY_IMAGE_PATH=" + auxiliaryImagePath, auxiliaryImage); assertTrue(new Command() .withParams(new CommandParams() From 66417b11c69451136c688623e45fa7f8c97bae7f Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Sat, 30 Apr 2022 14:19:40 -0700 Subject: [PATCH 09/12] use OCIR_REGISTRY for built images --- .../java/oracle/weblogic/kubernetes/ItIntrospectVersion.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItIntrospectVersion.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItIntrospectVersion.java index 66ff0507381..6cf46cf0f96 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItIntrospectVersion.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItIntrospectVersion.java @@ -63,6 +63,8 @@ import static oracle.weblogic.kubernetes.TestConstants.DOMAIN_API_VERSION; import static oracle.weblogic.kubernetes.TestConstants.K8S_NODEPORT_HOST; import static oracle.weblogic.kubernetes.TestConstants.KIND_REPO; +import static oracle.weblogic.kubernetes.TestConstants.OCIR_REGISTRY; +import static oracle.weblogic.kubernetes.TestConstants.OCIR_WEBLOGIC_IMAGE_NAME; import static oracle.weblogic.kubernetes.TestConstants.OKD; import static oracle.weblogic.kubernetes.TestConstants.WEBLOGIC_IMAGE_NAME; import static oracle.weblogic.kubernetes.TestConstants.WEBLOGIC_IMAGE_TO_USE_IN_SPEC; @@ -710,7 +712,7 @@ void testUpdateImageName() { String imageTag = CommonTestUtils.getDateAndTimeStamp(); String imageUpdate = KIND_REPO != null ? KIND_REPO + (WEBLOGIC_IMAGE_NAME + ":" + imageTag).substring(TestConstants.BASE_IMAGES_REPO.length() + 1) - : WEBLOGIC_IMAGE_NAME + ":" + imageTag; + : OCIR_REGISTRY + "/" + OCIR_WEBLOGIC_IMAGE_NAME + ":" + imageTag; dockerTag(imageName, imageUpdate); dockerLoginAndPushImageToRegistry(imageUpdate); From 1277958051a3745ef27a5c46e90aae934eb2b39c Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Sat, 30 Apr 2022 17:17:58 -0700 Subject: [PATCH 10/12] set base image secret as well repo secret --- .../kubernetes/ItIntrospectVersion.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItIntrospectVersion.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItIntrospectVersion.java index 6cf46cf0f96..98b58b34fe9 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItIntrospectVersion.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItIntrospectVersion.java @@ -11,7 +11,6 @@ import java.nio.file.Paths; import java.time.OffsetDateTime; import java.util.ArrayList; -import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -59,7 +58,6 @@ import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_PATCH; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_DEFAULT; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_PATCH; -import static oracle.weblogic.kubernetes.TestConstants.BASE_IMAGES_REPO_SECRET; import static oracle.weblogic.kubernetes.TestConstants.DOMAIN_API_VERSION; import static oracle.weblogic.kubernetes.TestConstants.K8S_NODEPORT_HOST; import static oracle.weblogic.kubernetes.TestConstants.KIND_REPO; @@ -97,7 +95,6 @@ import static oracle.weblogic.kubernetes.utils.ConfigMapUtils.createConfigMapForDomainCreation; import static oracle.weblogic.kubernetes.utils.DeployUtil.deployUsingRest; import static oracle.weblogic.kubernetes.utils.DomainUtils.createDomainAndVerify; -import static oracle.weblogic.kubernetes.utils.ImageUtils.createSecretForBaseImages; import static oracle.weblogic.kubernetes.utils.ImageUtils.dockerLoginAndPushImageToRegistry; import static oracle.weblogic.kubernetes.utils.JobUtils.createDomainJob; import static oracle.weblogic.kubernetes.utils.JobUtils.getIntrospectJobName; @@ -116,6 +113,7 @@ import static oracle.weblogic.kubernetes.utils.PodUtils.getPodsWithTimeStamps; import static oracle.weblogic.kubernetes.utils.PodUtils.setPodAntiAffinity; import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretWithUsernamePassword; +import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretsForImageRepos; import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; import static oracle.weblogic.kubernetes.utils.WLSTUtils.executeWLSTScript; import static org.apache.commons.io.FileUtils.copyDirectory; @@ -206,10 +204,6 @@ public static void initAll(@Namespaces(2) List namespaces) { // install operator and verify its running in ready state installAndVerifyOperator(opNamespace, introDomainNamespace); - // create pull secrets for WebLogic image when running in non Kind Kubernetes cluster - // this secret is used only for non-kind cluster - createSecretForBaseImages(introDomainNamespace); - // build the clusterview application Path targetDir = Paths.get(WORK_DIR, ItIntrospectVersion.class.getName() + "/clusterviewapp"); @@ -1026,9 +1020,6 @@ private static void createDomain() { .domainHomeSourceType("PersistentVolume") // set the domain home source type as pv .image(WEBLOGIC_IMAGE_TO_USE_IN_SPEC) .imagePullPolicy("IfNotPresent") - .imagePullSecrets(Arrays.asList( - new V1LocalObjectReference() - .name(BASE_IMAGES_REPO_SECRET))) // this secret is used only in non-kind cluster .webLogicCredentialsSecret(new V1SecretReference() .name(wlSecretName) .namespace(introDomainNamespace)) @@ -1071,6 +1062,14 @@ private static void createDomain() { .clusterName(cluster1Name) .replicas(cluster1ReplicaCount) .serverStartState("RUNNING"))); + + // create secrets + List secrets = new ArrayList<>(); + for (String secret : createSecretsForImageRepos(introDomainNamespace)) { + secrets.add(new V1LocalObjectReference().name(secret)); + } + domain.spec().setImagePullSecrets(secrets); + setPodAntiAffinity(domain); // verify the domain custom resource is created createDomainAndVerify(domain, introDomainNamespace); From 7880496c844f93a99f1c59667b521f424d470219 Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Mon, 2 May 2022 10:11:48 -0700 Subject: [PATCH 11/12] remove debugging statements --- .../kubernetes/ItMiiAuxiliaryImage.java | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java index 2782c2ae041..77c442a5ad0 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImage.java @@ -152,7 +152,6 @@ class ItMiiAuxiliaryImage { @BeforeAll public static void initAll(@Namespaces(4) List namespaces) { logger = getLogger(); - logAll(); // get a new unique opNamespace logger.info("Creating unique namespace for Operator"); assertNotNull(namespaces.get(0), "Namespace list is null"); @@ -1350,43 +1349,4 @@ private void verifyIntrospectorPodLogContainsExpectedErrorMsg(String domainUid, .until(() -> introspectorPodLogContainsExpectedErrorMsg(domainUid, namespace, expectedErrorMsg)); } - - private static void logAll() { - logger.info("BASE_IMAGES_REPO:{0}", TestConstants.BASE_IMAGES_REPO); - logger.info("BASE_IMAGES_REPO_SECRET:{0}", TestConstants.BASE_IMAGES_REPO_SECRET); - logger.info("OCIR_DEFAULT:{0}", TestConstants.OCIR_DEFAULT); - logger.info("OCIR_EMAIL:{0}", TestConstants.OCIR_EMAIL); - logger.info("OCIR_FMWINFRA_IMAGE_NAME:{0}", TestConstants.OCIR_FMWINFRA_IMAGE_NAME); - logger.info("OCIR_FMWINFRA_IMAGE_TAG:{0}", TestConstants.OCIR_FMWINFRA_IMAGE_TAG); - logger.info("OCIR_PASSWORD:{0}", TestConstants.OCIR_PASSWORD); - logger.info("OCIR_REGISTRY:{0}", TestConstants.OCIR_REGISTRY); - logger.info("OCIR_SECRET_NAME:{0}", TestConstants.OCIR_SECRET_NAME); - logger.info("OCIR_USERNAME:{0}", TestConstants.OCIR_USERNAME); - logger.info("OCIR_WEBLOGIC_IMAGE_NAME:{0}", TestConstants.OCIR_WEBLOGIC_IMAGE_NAME); - logger.info("OCIR_WEBLOGIC_IMAGE_TAG:{0}", TestConstants.OCIR_WEBLOGIC_IMAGE_TAG); - logger.info("OCIR_DB_IMAGE_NAME:{0}", TestConstants.OCIR_DB_IMAGE_NAME); - logger.info("OCIR_DB_IMAGE_TAG:{0}", TestConstants.OCIR_DB_IMAGE_TAG); - - logger.info("OCR_DB_IMAGE_NAME:{0}", TestConstants.OCR_DB_IMAGE_NAME); - logger.info("OCR_DB_IMAGE_TAG:{0}", TestConstants.OCR_DB_IMAGE_TAG); - logger.info("OCR_EMAIL:{0}", TestConstants.OCR_EMAIL); - logger.info("OCR_FMWINFRA_IMAGE_NAME:{0}", TestConstants.OCR_FMWINFRA_IMAGE_NAME); - logger.info("OCR_FMWINFRA_IMAGE_TAG:{0}", TestConstants.OCR_FMWINFRA_IMAGE_TAG); - logger.info("OCR_PASSWORD:{0}", TestConstants.OCR_PASSWORD); - logger.info("OCR_REGISTRY:{0}", TestConstants.OCR_REGISTRY); - logger.info("OCR_SECRET_NAME:{0}", TestConstants.OCR_SECRET_NAME); - logger.info("OCR_USERNAME:{0}", TestConstants.OCR_USERNAME); - logger.info("OCR_WEBLOGIC_IMAGE_NAME:{0}", TestConstants.OCR_WEBLOGIC_IMAGE_NAME); - logger.info("OCR_WEBLOGIC_IMAGE_TAG:{0}", TestConstants.OCR_WEBLOGIC_IMAGE_TAG); - - logger.info("WEBLOGIC_IMAGE_NAME:{0}", TestConstants.WEBLOGIC_IMAGE_NAME); - logger.info("WEBLOGIC_IMAGE_TAGS:{0}", TestConstants.WEBLOGIC_IMAGE_TAGS); - logger.info("WEBLOGIC_IMAGE_TO_USE_IN_SPEC:{0}", TestConstants.WEBLOGIC_IMAGE_TO_USE_IN_SPEC); - - logger.info("FMWINFRA_IMAGE_NAME:{0}", TestConstants.FMWINFRA_IMAGE_NAME); - logger.info("DB_IMAGE_NAME:{0}", TestConstants.DB_IMAGE_NAME); - logger.info("DB_IMAGE_TAG:{0}", TestConstants.DB_IMAGE_TAG); - logger.info("DB_IMAGE_TO_USE_IN_SPEC:{0}", TestConstants.DB_IMAGE_TO_USE_IN_SPEC); - } - } From 74d335dda86850e9e5f317be22f6200f2dff90a6 Mon Sep 17 00:00:00 2001 From: Sankar Neelakandan Date: Mon, 2 May 2022 15:00:58 -0700 Subject: [PATCH 12/12] wip --- .../oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java index 4eb4fa2d6e2..6393b812879 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItMiiAuxiliaryImageCluster.java @@ -372,7 +372,7 @@ private void createAuxiliaryImage(String stageDirPath, String dockerFileLocation }); String cmdToExecute = String.format("cd %s && docker build -f %s %s -t %s .", - stageDirPath, dockerDestFile, + stageDirPath, dockerDestFile.toString(), "--build-arg AUXILIARY_IMAGE_PATH=" + auxiliaryImagePath, auxiliaryImage); assertTrue(new Command() .withParams(new CommandParams()