You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2008/09/23 01:54:24 UTC
svn commit: r698040 - in /geronimo/server/trunk:
framework/modules/geronimo-commands/src/main/groovy/org/apache/geronimo/commands/
framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/
plugins/clustering/geronimo-plugin-far...
Author: djencks
Date: Mon Sep 22 16:54:24 2008
New Revision: 698040
URL: http://svn.apache.org/viewvc?rev=698040&view=rev
Log:
GERONIMO=4284 Add remove plugin (from plugin list) and remove plugin list (from cluster) commands
Modified:
geronimo/server/trunk/framework/modules/geronimo-commands/src/main/groovy/org/apache/geronimo/commands/FarmCommand.groovy
geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/Farm.java
geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/Farm.java
geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/FarmGBean.java
geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaNodeInfo.java
geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaPluginInstance.java
Modified: geronimo/server/trunk/framework/modules/geronimo-commands/src/main/groovy/org/apache/geronimo/commands/FarmCommand.groovy
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-commands/src/main/groovy/org/apache/geronimo/commands/FarmCommand.groovy?rev=698040&r1=698039&r2=698040&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-commands/src/main/groovy/org/apache/geronimo/commands/FarmCommand.groovy (original)
+++ geronimo/server/trunk/framework/modules/geronimo-commands/src/main/groovy/org/apache/geronimo/commands/FarmCommand.groovy Mon Sep 22 16:54:24 2008
@@ -73,8 +73,22 @@
io.out.println("add-plugin requires 3 parameters, cluster name, plugin list name and the artifact")
return;
}
+ } else if (action == "remove-plugin") {
+ if (params.size == 2) {
+ results = farm.removePluginFromPluginList(params[0], params[1]);
+ } else {
+ io.out.println("remove-plugin requires 2 parameters, plugin list name and the artifact")
+ return;
+ }
+ } else if (action == "remove-plugin-list") {
+ if (params.size == 2) {
+ results = farm.removePluginListFromCluster(params[0], params[1]);
+ } else {
+ io.out.println("remove-plugin-list requires 2 parameters, cluster name and plugin list name")
+ return;
+ }
} else {
- io.out.println("unknown command, expecting add-plugin-list, add-plugin, or add-plugin-to-cluster")
+ io.out.println("unknown command, expecting add-plugin-list, add-plugin, add-plugin-to-cluster, remove-plugin, or remove-plugin-list")
return;
}
io.out.println("Results:")
Modified: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/Farm.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/Farm.java?rev=698040&r1=698039&r2=698040&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/Farm.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/Farm.java Mon Sep 22 16:54:24 2008
@@ -26,7 +26,7 @@
*
* This belongs in the clustering/geronimo-plugin-farm module but is here due to current gshell limitations with adding commands in other classloaders.
*
- * @version $Rev:$ $Date:$
+ * @version $Rev$ $Date$
*/
public interface Farm {
Map<String, DownloadResults> addPluginList(String clusterName, String pluginListName);
@@ -34,4 +34,8 @@
Map<String, DownloadResults> addPlugin(String pluginListName, String artifactURI);
Map<String, DownloadResults> addPluginToCluster(String clusterName, String pluginListName, String artifactURI);
+
+ Map<String, DownloadResults> removePluginFromPluginList(String pluginListName, String artifactURI);
+
+ Map<String, DownloadResults> removePluginListFromCluster(String clusterName, String pluginListName);
}
Modified: geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/Farm.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/Farm.java?rev=698040&r1=698039&r2=698040&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/Farm.java (original)
+++ geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/Farm.java Mon Sep 22 16:54:24 2008
@@ -25,7 +25,7 @@
import org.apache.geronimo.system.plugin.DownloadResults;
/**
- * @version $Rev:$ $Date:$
+ * @version $Rev$ $Date$
*/
public interface Farm {
Map<String, DownloadResults> addPluginList(String clusterName, String pluginListName);
@@ -33,4 +33,8 @@
Map<String, DownloadResults> addPlugin(String pluginListName, String artifactURI);
Map<String, DownloadResults> addPluginToCluster(String clusterName, String pluginListName, String artifactURI);
+
+ Map<String, DownloadResults> removePluginFromPluginList(String pluginListName, String artifactURI);
+
+ Map<String, DownloadResults> removePluginListFromCluster(String clusterName, String pluginListName);
}
Modified: geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/FarmGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/FarmGBean.java?rev=698040&r1=698039&r2=698040&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/FarmGBean.java (original)
+++ geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/FarmGBean.java Mon Sep 22 16:54:24 2008
@@ -21,9 +21,10 @@
package org.apache.geronimo.farm.plugin;
import java.io.IOException;
+import java.util.Collections;
import java.util.HashMap;
-import java.util.Map;
import java.util.List;
+import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -36,6 +37,9 @@
import org.apache.geronimo.gbean.annotation.ParamAttribute;
import org.apache.geronimo.gbean.annotation.ParamReference;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.NoSuchConfigException;
+import org.apache.geronimo.kernel.repository.Artifact;
import org.apache.geronimo.persistence.PersistenceUnitGBean;
import org.apache.geronimo.system.plugin.DownloadResults;
import org.apache.geronimo.system.plugin.PluginInstaller;
@@ -139,6 +143,34 @@
return installToClusters(pluginList);
}
+ public Map<String, DownloadResults> removePluginFromPluginList(String pluginListName, String artifactURI) {
+ return removePluginFromPluginList(pluginListName, new JpaPluginInstance(artifactURI));
+ }
+
+ public Map<String, DownloadResults> removePluginFromPluginList(String pluginListName, JpaPluginInstance pluginInstance) {
+ JpaPluginList pluginList;
+ synchronized (this) {
+ JpaContext pluginListContext = new JpaContext(emf);
+ pluginList = pluginListContext.getPluginList(pluginListName, defaultRepository);
+ pluginList.getPlugins().remove(pluginInstance);
+ pluginListContext.close();
+ }
+ return removeFromClusters(pluginList, pluginInstance);
+ }
+
+ public Map<String, DownloadResults> removePluginListFromCluster(String clusterName, String pluginListName) {
+ JpaClusterInfo cluster;
+ JpaPluginList pluginList;
+ synchronized (this) {
+ JpaContext clusterContext = new JpaContext(emf);
+ cluster = clusterContext.getClusterInfo(clusterName);
+ pluginList = clusterContext.getPluginList(pluginListName, defaultRepository);
+ cluster.getPluginLists().remove(pluginList);
+ clusterContext.close();
+ }
+ return removeFromCluster(pluginList.getPlugins(), cluster);
+ }
+
public Map<String, DownloadResults> addPluginToCluster(String clusterName, String pluginListName, String artifactURI) {
return addPluginToCluster(clusterName, pluginListName, new JpaPluginInstance(artifactURI));
}
@@ -185,6 +217,41 @@
}
}
+ private Map<String, DownloadResults> removeFromClusters(JpaPluginList clusterPluginList, JpaPluginInstance pluginInstance) {
+ List<JpaPluginInstance> pluginList = pluginInstance == null? clusterPluginList.getPlugins(): Collections.singletonList(pluginInstance);
+ Map<String, DownloadResults> results = new HashMap<String, DownloadResults>();
+ for (JpaClusterInfo cluster : clusterPluginList.getClusters()) {
+ results.putAll(removeFromCluster(pluginList, cluster));
+ }
+ return results;
+ }
+
+ private Map<String, DownloadResults> removeFromCluster(List<JpaPluginInstance> pluginList, JpaClusterInfo cluster) {
+ Map<String, DownloadResults> installedNodes = new HashMap<String, DownloadResults>();
+ for (JpaNodeInfo jpaNodeInfo : cluster.getJpaNodeInfos()) {
+ DownloadResults downloadResults = removeFromNode(pluginList, jpaNodeInfo);
+ installedNodes.put(jpaNodeInfo.getName(), downloadResults);
+ }
+ return installedNodes;
+ }
+
+ private DownloadResults removeFromNode(List<JpaPluginInstance> pluginList, JpaNodeInfo jpaNodeInfo) {
+ DownloadResults downloadResults = new DownloadResults();
+ try {
+ ConfigurationManager configurationManager = jpaNodeInfo.getConfigurationManager();
+ for (JpaPluginInstance jpaPluginInstance: pluginList) {
+ Artifact artifact = jpaPluginInstance.toArtifact();
+ configurationManager.uninstallConfiguration(artifact);
+ downloadResults.addRemovedConfigID(artifact);
+ }
+ } catch (IOException e) {
+ downloadResults.setFailure(e);
+ } catch (NoSuchConfigException e) {
+ downloadResults.setFailure(e);
+ }
+ return downloadResults;
+ }
+
private JpaPluginList getPluginList(JpaClusterInfo cluster, String pluginListName) {
for (JpaPluginList pluginList : cluster.getPluginLists()) {
Modified: geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaNodeInfo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaNodeInfo.java?rev=698040&r1=698039&r2=698040&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaNodeInfo.java (original)
+++ geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaNodeInfo.java Mon Sep 22 16:54:24 2008
@@ -40,6 +40,7 @@
import org.apache.geronimo.gbean.AbstractNameQuery;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.KernelRegistry;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
import org.apache.geronimo.system.plugin.PluginInstaller;
/**
@@ -70,6 +71,8 @@
private PluginInstaller pluginInstaller;
@Transient
private JMXConnector jmxConnector;
+ @Transient
+ private ConfigurationManager configurationManager;
public JpaNodeInfo() {
}
@@ -136,12 +139,25 @@
Kernel kernel = newKernel();
Set<AbstractName> set = kernel.listGBeans(new AbstractNameQuery(PluginInstaller.class.getName()));
for (AbstractName name : set) {
- pluginInstaller = (PluginInstaller) kernel.getProxyManager().createProxy(name, PluginInstaller.class);
+ pluginInstaller = kernel.getProxyManager().createProxy(name, PluginInstaller.class);
return pluginInstaller;
}
throw new IllegalStateException("No plugin installer found");
}
+ public synchronized ConfigurationManager getConfigurationManager() throws IOException {
+ if (configurationManager != null) {
+ return configurationManager;
+ }
+ Kernel kernel = newKernel();
+ Set<AbstractName> set = kernel.listGBeans(new AbstractNameQuery(ConfigurationManager.class.getName()));
+ for (AbstractName name : set) {
+ configurationManager = kernel.getProxyManager().createProxy(name, ConfigurationManager.class);
+ return configurationManager;
+ }
+ throw new IllegalStateException("No plugin installer found");
+ }
+
public synchronized void disconnect() throws IOException {
if (kernel != null) {
if (pluginInstaller != null) {
Modified: geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaPluginInstance.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaPluginInstance.java?rev=698040&r1=698039&r2=698040&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaPluginInstance.java (original)
+++ geronimo/server/trunk/plugins/clustering/geronimo-plugin-farm/src/main/java/org/apache/geronimo/farm/plugin/JpaPluginInstance.java Mon Sep 22 16:54:24 2008
@@ -109,4 +109,8 @@
public String toString() {
return groupId + "/" + artifactId + "/" + version + "/" + type;
}
+
+ public Artifact toArtifact() {
+ return new Artifact(groupId, artifactId, version, type);
+ }
}