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;
}
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))) } };
}
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");
}
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)));
}
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");
}
Aggregations