Skip to content

Commit d7c27a1

Browse files
authored
fix: Create project using server SA (#996)
* fix: Create project using server SA Signed-off-by: Anatolii Bazko <abazko@redhat.com>
1 parent 99c6f39 commit d7c27a1

3 files changed

Lines changed: 22 additions & 59 deletions

File tree

assembly/assembly-wsmaster-war/src/main/webapp/WEB-INF/classes/che/multiuser.properties

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,6 @@ che.limits.user.workspaces.count=-1
6464
# stop a running workspace to activate another.
6565
che.limits.user.workspaces.run.count=1
6666

67-
68-
### Multi-user-specific OpenShift infrastructure configuration
69-
70-
# Alias of the OpenShift identity provider registered in Keycloak
71-
# that should be used to create workspace OpenShift resources in
72-
# OpenShift namespaces owned by the current Che user.
73-
# Set it to `NULL` if `che.infra.openshift.project`
74-
# is set to a non-empty value.
75-
# See: link:https://www.keycloak.org/docs/latest/server_admin/#openshift-4[OpenShift identity provider]
76-
che.infra.openshift.oauth_identity_provider=NULL
77-
7867
### OIDC configuration
7968

8069
# Url to OIDC identity provider server.

infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/project/OpenShiftProjectFactory.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
*/
1212
package org.eclipse.che.workspace.infrastructure.openshift.project;
1313

14-
import static com.google.common.base.Strings.isNullOrEmpty;
1514
import static java.lang.String.format;
1615
import static java.util.Collections.emptyList;
1716
import static java.util.Collections.emptyMap;
@@ -66,8 +65,6 @@ public class OpenShiftProjectFactory extends KubernetesNamespaceFactory {
6665

6766
private final CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
6867

69-
private final String oAuthIdentityProvider;
70-
7168
@Inject
7269
public OpenShiftProjectFactory(
7370
@Nullable @Named("che.infra.kubernetes.namespace.default") String defaultNamespaceName,
@@ -84,9 +81,7 @@ public OpenShiftProjectFactory(
8481
PreferenceManager preferenceManager,
8582
KubernetesSharedPool sharedPool,
8683
AuthorizationChecker authorizationChecker,
87-
PermissionsCleaner permissionsCleaner,
88-
@Nullable @Named("che.infra.openshift.oauth_identity_provider")
89-
String oAuthIdentityProvider) {
84+
PermissionsCleaner permissionsCleaner) {
9085
super(
9186
defaultNamespaceName,
9287
namespaceCreationAllowed,
@@ -104,7 +99,6 @@ public OpenShiftProjectFactory(
10499
this.cheServerKubernetesClientFactory = cheServerKubernetesClientFactory;
105100
this.cheServerOpenshiftClientFactory = cheServerOpenshiftClientFactory;
106101
this.openShiftClientFactory = openShiftClientFactory;
107-
this.oAuthIdentityProvider = oAuthIdentityProvider;
108102
}
109103

110104
public OpenShiftProject getOrCreate(RuntimeIdentity identity) throws InfrastructureException {
@@ -121,7 +115,7 @@ public OpenShiftProject getOrCreate(RuntimeIdentity identity) throws Infrastruct
121115

122116
osProject.prepare(
123117
canCreateNamespace(),
124-
initWithCheServerSa && !isNullOrEmpty(oAuthIdentityProvider),
118+
initWithCheServerSa,
125119
labelNamespaces ? namespaceLabels : emptyMap(),
126120
annotateNamespaces ? namespaceAnnotationsEvaluated : emptyMap());
127121

infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/project/OpenShiftProjectFactoryTest.java

Lines changed: 20 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,6 @@ public class OpenShiftProjectFactoryTest {
101101

102102
private static final String USER_ID = "2342-2559-234";
103103
private static final String USER_NAME = "johndoe";
104-
private static final String NO_OAUTH_IDENTITY_PROVIDER = null;
105-
private static final String OAUTH_IDENTITY_PROVIDER = "openshift-v4";
106104
private static final String NAMESPACE_LABEL_NAME = "component";
107105
private static final String NAMESPACE_LABELS = NAMESPACE_LABEL_NAME + "=workspace";
108106
private static final String NAMESPACE_ANNOTATION_NAME = "owner";
@@ -177,8 +175,7 @@ public void shouldNotThrowExceptionIfDefaultNamespaceIsSpecifiedOnCheckingIfName
177175
preferenceManager,
178176
pool,
179177
authorizationChecker,
180-
permissionsCleaner,
181-
NO_OAUTH_IDENTITY_PROVIDER);
178+
permissionsCleaner);
182179

183180
projectFactory.checkIfNamespaceIsAllowed(USER_NAME + "-che");
184181
}
@@ -209,8 +206,7 @@ public void shouldNotThrowExceptionIfDefaultNamespaceIsSpecifiedOnCheckingIfName
209206
preferenceManager,
210207
pool,
211208
authorizationChecker,
212-
permissionsCleaner,
213-
NO_OAUTH_IDENTITY_PROVIDER);
209+
permissionsCleaner);
214210
try {
215211
projectFactory.checkIfNamespaceIsAllowed("any-namespace");
216212
} catch (ValidationException e) {
@@ -241,8 +237,7 @@ public void shouldNotThrowExceptionIfDefaultNamespaceIsSpecifiedOnCheckingIfName
241237
preferenceManager,
242238
pool,
243239
authorizationChecker,
244-
permissionsCleaner,
245-
NO_OAUTH_IDENTITY_PROVIDER);
240+
permissionsCleaner);
246241
}
247242

248243
@Test
@@ -278,8 +273,7 @@ public void shouldReturnPreparedNamespacesWhenFound() throws InfrastructureExcep
278273
preferenceManager,
279274
pool,
280275
authorizationChecker,
281-
permissionsCleaner,
282-
NO_OAUTH_IDENTITY_PROVIDER);
276+
permissionsCleaner);
283277
EnvironmentContext.getCurrent()
284278
.setSubject(new SubjectImpl("jondoe", Collections.emptyList(), "123", null, false));
285279

@@ -317,8 +311,7 @@ public void shouldNotThrowAnExceptionWhenNotAllowedToListNamespaces() throws Exc
317311
preferenceManager,
318312
pool,
319313
authorizationChecker,
320-
permissionsCleaner,
321-
NO_OAUTH_IDENTITY_PROVIDER);
314+
permissionsCleaner);
322315
EnvironmentContext.getCurrent()
323316
.setSubject(new SubjectImpl("jondoe", Collections.emptyList(), "u123", null, false));
324317

@@ -352,8 +345,7 @@ public void throwAnExceptionWhenErrorListingNamespaces() throws Exception {
352345
preferenceManager,
353346
pool,
354347
authorizationChecker,
355-
permissionsCleaner,
356-
NO_OAUTH_IDENTITY_PROVIDER);
348+
permissionsCleaner);
357349

358350
// when
359351
projectFactory.list();
@@ -396,8 +388,7 @@ public void shouldReturnDefaultProjectWhenItExistsAndUserDefinedIsNotAllowed() t
396388
preferenceManager,
397389
pool,
398390
authorizationChecker,
399-
permissionsCleaner,
400-
NO_OAUTH_IDENTITY_PROVIDER);
391+
permissionsCleaner);
401392

402393
List<KubernetesNamespaceMeta> availableNamespaces = projectFactory.list();
403394
assertEquals(availableNamespaces.size(), 1);
@@ -434,8 +425,7 @@ public void shouldReturnDefaultProjectWhenItDoesNotExistAndUserDefinedIsNotAllow
434425
preferenceManager,
435426
pool,
436427
authorizationChecker,
437-
permissionsCleaner,
438-
NO_OAUTH_IDENTITY_PROVIDER);
428+
permissionsCleaner);
439429

440430
List<KubernetesNamespaceMeta> availableNamespaces = projectFactory.list();
441431
assertEquals(availableNamespaces.size(), 1);
@@ -472,8 +462,7 @@ public void shouldThrowExceptionWhenFailedToGetInfoAboutDefaultNamespace() throw
472462
preferenceManager,
473463
pool,
474464
authorizationChecker,
475-
permissionsCleaner,
476-
NO_OAUTH_IDENTITY_PROVIDER);
465+
permissionsCleaner);
477466

478467
projectFactory.list();
479468
}
@@ -500,8 +489,7 @@ public void shouldThrowExceptionWhenFailedToGetNamespaces() throws Exception {
500489
preferenceManager,
501490
pool,
502491
authorizationChecker,
503-
permissionsCleaner,
504-
NO_OAUTH_IDENTITY_PROVIDER);
492+
permissionsCleaner);
505493

506494
projectFactory.list();
507495
}
@@ -533,8 +521,7 @@ public void shouldRequireNamespacePriorExistenceIfDifferentFromDefaultAndUserDef
533521
preferenceManager,
534522
pool,
535523
authorizationChecker,
536-
permissionsCleaner,
537-
NO_OAUTH_IDENTITY_PROVIDER));
524+
permissionsCleaner));
538525
OpenShiftProject toReturnProject = mock(OpenShiftProject.class);
539526
prepareProject(toReturnProject);
540527
doReturn(toReturnProject).when(projectFactory).doCreateProjectAccess(any(), any());
@@ -546,7 +533,7 @@ public void shouldRequireNamespacePriorExistenceIfDifferentFromDefaultAndUserDef
546533

547534
// then
548535
assertEquals(toReturnProject, project);
549-
verify(toReturnProject).prepare(eq(true), eq(false), any(), any());
536+
verify(toReturnProject).prepare(eq(true), eq(true), any(), any());
550537
}
551538

552539
@Test
@@ -569,8 +556,7 @@ public void shouldCreatePreferencesConfigmapIfNotExists() throws Exception {
569556
preferenceManager,
570557
pool,
571558
authorizationChecker,
572-
permissionsCleaner,
573-
NO_OAUTH_IDENTITY_PROVIDER));
559+
permissionsCleaner));
574560
OpenShiftProject toReturnProject = mock(OpenShiftProject.class);
575561
doReturn(toReturnProject).when(projectFactory).doCreateProjectAccess(any(), any());
576562
when(toReturnProject.getName()).thenReturn("namespace123");
@@ -613,8 +599,7 @@ public void shouldNotCreatePreferencesConfigmapIfExist() throws Exception {
613599
preferenceManager,
614600
pool,
615601
authorizationChecker,
616-
permissionsCleaner,
617-
NO_OAUTH_IDENTITY_PROVIDER));
602+
permissionsCleaner));
618603
OpenShiftProject toReturnProject = mock(OpenShiftProject.class);
619604
prepareProject(toReturnProject);
620605
doReturn(toReturnProject).when(projectFactory).doCreateProjectAccess(any(), any());
@@ -659,8 +644,7 @@ public void shouldCallStopWorkspaceRoleProvisionWhenIdentityProviderIsDefined()
659644
preferenceManager,
660645
pool,
661646
authorizationChecker,
662-
permissionsCleaner,
663-
OAUTH_IDENTITY_PROVIDER));
647+
permissionsCleaner));
664648
OpenShiftProject toReturnProject = mock(OpenShiftProject.class);
665649
when(toReturnProject.getName()).thenReturn("workspace123");
666650
prepareProject(toReturnProject);
@@ -711,8 +695,7 @@ public void testEvalNamespaceNameWhenPreparedNamespacesFound() throws Infrastruc
711695
preferenceManager,
712696
pool,
713697
authorizationChecker,
714-
permissionsCleaner,
715-
NO_OAUTH_IDENTITY_PROVIDER);
698+
permissionsCleaner);
716699

717700
String namespace =
718701
projectFactory.evaluateNamespaceName(
@@ -745,8 +728,7 @@ public void testUsernamePlaceholderInLabelsIsNotEvaluated() throws Infrastructur
745728
preferenceManager,
746729
pool,
747730
authorizationChecker,
748-
permissionsCleaner,
749-
NO_OAUTH_IDENTITY_PROVIDER);
731+
permissionsCleaner);
750732
EnvironmentContext.getCurrent()
751733
.setSubject(new SubjectImpl("jondoe", Collections.emptyList(), "123", null, false));
752734
projectFactory.list();
@@ -774,8 +756,7 @@ public void testUsernamePlaceholderInAnnotationsIsEvaluated() throws Infrastruct
774756
preferenceManager,
775757
pool,
776758
authorizationChecker,
777-
permissionsCleaner,
778-
NO_OAUTH_IDENTITY_PROVIDER));
759+
permissionsCleaner));
779760
EnvironmentContext.getCurrent()
780761
.setSubject(new SubjectImpl("jondoe", Collections.emptyList(), "123", null, false));
781762
OpenShiftProject toReturnProject = mock(OpenShiftProject.class);
@@ -789,7 +770,7 @@ public void testUsernamePlaceholderInAnnotationsIsEvaluated() throws Infrastruct
789770
// then
790771
assertEquals(toReturnProject, project);
791772
verify(toReturnProject)
792-
.prepare(eq(true), eq(false), any(), eq(Map.of("try_placeholder_here", "jondoe")));
773+
.prepare(eq(true), eq(true), any(), eq(Map.of("try_placeholder_here", "jondoe")));
793774
}
794775

795776
@Test
@@ -817,8 +798,7 @@ public void testAllConfiguratorsAreCalledWhenCreatingProject() throws Infrastruc
817798
preferenceManager,
818799
pool,
819800
authorizationChecker,
820-
permissionsCleaner,
821-
NO_OAUTH_IDENTITY_PROVIDER));
801+
permissionsCleaner));
822802
EnvironmentContext.getCurrent()
823803
.setSubject(new SubjectImpl("jondoe", Collections.emptyList(), "123", null, false));
824804

0 commit comments

Comments
 (0)