[rhq] Branch 'feature/hadoop-plugin' - modules/enterprise modules/plugins
Jiri Kremser
jkremser at fedoraproject.org
Thu Aug 2 10:51:50 UTC 2012
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java | 12 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java | 1
modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopOperationsDelegate.java | 61 ++++++-
modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java | 7
modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopSupportedOperations.java | 5
modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml | 79 +++++++++-
6 files changed, 147 insertions(+), 18 deletions(-)
New commits:
commit ccfe434abcf13690aab214d0aeb4472ce79658cc
Author: Jirka Kremser <jkremser at redhat.com>
Date: Thu Aug 2 12:51:40 2012 +0200
New set of operations: start, stop for all node types; list job queue for job tracker
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
index aec7274..e5a321c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
@@ -175,6 +175,7 @@ public class ConfigurationEditor extends LocatableVLayout {
private String editorTitle = null;
private boolean readOnly = false;
private boolean allPropertiesWritable = false;
+ private boolean preserveTextFormatting = false;
private Map<String, String> invalidPropertyNameToDisplayNameMap = new HashMap<String, String>();
private Set<PropertyValueChangeListener> propertyValueChangeListeners = new HashSet<PropertyValueChangeListener>();
@@ -252,6 +253,14 @@ public class ConfigurationEditor extends LocatableVLayout {
public void setAllPropertiesWritable(boolean allPropertiesWritable) {
this.allPropertiesWritable = allPropertiesWritable;
}
+
+ public boolean isPreserveTextFormatting() {
+ return preserveTextFormatting;
+ }
+
+ public void setPreserveTextFormatting(boolean preserveFormatting) {
+ this.preserveTextFormatting = preserveFormatting;
+ }
public String getEditorTitle() {
return editorTitle;
@@ -1411,6 +1420,9 @@ public class ConfigurationEditor extends LocatableVLayout {
// Property values are user-editable, so escape HTML when displayed as static text, to prevent XSS attacks.
value = StringUtility.escapeHtml(value);
}
+ if (preserveTextFormatting) {
+ value = "<pre>" + value + "</pre>";
+ }
valueItem.setValue(value);
setValueAsTooltipIfAppropriate(valueItem, value);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java
index d7c118a..299b0eb 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/history/ResourceOperationHistoryDetailsView.java
@@ -143,6 +143,7 @@ public class ResourceOperationHistoryDetailsView extends AbstractOperationHistor
&& !resultsConfigurationDefinition.getPropertyDefinitions().isEmpty()) {
ConfigurationEditor editor = new ConfigurationEditor(extendLocatorId("results"),
operationDefinition.getResultsConfigurationDefinition(), operationHistory.getResults());
+ editor.setPreserveTextFormatting(true);
editor.setReadOnly(true);
resultsSection.addMember(editor);
} else {
diff --git a/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopOperationsDelegate.java b/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopOperationsDelegate.java
index 933eabd..6ebead7 100644
--- a/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopOperationsDelegate.java
+++ b/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopOperationsDelegate.java
@@ -24,6 +24,7 @@ import org.jetbrains.annotations.NotNull;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.core.system.ProcessExecution;
@@ -41,14 +42,14 @@ public class HadoopOperationsDelegate {
private static final long MAX_WAIT = 1000 * 60 * 5;
private static final int MAX_OUTPUT = 2048;
- private ResourceContext<HadoopServerComponent> resourceContext;
+ private ResourceContext<? extends ResourceComponent<?>> resourceContext;
- public HadoopOperationsDelegate(ResourceContext<HadoopServerComponent> resourceContext) {
+ public HadoopOperationsDelegate(ResourceContext<? extends ResourceComponent<?>> resourceContext) {
this.resourceContext = resourceContext;
}
public OperationResult invoke(@NotNull
- HadoopSupportedOperations operation, Configuration parameters) throws InterruptedException {
+ HadoopSupportedOperations operation, Configuration parameters, String serverType) throws InterruptedException {
ProcessExecutionResults results = null;
switch (operation) {
@@ -62,6 +63,15 @@ public class HadoopOperationsDelegate {
case LS:
results = ls(operation);
break;
+ case START:
+ results = start(operation, serverType);
+ break;
+ case STOP:
+ results = stop(operation, serverType);
+ break;
+ case QUEUE_LIST:
+ results = queueList(operation);
+ break;
default:
throw new UnsupportedOperationException(operation.toString());
}
@@ -77,26 +87,52 @@ public class HadoopOperationsDelegate {
}
/**
+ * @param operation supported Hadoop operation @see HadoopSupportedOperations
+ * @return the object encapsulating the exit code, err output and std output
+ */
+ private ProcessExecutionResults queueList(HadoopSupportedOperations operation) {
+ return invokeGeneralOperation(operation);
+ }
+
+ /**
+ * @param operation supported Hadoop operation @see HadoopSupportedOperations
+ * @param serverType {Name|Data|SecondaryName}Node / {Job|Task}Tracker
+ * @return the object encapsulating the exit code, err output and std output
+ */
+ private ProcessExecutionResults stop(HadoopSupportedOperations operation, String serverType) {
+ return invokeGeneralOperation(operation, serverType);
+ }
+
+ /**
+ * @param operation supported Hadoop operation @see HadoopSupportedOperations
+ * @param serverType {Name|Data|SecondaryName}Node / {Job|Task}Tracker
+ * @return the object encapsulating the exit code, err output and std output
+ */
+ private ProcessExecutionResults start(HadoopSupportedOperations operation, String serverType) {
+ return invokeGeneralOperation(operation, serverType);
+ }
+
+ /**
* Format a new distributed filesystem
* by running $bin/hadoop namenode -format
*
- * @return message
+ * @return the object encapsulating the exit code, err output and std output
*/
private ProcessExecutionResults format(HadoopSupportedOperations operation) {
return invokeGeneralOperation(operation);
}
/**
- * @param operation
- * @return
+ * @param operation supported Hadoop operation @see HadoopSupportedOperations
+ * @return the object encapsulating the exit code, err output and std output
*/
private ProcessExecutionResults ls(HadoopSupportedOperations operation) {
return invokeGeneralOperation(operation);
}
/**
- * @param operation
- * @return
+ * @param operation supported Hadoop operation @see HadoopSupportedOperations
+ * @return the object encapsulating the exit code, err output and std output
*/
private ProcessExecutionResults fsck(HadoopSupportedOperations operation) {
return invokeGeneralOperation(operation);
@@ -146,12 +182,17 @@ public class HadoopOperationsDelegate {
}
private ProcessExecutionResults invokeGeneralOperation(HadoopSupportedOperations operation) {
+ return invokeGeneralOperation(operation, null);
+ }
+
+ private ProcessExecutionResults invokeGeneralOperation(HadoopSupportedOperations operation, String serverType) {
String hadoopHome = resourceContext.getPluginConfiguration()
.getSimple(HadoopServerDiscovery.HOME_DIR_PROPERTY).getStringValue();
String executable = hadoopHome + operation.getRelativePathToExecutable();
+ String args = operation.getArgs() + (serverType == null ? "" : serverType.toLowerCase());
- ProcessExecutionResults results = executeExecutable(resourceContext.getSystemInformation(), executable,
- operation.getArgs(), MAX_WAIT, true, true);
+ ProcessExecutionResults results = executeExecutable(resourceContext.getSystemInformation(), executable, args,
+ MAX_WAIT, true, true);
return results;
}
}
diff --git a/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java b/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java
index 9acc4ff..f6911b9 100644
--- a/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java
+++ b/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java
@@ -163,7 +163,12 @@ public class HadoopServerComponent extends JMXServerComponent<ResourceComponent<
*/
public OperationResult invokeOperation(String name, Configuration params) throws Exception {
HadoopSupportedOperations operation = HadoopSupportedOperations.valueOf(name.toUpperCase());
- return operationsDelegate.invoke(operation, params);
+ String serverType = getServerType();
+ OperationResult result = operationsDelegate.invoke(operation, params, serverType);
+ if (operation.equals(HadoopSupportedOperations.START) || operation.equals(HadoopSupportedOperations.STOP)) {
+ getResourceContext().getAvailabilityContext().requestAvailabilityCheck();
+ }
+ return result;
}
private File determineLogFile() {
diff --git a/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopSupportedOperations.java b/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopSupportedOperations.java
index faddc95..ec0fe0e 100644
--- a/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopSupportedOperations.java
+++ b/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopSupportedOperations.java
@@ -26,7 +26,10 @@ package org.rhq.plugins.hadoop;
public enum HadoopSupportedOperations {
FORMAT("/bin/hadoop", "namenode -format"),
FSCK("/bin/hadoop", "fsck /"),
- LS("/bin/hadoop", "fs -ls");
+ LS("/bin/hadoop", "fs -ls"),
+ START("/bin/hadoop-daemon.sh", "start "),
+ STOP("/bin/hadoop-daemon.sh", "stop "),
+ QUEUE_LIST("/bin/hadoop", "queue -list");
private final String relativePathToExecutable;
diff --git a/modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml
index 1b3a372..48b647b 100644
--- a/modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml
@@ -10,19 +10,36 @@
<c:simple-property name="hadoop.home.dir" displayName="Home Directory"/>
<c:simple-property name="_mainClass" displayName="Main Class" readOnly="true"
default="org.apache.hadoop.hdfs.server.namenode.NameNode"/>
- <c:simple-property name="logPollingInterval" default="60" description="The interval for log file polling in seconds."/>
+ <c:simple-property name="logPollingInterval" default="60"
+ description="The interval for log file polling in seconds."/>
</plugin-configuration>
<process-scan name="NameNode" query="process|basename|match=^java.*,arg|-Dproc_namenode|match=.*"/>
-
+
<operation name="format" displayName="Format dfs" description="Format a new distributed-filesystem.">
- <results><c:simple-property name="operationResult" description="Outcome of formatting the dfs."/></results>
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of formatting the dfs."/>
+ </results>
</operation>
<operation name="fsck" displayName="Check dfs" description="Runs a HDFS filesystem checking utility.">
- <results><c:simple-property name="operationResult" description="Outcome of checking the dfs."/></results>
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of checking the dfs."/>
+ </results>
</operation>
<operation name="ls" displayName="Lists dfs" description="Lists the content of the distributed-filesystem.">
- <results><c:simple-property name="operationResult" description="Outcome of listing the dfs."/></results>
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of listing the dfs."/>
+ </results>
+ </operation>
+ <operation name="start" displayName="Start NameNode" description="Starts the NameNode instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of starting the NameNode."/>
+ </results>
+ </operation>
+ <operation name="stop" displayName="Stop NameNode" description="Stops the NameNode instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of stopping the NameNode."/>
+ </results>
</operation>
<metric property="Hadoop:service=NameNode,name=NameNodeInfo:NameDirStatuses" displayName="NameNode Storage"
@@ -69,7 +86,19 @@
<c:simple-property name="_mainClass" displayName="Main Class" readOnly="true"
default="org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode"/>
</plugin-configuration>
+
<process-scan name="SecondaryNameNode" query="process|basename|match=^java.*,arg|-Dproc_secondarynamenode|match=.*"/>
+
+ <operation name="start" displayName="Start SecondaryNameNode" description="Starts the SecondaryNameNode instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of starting the SecondaryNameNode"/>
+ </results>
+ </operation>
+ <operation name="stop" displayName="Stop SecondaryNameNode" description="Stops the SecondaryNameNode instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of stopping the SecondaryNameNode"/>
+ </results>
+ </operation>
</server>
<!-- DataNode (http://wiki.apache.org/hadoop/DataNode) -->
@@ -81,6 +110,17 @@
<process-scan name="DataNode" query="process|basename|match=^java.*,arg|*|match=.*proc_datanode.*"/>
+ <operation name="start" displayName="Start DataNode" description="Starts the DataNode instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of starting the DataNode"/>
+ </results>
+ </operation>
+ <operation name="stop" displayName="Stop DataNode" description="Stops the DataNode instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of stopping the DataNode"/>
+ </results>
+ </operation>
+
<metric property="Hadoop:service=DataNode,name=DataNode*:bytes_written" displayName="Bytes Writter"
measurementType="trendsup"/>
<metric property="Hadoop:service=DataNode,name=FSDatasetState*:Remaining" displayName="Remaining" units="bytes"/>
@@ -104,6 +144,22 @@
<process-scan name="JobTracker" query="process|basename|match=^java.*,arg|-Dproc_jobtracker|match=.*"/>
+ <operation name="start" displayName="Start JobTracker" description="Starts the JobTracker instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of starting the JobTracker"/>
+ </results>
+ </operation>
+ <operation name="stop" displayName="Stop JobTracker" description="Stops the JobTracker instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of stopping the JobTracker"/>
+ </results>
+ </operation>
+ <operation name="queue_list" displayName="Lists job queue" description="Lists the content of the job queue.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of listing the job queue"/>
+ </results>
+ </operation>
+
<metric property="Hadoop:service=JobTracker,name=JobTrackerMetrics:jobs_completed" displayName="Jobs Completed"
displayType="summary"/>
<metric property="Hadoop:service=JobTracker,name=JobTrackerMetrics:jobs_running" displayName="Jobs Running"
@@ -154,6 +210,17 @@
<process-scan name="TaskTracker" query="process|basename|match=^java.*,arg|-Dproc_tasktracker|match=.*"/>
+ <operation name="start" displayName="Start TaskTracker" description="Starts the TaskTracker instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of starting the TaskTracker"/>
+ </results>
+ </operation>
+ <operation name="stop" displayName="Stop TaskTracker" description="Stops the TaskTracker instance.">
+ <results>
+ <c:simple-property name="operationResult" description="Outcome of stopping the TaskTracker"/>
+ </results>
+ </operation>
+
<metric property="Hadoop:service=TaskTracker,name=TaskTrackerMetrics:mapTaskSlots" displayName="Map Task Slots"/>
<metric property="Hadoop:service=TaskTracker,name=TaskTrackerMetrics:reduceTaskSlots" displayName="Reduce Task Slots"/>
<metric property="Hadoop:service=TaskTracker,name=TaskTrackerMetrics:maps_running" displayName="Running Map Tasks"/>
@@ -167,4 +234,4 @@
dataType="trait"/>
</server>
-</plugin>
\ No newline at end of file
+</plugin>
More information about the rhq-commits
mailing list