From 0136d1c135b51f75145103f82cba7c1aae18c931 Mon Sep 17 00:00:00 2001 From: Vibhav Bobade Date: Thu, 28 Feb 2019 19:14:18 +0530 Subject: [PATCH] Feature : Customize Secret name using Annotations To change the default name of the secret (originally "namespace-secretname"), We can now give a custom name to the secret using "jenkins.openshift.io/secret.name" annotation. ``` annotations: jenkins.openshift.io/secret.name: CustomeName ``` --- .../jenkins/openshiftsync/Annotations.java | 1 + .../openshiftsync/CredentialsUtils.java | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/fabric8/jenkins/openshiftsync/Annotations.java b/src/main/java/io/fabric8/jenkins/openshiftsync/Annotations.java index 9943333f9..782b6e023 100644 --- a/src/main/java/io/fabric8/jenkins/openshiftsync/Annotations.java +++ b/src/main/java/io/fabric8/jenkins/openshiftsync/Annotations.java @@ -23,4 +23,5 @@ public class Annotations { public static final String GENERATED_BY_JENKINS = "jenkins"; public static final String DISABLE_SYNC_CREATE = "jenkins.openshift.io/disable-sync-create"; public static final String BUILDCONFIG_NAME = "openshift.io/build-config.name"; + public static final String SECRET_NAME = "jenkins.openshift.io/secret.name"; } diff --git a/src/main/java/io/fabric8/jenkins/openshiftsync/CredentialsUtils.java b/src/main/java/io/fabric8/jenkins/openshiftsync/CredentialsUtils.java index 49fe7eb62..1078bf701 100644 --- a/src/main/java/io/fabric8/jenkins/openshiftsync/CredentialsUtils.java +++ b/src/main/java/io/fabric8/jenkins/openshiftsync/CredentialsUtils.java @@ -58,7 +58,8 @@ public static synchronized String updateSourceCredentials(BuildConfig buildConfi String credID = null; if (sourceSecret != null) { credID = upsertCredential(sourceSecret, sourceSecret.getMetadata().getNamespace(), - sourceSecret.getMetadata().getName()); + sourceSecret.getMetadata().getName(), + sourceSecret.getMetadata().getAnnotations().get(Annotations.SECRET_NAME)); if (credID != null) BuildConfigSecretToCredentialsMap.linkBCSecretToCredential(NamespaceName.create(buildConfig).toString(), credID); @@ -96,19 +97,19 @@ public static synchronized String upsertCredential(Secret secret) throws IOExcep if (secret != null) { ObjectMeta metadata = secret.getMetadata(); if (metadata != null) { - return upsertCredential(secret, metadata.getNamespace(), metadata.getName()); + return upsertCredential(secret, metadata.getNamespace(), metadata.getName(), metadata.getAnnotations().get(Annotations.SECRET_NAME)); } } return null; } - private static String upsertCredential(Secret secret, String namespace, String secretName) throws IOException { + private static String upsertCredential(Secret secret, String namespace, String secretName, String customSecretName) throws IOException { String id = null; if (secret != null) { Credentials creds = secretToCredentials(secret); if (creds == null) return null; - id = secretName(namespace, secretName); + id = secretName(namespace, secretName, customSecretName); Credentials existingCreds = lookupCredentials(id); final SecurityContext previousContext = ACL.impersonate(ACL.SYSTEM); try { @@ -162,7 +163,7 @@ private static void deleteCredential(String id, NamespaceName name, String resou public static void deleteCredential(Secret secret) throws IOException { if (secret != null) { - String id = secretName(secret.getMetadata().getNamespace(), secret.getMetadata().getName()); + String id = secretName(secret.getMetadata().getNamespace(), secret.getMetadata().getName(), secret.getMetadata().getAnnotations().get(Annotations.SECRET_NAME)); deleteCredential(id, NamespaceName.create(secret), secret.getMetadata().getResourceVersion()); } } @@ -197,8 +198,8 @@ private static Credentials lookupCredentials(String id) { CredentialsMatchers.withId(id)); } - private static String secretName(String namespace, String name) { - return namespace + "-" + name; + private static String secretName(String namespace, String name, String customName) { + return (customName == null) ? namespace + "-" + name : customName; } private static Credentials arbitraryKeyValueTextCredential(Map data, String secretName) { @@ -225,6 +226,8 @@ private static Credentials arbitraryKeyValueTextCredential(Map d private static Credentials secretToCredentials(Secret secret) { String namespace = secret.getMetadata().getNamespace(); String name = secret.getMetadata().getName(); + String customName = secret.getMetadata().getAnnotations().get(Annotations.SECRET_NAME); + Map data = secret.getData(); if (data == null) { @@ -233,7 +236,7 @@ private static Credentials secretToCredentials(Secret secret) { return null; } - final String secretName = secretName(namespace, name); + final String secretName = secretName(namespace, name, customName); switch (secret.getType()) { case OPENSHIFT_SECRETS_TYPE_OPAQUE: String usernameData = data.get(OPENSHIFT_SECRETS_DATA_USERNAME);