use of org.eclipse.che.workspace.infrastructure.kubernetes.api.server.impls.KubernetesNamespaceMetaImpl in project che-server by eclipse-che.
the class OpenShiftProjectFactory method asNamespaceMeta.
private KubernetesNamespaceMeta asNamespaceMeta(io.fabric8.openshift.api.model.Project project) {
Map<String, String> attributes = new HashMap<>(4);
ObjectMeta metadata = project.getMetadata();
Map<String, String> annotations = metadata.getAnnotations();
String displayName = annotations.get(Constants.PROJECT_DISPLAY_NAME_ANNOTATION);
if (displayName != null) {
attributes.put(Constants.PROJECT_DISPLAY_NAME_ATTRIBUTE, displayName);
}
String description = annotations.get(Constants.PROJECT_DESCRIPTION_ANNOTATION);
if (description != null) {
attributes.put(Constants.PROJECT_DESCRIPTION_ATTRIBUTE, description);
}
if (project.getStatus() != null && project.getStatus().getPhase() != null) {
attributes.put(PHASE_ATTRIBUTE, project.getStatus().getPhase());
}
return new KubernetesNamespaceMetaImpl(metadata.getName(), attributes);
}
use of org.eclipse.che.workspace.infrastructure.kubernetes.api.server.impls.KubernetesNamespaceMetaImpl in project che-server by eclipse-che.
the class KubernetesNamespaceServiceTest method shouldReturnNamespaces.
@Test
public void shouldReturnNamespaces() throws Exception {
KubernetesNamespaceMetaImpl namespaceMeta = new KubernetesNamespaceMetaImpl("ws-namespace", ImmutableMap.of("phase", "active", "default", "true"));
when(namespaceFactory.list()).thenReturn(singletonList(namespaceMeta));
final Response response = given().auth().basic(ADMIN_USER_NAME, ADMIN_USER_PASSWORD).when().get(SECURE_PATH + "/kubernetes/namespace");
assertEquals(response.getStatusCode(), 200);
List<KubernetesNamespaceMetaDto> namespaces = unwrapDtoList(response, KubernetesNamespaceMetaDto.class);
assertEquals(namespaces.size(), 1);
assertEquals(new KubernetesNamespaceMetaImpl(namespaces.get(0)), namespaceMeta);
verify(namespaceFactory).list();
}
use of org.eclipse.che.workspace.infrastructure.kubernetes.api.server.impls.KubernetesNamespaceMetaImpl in project che-server by eclipse-che.
the class KubernetesNamespaceServiceTest method shouldProvisionNamespace.
@Test
public void shouldProvisionNamespace() throws Exception {
// given
KubernetesNamespaceMetaImpl namespaceMeta = new KubernetesNamespaceMetaImpl("ws-namespace", ImmutableMap.of("phase", "active", "default", "true"));
when(namespaceProvisioner.provision(any(NamespaceResolutionContext.class))).thenReturn(namespaceMeta);
// when
final Response response = given().auth().basic(ADMIN_USER_NAME, ADMIN_USER_PASSWORD).when().post(SECURE_PATH + "/kubernetes/namespace/provision");
// then
assertEquals(response.getStatusCode(), 200);
KubernetesNamespaceMetaDto actual = unwrapDto(response, KubernetesNamespaceMetaDto.class);
assertEquals(actual.getName(), namespaceMeta.getName());
assertEquals(actual.getAttributes(), namespaceMeta.getAttributes());
verify(namespaceProvisioner).provision(any(NamespaceResolutionContext.class));
}
use of org.eclipse.che.workspace.infrastructure.kubernetes.api.server.impls.KubernetesNamespaceMetaImpl in project che-server by eclipse-che.
the class KubernetesGitCredentialManagerTest method testCreateAndSaveNewPATGitCredential.
@Test
public void testCreateAndSaveNewPATGitCredential() throws Exception {
KubernetesNamespaceMeta meta = new KubernetesNamespaceMetaImpl("test");
when(namespaceFactory.list()).thenReturn(Collections.singletonList(meta));
when(clientFactory.create()).thenReturn(kubeClient);
when(kubeClient.secrets()).thenReturn(secretsMixedOperation);
when(secretsMixedOperation.inNamespace(eq(meta.getName()))).thenReturn(nonNamespaceOperation);
when(nonNamespaceOperation.withLabels(anyMap())).thenReturn(filterWatchDeletable);
when(filterWatchDeletable.list()).thenReturn(secretList);
when(secretList.getItems()).thenReturn(emptyList());
ArgumentCaptor<Secret> captor = ArgumentCaptor.forClass(Secret.class);
PersonalAccessToken token = new PersonalAccessToken("https://bitbucket.com", "cheUser", "username", "userId", "token-name", "tid-23434", "token123");
// when
kubernetesGitCredentialManager.createOrReplace(token);
// then
verify(nonNamespaceOperation).createOrReplace(captor.capture());
Secret createdSecret = captor.getValue();
assertNotNull(createdSecret);
assertEquals(new String(Base64.getDecoder().decode(createdSecret.getData().get("credentials"))), "https://username:token123@bitbucket.com");
assertTrue(createdSecret.getMetadata().getName().startsWith(NAME_PATTERN));
assertFalse(createdSecret.getMetadata().getName().contains(token.getScmUserName()));
}
use of org.eclipse.che.workspace.infrastructure.kubernetes.api.server.impls.KubernetesNamespaceMetaImpl in project che-server by eclipse-che.
the class KubernetesGitCredentialManagerTest method testUpdateTokenInExistingCredential.
@Test
public void testUpdateTokenInExistingCredential() throws Exception {
KubernetesNamespaceMeta namespaceMeta = new KubernetesNamespaceMetaImpl("test");
PersonalAccessToken token = new PersonalAccessToken("https://bitbucket.com:5648", "cheUser", "username", "userId", "token-name", "tid-23434", "token123");
Map<String, String> annotations = new HashMap<>(DEFAULT_SECRET_ANNOTATIONS);
annotations.put(ANNOTATION_SCM_URL, token.getScmProviderUrl() + "/");
annotations.put(ANNOTATION_SCM_USERNAME, token.getScmUserName());
annotations.put(ANNOTATION_CHE_USERID, token.getCheUserId());
ObjectMeta objectMeta = new ObjectMetaBuilder().withName(NameGenerator.generate(NAME_PATTERN, 5)).withAnnotations(annotations).build();
Secret existing = new SecretBuilder().withMetadata(objectMeta).withData(Map.of("credentials", "foo 123")).build();
when(namespaceFactory.list()).thenReturn(Collections.singletonList(namespaceMeta));
when(clientFactory.create()).thenReturn(kubeClient);
when(kubeClient.secrets()).thenReturn(secretsMixedOperation);
when(secretsMixedOperation.inNamespace(eq(namespaceMeta.getName()))).thenReturn(nonNamespaceOperation);
when(nonNamespaceOperation.withLabels(anyMap())).thenReturn(filterWatchDeletable);
when(filterWatchDeletable.list()).thenReturn(secretList);
when(secretList.getItems()).thenReturn(singletonList(existing));
// when
kubernetesGitCredentialManager.createOrReplace(token);
// then
ArgumentCaptor<Secret> captor = ArgumentCaptor.forClass(Secret.class);
verify(nonNamespaceOperation).createOrReplace(captor.capture());
Secret createdSecret = captor.getValue();
assertNotNull(createdSecret);
assertEquals(new String(Base64.getDecoder().decode(createdSecret.getData().get("credentials"))), "https://username:token123@bitbucket.com:5648");
assertEquals(createdSecret.getMetadata().getName(), objectMeta.getName());
}
Aggregations