chore: Use CheServer client factory to handle Kubernetes operation in a user namespace (#516)
Signed-off-by: Anatolii Bazko <abazko@redhat.com>dependabot/maven/org.codehaus.plexus-plexus-utils-4.0.0
parent
ae4f6a33a5
commit
dd873a597b
|
|
@ -43,7 +43,7 @@ import org.eclipse.che.api.factory.server.scm.exception.UnsatisfiedScmPreconditi
|
|||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.commons.lang.NameGenerator;
|
||||
import org.eclipse.che.commons.lang.StringUtils;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
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;
|
||||
|
||||
|
|
@ -86,13 +86,14 @@ public class KubernetesGitCredentialManager implements GitCredentialManager {
|
|||
ANNOTATION_DEV_WORKSPACE_MOUNT_PATH, CREDENTIALS_MOUNT_PATH);
|
||||
|
||||
private final KubernetesNamespaceFactory namespaceFactory;
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
|
||||
@Inject
|
||||
public KubernetesGitCredentialManager(
|
||||
KubernetesNamespaceFactory namespaceFactory, KubernetesClientFactory clientFactory) {
|
||||
KubernetesNamespaceFactory namespaceFactory,
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory) {
|
||||
this.namespaceFactory = namespaceFactory;
|
||||
this.clientFactory = clientFactory;
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -100,7 +101,7 @@ public class KubernetesGitCredentialManager implements GitCredentialManager {
|
|||
throws UnsatisfiedScmPreconditionException, ScmConfigurationPersistenceException {
|
||||
try {
|
||||
final String namespace = getFirstNamespace();
|
||||
final KubernetesClient client = clientFactory.create();
|
||||
final KubernetesClient client = cheServerKubernetesClientFactory.create();
|
||||
// to avoid duplicating secrets we try to reuse existing one by matching
|
||||
// hostname/username if possible, and update it. Otherwise, create new one.
|
||||
Optional<Secret> existing =
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ import org.eclipse.che.commons.env.EnvironmentContext;
|
|||
import org.eclipse.che.commons.lang.NameGenerator;
|
||||
import org.eclipse.che.commons.lang.StringUtils;
|
||||
import org.eclipse.che.commons.subject.Subject;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
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;
|
||||
|
||||
|
|
@ -69,18 +69,18 @@ public class KubernetesPersonalAccessTokenManager implements PersonalAccessToken
|
|||
public static final String TOKEN_DATA_FIELD = "token";
|
||||
|
||||
private final KubernetesNamespaceFactory namespaceFactory;
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
private final ScmPersonalAccessTokenFetcher scmPersonalAccessTokenFetcher;
|
||||
private final GitCredentialManager gitCredentialManager;
|
||||
|
||||
@Inject
|
||||
public KubernetesPersonalAccessTokenManager(
|
||||
KubernetesNamespaceFactory namespaceFactory,
|
||||
KubernetesClientFactory clientFactory,
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory,
|
||||
ScmPersonalAccessTokenFetcher scmPersonalAccessTokenFetcher,
|
||||
GitCredentialManager gitCredentialManager) {
|
||||
this.namespaceFactory = namespaceFactory;
|
||||
this.clientFactory = clientFactory;
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
this.scmPersonalAccessTokenFetcher = scmPersonalAccessTokenFetcher;
|
||||
this.gitCredentialManager = gitCredentialManager;
|
||||
}
|
||||
|
|
@ -119,7 +119,11 @@ public class KubernetesPersonalAccessTokenManager implements PersonalAccessToken
|
|||
personalAccessToken.getToken().getBytes(StandardCharsets.UTF_8))))
|
||||
.build();
|
||||
|
||||
clientFactory.create().secrets().inNamespace(namespace).createOrReplace(secret);
|
||||
cheServerKubernetesClientFactory
|
||||
.create()
|
||||
.secrets()
|
||||
.inNamespace(namespace)
|
||||
.createOrReplace(secret);
|
||||
} catch (KubernetesClientException | InfrastructureException e) {
|
||||
throw new ScmConfigurationPersistenceException(e.getMessage(), e);
|
||||
}
|
||||
|
|
@ -188,7 +192,11 @@ public class KubernetesPersonalAccessTokenManager implements PersonalAccessToken
|
|||
// be valid. If no valid token can be found, the caller should react in the same way
|
||||
// as it reacts if no token exists. Usually, that means that process of new token
|
||||
// retrieval would be initiated.
|
||||
clientFactory.create().secrets().inNamespace(namespaceMeta.getName()).delete(secret);
|
||||
cheServerKubernetesClientFactory
|
||||
.create()
|
||||
.secrets()
|
||||
.inNamespace(namespaceMeta.getName())
|
||||
.delete(secret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessToken;
|
||||
import org.eclipse.che.commons.lang.NameGenerator;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.api.server.impls.KubernetesNamespaceMetaImpl;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.api.shared.KubernetesNamespaceMeta;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesNamespaceFactory;
|
||||
|
|
@ -58,7 +58,7 @@ import org.testng.annotations.Test;
|
|||
public class KubernetesGitCredentialManagerTest {
|
||||
|
||||
@Mock private KubernetesNamespaceFactory namespaceFactory;
|
||||
@Mock private KubernetesClientFactory clientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
@Mock private KubernetesClient kubeClient;
|
||||
|
||||
@Mock private MixedOperation<Secret, SecretList, Resource<Secret>> secretsMixedOperation;
|
||||
|
|
@ -74,7 +74,7 @@ public class KubernetesGitCredentialManagerTest {
|
|||
@BeforeMethod
|
||||
protected void init() {
|
||||
kubernetesGitCredentialManager =
|
||||
new KubernetesGitCredentialManager(namespaceFactory, clientFactory);
|
||||
new KubernetesGitCredentialManager(namespaceFactory, cheServerKubernetesClientFactory);
|
||||
assertNotNull(this.kubernetesGitCredentialManager);
|
||||
}
|
||||
|
||||
|
|
@ -83,7 +83,7 @@ public class KubernetesGitCredentialManagerTest {
|
|||
KubernetesNamespaceMeta meta = new KubernetesNamespaceMetaImpl("test");
|
||||
when(namespaceFactory.list()).thenReturn(Collections.singletonList(meta));
|
||||
|
||||
when(clientFactory.create()).thenReturn(kubeClient);
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(kubeClient);
|
||||
when(kubeClient.secrets()).thenReturn(secretsMixedOperation);
|
||||
when(secretsMixedOperation.inNamespace(eq(meta.getName()))).thenReturn(nonNamespaceOperation);
|
||||
when(nonNamespaceOperation.withLabels(anyMap())).thenReturn(filterWatchDeletable);
|
||||
|
|
@ -113,7 +113,7 @@ public class KubernetesGitCredentialManagerTest {
|
|||
KubernetesNamespaceMeta meta = new KubernetesNamespaceMetaImpl("test");
|
||||
when(namespaceFactory.list()).thenReturn(Collections.singletonList(meta));
|
||||
|
||||
when(clientFactory.create()).thenReturn(kubeClient);
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(kubeClient);
|
||||
when(kubeClient.secrets()).thenReturn(secretsMixedOperation);
|
||||
when(secretsMixedOperation.inNamespace(eq(meta.getName()))).thenReturn(nonNamespaceOperation);
|
||||
when(nonNamespaceOperation.withLabels(anyMap())).thenReturn(filterWatchDeletable);
|
||||
|
|
@ -173,7 +173,7 @@ public class KubernetesGitCredentialManagerTest {
|
|||
|
||||
when(namespaceFactory.list()).thenReturn(Collections.singletonList(namespaceMeta));
|
||||
|
||||
when(clientFactory.create()).thenReturn(kubeClient);
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(kubeClient);
|
||||
when(kubeClient.secrets()).thenReturn(secretsMixedOperation);
|
||||
when(secretsMixedOperation.inNamespace(eq(namespaceMeta.getName())))
|
||||
.thenReturn(nonNamespaceOperation);
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ import org.eclipse.che.api.factory.server.scm.GitCredentialManager;
|
|||
import org.eclipse.che.api.factory.server.scm.PersonalAccessToken;
|
||||
import org.eclipse.che.api.factory.server.scm.ScmPersonalAccessTokenFetcher;
|
||||
import org.eclipse.che.commons.subject.SubjectImpl;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.api.server.impls.KubernetesNamespaceMetaImpl;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.api.shared.KubernetesNamespaceMeta;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesNamespace;
|
||||
|
|
@ -64,7 +64,7 @@ import org.testng.annotations.Test;
|
|||
public class KubernetesPersonalAccessTokenManagerTest {
|
||||
|
||||
@Mock private KubernetesNamespaceFactory namespaceFactory;
|
||||
@Mock private KubernetesClientFactory clientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
@Mock private ScmPersonalAccessTokenFetcher scmPersonalAccessTokenFetcher;
|
||||
|
||||
@Mock private KubernetesClient kubeClient;
|
||||
|
|
@ -80,7 +80,10 @@ public class KubernetesPersonalAccessTokenManagerTest {
|
|||
protected void init() {
|
||||
personalAccessTokenManager =
|
||||
new KubernetesPersonalAccessTokenManager(
|
||||
namespaceFactory, clientFactory, scmPersonalAccessTokenFetcher, gitCredentialManager);
|
||||
namespaceFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
scmPersonalAccessTokenFetcher,
|
||||
gitCredentialManager);
|
||||
assertNotNull(this.personalAccessTokenManager);
|
||||
}
|
||||
|
||||
|
|
@ -123,7 +126,7 @@ public class KubernetesPersonalAccessTokenManagerTest {
|
|||
KubernetesNamespaceMeta meta = new KubernetesNamespaceMetaImpl("test");
|
||||
when(namespaceFactory.list()).thenReturn(Collections.singletonList(meta));
|
||||
|
||||
when(clientFactory.create()).thenReturn(kubeClient);
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(kubeClient);
|
||||
when(kubeClient.secrets()).thenReturn(secretsMixedOperation);
|
||||
when(secretsMixedOperation.inNamespace(eq(meta.getName()))).thenReturn(nonNamespaceOperation);
|
||||
ArgumentCaptor<Secret> captor = ArgumentCaptor.forClass(Secret.class);
|
||||
|
|
@ -259,7 +262,7 @@ public class KubernetesPersonalAccessTokenManagerTest {
|
|||
when(namespaceFactory.access(eq(null), eq(meta.getName()))).thenReturn(kubernetesnamespace);
|
||||
when(kubernetesnamespace.secrets()).thenReturn(secrets);
|
||||
when(scmPersonalAccessTokenFetcher.isValid(any(PersonalAccessToken.class))).thenReturn(false);
|
||||
when(clientFactory.create()).thenReturn(kubeClient);
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(kubeClient);
|
||||
when(kubeClient.secrets()).thenReturn(secretsMixedOperation);
|
||||
when(secretsMixedOperation.inNamespace(eq(meta.getName()))).thenReturn(nonNamespaceOperation);
|
||||
Map<String, String> data1 =
|
||||
|
|
@ -296,7 +299,7 @@ public class KubernetesPersonalAccessTokenManagerTest {
|
|||
PersonalAccessToken token = invocation.getArgument(0);
|
||||
return "id2".equals(token.getScmTokenId());
|
||||
});
|
||||
when(clientFactory.create()).thenReturn(kubeClient);
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(kubeClient);
|
||||
when(kubeClient.secrets()).thenReturn(secretsMixedOperation);
|
||||
when(secretsMixedOperation.inNamespace(eq(meta.getName()))).thenReturn(nonNamespaceOperation);
|
||||
Map<String, String> data1 =
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ public class KubernetesInfrastructure extends RuntimeInfrastructure {
|
|||
private final KubernetesRuntimeContextFactory runtimeContextFactory;
|
||||
private final KubernetesRuntimeStateCache runtimeStatusesCache;
|
||||
private final KubernetesNamespaceFactory namespaceFactory;
|
||||
private final KubernetesClientFactory kubernetesClientFactory;
|
||||
|
||||
@Inject
|
||||
public KubernetesInfrastructure(
|
||||
|
|
@ -49,8 +48,7 @@ public class KubernetesInfrastructure extends RuntimeInfrastructure {
|
|||
KubernetesRuntimeContextFactory runtimeContextFactory,
|
||||
Set<InternalEnvironmentProvisioner> internalEnvProvisioners,
|
||||
KubernetesRuntimeStateCache runtimeStatusesCache,
|
||||
KubernetesNamespaceFactory namespaceFactory,
|
||||
KubernetesClientFactory kubernetesClientFactory) {
|
||||
KubernetesNamespaceFactory namespaceFactory) {
|
||||
super(
|
||||
NAME,
|
||||
ImmutableSet.of(KubernetesEnvironment.TYPE, Constants.NO_ENVIRONMENT_RECIPE_TYPE),
|
||||
|
|
@ -59,7 +57,6 @@ public class KubernetesInfrastructure extends RuntimeInfrastructure {
|
|||
this.runtimeContextFactory = runtimeContextFactory;
|
||||
this.runtimeStatusesCache = runtimeStatusesCache;
|
||||
this.namespaceFactory = namespaceFactory;
|
||||
this.kubernetesClientFactory = kubernetesClientFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ import java.util.concurrent.TimeoutException;
|
|||
import java.util.function.Predicate;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.InternalInfrastructureException;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesInfrastructureException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -73,18 +73,15 @@ public class KubernetesNamespace {
|
|||
private final KubernetesServices services;
|
||||
private final KubernetesPersistentVolumeClaims pvcs;
|
||||
private final KubernetesIngresses ingresses;
|
||||
/** Factory for workspace related operations clients */
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
/** Factory for cluster related operations clients (like labeling the namespaces) */
|
||||
private final KubernetesClientFactory cheSAClientFactory;
|
||||
private final CheServerKubernetesClientFactory cheSAClientFactory;
|
||||
|
||||
private final KubernetesSecrets secrets;
|
||||
private final KubernetesConfigsMaps configMaps;
|
||||
|
||||
@VisibleForTesting
|
||||
protected KubernetesNamespace(
|
||||
KubernetesClientFactory clientFactory,
|
||||
KubernetesClientFactory cheSAClientFactory,
|
||||
CheServerKubernetesClientFactory cheSAClientFactory,
|
||||
String workspaceId,
|
||||
String name,
|
||||
KubernetesDeployments deployments,
|
||||
|
|
@ -93,7 +90,6 @@ public class KubernetesNamespace {
|
|||
KubernetesIngresses kubernetesIngresses,
|
||||
KubernetesSecrets secrets,
|
||||
KubernetesConfigsMaps configMaps) {
|
||||
this.clientFactory = clientFactory;
|
||||
this.cheSAClientFactory = cheSAClientFactory;
|
||||
this.workspaceId = workspaceId;
|
||||
this.name = name;
|
||||
|
|
@ -106,21 +102,19 @@ public class KubernetesNamespace {
|
|||
}
|
||||
|
||||
public KubernetesNamespace(
|
||||
KubernetesClientFactory clientFactory,
|
||||
KubernetesClientFactory cheSAClientFactory,
|
||||
CheServerKubernetesClientFactory cheSAClientFactory,
|
||||
Executor executor,
|
||||
String name,
|
||||
String workspaceId) {
|
||||
this.clientFactory = clientFactory;
|
||||
this.cheSAClientFactory = cheSAClientFactory;
|
||||
this.workspaceId = workspaceId;
|
||||
this.name = name;
|
||||
this.deployments = new KubernetesDeployments(name, workspaceId, clientFactory, executor);
|
||||
this.services = new KubernetesServices(name, workspaceId, clientFactory);
|
||||
this.pvcs = new KubernetesPersistentVolumeClaims(name, workspaceId, clientFactory);
|
||||
this.ingresses = new KubernetesIngresses(name, workspaceId, clientFactory);
|
||||
this.secrets = new KubernetesSecrets(name, workspaceId, clientFactory);
|
||||
this.configMaps = new KubernetesConfigsMaps(name, workspaceId, clientFactory);
|
||||
this.deployments = new KubernetesDeployments(name, workspaceId, cheSAClientFactory, executor);
|
||||
this.services = new KubernetesServices(name, workspaceId, cheSAClientFactory);
|
||||
this.pvcs = new KubernetesPersistentVolumeClaims(name, workspaceId, cheSAClientFactory);
|
||||
this.ingresses = new KubernetesIngresses(name, workspaceId, cheSAClientFactory);
|
||||
this.secrets = new KubernetesSecrets(name, workspaceId, cheSAClientFactory);
|
||||
this.configMaps = new KubernetesConfigsMaps(name, workspaceId, cheSAClientFactory);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -270,7 +264,7 @@ public class KubernetesNamespace {
|
|||
* @throws InfrastructureException if any unexpected exception occurs during namespace deletion
|
||||
*/
|
||||
void delete() throws InfrastructureException {
|
||||
KubernetesClient client = clientFactory.create(workspaceId);
|
||||
KubernetesClient client = cheSAClientFactory.create(workspaceId);
|
||||
|
||||
try {
|
||||
delete(name, client);
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ import org.eclipse.che.api.core.ValidationException;
|
|||
import org.eclipse.che.api.core.model.workspace.Workspace;
|
||||
import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
|
||||
import org.eclipse.che.api.user.server.PreferenceManager;
|
||||
import org.eclipse.che.api.user.server.UserManager;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.commons.annotation.Nullable;
|
||||
|
|
@ -56,7 +55,6 @@ import org.eclipse.che.commons.lang.Pair;
|
|||
import org.eclipse.che.commons.subject.Subject;
|
||||
import org.eclipse.che.inject.ConfigurationException;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.api.server.impls.KubernetesNamespaceMetaImpl;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.api.shared.KubernetesNamespaceMeta;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.configurator.NamespaceConfigurator;
|
||||
|
|
@ -95,10 +93,8 @@ public class KubernetesNamespaceFactory {
|
|||
protected final Map<String, String> namespaceLabels;
|
||||
protected final Map<String, String> namespaceAnnotations;
|
||||
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final KubernetesClientFactory cheClientFactory;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
private final boolean namespaceCreationAllowed;
|
||||
private final UserManager userManager;
|
||||
private final PreferenceManager preferenceManager;
|
||||
protected final Set<NamespaceConfigurator> namespaceConfigurators;
|
||||
protected final KubernetesSharedPool sharedPool;
|
||||
|
|
@ -112,16 +108,12 @@ public class KubernetesNamespaceFactory {
|
|||
@Named("che.infra.kubernetes.namespace.labels") String namespaceLabels,
|
||||
@Named("che.infra.kubernetes.namespace.annotations") String namespaceAnnotations,
|
||||
Set<NamespaceConfigurator> namespaceConfigurators,
|
||||
KubernetesClientFactory clientFactory,
|
||||
CheServerKubernetesClientFactory cheClientFactory,
|
||||
UserManager userManager,
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory,
|
||||
PreferenceManager preferenceManager,
|
||||
KubernetesSharedPool sharedPool)
|
||||
throws ConfigurationException {
|
||||
this.namespaceCreationAllowed = namespaceCreationAllowed;
|
||||
this.userManager = userManager;
|
||||
this.clientFactory = clientFactory;
|
||||
this.cheClientFactory = cheClientFactory;
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
this.defaultNamespaceName = defaultNamespaceName;
|
||||
this.preferenceManager = preferenceManager;
|
||||
this.sharedPool = sharedPool;
|
||||
|
|
@ -168,7 +160,7 @@ public class KubernetesNamespaceFactory {
|
|||
@VisibleForTesting
|
||||
KubernetesNamespace doCreateNamespaceAccess(String workspaceId, String name) {
|
||||
return new KubernetesNamespace(
|
||||
clientFactory, cheClientFactory, sharedPool.getExecutor(), name, workspaceId);
|
||||
cheServerKubernetesClientFactory, sharedPool.getExecutor(), name, workspaceId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -241,7 +233,8 @@ public class KubernetesNamespaceFactory {
|
|||
public Optional<KubernetesNamespaceMeta> fetchNamespace(String name)
|
||||
throws InfrastructureException {
|
||||
try {
|
||||
Namespace namespace = cheClientFactory.create().namespaces().withName(name).get();
|
||||
Namespace namespace =
|
||||
cheServerKubernetesClientFactory.create().namespaces().withName(name).get();
|
||||
if (namespace == null) {
|
||||
return Optional.empty();
|
||||
} else {
|
||||
|
|
@ -501,7 +494,12 @@ public class KubernetesNamespaceFactory {
|
|||
NamespaceResolutionContext namespaceCtx) throws InfrastructureException {
|
||||
try {
|
||||
List<Namespace> workspaceNamespaces =
|
||||
cheClientFactory.create().namespaces().withLabels(namespaceLabels).list().getItems();
|
||||
cheServerKubernetesClientFactory
|
||||
.create()
|
||||
.namespaces()
|
||||
.withLabels(namespaceLabels)
|
||||
.list()
|
||||
.getItems();
|
||||
if (!workspaceNamespaces.isEmpty()) {
|
||||
Map<String, String> evaluatedAnnotations = evaluateAnnotationPlaceholders(namespaceCtx);
|
||||
return workspaceNamespaces.stream()
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -19,7 +19,7 @@ import javax.inject.Inject;
|
|||
import javax.inject.Singleton;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
|
||||
/**
|
||||
* This {@link NamespaceConfigurator} ensures that Secret {@link
|
||||
|
|
@ -29,17 +29,18 @@ import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFacto
|
|||
@Singleton
|
||||
public class CredentialsSecretConfigurator implements NamespaceConfigurator {
|
||||
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
|
||||
@Inject
|
||||
public CredentialsSecretConfigurator(KubernetesClientFactory clientFactory) {
|
||||
this.clientFactory = clientFactory;
|
||||
public CredentialsSecretConfigurator(
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory) {
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(NamespaceResolutionContext namespaceResolutionContext, String namespaceName)
|
||||
throws InfrastructureException {
|
||||
var client = clientFactory.create();
|
||||
var client = cheServerKubernetesClientFactory.create();
|
||||
if (client.secrets().inNamespace(namespaceName).withName(CREDENTIALS_SECRET_NAME).get()
|
||||
== null) {
|
||||
Secret secret =
|
||||
|
|
|
|||
|
|
@ -23,34 +23,30 @@ import javax.inject.Inject;
|
|||
import org.eclipse.che.api.factory.server.scm.GitUserData;
|
||||
import org.eclipse.che.api.factory.server.scm.GitUserDataFetcher;
|
||||
import org.eclipse.che.api.factory.server.scm.exception.*;
|
||||
import org.eclipse.che.api.user.server.UserManager;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class GitconfigUserDataConfigurator implements NamespaceConfigurator {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GitconfigUserDataConfigurator.class);
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
private final Set<GitUserDataFetcher> gitUserDataFetchers;
|
||||
private static final String CONFIGMAP_DATA_KEY = "gitconfig";
|
||||
private final UserManager userManager;
|
||||
|
||||
@Inject
|
||||
public GitconfigUserDataConfigurator(
|
||||
KubernetesClientFactory clientFactory,
|
||||
Set<GitUserDataFetcher> gitUserDataFetchers,
|
||||
UserManager userManager) {
|
||||
this.clientFactory = clientFactory;
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory,
|
||||
Set<GitUserDataFetcher> gitUserDataFetchers) {
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
this.gitUserDataFetchers = gitUserDataFetchers;
|
||||
this.userManager = userManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(NamespaceResolutionContext namespaceResolutionContext, String namespaceName)
|
||||
throws InfrastructureException {
|
||||
var client = clientFactory.create();
|
||||
var client = cheServerKubernetesClientFactory.create();
|
||||
GitUserData gitUserData = null;
|
||||
for (GitUserDataFetcher fetcher : gitUserDataFetchers) {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -18,7 +18,7 @@ import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
|
|||
import javax.inject.Inject;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
|
||||
/**
|
||||
* This {@link NamespaceConfigurator} ensures that ConfigMap {@link
|
||||
|
|
@ -27,17 +27,18 @@ import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFacto
|
|||
*/
|
||||
public class PreferencesConfigMapConfigurator implements NamespaceConfigurator {
|
||||
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
|
||||
@Inject
|
||||
public PreferencesConfigMapConfigurator(KubernetesClientFactory clientFactory) {
|
||||
this.clientFactory = clientFactory;
|
||||
public PreferencesConfigMapConfigurator(
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory) {
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(NamespaceResolutionContext namespaceResolutionContext, String namespaceName)
|
||||
throws InfrastructureException {
|
||||
var client = clientFactory.create();
|
||||
var client = cheServerKubernetesClientFactory.create();
|
||||
if (client.configMaps().inNamespace(namespaceName).withName(PREFERENCES_CONFIGMAP_NAME).get()
|
||||
== null) {
|
||||
ConfigMap configMap =
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ import org.eclipse.che.api.ssh.server.model.impl.SshPairImpl;
|
|||
import org.eclipse.che.api.ssh.shared.model.SshPair;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
|
@ -55,7 +55,7 @@ public class SshKeysConfigurator implements NamespaceConfigurator {
|
|||
|
||||
private final SshManager sshManager;
|
||||
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(SshKeysConfigurator.class);
|
||||
|
||||
|
|
@ -63,16 +63,17 @@ public class SshKeysConfigurator implements NamespaceConfigurator {
|
|||
Pattern.compile("^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$");
|
||||
|
||||
@Inject
|
||||
public SshKeysConfigurator(SshManager sshManager, KubernetesClientFactory clientFactory) {
|
||||
public SshKeysConfigurator(
|
||||
SshManager sshManager, CheServerKubernetesClientFactory cheServerKubernetesClientFactory) {
|
||||
this.sshManager = sshManager;
|
||||
this.clientFactory = clientFactory;
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(NamespaceResolutionContext namespaceResolutionContext, String namespaceName)
|
||||
throws InfrastructureException {
|
||||
|
||||
var client = clientFactory.create();
|
||||
var client = cheServerKubernetesClientFactory.create();
|
||||
List<SshPairImpl> vcsSshPairs = getVcsSshPairs(namespaceResolutionContext);
|
||||
|
||||
List<String> invalidSshKeyNames =
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -26,7 +26,6 @@ import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
|||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.commons.annotation.Nullable;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
|
||||
/**
|
||||
* This {@link NamespaceConfigurator} ensures that User has assigned configured ClusterRoles from
|
||||
|
|
@ -37,13 +36,13 @@ import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFacto
|
|||
public class UserPermissionConfigurator implements NamespaceConfigurator {
|
||||
|
||||
private final Set<String> userClusterRoles;
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
|
||||
@Inject
|
||||
public UserPermissionConfigurator(
|
||||
@Nullable @Named("che.infra.kubernetes.user_cluster_roles") String userClusterRoles,
|
||||
CheServerKubernetesClientFactory cheClientFactory) {
|
||||
this.clientFactory = cheClientFactory;
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory) {
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
if (!isNullOrEmpty(userClusterRoles)) {
|
||||
this.userClusterRoles =
|
||||
Sets.newHashSet(
|
||||
|
|
@ -58,7 +57,7 @@ public class UserPermissionConfigurator implements NamespaceConfigurator {
|
|||
throws InfrastructureException {
|
||||
if (!userClusterRoles.isEmpty()) {
|
||||
bindRoles(
|
||||
clientFactory.create(),
|
||||
cheServerKubernetesClientFactory.create(),
|
||||
namespaceName,
|
||||
namespaceResolutionContext.getUserName(),
|
||||
userClusterRoles);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2022 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -15,10 +15,7 @@ import com.google.common.annotations.VisibleForTesting;
|
|||
import io.fabric8.kubernetes.api.model.Secret;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import org.eclipse.che.api.user.server.PreferenceManager;
|
||||
import org.eclipse.che.api.user.server.UserManager;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
|
@ -36,19 +33,8 @@ public class UserPreferencesConfigurator implements NamespaceConfigurator {
|
|||
private static final String USER_PREFERENCES_SECRET_MOUNT_PATH = "/config/user/preferences";
|
||||
private static final int PREFERENCE_NAME_MAX_LENGTH = 253;
|
||||
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final UserManager userManager;
|
||||
private final PreferenceManager preferenceManager;
|
||||
|
||||
@Inject
|
||||
public UserPreferencesConfigurator(
|
||||
KubernetesClientFactory clientFactory,
|
||||
UserManager userManager,
|
||||
PreferenceManager preferenceManager) {
|
||||
this.clientFactory = clientFactory;
|
||||
this.userManager = userManager;
|
||||
this.preferenceManager = preferenceManager;
|
||||
}
|
||||
public UserPreferencesConfigurator() {}
|
||||
|
||||
@Override
|
||||
public void configure(
|
||||
|
|
|
|||
|
|
@ -24,10 +24,9 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import org.eclipse.che.api.user.server.UserManager;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
|
||||
/**
|
||||
* Creates {@link Secret} with user profile information such as his id, name and email. This serves
|
||||
|
|
@ -40,13 +39,12 @@ public class UserProfileConfigurator implements NamespaceConfigurator {
|
|||
private static final String USER_PROFILE_SECRET_NAME = "user-profile";
|
||||
private static final String USER_PROFILE_SECRET_MOUNT_PATH = "/config/user/profile";
|
||||
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final UserManager userManager;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
|
||||
@Inject
|
||||
public UserProfileConfigurator(KubernetesClientFactory clientFactory, UserManager userManager) {
|
||||
this.clientFactory = clientFactory;
|
||||
this.userManager = userManager;
|
||||
public UserProfileConfigurator(
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory) {
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -54,7 +52,7 @@ public class UserProfileConfigurator implements NamespaceConfigurator {
|
|||
throws InfrastructureException {
|
||||
Secret userProfileSecret = prepareProfileSecret(namespaceResolutionContext);
|
||||
try {
|
||||
clientFactory
|
||||
cheServerKubernetesClientFactory
|
||||
.create()
|
||||
.secrets()
|
||||
.inNamespace(namespaceName)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -24,7 +24,7 @@ import javax.inject.Singleton;
|
|||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.commons.annotation.Nullable;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesWorkspaceServiceAccount;
|
||||
|
||||
/**
|
||||
|
|
@ -34,7 +34,7 @@ import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesW
|
|||
@Singleton
|
||||
public class WorkspaceServiceAccountConfigurator implements NamespaceConfigurator {
|
||||
|
||||
private final KubernetesClientFactory clientFactory;
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
|
||||
private final String serviceAccountName;
|
||||
private final Set<String> clusterRoleNames;
|
||||
|
|
@ -43,8 +43,8 @@ public class WorkspaceServiceAccountConfigurator implements NamespaceConfigurato
|
|||
public WorkspaceServiceAccountConfigurator(
|
||||
@Nullable @Named("che.infra.kubernetes.service_account_name") String serviceAccountName,
|
||||
@Nullable @Named("che.infra.kubernetes.workspace_sa_cluster_roles") String clusterRoleNames,
|
||||
KubernetesClientFactory clientFactory) {
|
||||
this.clientFactory = clientFactory;
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory) {
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
this.serviceAccountName = serviceAccountName;
|
||||
if (!isNullOrEmpty(clusterRoleNames)) {
|
||||
this.clusterRoleNames =
|
||||
|
|
@ -69,6 +69,10 @@ public class WorkspaceServiceAccountConfigurator implements NamespaceConfigurato
|
|||
public KubernetesWorkspaceServiceAccount doCreateServiceAccount(
|
||||
String workspaceId, String namespaceName) {
|
||||
return new KubernetesWorkspaceServiceAccount(
|
||||
workspaceId, namespaceName, serviceAccountName, clusterRoleNames, clientFactory);
|
||||
workspaceId,
|
||||
namespaceName,
|
||||
serviceAccountName,
|
||||
clusterRoleNames,
|
||||
cheServerKubernetesClientFactory);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,14 +12,11 @@
|
|||
package org.eclipse.che.workspace.infrastructure.kubernetes;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import io.fabric8.kubernetes.client.Config;
|
||||
import java.util.Collections;
|
||||
import org.eclipse.che.api.core.notification.EventService;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.cache.KubernetesRuntimeStateCache;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesNamespaceFactory;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.testng.MockitoTestNGListener;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Listeners;
|
||||
|
|
@ -27,7 +24,6 @@ import org.testng.annotations.Listeners;
|
|||
@Listeners(MockitoTestNGListener.class)
|
||||
public class KubernetesInfrastructureTest {
|
||||
|
||||
@Mock private KubernetesClientFactory factory;
|
||||
private KubernetesInfrastructure infra;
|
||||
|
||||
@BeforeMethod
|
||||
|
|
@ -38,9 +34,6 @@ public class KubernetesInfrastructureTest {
|
|||
mock(KubernetesRuntimeContextFactory.class),
|
||||
Collections.emptySet(),
|
||||
mock(KubernetesRuntimeStateCache.class),
|
||||
mock(KubernetesNamespaceFactory.class),
|
||||
factory);
|
||||
|
||||
when(factory.getDefaultConfig()).thenReturn(mock(Config.class));
|
||||
mock(KubernetesNamespaceFactory.class));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,8 +75,6 @@ import java.util.stream.Stream;
|
|||
import org.eclipse.che.api.core.ValidationException;
|
||||
import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
|
||||
import org.eclipse.che.api.user.server.PreferenceManager;
|
||||
import org.eclipse.che.api.user.server.UserManager;
|
||||
import org.eclipse.che.api.user.server.model.impl.UserImpl;
|
||||
import org.eclipse.che.api.workspace.server.model.impl.RuntimeIdentityImpl;
|
||||
import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl;
|
||||
import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl.WorkspaceImplBuilder;
|
||||
|
|
@ -87,7 +85,6 @@ import org.eclipse.che.commons.env.EnvironmentContext;
|
|||
import org.eclipse.che.commons.subject.SubjectImpl;
|
||||
import org.eclipse.che.inject.ConfigurationException;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.api.server.impls.KubernetesNamespaceMetaImpl;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.api.shared.KubernetesNamespaceMeta;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.configurator.CredentialsSecretConfigurator;
|
||||
|
|
@ -126,10 +123,8 @@ public class KubernetesNamespaceFactoryTest {
|
|||
private static final String NAMESPACE_ANNOTATIONS = NAMESPACE_ANNOTATION_NAME + "=<username>";
|
||||
|
||||
@Mock private KubernetesSharedPool pool;
|
||||
@Mock private KubernetesClientFactory clientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheClientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
private KubernetesClient k8sClient;
|
||||
@Mock private UserManager userManager;
|
||||
@Mock private PreferenceManager preferenceManager;
|
||||
@Mock Appender mockedAppender;
|
||||
|
||||
|
|
@ -150,8 +145,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
serverMock = new KubernetesServer(true, true);
|
||||
serverMock.before();
|
||||
k8sClient = spy(serverMock.getClient());
|
||||
lenient().when(clientFactory.create()).thenReturn(k8sClient);
|
||||
lenient().when(cheClientFactory.create()).thenReturn(k8sClient);
|
||||
lenient().when(cheServerKubernetesClientFactory.create()).thenReturn(k8sClient);
|
||||
lenient().when(k8sClient.namespaces()).thenReturn(namespaceOperation);
|
||||
|
||||
lenient().when(namespaceOperation.withName(any())).thenReturn(namespaceResource);
|
||||
|
|
@ -161,9 +155,6 @@ public class KubernetesNamespaceFactoryTest {
|
|||
lenient().when(namespaceListResource.list()).thenReturn(namespaceList);
|
||||
lenient().when(namespaceList.getItems()).thenReturn(Collections.emptyList());
|
||||
|
||||
lenient()
|
||||
.when(userManager.getById(USER_ID))
|
||||
.thenReturn(new UserImpl(USER_ID, "test@mail.com", USER_NAME));
|
||||
EnvironmentContext.getCurrent().setSubject(new SubjectImpl("jondoe", "i123", null, false));
|
||||
}
|
||||
|
||||
|
|
@ -185,9 +176,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -212,9 +201,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -232,9 +219,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -257,9 +242,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -279,9 +262,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
}
|
||||
|
|
@ -329,9 +310,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
EnvironmentContext.getCurrent().setSubject(new SubjectImpl("jondoe", "123", null, false));
|
||||
|
|
@ -372,9 +351,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
EnvironmentContext.getCurrent().setSubject(new SubjectImpl("jondoe", "123", null, false));
|
||||
|
|
@ -402,9 +379,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -435,9 +410,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -463,9 +436,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -492,10 +463,8 @@ public class KubernetesNamespaceFactoryTest {
|
|||
true,
|
||||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
Set.of(new CredentialsSecretConfigurator(clientFactory)),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
Set.of(new CredentialsSecretConfigurator(cheServerKubernetesClientFactory)),
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -531,10 +500,8 @@ public class KubernetesNamespaceFactoryTest {
|
|||
true,
|
||||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
Set.of(new PreferencesConfigMapConfigurator(clientFactory)),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
Set.of(new PreferencesConfigMapConfigurator(cheServerKubernetesClientFactory)),
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -575,9 +542,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
namespaceConfigurators,
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
EnvironmentContext.getCurrent().setSubject(new SubjectImpl("jondoe", "123", null, false));
|
||||
|
|
@ -612,9 +577,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -646,9 +609,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -681,9 +642,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
throwOnTryToGetNamespaceByName(
|
||||
|
|
@ -706,9 +665,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
throwOnTryToGetNamespacesList(new KubernetesClientException("connection refused"));
|
||||
|
|
@ -736,9 +693,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -767,9 +722,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -791,7 +744,9 @@ public class KubernetesNamespaceFactoryTest {
|
|||
throws Exception {
|
||||
// given
|
||||
var serviceAccountCfg =
|
||||
spy(new WorkspaceServiceAccountConfigurator("serviceAccount", "", clientFactory));
|
||||
spy(
|
||||
new WorkspaceServiceAccountConfigurator(
|
||||
"serviceAccount", "", cheServerKubernetesClientFactory));
|
||||
namespaceFactory =
|
||||
spy(
|
||||
new KubernetesNamespaceFactory(
|
||||
|
|
@ -802,9 +757,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
Set.of(serviceAccountCfg),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -830,7 +783,8 @@ public class KubernetesNamespaceFactoryTest {
|
|||
public void shouldBindToAllConfiguredClusterRoles() throws Exception {
|
||||
// given
|
||||
var serviceAccountConfigurator =
|
||||
new WorkspaceServiceAccountConfigurator("serviceAccount", "cr2, cr3", clientFactory);
|
||||
new WorkspaceServiceAccountConfigurator(
|
||||
"serviceAccount", "cr2, cr3", cheServerKubernetesClientFactory);
|
||||
namespaceFactory =
|
||||
spy(
|
||||
new KubernetesNamespaceFactory(
|
||||
|
|
@ -841,9 +795,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
Set.of(serviceAccountConfigurator),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -851,7 +803,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
when(toReturnNamespace.getName()).thenReturn("workspace123");
|
||||
doReturn(toReturnNamespace).when(namespaceFactory).doCreateNamespaceAccess(any(), any());
|
||||
when(k8sClient.supportsApiPath(eq("/apis/metrics.k8s.io"))).thenReturn(true);
|
||||
when(clientFactory.create(any())).thenReturn(k8sClient);
|
||||
when(cheServerKubernetesClientFactory.create(any())).thenReturn(k8sClient);
|
||||
|
||||
// pre-create the cluster roles
|
||||
Stream.of("cr1", "cr2", "cr3")
|
||||
|
|
@ -906,7 +858,8 @@ public class KubernetesNamespaceFactoryTest {
|
|||
public void shouldCreateAndBindCredentialsSecretRole() throws Exception {
|
||||
// given
|
||||
var serviceAccountConfigurator =
|
||||
new WorkspaceServiceAccountConfigurator("serviceAccount", "cr2, cr3", clientFactory);
|
||||
new WorkspaceServiceAccountConfigurator(
|
||||
"serviceAccount", "cr2, cr3", cheServerKubernetesClientFactory);
|
||||
namespaceFactory =
|
||||
spy(
|
||||
new KubernetesNamespaceFactory(
|
||||
|
|
@ -917,16 +870,14 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
Set.of(serviceAccountConfigurator),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
prepareNamespace(toReturnNamespace);
|
||||
when(toReturnNamespace.getName()).thenReturn("workspace123");
|
||||
doReturn(toReturnNamespace).when(namespaceFactory).doCreateNamespaceAccess(any(), any());
|
||||
when(clientFactory.create(any())).thenReturn(k8sClient);
|
||||
when(cheServerKubernetesClientFactory.create(any())).thenReturn(k8sClient);
|
||||
|
||||
// when
|
||||
RuntimeIdentity identity =
|
||||
|
|
@ -962,10 +913,9 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
Set.of(
|
||||
new WorkspaceServiceAccountConfigurator("serviceAccount", "", clientFactory)),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
new WorkspaceServiceAccountConfigurator(
|
||||
"serviceAccount", "", cheServerKubernetesClientFactory)),
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -973,7 +923,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
when(toReturnNamespace.getName()).thenReturn("workspace123");
|
||||
doReturn(toReturnNamespace).when(namespaceFactory).doCreateNamespaceAccess(any(), any());
|
||||
when(k8sClient.supportsApiPath(eq("/apis/metrics.k8s.io"))).thenReturn(true);
|
||||
when(clientFactory.create(any())).thenReturn(k8sClient);
|
||||
when(cheServerKubernetesClientFactory.create(any())).thenReturn(k8sClient);
|
||||
|
||||
// when
|
||||
RuntimeIdentity identity =
|
||||
|
|
@ -1029,9 +979,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -1054,9 +1002,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -1084,9 +1030,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -1115,9 +1059,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -1146,9 +1088,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
doReturn(empty()).when(namespaceFactory).fetchNamespace(anyString());
|
||||
|
|
@ -1173,9 +1113,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -1202,9 +1140,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -1252,9 +1188,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
@ -1278,9 +1212,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -1317,9 +1249,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -1355,9 +1285,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
KubernetesNamespace toReturnNamespace = mock(KubernetesNamespace.class);
|
||||
|
|
@ -1405,9 +1333,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
"try_placeholder_here=<username>",
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
EnvironmentContext.getCurrent().setSubject(new SubjectImpl("jondoe", "123", null, false));
|
||||
|
|
@ -1430,9 +1356,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
"try_placeholder_here=<username>",
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool));
|
||||
EnvironmentContext.getCurrent().setSubject(new SubjectImpl("jondoe", "123", null, false));
|
||||
|
|
@ -1461,9 +1385,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
assertEquals(expected, namespaceFactory.normalizeNamespaceName(raw));
|
||||
|
|
@ -1480,9 +1402,7 @@ public class KubernetesNamespaceFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
pool);
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@ import java.util.Map;
|
|||
import java.util.concurrent.Executor;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.stubbing.Answer;
|
||||
|
|
@ -72,7 +71,6 @@ public class KubernetesNamespaceTest {
|
|||
@Mock private KubernetesPersistentVolumeClaims pvcs;
|
||||
@Mock private KubernetesSecrets secrets;
|
||||
@Mock private KubernetesConfigsMaps configMaps;
|
||||
@Mock private KubernetesClientFactory clientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheClientFactory;
|
||||
@Mock private Executor executor;
|
||||
@Mock private KubernetesClient kubernetesClient;
|
||||
|
|
@ -83,7 +81,6 @@ public class KubernetesNamespaceTest {
|
|||
|
||||
@BeforeMethod
|
||||
public void setUp() throws Exception {
|
||||
lenient().when(clientFactory.create(anyString())).thenReturn(kubernetesClient);
|
||||
lenient().when(cheClientFactory.create(anyString())).thenReturn(kubernetesClient);
|
||||
|
||||
lenient().doReturn(namespaceOperation).when(kubernetesClient).namespaces();
|
||||
|
|
@ -97,7 +94,6 @@ public class KubernetesNamespaceTest {
|
|||
|
||||
k8sNamespace =
|
||||
new KubernetesNamespace(
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
WORKSPACE_ID,
|
||||
NAMESPACE,
|
||||
|
|
@ -114,7 +110,7 @@ public class KubernetesNamespaceTest {
|
|||
// given
|
||||
prepareNamespace(NAMESPACE);
|
||||
KubernetesNamespace namespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
// when
|
||||
namespace.prepare(true, Map.of(), Map.of());
|
||||
|
|
@ -135,7 +131,7 @@ public class KubernetesNamespaceTest {
|
|||
doReturn(namespaceResource).when(namespaceOperation).withName(anyString());
|
||||
|
||||
KubernetesNamespace namespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
// when
|
||||
namespace.prepare(true, Map.of(), Map.of());
|
||||
|
|
@ -152,7 +148,7 @@ public class KubernetesNamespaceTest {
|
|||
Resource resource = prepareNamespaceResource(NAMESPACE);
|
||||
doThrow(new KubernetesClientException("error", 403, null)).when(resource).get();
|
||||
KubernetesNamespace namespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
// when
|
||||
namespace.prepare(false, Map.of(), Map.of());
|
||||
|
|
@ -201,7 +197,7 @@ public class KubernetesNamespaceTest {
|
|||
doThrow(new KubernetesClientException("error", 403, null)).when(resource).get();
|
||||
doThrow(KubernetesClientException.class).when(kubernetesClient).serviceAccounts();
|
||||
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID)
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID)
|
||||
.prepare(false, Map.of(), Map.of());
|
||||
}
|
||||
|
||||
|
|
@ -212,7 +208,7 @@ public class KubernetesNamespaceTest {
|
|||
doThrow(new KubernetesClientException("error", 403, null)).when(resource).get();
|
||||
when(serviceAccountResource.get()).thenReturn(null);
|
||||
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID)
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID)
|
||||
.prepare(false, Map.of(), Map.of());
|
||||
}
|
||||
|
||||
|
|
@ -231,7 +227,7 @@ public class KubernetesNamespaceTest {
|
|||
.when(serviceAccountResource)
|
||||
.watch(any());
|
||||
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID)
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID)
|
||||
.prepare(false, Map.of(), Map.of());
|
||||
}
|
||||
|
||||
|
|
@ -257,7 +253,7 @@ public class KubernetesNamespaceTest {
|
|||
.watch(any());
|
||||
|
||||
KubernetesNamespace namespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
// when
|
||||
namespace.prepare(true, Map.of(), Map.of());
|
||||
|
|
@ -270,7 +266,7 @@ public class KubernetesNamespaceTest {
|
|||
public void testDeletesExistingNamespace() throws Exception {
|
||||
// given
|
||||
KubernetesNamespace namespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
Resource resource = prepareNamespaceResource(NAMESPACE);
|
||||
|
||||
// when
|
||||
|
|
@ -284,7 +280,7 @@ public class KubernetesNamespaceTest {
|
|||
public void testDoesntFailIfDeletedNamespaceDoesntExist() throws Exception {
|
||||
// given
|
||||
KubernetesNamespace namespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
Resource resource = prepareNamespaceResource(NAMESPACE);
|
||||
when(resource.delete()).thenThrow(new KubernetesClientException("err", 404, null));
|
||||
|
||||
|
|
@ -300,7 +296,7 @@ public class KubernetesNamespaceTest {
|
|||
public void testDoesntFailIfDeletedNamespaceIsBeingDeleted() throws Exception {
|
||||
// given
|
||||
KubernetesNamespace namespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
Resource resource = prepareNamespaceResource(NAMESPACE);
|
||||
when(resource.delete()).thenThrow(new KubernetesClientException("err", 409, null));
|
||||
|
||||
|
|
@ -317,7 +313,7 @@ public class KubernetesNamespaceTest {
|
|||
// given
|
||||
prepareNamespace(NAMESPACE);
|
||||
KubernetesNamespace kubernetesNamespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
KubernetesClient cheKubeClient = mock(KubernetesClient.class);
|
||||
doReturn(cheKubeClient).when(cheClientFactory).create();
|
||||
|
|
@ -350,7 +346,7 @@ public class KubernetesNamespaceTest {
|
|||
Namespace namespace = prepareNamespace(NAMESPACE);
|
||||
namespace.getMetadata().setLabels(labels);
|
||||
KubernetesNamespace kubernetesNamespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
KubernetesClient cheKubeClient = mock(KubernetesClient.class);
|
||||
lenient().doReturn(cheKubeClient).when(cheClientFactory).create();
|
||||
|
|
@ -378,7 +374,7 @@ public class KubernetesNamespaceTest {
|
|||
Namespace namespace = prepareNamespace(NAMESPACE);
|
||||
namespace.getMetadata().setLabels(existingLabels);
|
||||
KubernetesNamespace kubernetesNamespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
KubernetesClient cheKubeClient = mock(KubernetesClient.class);
|
||||
lenient().doReturn(cheKubeClient).when(cheClientFactory).create();
|
||||
|
|
@ -404,7 +400,7 @@ public class KubernetesNamespaceTest {
|
|||
// given
|
||||
prepareNamespace(NAMESPACE);
|
||||
KubernetesNamespace kubernetesNamespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
KubernetesClient cheKubeClient = mock(KubernetesClient.class);
|
||||
doReturn(cheKubeClient).when(cheClientFactory).create();
|
||||
|
|
@ -442,7 +438,7 @@ public class KubernetesNamespaceTest {
|
|||
Namespace namespace = prepareNamespace(NAMESPACE);
|
||||
namespace.getMetadata().setAnnotations(annotations);
|
||||
KubernetesNamespace kubernetesNamespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
// when
|
||||
kubernetesNamespace.prepare(true, emptyMap(), annotations);
|
||||
|
|
@ -460,7 +456,7 @@ public class KubernetesNamespaceTest {
|
|||
Namespace namespace = prepareNamespace(NAMESPACE);
|
||||
namespace.getMetadata().setAnnotations(existingAnnotations);
|
||||
KubernetesNamespace kubernetesNamespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
// when
|
||||
kubernetesNamespace.prepare(true, emptyMap(), emptyMap());
|
||||
|
|
@ -481,7 +477,7 @@ public class KubernetesNamespaceTest {
|
|||
|
||||
prepareNamespace(NAMESPACE);
|
||||
KubernetesNamespace kubernetesNamespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
KubernetesClient cheKubeClient = mock(KubernetesClient.class);
|
||||
lenient().doReturn(cheKubeClient).when(cheClientFactory).create();
|
||||
|
|
@ -512,7 +508,7 @@ public class KubernetesNamespaceTest {
|
|||
|
||||
Namespace namespace = prepareNamespace(NAMESPACE);
|
||||
KubernetesNamespace kubernetesNamespace =
|
||||
new KubernetesNamespace(clientFactory, cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
new KubernetesNamespace(cheClientFactory, executor, NAMESPACE, WORKSPACE_ID);
|
||||
|
||||
KubernetesClient cheKubeClient = mock(KubernetesClient.class);
|
||||
lenient().doReturn(cheKubeClient).when(cheClientFactory).create();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -21,7 +21,7 @@ import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
|
|||
import java.util.Map;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.testng.MockitoTestNGListener;
|
||||
import org.testng.Assert;
|
||||
|
|
@ -34,7 +34,7 @@ public class CredentialsSecretConfiguratorTest {
|
|||
|
||||
private NamespaceConfigurator configurator;
|
||||
|
||||
@Mock private KubernetesClientFactory clientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
private KubernetesServer serverMock;
|
||||
|
||||
private NamespaceResolutionContext namespaceResolutionContext;
|
||||
|
|
@ -45,12 +45,12 @@ public class CredentialsSecretConfiguratorTest {
|
|||
|
||||
@BeforeMethod
|
||||
public void setUp() throws InfrastructureException {
|
||||
configurator = new CredentialsSecretConfigurator(clientFactory);
|
||||
configurator = new CredentialsSecretConfigurator(cheServerKubernetesClientFactory);
|
||||
|
||||
serverMock = new KubernetesServer(true, true);
|
||||
serverMock.before();
|
||||
KubernetesClient client = spy(serverMock.getClient());
|
||||
when(clientFactory.create()).thenReturn(client);
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(client);
|
||||
|
||||
namespaceResolutionContext =
|
||||
new NamespaceResolutionContext(TEST_WORKSPACE_ID, TEST_USER_ID, TEST_USERNAME);
|
||||
|
|
|
|||
|
|
@ -26,10 +26,9 @@ import java.util.Set;
|
|||
import org.eclipse.che.api.factory.server.scm.GitUserData;
|
||||
import org.eclipse.che.api.factory.server.scm.GitUserDataFetcher;
|
||||
import org.eclipse.che.api.factory.server.scm.exception.*;
|
||||
import org.eclipse.che.api.user.server.UserManager;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.testng.MockitoTestNGListener;
|
||||
import org.testng.Assert;
|
||||
|
|
@ -42,9 +41,8 @@ public class GitconfigUserdataConfiguratorTest {
|
|||
|
||||
private NamespaceConfigurator configurator;
|
||||
|
||||
@Mock private KubernetesClientFactory clientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
@Mock private GitUserDataFetcher gitUserDataFetcher;
|
||||
@Mock private UserManager userManager;
|
||||
private KubernetesServer serverMock;
|
||||
|
||||
private NamespaceResolutionContext namespaceResolutionContext;
|
||||
|
|
@ -57,12 +55,13 @@ public class GitconfigUserdataConfiguratorTest {
|
|||
public void setUp()
|
||||
throws InfrastructureException, ScmCommunicationException, ScmUnauthorizedException {
|
||||
configurator =
|
||||
new GitconfigUserDataConfigurator(clientFactory, Set.of(gitUserDataFetcher), userManager);
|
||||
new GitconfigUserDataConfigurator(
|
||||
cheServerKubernetesClientFactory, Set.of(gitUserDataFetcher));
|
||||
|
||||
serverMock = new KubernetesServer(true, true);
|
||||
serverMock.before();
|
||||
KubernetesClient client = spy(serverMock.getClient());
|
||||
when(clientFactory.create()).thenReturn(client);
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(client);
|
||||
|
||||
namespaceResolutionContext =
|
||||
new NamespaceResolutionContext(TEST_WORKSPACE_ID, TEST_USER_ID, TEST_USERNAME);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -23,7 +23,7 @@ import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
|
|||
import java.util.Map;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.testng.MockitoTestNGListener;
|
||||
import org.testng.Assert;
|
||||
|
|
@ -35,7 +35,7 @@ import org.testng.annotations.Test;
|
|||
public class PreferencesConfigMapConfiguratorTest {
|
||||
private NamespaceConfigurator configurator;
|
||||
|
||||
@Mock private KubernetesClientFactory clientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
private KubernetesServer serverMock;
|
||||
|
||||
private NamespaceResolutionContext namespaceResolutionContext;
|
||||
|
|
@ -46,12 +46,12 @@ public class PreferencesConfigMapConfiguratorTest {
|
|||
|
||||
@BeforeMethod
|
||||
public void setUp() throws InfrastructureException {
|
||||
configurator = new PreferencesConfigMapConfigurator(clientFactory);
|
||||
configurator = new PreferencesConfigMapConfigurator(cheServerKubernetesClientFactory);
|
||||
|
||||
serverMock = new KubernetesServer(true, true);
|
||||
serverMock.before();
|
||||
KubernetesClient client = spy(serverMock.getClient());
|
||||
when(clientFactory.create()).thenReturn(client);
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(client);
|
||||
|
||||
namespaceResolutionContext =
|
||||
new NamespaceResolutionContext(TEST_WORKSPACE_ID, TEST_USER_ID, TEST_USERNAME);
|
||||
|
|
@ -74,7 +74,7 @@ public class PreferencesConfigMapConfiguratorTest {
|
|||
.inNamespace(TEST_NAMESPACE_NAME)
|
||||
.withName(PREFERENCES_CONFIGMAP_NAME)
|
||||
.get());
|
||||
verify(clientFactory, times(1)).create();
|
||||
verify(cheServerKubernetesClientFactory, times(1)).create();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -28,7 +28,7 @@ import org.eclipse.che.api.ssh.server.SshManager;
|
|||
import org.eclipse.che.api.ssh.server.model.impl.SshPairImpl;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.testng.MockitoTestNGListener;
|
||||
|
|
@ -44,7 +44,7 @@ public class SshKeysConfiguratorTest {
|
|||
private static final String USER_NAME = "user-name";
|
||||
private static final String USER_NAMESPACE = "user-namespace";
|
||||
|
||||
@Mock private KubernetesClientFactory clientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
@Mock private SshManager sshManager;
|
||||
|
||||
@InjectMocks private SshKeysConfigurator sshKeysConfigurator;
|
||||
|
|
@ -62,7 +62,7 @@ public class SshKeysConfiguratorTest {
|
|||
kubernetesServer.before();
|
||||
|
||||
when(sshManager.getPairs(USER_ID, "vcs")).thenReturn(Collections.singletonList(sshPair));
|
||||
when(clientFactory.create()).thenReturn(kubernetesServer.getClient());
|
||||
when(cheServerKubernetesClientFactory.create()).thenReturn(kubernetesServer.getClient());
|
||||
}
|
||||
|
||||
@AfterMethod
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2022 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -21,11 +21,8 @@ import java.util.Map;
|
|||
import org.eclipse.che.api.core.NotFoundException;
|
||||
import org.eclipse.che.api.core.ServerException;
|
||||
import org.eclipse.che.api.user.server.PreferenceManager;
|
||||
import org.eclipse.che.api.user.server.UserManager;
|
||||
import org.eclipse.che.api.user.server.model.impl.UserImpl;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesNamespaceFactory;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
|
|
@ -49,8 +46,6 @@ public class UserPreferencesConfiguratorTest {
|
|||
private static final String USER_NAMESPACE = "user-namespace";
|
||||
|
||||
@Mock private KubernetesNamespaceFactory namespaceFactory;
|
||||
@Mock private KubernetesClientFactory clientFactory;
|
||||
@Mock private UserManager userManager;
|
||||
@Mock private PreferenceManager preferenceManager;
|
||||
|
||||
@InjectMocks private UserPreferencesConfigurator userPreferencesConfigurator;
|
||||
|
|
@ -67,11 +62,7 @@ public class UserPreferencesConfiguratorTest {
|
|||
Map<String, String> preferences = new HashMap<>();
|
||||
preferences.put("preference-name", "preference");
|
||||
|
||||
lenient()
|
||||
.when(userManager.getById(USER_ID))
|
||||
.thenReturn(new UserImpl(USER_ID, USER_EMAIL, USER_NAME));
|
||||
lenient().when(namespaceFactory.evaluateNamespaceName(any())).thenReturn(USER_NAMESPACE);
|
||||
lenient().when(clientFactory.create()).thenReturn(kubernetesServer.getClient());
|
||||
lenient().when(preferenceManager.find(USER_ID)).thenReturn(preferences);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ public class OpenShiftInfrastructure extends RuntimeInfrastructure {
|
|||
private final OpenShiftRuntimeContextFactory runtimeContextFactory;
|
||||
private final KubernetesRuntimeStateCache runtimeStatusesCache;
|
||||
private final OpenShiftProjectFactory projectFactory;
|
||||
private final OpenShiftClientFactory openShiftClientFactory;
|
||||
|
||||
@Inject
|
||||
public OpenShiftInfrastructure(
|
||||
|
|
@ -51,8 +50,7 @@ public class OpenShiftInfrastructure extends RuntimeInfrastructure {
|
|||
OpenShiftRuntimeContextFactory runtimeContextFactory,
|
||||
Set<InternalEnvironmentProvisioner> internalEnvProvisioners,
|
||||
KubernetesRuntimeStateCache runtimeStatusesCache,
|
||||
OpenShiftProjectFactory projectFactory,
|
||||
OpenShiftClientFactory openShiftClientFactory) {
|
||||
OpenShiftProjectFactory projectFactory) {
|
||||
super(
|
||||
NAME,
|
||||
ImmutableSet.of(
|
||||
|
|
@ -64,7 +62,6 @@ public class OpenShiftInfrastructure extends RuntimeInfrastructure {
|
|||
this.runtimeContextFactory = runtimeContextFactory;
|
||||
this.runtimeStatusesCache = runtimeStatusesCache;
|
||||
this.projectFactory = projectFactory;
|
||||
this.openShiftClientFactory = openShiftClientFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import java.util.Map;
|
|||
import java.util.concurrent.Executor;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.InternalInfrastructureException;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesInfrastructureException;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesConfigsMaps;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesDeployments;
|
||||
|
|
@ -47,13 +47,13 @@ public class OpenShiftProject extends KubernetesNamespace {
|
|||
private static final Logger LOG = LoggerFactory.getLogger(OpenShiftProject.class);
|
||||
|
||||
private final OpenShiftRoutes routes;
|
||||
private final OpenShiftClientFactory clientFactory;
|
||||
private final OpenShiftClientFactory openShiftClientFactory;
|
||||
private final CheServerOpenshiftClientFactory cheServerOpenshiftClientFactory;
|
||||
|
||||
@VisibleForTesting
|
||||
OpenShiftProject(
|
||||
OpenShiftClientFactory clientFactory,
|
||||
KubernetesClientFactory cheClientFactory,
|
||||
OpenShiftClientFactory openShiftClientFactory,
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory,
|
||||
CheServerOpenshiftClientFactory cheServerOpenshiftClientFactory,
|
||||
String workspaceId,
|
||||
String name,
|
||||
|
|
@ -65,8 +65,7 @@ public class OpenShiftProject extends KubernetesNamespace {
|
|||
KubernetesSecrets secrets,
|
||||
KubernetesConfigsMaps configMaps) {
|
||||
super(
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
workspaceId,
|
||||
name,
|
||||
deployments,
|
||||
|
|
@ -75,21 +74,21 @@ public class OpenShiftProject extends KubernetesNamespace {
|
|||
ingresses,
|
||||
secrets,
|
||||
configMaps);
|
||||
this.clientFactory = clientFactory;
|
||||
this.routes = routes;
|
||||
this.openShiftClientFactory = openShiftClientFactory;
|
||||
this.cheServerOpenshiftClientFactory = cheServerOpenshiftClientFactory;
|
||||
}
|
||||
|
||||
public OpenShiftProject(
|
||||
OpenShiftClientFactory clientFactory,
|
||||
KubernetesClientFactory cheClientFactory,
|
||||
OpenShiftClientFactory openShiftClientFactory,
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory,
|
||||
CheServerOpenshiftClientFactory cheServerOpenshiftClientFactory,
|
||||
Executor executor,
|
||||
String name,
|
||||
String workspaceId) {
|
||||
super(clientFactory, cheClientFactory, executor, name, workspaceId);
|
||||
this.clientFactory = clientFactory;
|
||||
this.routes = new OpenShiftRoutes(name, workspaceId, clientFactory);
|
||||
super(cheServerKubernetesClientFactory, executor, name, workspaceId);
|
||||
this.routes = new OpenShiftRoutes(name, workspaceId, cheServerOpenshiftClientFactory);
|
||||
this.openShiftClientFactory = openShiftClientFactory;
|
||||
this.cheServerOpenshiftClientFactory = cheServerOpenshiftClientFactory;
|
||||
}
|
||||
|
||||
|
|
@ -129,8 +128,8 @@ public class OpenShiftProject extends KubernetesNamespace {
|
|||
create(projectName, osClient);
|
||||
waitDefaultServiceAccount(projectName, osClient);
|
||||
} else {
|
||||
create(projectName, clientFactory.createOC(workspaceId));
|
||||
waitDefaultServiceAccount(projectName, clientFactory.create(workspaceId));
|
||||
create(projectName, openShiftClientFactory.createOC(workspaceId));
|
||||
waitDefaultServiceAccount(projectName, openShiftClientFactory.create(workspaceId));
|
||||
}
|
||||
}
|
||||
label(osClient.namespaces().withName(projectName).get(), labels);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ import javax.inject.Named;
|
|||
import org.eclipse.che.api.core.model.workspace.Workspace;
|
||||
import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
|
||||
import org.eclipse.che.api.user.server.PreferenceManager;
|
||||
import org.eclipse.che.api.user.server.UserManager;
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.commons.annotation.Nullable;
|
||||
|
|
@ -60,8 +59,10 @@ public class OpenShiftProjectFactory extends KubernetesNamespaceFactory {
|
|||
private static final Logger LOG = LoggerFactory.getLogger(OpenShiftProjectFactory.class);
|
||||
|
||||
private final boolean initWithCheServerSa;
|
||||
private final OpenShiftClientFactory clientFactory;
|
||||
private final CheServerOpenshiftClientFactory cheOpenShiftClientFactory;
|
||||
private final OpenShiftClientFactory openShiftClientFactory;
|
||||
private final CheServerOpenshiftClientFactory cheServerOpenshiftClientFactory;
|
||||
|
||||
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
|
||||
private final String oAuthIdentityProvider;
|
||||
|
||||
|
|
@ -75,10 +76,9 @@ public class OpenShiftProjectFactory extends KubernetesNamespaceFactory {
|
|||
@Named("che.infra.kubernetes.namespace.annotations") String projectAnnotations,
|
||||
@Named("che.infra.openshift.project.init_with_server_sa") boolean initWithCheServerSa,
|
||||
Set<NamespaceConfigurator> namespaceConfigurators,
|
||||
OpenShiftClientFactory clientFactory,
|
||||
CheServerKubernetesClientFactory cheClientFactory,
|
||||
CheServerOpenshiftClientFactory cheOpenShiftClientFactory,
|
||||
UserManager userManager,
|
||||
OpenShiftClientFactory openShiftClientFactory,
|
||||
CheServerKubernetesClientFactory cheServerKubernetesClientFactory,
|
||||
CheServerOpenshiftClientFactory cheServerOpenshiftClientFactory,
|
||||
PreferenceManager preferenceManager,
|
||||
KubernetesSharedPool sharedPool,
|
||||
@Nullable @Named("che.infra.openshift.oauth_identity_provider")
|
||||
|
|
@ -91,14 +91,13 @@ public class OpenShiftProjectFactory extends KubernetesNamespaceFactory {
|
|||
projectLabels,
|
||||
projectAnnotations,
|
||||
namespaceConfigurators,
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
userManager,
|
||||
cheServerKubernetesClientFactory,
|
||||
preferenceManager,
|
||||
sharedPool);
|
||||
this.initWithCheServerSa = initWithCheServerSa;
|
||||
this.clientFactory = clientFactory;
|
||||
this.cheOpenShiftClientFactory = cheOpenShiftClientFactory;
|
||||
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
|
||||
this.cheServerOpenshiftClientFactory = cheServerOpenshiftClientFactory;
|
||||
this.openShiftClientFactory = openShiftClientFactory;
|
||||
this.oAuthIdentityProvider = oAuthIdentityProvider;
|
||||
}
|
||||
|
||||
|
|
@ -154,9 +153,9 @@ public class OpenShiftProjectFactory extends KubernetesNamespaceFactory {
|
|||
@VisibleForTesting
|
||||
OpenShiftProject doCreateProjectAccess(String workspaceId, String name) {
|
||||
return new OpenShiftProject(
|
||||
clientFactory,
|
||||
cheOpenShiftClientFactory,
|
||||
cheOpenShiftClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
sharedPool.getExecutor(),
|
||||
name,
|
||||
workspaceId);
|
||||
|
|
@ -170,7 +169,7 @@ public class OpenShiftProjectFactory extends KubernetesNamespaceFactory {
|
|||
|
||||
private Optional<Project> fetchNamespaceObject(String name) throws InfrastructureException {
|
||||
try {
|
||||
Project project = clientFactory.createOC().projects().withName(name).get();
|
||||
Project project = cheServerOpenshiftClientFactory.createOC().projects().withName(name).get();
|
||||
return Optional.ofNullable(project);
|
||||
} catch (KubernetesClientException e) {
|
||||
if (e.getCode() == 403) {
|
||||
|
|
@ -189,7 +188,12 @@ public class OpenShiftProjectFactory extends KubernetesNamespaceFactory {
|
|||
NamespaceResolutionContext namespaceCtx) throws InfrastructureException {
|
||||
try {
|
||||
List<Project> workspaceProjects =
|
||||
clientFactory.createOC().projects().withLabels(namespaceLabels).list().getItems();
|
||||
cheServerOpenshiftClientFactory
|
||||
.createOC()
|
||||
.projects()
|
||||
.withLabels(namespaceLabels)
|
||||
.list()
|
||||
.getItems();
|
||||
if (!workspaceProjects.isEmpty()) {
|
||||
Map<String, String> evaluatedAnnotations = evaluateAnnotationPlaceholders(namespaceCtx);
|
||||
return workspaceProjects.stream()
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -25,7 +25,7 @@ import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
|||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.commons.annotation.Nullable;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.configurator.NamespaceConfigurator;
|
||||
import org.eclipse.che.workspace.infrastructure.openshift.OpenShiftClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.openshift.CheServerOpenshiftClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.openshift.project.OpenShiftWorkspaceServiceAccount;
|
||||
|
||||
/**
|
||||
|
|
@ -35,7 +35,7 @@ import org.eclipse.che.workspace.infrastructure.openshift.project.OpenShiftWorks
|
|||
@Singleton
|
||||
public class OpenShiftWorkspaceServiceAccountConfigurator implements NamespaceConfigurator {
|
||||
|
||||
private final OpenShiftClientFactory clientFactory;
|
||||
private final CheServerOpenshiftClientFactory cheServerOpenshiftClientFactory;
|
||||
|
||||
private final String serviceAccountName;
|
||||
private final Set<String> clusterRoleNames;
|
||||
|
|
@ -44,8 +44,8 @@ public class OpenShiftWorkspaceServiceAccountConfigurator implements NamespaceCo
|
|||
public OpenShiftWorkspaceServiceAccountConfigurator(
|
||||
@Nullable @Named("che.infra.kubernetes.service_account_name") String serviceAccountName,
|
||||
@Nullable @Named("che.infra.kubernetes.workspace_sa_cluster_roles") String clusterRoleNames,
|
||||
OpenShiftClientFactory clientFactory) {
|
||||
this.clientFactory = clientFactory;
|
||||
CheServerOpenshiftClientFactory cheServerOpenshiftClientFactory) {
|
||||
this.cheServerOpenshiftClientFactory = cheServerOpenshiftClientFactory;
|
||||
this.serviceAccountName = serviceAccountName;
|
||||
if (!isNullOrEmpty(clusterRoleNames)) {
|
||||
this.clusterRoleNames =
|
||||
|
|
@ -69,6 +69,6 @@ public class OpenShiftWorkspaceServiceAccountConfigurator implements NamespaceCo
|
|||
@VisibleForTesting
|
||||
public OpenShiftWorkspaceServiceAccount createServiceAccount(String wsId, String namespaceName) {
|
||||
return new OpenShiftWorkspaceServiceAccount(
|
||||
wsId, namespaceName, serviceAccountName, clusterRoleNames, clientFactory);
|
||||
wsId, namespaceName, serviceAccountName, clusterRoleNames, cheServerOpenshiftClientFactory);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,21 +12,17 @@
|
|||
package org.eclipse.che.workspace.infrastructure.openshift;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import io.fabric8.kubernetes.client.Config;
|
||||
import java.util.Collections;
|
||||
import org.eclipse.che.api.core.notification.EventService;
|
||||
import org.eclipse.che.workspace.infrastructure.kubernetes.cache.KubernetesRuntimeStateCache;
|
||||
import org.eclipse.che.workspace.infrastructure.openshift.project.OpenShiftProjectFactory;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.testng.MockitoTestNGListener;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Listeners;
|
||||
|
||||
@Listeners(MockitoTestNGListener.class)
|
||||
public class OpenShiftInfrastructureTest {
|
||||
@Mock private OpenShiftClientFactory factory;
|
||||
private OpenShiftInfrastructure infra;
|
||||
|
||||
@BeforeMethod
|
||||
|
|
@ -37,9 +33,6 @@ public class OpenShiftInfrastructureTest {
|
|||
mock(OpenShiftRuntimeContextFactory.class),
|
||||
Collections.emptySet(),
|
||||
mock(KubernetesRuntimeStateCache.class),
|
||||
mock(OpenShiftProjectFactory.class),
|
||||
factory);
|
||||
|
||||
when(factory.getDefaultConfig()).thenReturn(mock(Config.class));
|
||||
mock(OpenShiftProjectFactory.class));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,8 +61,6 @@ import java.util.Set;
|
|||
import org.eclipse.che.api.core.ValidationException;
|
||||
import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity;
|
||||
import org.eclipse.che.api.user.server.PreferenceManager;
|
||||
import org.eclipse.che.api.user.server.UserManager;
|
||||
import org.eclipse.che.api.user.server.model.impl.UserImpl;
|
||||
import org.eclipse.che.api.workspace.server.WorkspaceManager;
|
||||
import org.eclipse.che.api.workspace.server.model.impl.RuntimeIdentityImpl;
|
||||
import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl;
|
||||
|
|
@ -110,11 +108,10 @@ public class OpenShiftProjectFactoryTest {
|
|||
private static final String NAMESPACE_ANNOTATIONS = NAMESPACE_ANNOTATION_NAME + "=<username>";
|
||||
|
||||
// @Mock private OpenShiftClientConfigFactory configFactory;
|
||||
@Mock private OpenShiftClientFactory clientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheClientFactory;
|
||||
@Mock private OpenShiftClientFactory openShiftClientFactory;
|
||||
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
|
||||
@Mock private CheServerOpenshiftClientFactory cheServerOpenshiftClientFactory;
|
||||
@Mock private WorkspaceManager workspaceManager;
|
||||
@Mock private UserManager userManager;
|
||||
@Mock private PreferenceManager preferenceManager;
|
||||
@Mock private KubernetesSharedPool pool;
|
||||
|
||||
|
|
@ -132,8 +129,10 @@ public class OpenShiftProjectFactoryTest {
|
|||
|
||||
@BeforeMethod
|
||||
public void setUp() throws Exception {
|
||||
lenient().when(clientFactory.createOC()).thenReturn(osClient);
|
||||
lenient().when(clientFactory.create()).thenReturn(osClient);
|
||||
lenient().when(openShiftClientFactory.createOC()).thenReturn(osClient);
|
||||
lenient().when(cheServerOpenshiftClientFactory.create()).thenReturn(osClient);
|
||||
lenient().when(cheServerOpenshiftClientFactory.createOC()).thenReturn(osClient);
|
||||
lenient().when(cheServerKubernetesClientFactory.create()).thenReturn(osClient);
|
||||
lenient().when(osClient.projects()).thenReturn(projectOperation);
|
||||
|
||||
lenient()
|
||||
|
|
@ -147,9 +146,6 @@ public class OpenShiftProjectFactoryTest {
|
|||
lenient().when(projectListResource.list()).thenReturn(projectList);
|
||||
lenient().when(projectList.getItems()).thenReturn(emptyList());
|
||||
|
||||
lenient()
|
||||
.when(userManager.getById(USER_ID))
|
||||
.thenReturn(new UserImpl(USER_ID, "test@mail.com", USER_NAME));
|
||||
EnvironmentContext.getCurrent()
|
||||
.setSubject(new SubjectImpl(USER_NAME, USER_ID, "t-354t53xff34234", false));
|
||||
}
|
||||
|
|
@ -173,10 +169,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -204,10 +199,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -235,10 +229,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -271,10 +264,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -308,10 +300,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -341,10 +332,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -384,10 +374,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -421,10 +410,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -458,10 +446,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -485,10 +472,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -517,10 +503,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER));
|
||||
|
|
@ -551,11 +536,10 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
Set.of(new CredentialsSecretConfigurator(clientFactory)),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
Set.of(new CredentialsSecretConfigurator(cheServerKubernetesClientFactory)),
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER));
|
||||
|
|
@ -596,11 +580,10 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
Set.of(new PreferencesConfigMapConfigurator(clientFactory)),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
Set.of(new PreferencesConfigMapConfigurator(cheServerKubernetesClientFactory)),
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER));
|
||||
|
|
@ -639,11 +622,10 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
Set.of(new CredentialsSecretConfigurator(clientFactory)),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
Set.of(new CredentialsSecretConfigurator(cheServerKubernetesClientFactory)),
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER));
|
||||
|
|
@ -681,11 +663,10 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_LABELS,
|
||||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
Set.of(new PreferencesConfigMapConfigurator(clientFactory)),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
Set.of(new PreferencesConfigMapConfigurator(cheServerKubernetesClientFactory)),
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER));
|
||||
|
|
@ -713,7 +694,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
@Test
|
||||
public void shouldCallStopWorkspaceRoleProvisionWhenIdentityProviderIsDefined() throws Exception {
|
||||
var saConf =
|
||||
spy(new OpenShiftWorkspaceServiceAccountConfigurator("serviceAccount", "", clientFactory));
|
||||
spy(
|
||||
new OpenShiftWorkspaceServiceAccountConfigurator(
|
||||
"serviceAccount", "", cheServerOpenshiftClientFactory));
|
||||
projectFactory =
|
||||
spy(
|
||||
new OpenShiftProjectFactory(
|
||||
|
|
@ -725,10 +708,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
Set.of(saConf),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
OAUTH_IDENTITY_PROVIDER));
|
||||
|
|
@ -775,10 +757,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -808,10 +789,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
NAMESPACE_ANNOTATIONS,
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER);
|
||||
|
|
@ -835,10 +815,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
"try_placeholder_here=<username>",
|
||||
true,
|
||||
emptySet(),
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER));
|
||||
|
|
@ -876,10 +855,9 @@ public class OpenShiftProjectFactoryTest {
|
|||
"try_placeholder_here=<username>",
|
||||
true,
|
||||
namespaceConfigurators,
|
||||
clientFactory,
|
||||
cheClientFactory,
|
||||
openShiftClientFactory,
|
||||
cheServerKubernetesClientFactory,
|
||||
cheServerOpenshiftClientFactory,
|
||||
userManager,
|
||||
preferenceManager,
|
||||
pool,
|
||||
NO_OAUTH_IDENTITY_PROVIDER));
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 Red Hat, Inc.
|
||||
* Copyright (c) 2012-2023 Red Hat, Inc.
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
|
|
@ -17,11 +17,10 @@ import static org.mockito.Mockito.mock;
|
|||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
|
||||
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
|
||||
import org.eclipse.che.workspace.infrastructure.openshift.OpenShiftClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.openshift.CheServerOpenshiftClientFactory;
|
||||
import org.eclipse.che.workspace.infrastructure.openshift.project.OpenShiftWorkspaceServiceAccount;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.testng.MockitoTestNGListener;
|
||||
|
|
@ -42,7 +41,7 @@ public class OpenShiftWorkspaceServiceAccountConfiguratorTest {
|
|||
|
||||
private NamespaceResolutionContext nsContext;
|
||||
|
||||
@Mock private OpenShiftClientFactory clientFactory;
|
||||
@Mock private CheServerOpenshiftClientFactory cheServerOpenshiftClientFactory;
|
||||
|
||||
private OpenShiftWorkspaceServiceAccountConfigurator saConfigurator;
|
||||
|
||||
|
|
@ -56,7 +55,7 @@ public class OpenShiftWorkspaceServiceAccountConfiguratorTest {
|
|||
saConfigurator =
|
||||
spy(
|
||||
new OpenShiftWorkspaceServiceAccountConfigurator(
|
||||
SA_NAME, CLUSTER_ROLES, clientFactory));
|
||||
SA_NAME, CLUSTER_ROLES, cheServerOpenshiftClientFactory));
|
||||
OpenShiftWorkspaceServiceAccount serviceAccount = mock(OpenShiftWorkspaceServiceAccount.class);
|
||||
doReturn(serviceAccount).when(saConfigurator).createServiceAccount(WS_ID, NS_NAME);
|
||||
|
||||
|
|
@ -68,7 +67,9 @@ public class OpenShiftWorkspaceServiceAccountConfiguratorTest {
|
|||
@Test
|
||||
public void testDoNothingWhenServiceAccountNotSet() throws InfrastructureException {
|
||||
saConfigurator =
|
||||
spy(new OpenShiftWorkspaceServiceAccountConfigurator(null, CLUSTER_ROLES, clientFactory));
|
||||
spy(
|
||||
new OpenShiftWorkspaceServiceAccountConfigurator(
|
||||
null, CLUSTER_ROLES, cheServerOpenshiftClientFactory));
|
||||
|
||||
saConfigurator.configure(nsContext, NS_NAME);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue