package com.github.alexcojocaru.mojo.elasticsearch.v2.step; import java.util.HashMap; import java.util.Map; import org.apache.commons.exec.CommandLine; import org.apache.commons.lang3.StringUtils; import org.apache.maven.plugin.logging.Log; import com.github.alexcojocaru.mojo.elasticsearch.v2.InstanceConfiguration; import com.github.alexcojocaru.mojo.elasticsearch.v2.PluginConfiguration; import com.github.alexcojocaru.mojo.elasticsearch.v2.util.FilesystemUtil; import com.github.alexcojocaru.mojo.elasticsearch.v2.util.ProcessUtil; /** * Install the required plugins into the current Elasticsearch instance. * * @author Alex Cojocaru */ public class InstallPluginsStep implements InstanceStep { @Override public void execute(InstanceConfiguration config) { if (config.getClusterConfiguration().getPlugins().size() > 0) { FilesystemUtil.setScriptPermission(config, "elasticsearch-plugin"); } Log log = config.getClusterConfiguration().getLog(); for (PluginConfiguration plugin : config.getClusterConfiguration().getPlugins()) { log.info(String.format( "Installing plugin '%s' with options '%s'", plugin.getUri(), plugin.getEsJavaOpts())); Map<String, String> environment = null; if (StringUtils.isNotBlank(plugin.getEsJavaOpts())) { environment = new HashMap<>(); environment.put("ES_JAVA_OPTS", plugin.getEsJavaOpts()); } CommandLine cmd = ProcessUtil.buildCommandLine("bin/elasticsearch-plugin") .addArgument("install") .addArgument("--batch") .addArgument(plugin.getUri()); ProcessUtil.executeScript(config, cmd, environment, null); } } }