diff --git a/infrastructures/infrastructure-factory/pom.xml b/infrastructures/infrastructure-factory/pom.xml index 466201444a..e48fce9cb3 100644 --- a/infrastructures/infrastructure-factory/pom.xml +++ b/infrastructures/infrastructure-factory/pom.xml @@ -75,6 +75,10 @@ org.eclipse.che.infrastructure infrastructure-kubernetes + + org.slf4j + slf4j-api + ch.qos.logback logback-classic diff --git a/infrastructures/infrastructure-factory/src/main/java/org/eclipse/che/api/factory/server/scm/kubernetes/KubernetesPersonalAccessTokenManager.java b/infrastructures/infrastructure-factory/src/main/java/org/eclipse/che/api/factory/server/scm/kubernetes/KubernetesPersonalAccessTokenManager.java index 8e8a662d34..c06b9facf8 100644 --- a/infrastructures/infrastructure-factory/src/main/java/org/eclipse/che/api/factory/server/scm/kubernetes/KubernetesPersonalAccessTokenManager.java +++ b/infrastructures/infrastructure-factory/src/main/java/org/eclipse/che/api/factory/server/scm/kubernetes/KubernetesPersonalAccessTokenManager.java @@ -47,6 +47,8 @@ import org.eclipse.che.commons.subject.Subject; import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory; import org.eclipse.che.workspace.infrastructure.kubernetes.api.shared.KubernetesNamespaceMeta; import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesNamespaceFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** Manages personal access token secrets used for private repositories authentication. */ @Singleton @@ -74,6 +76,9 @@ public class KubernetesPersonalAccessTokenManager implements PersonalAccessToken private final ScmPersonalAccessTokenFetcher scmPersonalAccessTokenFetcher; private final GitCredentialManager gitCredentialManager; + private static final Logger LOG = + LoggerFactory.getLogger(KubernetesPersonalAccessTokenManager.class); + @Inject public KubernetesPersonalAccessTokenManager( KubernetesNamespaceFactory namespaceFactory, @@ -171,6 +176,10 @@ public class KubernetesPersonalAccessTokenManager implements PersonalAccessToken Subject cheUser, @Nullable String oAuthProviderName, @Nullable String scmServerUrl) throws ScmConfigurationPersistenceException { try { + LOG.debug( + "Fetching personal access token for user {} and OAuth provider {}", + cheUser.getUserId(), + oAuthProviderName); for (KubernetesNamespaceMeta namespaceMeta : namespaceFactory.list()) { List secrets = namespaceFactory @@ -178,17 +187,24 @@ public class KubernetesPersonalAccessTokenManager implements PersonalAccessToken .secrets() .get(KUBERNETES_PERSONAL_ACCESS_TOKEN_LABEL_SELECTOR); for (Secret secret : secrets) { + LOG.debug("Checking secret {}", secret.getMetadata().getName()); if (deleteSecretIfMisconfigured(secret)) { + LOG.debug("Secret {} is misconfigured and was deleted", secret.getMetadata().getName()); continue; } if (isSecretMatchesSearchCriteria(cheUser, oAuthProviderName, scmServerUrl, secret)) { + LOG.debug("Iterating over secret {}", secret.getMetadata().getName()); PersonalAccessTokenParams personalAccessTokenParams = this.secret2PersonalAccessTokenParams(secret); Optional scmUsername = scmPersonalAccessTokenFetcher.getScmUsername(personalAccessTokenParams); if (scmUsername.isPresent()) { + LOG.debug( + "Creating personal access token for user {} and OAuth provider {}", + cheUser.getUserId(), + oAuthProviderName); Map secretAnnotations = secret.getMetadata().getAnnotations(); PersonalAccessToken personalAccessToken = @@ -212,10 +228,12 @@ public class KubernetesPersonalAccessTokenManager implements PersonalAccessToken .secrets() .inNamespace(namespaceMeta.getName()) .delete(secret); + LOG.debug("Secret {} is misconfigured and was deleted", secret.getMetadata().getName()); } } } } catch (InfrastructureException | UnknownScmProviderException e) { + LOG.debug("Failed to get personal access token", e); throw new ScmConfigurationPersistenceException(e.getMessage(), e); } return Optional.empty();