Search in sources :

Example 21 with PluginFQN

use of org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN in project che-server by eclipse-che.

the class BrokerEnvironmentFactoryTest method shouldNameContainersAfterArtifactsPluginBrokerImage.

@Test
public void shouldNameContainersAfterArtifactsPluginBrokerImage() throws Exception {
    // given
    Collection<PluginFQN> pluginFQNs = singletonList(new PluginFQN(null, "id"));
    ArgumentCaptor<BrokersConfigs> captor = ArgumentCaptor.forClass(BrokersConfigs.class);
    // when
    factory.createForArtifactsBroker(pluginFQNs, runtimeId, false);
    // then
    verify(factory).doCreate(captor.capture());
    BrokersConfigs brokersConfigs = captor.getValue();
    PodSpec brokerPodSpec = brokersConfigs.pods.values().iterator().next().getSpec();
    List<Container> containers = brokerPodSpec.getContainers();
    assertEquals(containers.size(), 1);
    assertEquals(containers.get(0).getName(), "artifacts-image");
}
Also used : Container(io.fabric8.kubernetes.api.model.Container) PodSpec(io.fabric8.kubernetes.api.model.PodSpec) PluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN) BrokersConfigs(org.eclipse.che.workspace.infrastructure.kubernetes.wsplugins.brokerphases.BrokerEnvironmentFactory.BrokersConfigs) Test(org.testng.annotations.Test)

Example 22 with PluginFQN

use of org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN in project che-server by eclipse-che.

the class BrokerEnvironmentFactoryTest method shouldIncludePluginsVolumeInArtifactsBroker.

@Test
public void shouldIncludePluginsVolumeInArtifactsBroker() throws Exception {
    // given
    Collection<PluginFQN> pluginFQNs = singletonList(new PluginFQN(null, "id"));
    ArgumentCaptor<BrokersConfigs> captor = ArgumentCaptor.forClass(BrokersConfigs.class);
    // when
    factory.createForArtifactsBroker(pluginFQNs, runtimeId, false);
    // then
    verify(factory).doCreate(captor.capture());
    BrokersConfigs brokersConfigs = captor.getValue();
    InternalMachineConfig machine = brokersConfigs.machines.values().iterator().next();
    assertTrue(machine.getVolumes().containsKey(PLUGINS_VOLUME_NAME));
    assertEquals(machine.getVolumes().get(PLUGINS_VOLUME_NAME).getPath(), "/plugins");
}
Also used : InternalMachineConfig(org.eclipse.che.api.workspace.server.spi.environment.InternalMachineConfig) PluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN) BrokersConfigs(org.eclipse.che.workspace.infrastructure.kubernetes.wsplugins.brokerphases.BrokerEnvironmentFactory.BrokersConfigs) Test(org.testng.annotations.Test)

Example 23 with PluginFQN

use of org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN in project che-server by eclipse-che.

the class BrokerEnvironmentFactoryTest method testQuotasBroker.

@Test
public void testQuotasBroker() throws Exception {
    // given
    Collection<PluginFQN> pluginFQNs = singletonList(new PluginFQN(null, "id"));
    ArgumentCaptor<BrokersConfigs> captor = ArgumentCaptor.forClass(BrokersConfigs.class);
    // when
    factory.createForMetadataBroker(pluginFQNs, runtimeId, false);
    // then
    verify(factory).doCreate(captor.capture());
    BrokersConfigs brokersConfigs = captor.getValue();
    List<Container> containers = brokersConfigs.pods.values().stream().flatMap(p -> p.getSpec().getContainers().stream()).collect(Collectors.toList());
    assertEquals(containers.size(), 1);
    Container container = containers.get(0);
    assertEquals(container.getResources().getRequests().get("memory"), new Quantity("250Mi"));
    assertEquals(container.getResources().getLimits().get("memory"), new Quantity("250Mi"));
    assertEquals(container.getResources().getRequests().get("cpu"), new Quantity("300m"));
    assertEquals(container.getResources().getLimits().get("cpu"), new Quantity("300m"));
}
Also used : ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Quantity(io.fabric8.kubernetes.api.model.Quantity) Listeners(org.testng.annotations.Listeners) Container(io.fabric8.kubernetes.api.model.Container) DataProvider(org.testng.annotations.DataProvider) Mock(org.mockito.Mock) Assert.assertEquals(org.testng.Assert.assertEquals) KubernetesEnvironment(org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment) Test(org.testng.annotations.Test) MachineTokenEnvVarProvider(org.eclipse.che.api.workspace.server.spi.provision.env.MachineTokenEnvVarProvider) Mockito.spy(org.mockito.Mockito.spy) Mockito.lenient(org.mockito.Mockito.lenient) Collections.singletonList(java.util.Collections.singletonList) ArgumentCaptor(org.mockito.ArgumentCaptor) ImmutableList(com.google.common.collect.ImmutableList) PodSpec(io.fabric8.kubernetes.api.model.PodSpec) URI(java.net.URI) Assert.assertFalse(org.testng.Assert.assertFalse) AgentAuthEnableEnvVarProvider(org.eclipse.che.api.workspace.server.spi.provision.env.AgentAuthEnableEnvVarProvider) MockitoTestNGListener(org.mockito.testng.MockitoTestNGListener) CertificateProvisioner(org.eclipse.che.workspace.infrastructure.kubernetes.provision.CertificateProvisioner) Collection(java.util.Collection) BeforeMethod(org.testng.annotations.BeforeMethod) Mockito.when(org.mockito.Mockito.when) Collectors(java.util.stream.Collectors) Pair(org.eclipse.che.commons.lang.Pair) Mockito.verify(org.mockito.Mockito.verify) ConfigMap(io.fabric8.kubernetes.api.model.ConfigMap) InternalMachineConfig(org.eclipse.che.api.workspace.server.spi.environment.InternalMachineConfig) List(java.util.List) BrokersConfigs(org.eclipse.che.workspace.infrastructure.kubernetes.wsplugins.brokerphases.BrokerEnvironmentFactory.BrokersConfigs) RuntimeIdentity(org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity) Assert.assertTrue(org.testng.Assert.assertTrue) TrustedCAProvisioner(org.eclipse.che.workspace.infrastructure.kubernetes.provision.TrustedCAProvisioner) PluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN) Container(io.fabric8.kubernetes.api.model.Container) PluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN) Quantity(io.fabric8.kubernetes.api.model.Quantity) BrokersConfigs(org.eclipse.che.workspace.infrastructure.kubernetes.wsplugins.brokerphases.BrokerEnvironmentFactory.BrokersConfigs) Test(org.testng.annotations.Test)

Example 24 with PluginFQN

use of org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN in project devspaces-images by redhat-developer.

the class SidecarToolingProvisioner method provision.

@Traced
@Beta
public void provision(RuntimeIdentity identity, StartSynchronizer startSynchronizer, E environment, Map<String, String> startOptions) throws InfrastructureException {
    Collection<PluginFQN> pluginFQNs = pluginFQNParser.parsePlugins(environment.getAttributes());
    if (pluginFQNs.isEmpty()) {
        return;
    }
    LOG.debug("Started sidecar tooling provisioning workspace '{}'", identity.getWorkspaceId());
    String recipeType = environment.getType();
    ChePluginsApplier pluginsApplier = workspaceNextAppliers.get(recipeType);
    if (pluginsApplier == null) {
        throw new InfrastructureException("Sidecar tooling configuration is not supported with environment type " + recipeType);
    }
    boolean isEphemeral = EphemeralWorkspaceUtility.isEphemeral(environment.getAttributes());
    boolean mergePlugins = shouldMergePlugins(environment.getAttributes());
    List<ChePlugin> chePlugins = pluginBrokerManager.getTooling(identity, startSynchronizer, pluginFQNs, isEphemeral, mergePlugins, startOptions);
    pluginsApplier.apply(identity, environment, chePlugins);
    artifactsBrokerApplier.apply(environment, identity, pluginFQNs, mergePlugins);
    LOG.debug("Finished sidecar tooling provisioning workspace '{}'", identity.getWorkspaceId());
}
Also used : ChePlugin(org.eclipse.che.api.workspace.server.wsplugins.model.ChePlugin) PluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN) ChePluginsApplier(org.eclipse.che.api.workspace.server.wsplugins.ChePluginsApplier) InfrastructureException(org.eclipse.che.api.workspace.server.spi.InfrastructureException) Traced(org.eclipse.che.commons.annotation.Traced) Beta(com.google.common.annotations.Beta)

Example 25 with PluginFQN

use of org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN in project devspaces-images by redhat-developer.

the class BrokerEnvironmentFactoryTest method shouldNameContainersAfterArtifactsPluginBrokerImage.

@Test
public void shouldNameContainersAfterArtifactsPluginBrokerImage() throws Exception {
    // given
    Collection<PluginFQN> pluginFQNs = singletonList(new PluginFQN(null, "id"));
    ArgumentCaptor<BrokersConfigs> captor = ArgumentCaptor.forClass(BrokersConfigs.class);
    // when
    factory.createForArtifactsBroker(pluginFQNs, runtimeId, false);
    // then
    verify(factory).doCreate(captor.capture());
    BrokersConfigs brokersConfigs = captor.getValue();
    PodSpec brokerPodSpec = brokersConfigs.pods.values().iterator().next().getSpec();
    List<Container> containers = brokerPodSpec.getContainers();
    assertEquals(containers.size(), 1);
    assertEquals(containers.get(0).getName(), "artifacts-image");
}
Also used : Container(io.fabric8.kubernetes.api.model.Container) PodSpec(io.fabric8.kubernetes.api.model.PodSpec) PluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN) BrokersConfigs(org.eclipse.che.workspace.infrastructure.kubernetes.wsplugins.brokerphases.BrokerEnvironmentFactory.BrokersConfigs) Test(org.testng.annotations.Test)

Aggregations

PluginFQN (org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN)28 BrokersConfigs (org.eclipse.che.workspace.infrastructure.kubernetes.wsplugins.brokerphases.BrokerEnvironmentFactory.BrokersConfigs)22 Test (org.testng.annotations.Test)22 ConfigMap (io.fabric8.kubernetes.api.model.ConfigMap)14 Container (io.fabric8.kubernetes.api.model.Container)14 PodSpec (io.fabric8.kubernetes.api.model.PodSpec)14 URI (java.net.URI)14 InternalMachineConfig (org.eclipse.che.api.workspace.server.spi.environment.InternalMachineConfig)14 DataProvider (org.testng.annotations.DataProvider)12 ImmutableList (com.google.common.collect.ImmutableList)10 Quantity (io.fabric8.kubernetes.api.model.Quantity)10 Collection (java.util.Collection)10 Collections.singletonList (java.util.Collections.singletonList)10 List (java.util.List)10 Collectors (java.util.stream.Collectors)10 RuntimeIdentity (org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity)10 AgentAuthEnableEnvVarProvider (org.eclipse.che.api.workspace.server.spi.provision.env.AgentAuthEnableEnvVarProvider)10 MachineTokenEnvVarProvider (org.eclipse.che.api.workspace.server.spi.provision.env.MachineTokenEnvVarProvider)10 Pair (org.eclipse.che.commons.lang.Pair)10 KubernetesEnvironment (org.eclipse.che.workspace.infrastructure.kubernetes.environment.KubernetesEnvironment)10