Search in sources :

Example 6 with PluginFQN

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

the class PluginFQNParser method parsePluginFQNs.

private Collection<PluginFQN> parsePluginFQNs(String attribute) throws InfrastructureException {
    String[] plugins = splitAttribute(attribute);
    if (plugins.length == 0) {
        return emptyList();
    }
    List<PluginFQN> collectedFQNs = new ArrayList<>();
    for (String plugin : plugins) {
        PluginFQN pFQN = parsePluginFQN(plugin);
        String pluginKey = firstNonNull(pFQN.getReference(), pFQN.getId());
        if (collectedFQNs.stream().anyMatch(p -> pluginKey.equals(p.getId()) || pluginKey.equals(p.getReference()))) {
            throw new InfrastructureException(format("Invalid Che tooling plugins configuration: plugin %s is duplicated", // even if different registries
            pluginKey));
        }
        collectedFQNs.add(pFQN);
    }
    return collectedFQNs;
}
Also used : ExtendedPluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.ExtendedPluginFQN) PluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN) ArrayList(java.util.ArrayList) InfrastructureException(org.eclipse.che.api.workspace.server.spi.InfrastructureException)

Example 7 with PluginFQN

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

the class PluginFQNParserTest method validAttributesProvider.

@DataProvider(name = "validAttributesProvider")
public static Object[][] validAttributesProvider() {
    PluginFQN basicEditor = new PluginFQN(URI.create("http://registry:8080"), "publisher/editor/ver");
    PluginFQN withRegistry = new PluginFQN(URI.create("http://registry:8080"), "publisher/plugin/1.0");
    PluginFQN noRegistry = new PluginFQN(null, "publisher/pluginnoregistry/2.0");
    PluginFQN pathRegistry = new PluginFQN(URI.create("http://registry/multiple/path"), "publisher/pluginpathregistry/3.0");
    PluginFQN reference = new PluginFQN("http://mysite:8080/multiple/path/meta.yaml");
    return new AttributeParsingTestCase[][] { { new AttributeParsingTestCase("Test plugin with registry", ImmutableList.of(basicEditor, withRegistry), createAttributes(formatPlugin(basicEditor), formatPlugins(withRegistry))) }, { new AttributeParsingTestCase("Test plugin with https registry", ImmutableList.of(new PluginFQN(URI.create("https://registry:8080"), "publisher/editor/ver")), createAttributes(null, formatPlugin(new PluginFQN(URI.create("https://registry:8080"), "publisher/editor/ver")))) }, { new AttributeParsingTestCase("Test plugin with registry containing path", ImmutableList.of(new PluginFQN(URI.create("https://registry:8080/some/path/v3"), "publisher/editor/ver")), createAttributes(null, formatPlugin(new PluginFQN(URI.create("https://registry:8080/some/path/v3/"), "publisher/editor/ver")))) }, { new AttributeParsingTestCase("Test plugin without registry", ImmutableList.of(basicEditor, noRegistry), createAttributes(formatPlugin(basicEditor), formatPlugins(noRegistry))) }, { new AttributeParsingTestCase("Test plugin with multi-level path in registry", ImmutableList.of(basicEditor, pathRegistry), createAttributes(formatPlugin(basicEditor), formatPlugins(pathRegistry))) }, { new AttributeParsingTestCase("Test plugin described by reference", ImmutableList.of(basicEditor, reference), createAttributes(formatPlugin(basicEditor), "http://mysite:8080/multiple/path/meta.yaml")) }, { new AttributeParsingTestCase("Test attributes with no editor field", ImmutableList.of(withRegistry), createAttributes(null, formatPlugins(withRegistry))) }, { new AttributeParsingTestCase("Test attributes with empty editor field", ImmutableList.of(withRegistry), createAttributes("", formatPlugins(withRegistry))) }, { new AttributeParsingTestCase("Test attributes with no plugin field", ImmutableList.of(basicEditor), createAttributes(formatPlugin(basicEditor), (String[]) null)) }, { new AttributeParsingTestCase("Test attributes with empty plugin field", ImmutableList.of(basicEditor), createAttributes(formatPlugin(basicEditor), "")) }, { new AttributeParsingTestCase("Test attributes with no plugin or editor field", Collections.emptyList(), createAttributes(null, (String[]) null)) }, { new AttributeParsingTestCase("Test attributes with empty plugin and editor field", Collections.emptyList(), createAttributes("", "")) }, { new AttributeParsingTestCase("Test multiple plugins and an editor", ImmutableList.of(basicEditor, withRegistry, noRegistry, pathRegistry), createAttributes(formatPlugin(basicEditor), formatPlugins(withRegistry, noRegistry, pathRegistry))) } };
}
Also used : ExtendedPluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.ExtendedPluginFQN) PluginFQN(org.eclipse.che.api.workspace.server.wsplugins.model.PluginFQN) DataProvider(org.testng.annotations.DataProvider)

Example 8 with PluginFQN

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

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 9 with PluginFQN

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

the class BrokerEnvironmentFactoryTest method testAddsMergeArgToMetadataBroker.

@Test
public void testAddsMergeArgToMetadataBroker() throws Exception {
    // given
    Collection<PluginFQN> pluginFQNs = singletonList(new PluginFQN(null, "id"));
    ArgumentCaptor<BrokersConfigs> captor = ArgumentCaptor.forClass(BrokersConfigs.class);
    // when
    factory.createForMetadataBroker(pluginFQNs, runtimeId, true);
    // 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);
    assertTrue(container.getArgs().stream().anyMatch(e -> "--merge-plugins".equals(e)));
}
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) BrokersConfigs(org.eclipse.che.workspace.infrastructure.kubernetes.wsplugins.brokerphases.BrokerEnvironmentFactory.BrokersConfigs) Test(org.testng.annotations.Test)

Example 10 with PluginFQN

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

the class BrokerEnvironmentFactoryTest method shouldNameContainersAfterMetadataPluginBrokerImage.

@Test
public void shouldNameContainersAfterMetadataPluginBrokerImage() 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();
    PodSpec brokerPodSpec = brokersConfigs.pods.values().iterator().next().getSpec();
    List<Container> containers = brokerPodSpec.getContainers();
    assertEquals(containers.size(), 1);
    assertEquals(containers.get(0).getName(), "metadata-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