You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by sm...@apache.org on 2014/08/18 00:24:11 UTC
[1/4] git commit: SLIDER-324. Exports should be attributed to
individual master components rather than only one master component
Repository: incubator-slider
Updated Branches:
refs/heads/develop 8050466fc -> 72daf3713
SLIDER-324. Exports should be attributed to individual master components rather than only one master component
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/bc9561d5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/bc9561d5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/bc9561d5
Branch: refs/heads/develop
Commit: bc9561d59d3c0a68a6abaa47e8a91b87a36a1287
Parents: 599e972
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Fri Aug 15 13:32:12 2014 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Fri Aug 15 13:32:12 2014 -0700
----------------------------------------------------------------------
app-packages/storm/metainfo.xml | 28 ++++----
.../agent/application/metadata/Component.java | 21 ++++--
.../application/metadata/ComponentExport.java | 54 ++++++++++++++
.../application/metadata/MetainfoParser.java | 9 +--
.../agent/TestAgentProviderService.java | 23 +++---
.../agent/application/metadata/metainfo.xml | 74 ++++++++++++++++++--
6 files changed, 171 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bc9561d5/app-packages/storm/metainfo.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm/metainfo.xml b/app-packages/storm/metainfo.xml
index e94bc62..d9004ad 100644
--- a/app-packages/storm/metainfo.xml
+++ b/app-packages/storm/metainfo.xml
@@ -29,21 +29,25 @@
<name>QuickLinks</name>
<exports>
<export>
- <name>org.apache.slider.jmx</name>
+ <name>app.jmx</name>
<value>http://${STORM_REST_API_HOST}:${site.global.rest_api_port}/api/cluster/summary</value>
</export>
<export>
- <name>org.apache.slider.monitor</name>
+ <name>app.monitor</name>
<value>http://${STORM_UI_SERVER_HOST}:${site.storm-site.ui.port}</value>
</export>
<export>
- <name>org.apache.slider.metrics</name>
+ <name>app.metrics</name>
<value>http://${site.global.ganglia_server_host}/cgi-bin/rrd.py?c=${site.global.ganglia_server_id}</value>
</export>
<export>
- <name>org.apache.slider.ganglia</name>
+ <name>ganglia.ui</name>
<value>http://${site.global.ganglia_server_host}/ganglia?c=${site.global.ganglia_server_id}</value>
</export>
+ <export>
+ <name>nimbus.url</name>
+ <value>http://${NIMBUS_HOST}:${site.storm-site.nimbus.thrift.port}</value>
+ </export>
</exports>
</exportGroup>
</exportGroups>
@@ -78,6 +82,7 @@
<name>NIMBUS</name>
<category>MASTER</category>
<autoStartOnFailure>true</autoStartOnFailure>
+ <appExports>QuickLinks-nimbus.url,QuickLinks-ganglia.ui,QuickLinks-app.metrics</appExports>
<commandScript>
<script>scripts/nimbus.py</script>
<scriptType>PYTHON</scriptType>
@@ -89,6 +94,7 @@
<name>STORM_REST_API</name>
<category>MASTER</category>
<autoStartOnFailure>true</autoStartOnFailure>
+ <appExports>QuickLinks-app.jmx</appExports>
<commandScript>
<script>scripts/rest_api.py</script>
<scriptType>PYTHON</scriptType>
@@ -100,12 +106,12 @@
<name>SUPERVISOR</name>
<category>SLAVE</category>
<autoStartOnFailure>true</autoStartOnFailure>
- <exports>
- <export>
+ <componentExports>
+ <componentExport>
<name>log_viewer_port</name>
<value>${THIS_HOST}:${site.storm-site.logviewer.port}</value>
- </export>
- </exports>
+ </componentExport>
+ </componentExports>
<commandScript>
<script>scripts/supervisor.py</script>
<scriptType>PYTHON</scriptType>
@@ -117,6 +123,7 @@
<name>STORM_UI_SERVER</name>
<category>MASTER</category>
<publishConfig>true</publishConfig>
+ <appExports>QuickLinks-app.monitor</appExports>
<autoStartOnFailure>true</autoStartOnFailure>
<commandScript>
<script>scripts/ui_server.py</script>
@@ -148,10 +155,5 @@
</packages>
</osSpecific>
</osSpecifics>
-
- <configuration-dependencies>
- <config-type>storm-site</config-type>
- <config-type>global</config-type>
- </configuration-dependencies>
</application>
</metainfo>
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bc9561d5/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java b/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java
index acf6ecb..03c64d4 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/Component.java
@@ -29,12 +29,13 @@ public class Component {
String minInstanceCount;
String maxInstanceCount;
String autoStartOnFailure;
+ String appExports;
CommandScript commandScript;
- List<Export> exports;
+ List<ComponentExport> componentExports;
public Component() {
publishConfig = Boolean.FALSE.toString();
- exports = new ArrayList<Export>();
+ componentExports = new ArrayList<ComponentExport>();
}
public String getName() {
@@ -69,6 +70,14 @@ public class Component {
this.autoStartOnFailure = autoStartOnFailure;
}
+ public String getAppExports() {
+ return appExports;
+ }
+
+ public void setAppExports(String appExports) {
+ this.appExports = appExports;
+ }
+
public String getMinInstanceCount() {
return minInstanceCount;
}
@@ -93,12 +102,12 @@ public class Component {
this.commandScript = commandScript;
}
- public void addExport(Export export) {
- exports.add(export);
+ public void addComponentExport(ComponentExport export) {
+ componentExports.add(export);
}
- public List<Export> getExports() {
- return exports;
+ public List<ComponentExport> getComponentExports() {
+ return componentExports;
}
public Boolean getRequiresAutoRestart() {
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bc9561d5/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/ComponentExport.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/ComponentExport.java b/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/ComponentExport.java
new file mode 100644
index 0000000..a18854c
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/ComponentExport.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.slider.providers.agent.application.metadata;
+
+/**
+ *
+ */
+public class ComponentExport {
+ String name;
+ String value;
+
+ public ComponentExport() {
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb =
+ new StringBuilder("{");
+ sb.append(",\n\"name\": ").append(name);
+ sb.append(",\n\"value\": ").append(value);
+ sb.append('}');
+ return sb.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bc9561d5/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java b/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java
index ada5b83..4b91ff7 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java
@@ -60,10 +60,11 @@ public class MetainfoParser {
digester.addBeanPropertySetter("*/component/minInstanceCount");
digester.addBeanPropertySetter("*/component/maxInstanceCount");
digester.addBeanPropertySetter("*/component/autoStartOnFailure");
- digester.addObjectCreate("*/component/export", Export.class);
- digester.addBeanPropertySetter("*/component/export/name");
- digester.addBeanPropertySetter("*/component/export/value");
- digester.addSetNext("*/component/export", "addExport");
+ digester.addBeanPropertySetter("*/component/appExports");
+ digester.addObjectCreate("*/component/componentExport", ComponentExport.class);
+ digester.addBeanPropertySetter("*/component/componentExport/name");
+ digester.addBeanPropertySetter("*/component/componentExport/value");
+ digester.addSetNext("*/component/componentExport", "addComponentExport");
digester.addSetNext("*/component", "addComponent");
digester.addObjectCreate("*/commandScript", CommandScript.class);
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bc9561d5/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java
----------------------------------------------------------------------
diff --git a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java
index 20c16ff..1ea11a6 100644
--- a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java
+++ b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java
@@ -43,6 +43,7 @@ import org.apache.slider.core.launch.ContainerLauncher;
import org.apache.slider.providers.agent.application.metadata.Application;
import org.apache.slider.providers.agent.application.metadata.CommandOrder;
import org.apache.slider.providers.agent.application.metadata.Component;
+import org.apache.slider.providers.agent.application.metadata.ComponentExport;
import org.apache.slider.providers.agent.application.metadata.Export;
import org.apache.slider.providers.agent.application.metadata.ExportGroup;
import org.apache.slider.providers.agent.application.metadata.Metainfo;
@@ -138,6 +139,7 @@ public class TestAgentProviderService {
+ " <name>HBASE_MASTER</name>\n"
+ " <category>MASTER</category>\n"
+ " <autoStartOnFailure>true</autoStartOnFailure>\n"
+ + " <appExports>QuickLinks-JMX_Endpoint,QuickLinks-Master_Status</appExports>\n"
+ " <minInstanceCount>1</minInstanceCount>\n"
+ " <maxInstanceCount>2</maxInstanceCount>\n"
+ " <commandScript>\n"
@@ -155,16 +157,16 @@ public class TestAgentProviderService {
+ " <script>scripts/hbase_regionserver.py</script>\n"
+ " <scriptType>PYTHON</scriptType>\n"
+ " </commandScript>\n"
- + " <exports>\n"
- + " <export>\n"
+ + " <componentExports>\n"
+ + " <componentExport>\n"
+ " <name>PropertyA</name>\n"
+ " <value>${THIS_HOST}:${site.global.listen_port}</value>\n"
- + " </export>\n"
- + " <export>\n"
+ + " </componentExport>\n"
+ + " <componentExport>\n"
+ " <name>PropertyB</name>\n"
+ " <value>AConstant</value>\n"
- + " </export>\n"
- + " </exports>\n"
+ + " </componentExport>\n"
+ + " </componentExport>\n"
+ " </component>\n"
+ " </components>\n"
+ " <osSpecifics>\n"
@@ -496,7 +498,8 @@ public class TestAgentProviderService {
Assert.assertEquals(component.getMaxInstanceCount(), "2");
Assert.assertEquals(component.getCommandScript().getScript(), "scripts/hbase_master.py");
Assert.assertEquals(component.getCategory(), "MASTER");
- Assert.assertEquals(component.getExports().size(), 0);
+ Assert.assertEquals(component.getComponentExports().size(), 0);
+ Assert.assertEquals(component.getAppExports(), "QuickLinks-JMX_Endpoint,QuickLinks-Master_Status");
found++;
}
if (component.getName().equals("HBASE_REGIONSERVER")) {
@@ -506,9 +509,9 @@ public class TestAgentProviderService {
Assert.assertNull(component.getMaxInstanceCount());
Assert.assertEquals(component.getCommandScript().getScript(), "scripts/hbase_regionserver.py");
Assert.assertEquals(component.getCategory(), "SLAVE");
- Assert.assertEquals(component.getExports().size(), 2);
- List<Export> es = component.getExports();
- Export e = es.get(0);
+ Assert.assertEquals(component.getComponentExports().size(), 2);
+ List<ComponentExport> es = component.getComponentExports();
+ ComponentExport e = es.get(0);
Assert.assertEquals(e.getName(), "PropertyA");
Assert.assertEquals(e.getValue(), "${THIS_HOST}:${site.global.listen_port}");
e = es.get(1);
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/bc9561d5/slider-core/src/test/resources/org/apache/slider/providers/agent/application/metadata/metainfo.xml
----------------------------------------------------------------------
diff --git a/slider-core/src/test/resources/org/apache/slider/providers/agent/application/metadata/metainfo.xml b/slider-core/src/test/resources/org/apache/slider/providers/agent/application/metadata/metainfo.xml
index 3d24f96..d9004ad 100644
--- a/slider-core/src/test/resources/org/apache/slider/providers/agent/application/metadata/metainfo.xml
+++ b/slider-core/src/test/resources/org/apache/slider/providers/agent/application/metadata/metainfo.xml
@@ -22,11 +22,67 @@
<name>STORM</name>
<comment>Apache Hadoop Stream processing framework</comment>
<version>0.9.1.2.1</version>
+ <exportedConfigs>storm-site</exportedConfigs>
+
+ <exportGroups>
+ <exportGroup>
+ <name>QuickLinks</name>
+ <exports>
+ <export>
+ <name>app.jmx</name>
+ <value>http://${STORM_REST_API_HOST}:${site.global.rest_api_port}/api/cluster/summary</value>
+ </export>
+ <export>
+ <name>app.monitor</name>
+ <value>http://${STORM_UI_SERVER_HOST}:${site.storm-site.ui.port}</value>
+ </export>
+ <export>
+ <name>app.metrics</name>
+ <value>http://${site.global.ganglia_server_host}/cgi-bin/rrd.py?c=${site.global.ganglia_server_id}</value>
+ </export>
+ <export>
+ <name>ganglia.ui</name>
+ <value>http://${site.global.ganglia_server_host}/ganglia?c=${site.global.ganglia_server_id}</value>
+ </export>
+ <export>
+ <name>nimbus.url</name>
+ <value>http://${NIMBUS_HOST}:${site.storm-site.nimbus.thrift.port}</value>
+ </export>
+ </exports>
+ </exportGroup>
+ </exportGroups>
+
+ <commandOrders>
+ <commandOrder>
+ <command>NIMBUS-START</command>
+ <requires>SUPERVISOR-INSTALLED,STORM_UI_SERVER-INSTALLED,DRPC_SERVER-INSTALLED,STORM_REST_API-INSTALLED
+ </requires>
+ </commandOrder>
+ <commandOrder>
+ <command>SUPERVISOR-START</command>
+ <requires>NIMBUS-STARTED</requires>
+ </commandOrder>
+ <commandOrder>
+ <command>DRPC_SERVER-START</command>
+ <requires>NIMBUS-STARTED</requires>
+ </commandOrder>
+ <commandOrder>
+ <command>STORM_REST_API-START</command>
+ <requires>NIMBUS-STARTED,DRPC_SERVER-STARTED,STORM_UI_SERVER-STARTED</requires>
+ </commandOrder>
+ <commandOrder>
+ <command>STORM_UI_SERVER-START</command>
+ <requires>NIMBUS-STARTED</requires>
+ </commandOrder>
+ </commandOrders>
+
<components>
<component>
<name>NIMBUS</name>
<category>MASTER</category>
+ <autoStartOnFailure>true</autoStartOnFailure>
+ <appExports>QuickLinks-nimbus.url,QuickLinks-ganglia.ui,QuickLinks-app.metrics</appExports>
<commandScript>
<script>scripts/nimbus.py</script>
<scriptType>PYTHON</scriptType>
@@ -37,6 +93,8 @@
<component>
<name>STORM_REST_API</name>
<category>MASTER</category>
+ <autoStartOnFailure>true</autoStartOnFailure>
+ <appExports>QuickLinks-app.jmx</appExports>
<commandScript>
<script>scripts/rest_api.py</script>
<scriptType>PYTHON</scriptType>
@@ -47,6 +105,13 @@
<component>
<name>SUPERVISOR</name>
<category>SLAVE</category>
+ <autoStartOnFailure>true</autoStartOnFailure>
+ <componentExports>
+ <componentExport>
+ <name>log_viewer_port</name>
+ <value>${THIS_HOST}:${site.storm-site.logviewer.port}</value>
+ </componentExport>
+ </componentExports>
<commandScript>
<script>scripts/supervisor.py</script>
<scriptType>PYTHON</scriptType>
@@ -57,6 +122,9 @@
<component>
<name>STORM_UI_SERVER</name>
<category>MASTER</category>
+ <publishConfig>true</publishConfig>
+ <appExports>QuickLinks-app.monitor</appExports>
+ <autoStartOnFailure>true</autoStartOnFailure>
<commandScript>
<script>scripts/ui_server.py</script>
<scriptType>PYTHON</scriptType>
@@ -67,6 +135,7 @@
<component>
<name>DRPC_SERVER</name>
<category>MASTER</category>
+ <autoStartOnFailure>true</autoStartOnFailure>
<commandScript>
<script>scripts/drpc_server.py</script>
<scriptType>PYTHON</scriptType>
@@ -86,10 +155,5 @@
</packages>
</osSpecific>
</osSpecifics>
-
- <configuration-dependencies>
- <config-type>storm-site</config-type>
- <config-type>global</config-type>
- </configuration-dependencies>
</application>
</metainfo>
[4/4] git commit: Merge branch 'feature/SLIDER-324_Refactor_Exports'
into develop
Posted by sm...@apache.org.
Merge branch 'feature/SLIDER-324_Refactor_Exports' into develop
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/72daf371
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/72daf371
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/72daf371
Branch: refs/heads/develop
Commit: 72daf3713141c6d17dd1e3aad5bb85c2a76c4e96
Parents: 8050466 14b54a7
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Sun Aug 17 14:16:04 2014 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Sun Aug 17 14:16:04 2014 -0700
----------------------------------------------------------------------
app-packages/accumulo/metainfo.xml | 3 +-
app-packages/hbase/appConfig.json | 1 +
app-packages/hbase/metainfo.xml | 30 ++-
app-packages/hbase/pom.xml | 2 +-
app-packages/storm/metainfo.xml | 28 +--
.../providers/agent/AgentProviderService.java | 216 +++++++++++--------
.../agent/application/metadata/Component.java | 21 +-
.../application/metadata/ComponentExport.java | 54 +++++
.../application/metadata/MetainfoParser.java | 9 +-
.../agent/TestAgentProviderService.java | 55 +++--
.../metadata/MetainfoParserTest.java | 59 -----
.../metadata/TestMetainfoParser.java | 63 ++++++
.../agent/application/metadata/metainfo.xml | 74 ++++++-
13 files changed, 411 insertions(+), 204 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/72daf371/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
----------------------------------------------------------------------
[2/4] git commit: SLIDER-324. Exports should be attributed to
individual master components rather than only one master component
Posted by sm...@apache.org.
SLIDER-324. Exports should be attributed to individual master components rather than only one master component
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/2a25ab91
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/2a25ab91
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/2a25ab91
Branch: refs/heads/develop
Commit: 2a25ab9192bc96a2f6f4409f9eea916e94c9484c
Parents: bc9561d
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Fri Aug 15 17:18:52 2014 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Fri Aug 15 17:18:52 2014 -0700
----------------------------------------------------------------------
app-packages/storm/metainfo.xml | 4 +-
.../providers/agent/AgentProviderService.java | 216 +++++++++++--------
.../application/metadata/MetainfoParser.java | 8 +-
.../agent/TestAgentProviderService.java | 34 ++-
.../metadata/MetainfoParserTest.java | 59 -----
.../metadata/TestMetainfoParser.java | 63 ++++++
6 files changed, 221 insertions(+), 163 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2a25ab91/app-packages/storm/metainfo.xml
----------------------------------------------------------------------
diff --git a/app-packages/storm/metainfo.xml b/app-packages/storm/metainfo.xml
index d9004ad..dbe8549 100644
--- a/app-packages/storm/metainfo.xml
+++ b/app-packages/storm/metainfo.xml
@@ -45,7 +45,7 @@
<value>http://${site.global.ganglia_server_host}/ganglia?c=${site.global.ganglia_server_id}</value>
</export>
<export>
- <name>nimbus.url</name>
+ <name>nimbus.host_port</name>
<value>http://${NIMBUS_HOST}:${site.storm-site.nimbus.thrift.port}</value>
</export>
</exports>
@@ -82,7 +82,7 @@
<name>NIMBUS</name>
<category>MASTER</category>
<autoStartOnFailure>true</autoStartOnFailure>
- <appExports>QuickLinks-nimbus.url,QuickLinks-ganglia.ui,QuickLinks-app.metrics</appExports>
+ <appExports>QuickLinks-nimbus.host_port,QuickLinks-ganglia.ui,QuickLinks-app.metrics</appExports>
<commandScript>
<script>scripts/nimbus.py</script>
<scriptType>PYTHON</scriptType>
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2a25ab91/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
index 91bc0a6..842f4f6 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
@@ -56,6 +56,7 @@ import org.apache.slider.providers.ProviderRole;
import org.apache.slider.providers.ProviderUtils;
import org.apache.slider.providers.agent.application.metadata.Application;
import org.apache.slider.providers.agent.application.metadata.Component;
+import org.apache.slider.providers.agent.application.metadata.ComponentExport;
import org.apache.slider.providers.agent.application.metadata.Export;
import org.apache.slider.providers.agent.application.metadata.ExportGroup;
import org.apache.slider.providers.agent.application.metadata.Metainfo;
@@ -137,6 +138,8 @@ public class AgentProviderService extends AbstractProviderService implements
new ConcurrentHashMap<String, ComponentInstanceState>();
private final Map<String, Map<String, String>> componentInstanceData =
new ConcurrentHashMap<String, Map<String, String>>();
+ private final Map<String, Map<String, String>> exportGroups =
+ new ConcurrentHashMap<String, Map<String, String>>();
private final Map<String, Map<String, String>> allocatedPorts =
new ConcurrentHashMap<String, Map<String, String>>();
private final Map<String, String> workFolders =
@@ -451,22 +454,8 @@ public class AgentProviderService extends AbstractProviderService implements
Boolean isMaster = isMaster(roleName);
ComponentInstanceState componentStatus = getComponentStatuses().get(label);
componentStatus.heartbeat(System.currentTimeMillis());
- // If no Master can explicitly publish then publish if its a master
- // Otherwise, wait till the master that can publish is ready
- if (isMaster &&
- (canAnyMasterPublishConfig() == false || canPublishConfig(roleName))) {
- publishConfigAndExportGroups(heartBeat, componentStatus);
- } else {
- // Ack that config has been reported
- List<ComponentStatus> statuses = heartBeat.getComponentStatus();
- if (statuses != null && !statuses.isEmpty()) {
- ComponentStatus status = statuses.get(0);
- if(status.getConfigs().size() > 0) {
- log.info("Config got reported by {} but discarded as component {} cannot publish.", label, roleName);
- componentStatus.setConfigReported(true);
- }
- }
- }
+
+ publishConfigAndExportGroups(heartBeat, componentStatus, roleName);
List<CommandReport> reports = heartBeat.getReports();
if (reports != null && !reports.isEmpty()) {
@@ -513,6 +502,7 @@ public class AgentProviderService extends AbstractProviderService implements
}
}
}
+
// if there is no outstanding command then retrieve config
if (isMaster && componentStatus.getState() == State.STARTED
&& command == Command.NOP) {
@@ -758,39 +748,60 @@ public class AgentProviderService extends AbstractProviderService implements
/**
* Process return status for component instances
+ *
* @param heartBeat
* @param componentStatus
*/
- protected void publishConfigAndExportGroups(HeartBeat heartBeat, ComponentInstanceState componentStatus) {
+ protected void publishConfigAndExportGroups(
+ HeartBeat heartBeat, ComponentInstanceState componentStatus, String roleName) {
List<ComponentStatus> statuses = heartBeat.getComponentStatus();
if (statuses != null && !statuses.isEmpty()) {
log.info("Processing {} status reports.", statuses.size());
- Application application = getMetainfo().getApplication();
- List<ExportGroup> exportGroups = application.getExportGroups();
- boolean hasExportGroups = exportGroups != null && !exportGroups.isEmpty();
- Set<String> exportedConfigs = new HashSet();
- String exportedConfigsStr = application.getExportedConfigs();
- boolean exportedAllConfigs = exportedConfigsStr == null || exportedConfigsStr.isEmpty();
- if (application.getExportedConfigs() != null && application.getExportedConfigs().length() > 0) {
- for (String exportedConfig : application.getExportedConfigs().split(",")) {
- if (exportedConfig.trim().length() > 0) {
- exportedConfigs.add(exportedConfig.trim());
- }
- }
- }
-
for (ComponentStatus status : statuses) {
log.info("Status report: " + status.toString());
+
if (status.getConfigs() != null) {
- for (String key : status.getConfigs().keySet()) {
- if ((!exportedAllConfigs && exportedConfigs.contains(key)) ||
- exportedAllConfigs) {
- Map<String, String> configs = status.getConfigs().get(key);
- publishApplicationInstanceData(key, key, configs.entrySet());
+ Application application = getMetainfo().getApplication();
+
+ if (canAnyMasterPublishConfig() == false || canPublishConfig(roleName)) {
+ // If no Master can explicitly publish then publish if its a master
+ // Otherwise, wait till the master that can publish is ready
+
+ Set<String> exportedConfigs = new HashSet();
+ String exportedConfigsStr = application.getExportedConfigs();
+ boolean exportedAllConfigs = exportedConfigsStr == null || exportedConfigsStr.isEmpty();
+ if (!exportedAllConfigs) {
+ for (String exportedConfig : exportedConfigsStr.split(",")) {
+ if (exportedConfig.trim().length() > 0) {
+ exportedConfigs.add(exportedConfig.trim());
+ }
+ }
+ }
+
+ for (String key : status.getConfigs().keySet()) {
+ if ((!exportedAllConfigs && exportedConfigs.contains(key)) ||
+ exportedAllConfigs) {
+ Map<String, String> configs = status.getConfigs().get(key);
+ publishApplicationInstanceData(key, key, configs.entrySet());
+ }
}
}
- if (hasExportGroups) {
+ List<ExportGroup> exportGroups = application.getExportGroups();
+ boolean hasExportGroups = exportGroups != null && !exportGroups.isEmpty();
+
+ Set<String> appExports = new HashSet();
+ String appExportsStr = getApplicationComponent(roleName).getAppExports();
+ boolean hasNoAppExports = appExportsStr == null || appExportsStr.isEmpty();
+ if (!hasNoAppExports) {
+ for (String appExport : appExportsStr.split(",")) {
+ if (appExport.trim().length() > 0) {
+ appExports.add(appExport.trim());
+ }
+ }
+ }
+
+ if (hasExportGroups && appExports.size() > 0) {
String configKeyFormat = "${site.%s.%s}";
String hostKeyFormat = "${%s_HOST}";
@@ -809,33 +820,63 @@ public class AgentProviderService extends AbstractProviderService implements
}
}
+ Set<String> modifiedGroups = new HashSet<String>();
for (ExportGroup exportGroup : exportGroups) {
List<Export> exports = exportGroup.getExports();
if (exports != null && !exports.isEmpty()) {
String exportGroupName = exportGroup.getName();
- Map<String, String> map = new HashMap<String, String>();
+ Map<String, String> map = getCurrentExports(exportGroupName);
for (Export export : exports) {
- String value = export.getValue();
- // replace host names
- for (String token : replaceTokens.keySet()) {
- if (value.contains(token)) {
- value = value.replace(token, replaceTokens.get(token));
+ if (canBeExported(exportGroupName, export.getName(), appExports)) {
+ String value = export.getValue();
+ // replace host names
+ for (String token : replaceTokens.keySet()) {
+ if (value.contains(token)) {
+ value = value.replace(token, replaceTokens.get(token));
+ }
}
+ map.put(export.getName(), value);
+ log.info("Preparing to publish. Key {} and Value {}", export.getName(), value);
}
- map.put(export.getName(), value);
- log.info("Preparing to publish. Key {} and Value {}", export.getName(), value);
}
- publishApplicationInstanceData(exportGroupName, exportGroupName, map.entrySet());
+ modifiedGroups.add(exportGroupName);
}
}
+ publishModifiedExportGroups(modifiedGroups);
}
- log.info("Received and stored config for {}", heartBeat.getHostname());
+
+ log.info("Received and processed config for {}", heartBeat.getHostname());
componentStatus.setConfigReported(true);
+
}
}
}
}
+ private boolean canBeExported(String exportGroupName, String name, Set<String> appExports) {
+ return appExports.contains(String.format("%s-%s", exportGroupName, name));
+ }
+
+ protected Map<String, String> getCurrentExports(String groupName) {
+ if(!this.exportGroups.containsKey(groupName)) {
+ synchronized (this.exportGroups) {
+ if(!this.exportGroups.containsKey(groupName)) {
+ this.exportGroups.put(groupName, new ConcurrentHashMap<String, String>());
+ }
+ }
+ }
+
+ return this.exportGroups.get(groupName);
+ }
+
+ private void publishModifiedExportGroups(Set<String> modifiedGroups) {
+ synchronized (this.exportGroups) {
+ for(String groupName : modifiedGroups) {
+ publishApplicationInstanceData(groupName, groupName, this.exportGroups.get(groupName).entrySet());
+ }
+ }
+ }
+
/** Publish component instance specific data if the component demands it */
protected void processAndPublishComponentSpecificData(Map<String, String> ports,
String containerId,
@@ -848,9 +889,9 @@ public class AgentProviderService extends AbstractProviderService implements
Application application = getMetainfo().getApplication();
for (Component component : application.getComponents()) {
if (component.getName().equals(roleName)) {
- if (component.getExports().size() > 0) {
+ if (component.getComponentExports().size() > 0) {
- for (Export export : component.getExports()) {
+ for (ComponentExport export : component.getComponentExports()) {
String templateToExport = export.getValue();
for (String portName : ports.keySet()) {
boolean publishData = false;
@@ -901,26 +942,37 @@ public class AgentProviderService extends AbstractProviderService implements
}
/**
- * Extract script path from the application metainfo
- *
+ * Return Component based on name
* @param roleName
- *
* @return
*/
- protected String getScriptPathFromMetainfo(String roleName) {
- String scriptPath = null;
+ protected Component getApplicationComponent(String roleName) {
Application application = getMetainfo().getApplication();
if (application == null) {
log.error("Malformed app definition: Expect application as the top level element for metainfo.xml");
- return scriptPath;
- }
- for (Component component : application.getComponents()) {
- if (component.getName().equals(roleName)) {
- scriptPath = component.getCommandScript().getScript();
- break;
+ } else {
+ for (Component component : application.getComponents()) {
+ if (component.getName().equals(roleName)) {
+ return component;
+ }
}
}
- return scriptPath;
+ return null;
+ }
+
+ /**
+ * Extract script path from the application metainfo
+ *
+ * @param roleName
+ *
+ * @return
+ */
+ protected String getScriptPathFromMetainfo(String roleName) {
+ Component component = getApplicationComponent(roleName);
+ if (component != null) {
+ return component.getCommandScript().getScript();
+ }
+ return null;
}
/**
@@ -931,18 +983,10 @@ public class AgentProviderService extends AbstractProviderService implements
* @return
*/
protected boolean isMaster(String roleName) {
- Application application = getMetainfo().getApplication();
- if (application == null) {
- log.error("Malformed app definition: Expect application as the top level element for metainfo.xml");
- } else {
- for (Component component : application.getComponents()) {
- if (component.getName().equals(roleName)) {
- if (component.getCategory().equals("MASTER")) {
- return true;
- } else {
- return false;
- }
- }
+ Component component = getApplicationComponent(roleName);
+ if (component != null) {
+ if (component.getCategory().equals("MASTER")) {
+ return true;
}
}
return false;
@@ -956,34 +1000,24 @@ public class AgentProviderService extends AbstractProviderService implements
* @return
*/
protected boolean canPublishConfig(String roleName) {
- Application application = getMetainfo().getApplication();
- if (application == null) {
- log.error("Malformed app definition: Expect application as the top level element for metainfo.xml");
- } else {
- for (Component component : application.getComponents()) {
- if (component.getName().equals(roleName)) {
- return Boolean.TRUE.toString().equals(component.getPublishConfig());
- }
- }
+ Component component = getApplicationComponent(roleName);
+ if (component != null) {
+ return Boolean.TRUE.toString().equals(component.getPublishConfig());
}
return false;
}
/**
* Checks if the role is marked auto-restart
+ *
* @param roleName
+ *
* @return
*/
protected boolean isMarkedAutoRestart(String roleName) {
- Application application = getMetainfo().getApplication();
- if (application == null) {
- log.error("Malformed app definition: Expect application as the top level element for metainfo.xml");
- } else {
- for (Component component : application.getComponents()) {
- if (component.getName().equals(roleName)) {
- return component.getRequiresAutoRestart();
- }
- }
+ Component component = getApplicationComponent(roleName);
+ if (component != null) {
+ return component.getRequiresAutoRestart();
}
return false;
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2a25ab91/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java b/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java
index 4b91ff7..bc93d6f 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/agent/application/metadata/MetainfoParser.java
@@ -61,10 +61,10 @@ public class MetainfoParser {
digester.addBeanPropertySetter("*/component/maxInstanceCount");
digester.addBeanPropertySetter("*/component/autoStartOnFailure");
digester.addBeanPropertySetter("*/component/appExports");
- digester.addObjectCreate("*/component/componentExport", ComponentExport.class);
- digester.addBeanPropertySetter("*/component/componentExport/name");
- digester.addBeanPropertySetter("*/component/componentExport/value");
- digester.addSetNext("*/component/componentExport", "addComponentExport");
+ digester.addObjectCreate("*/componentExport", ComponentExport.class);
+ digester.addBeanPropertySetter("*/componentExport/name");
+ digester.addBeanPropertySetter("*/componentExport/value");
+ digester.addSetNext("*/componentExport", "addComponentExport");
digester.addSetNext("*/component", "addComponent");
digester.addObjectCreate("*/commandScript", CommandScript.class);
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2a25ab91/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java
----------------------------------------------------------------------
diff --git a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java
index 1ea11a6..6ed950f 100644
--- a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java
+++ b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java
@@ -136,8 +136,18 @@ public class TestAgentProviderService {
+ " </commandOrders>\n"
+ " <components>\n"
+ " <component>\n"
+ + " <name>HBASE_REST</name>\n"
+ + " <category>MASTER</category>\n"
+ + " <commandScript>\n"
+ + " <script>scripts/hbase_rest.py</script>\n"
+ + " <scriptType>PYTHON</scriptType>\n"
+ + " <timeout>600</timeout>\n"
+ + " </commandScript>\n"
+ + " </component>\n"
+ + " <component>\n"
+ " <name>HBASE_MASTER</name>\n"
+ " <category>MASTER</category>\n"
+ + " <publishConfig>true</publishConfig>\n"
+ " <autoStartOnFailure>true</autoStartOnFailure>\n"
+ " <appExports>QuickLinks-JMX_Endpoint,QuickLinks-Master_Status</appExports>\n"
+ " <minInstanceCount>1</minInstanceCount>\n"
@@ -166,7 +176,7 @@ public class TestAgentProviderService {
+ " <name>PropertyB</name>\n"
+ " <value>AConstant</value>\n"
+ " </componentExport>\n"
- + " </componentExport>\n"
+ + " </componentExports>\n"
+ " </component>\n"
+ " </components>\n"
+ " <osSpecifics>\n"
@@ -458,15 +468,15 @@ public class TestAgentProviderService {
doReturn(metainfo).when(mockAps).getMetainfo();
doReturn(roleClusterNodeMap).when(mockAps).getRoleClusterNodeMapping();
- mockAps.publishConfigAndExportGroups(hb, componentStatus);
- assert componentStatus.getConfigReported() == true;
+ mockAps.publishConfigAndExportGroups(hb, componentStatus, "HBASE_MASTER");
+ Assert.assertTrue(componentStatus.getConfigReported());
ArgumentCaptor<Collection> entriesCaptor = ArgumentCaptor.
forClass(Collection.class);
Mockito.verify(mockAps, Mockito.times(3)).publishApplicationInstanceData(
anyString(),
anyString(),
entriesCaptor.capture());
- assert entriesCaptor.getAllValues().size() == 3;
+ Assert.assertEquals(3, entriesCaptor.getAllValues().size());
for (Collection coll : entriesCaptor.getAllValues()) {
Set<Map.Entry<String, String>> entrySet = (Set<Map.Entry<String, String>>) coll;
for (Map.Entry entry : entrySet) {
@@ -476,6 +486,16 @@ public class TestAgentProviderService {
}
}
}
+
+ Map<String, String> exports = mockAps.getCurrentExports("QuickLinks");
+ Assert.assertEquals(2, exports.size());
+ Assert.assertEquals(exports.get("JMX_Endpoint"), "http://HOST1:60012/jmx");
+
+ mockAps.publishConfigAndExportGroups(hb, componentStatus, "HBASE_REST");
+ Mockito.verify(mockAps, Mockito.times(3)).publishApplicationInstanceData(
+ anyString(),
+ anyString(),
+ entriesCaptor.capture());
}
@Test
@@ -487,7 +507,7 @@ public class TestAgentProviderService {
log.info("Service: " + application.toString());
Assert.assertEquals(application.getName(), "HBASE");
Assert.assertEquals(application.getExportedConfigs(), "hbase-site,global");
- Assert.assertEquals(application.getComponents().size(), 2);
+ Assert.assertEquals(application.getComponents().size(), 3);
List<Component> components = application.getComponents();
int found = 0;
for (Component component : components) {
@@ -596,9 +616,9 @@ public class TestAgentProviderService {
Assert.assertTrue(mockAps.isMaster(role_hm));
Assert.assertFalse(mockAps.isMaster(role_hrs));
- Assert.assertFalse(mockAps.canPublishConfig(role_hm));
+ Assert.assertTrue(mockAps.canPublishConfig(role_hm));
Assert.assertFalse(mockAps.canPublishConfig(role_hrs));
- Assert.assertFalse(mockAps.canAnyMasterPublishConfig());
+ Assert.assertTrue(mockAps.canAnyMasterPublishConfig());
Assert.assertTrue(mockAps2.isMaster(role_hm));
Assert.assertFalse(mockAps2.isMaster(role_hrs));
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2a25ab91/slider-core/src/test/java/org/apache/slider/providers/agent/application/metadata/MetainfoParserTest.java
----------------------------------------------------------------------
diff --git a/slider-core/src/test/java/org/apache/slider/providers/agent/application/metadata/MetainfoParserTest.java b/slider-core/src/test/java/org/apache/slider/providers/agent/application/metadata/MetainfoParserTest.java
deleted file mode 100644
index 61c53df..0000000
--- a/slider-core/src/test/java/org/apache/slider/providers/agent/application/metadata/MetainfoParserTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.slider.providers.agent.application.metadata;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- *
- */
-public class MetainfoParserTest {
- protected static final Logger log =
- LoggerFactory.getLogger(MetainfoParserTest.class);
- public static final String METAINFO_XML =
- "/org/apache/slider/providers/agent/application/metadata/metainfo.xml";
-
- @Test
- public void testParse() throws IOException {
-
- InputStream resStream = this.getClass().getResourceAsStream(
- METAINFO_XML);
- MetainfoParser parser = new MetainfoParser();
- Metainfo metainfo = parser.parse(resStream);
- Assert.assertNotNull(metainfo);
- Assert.assertNotNull(metainfo.getApplication());
- Application application = metainfo.getApplication();
- assert "STORM".equals(application.getName());
- assert 5 == application.getComponents().size();
- OSPackage pkg = application.getOSSpecifics().get(0).getPackages().get(0);
- assert "tarball".equals(pkg.getType());
- assert "files/apache-storm-0.9.1.2.1.1.0-237.tar.gz".equals(pkg.getName());
- boolean found = false;
- for (Component comp : application.getComponents()) {
- if (comp != null && comp.getName().equals("NIMBUS")) {
- found = true;
- }
- }
- assert found;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/2a25ab91/slider-core/src/test/java/org/apache/slider/providers/agent/application/metadata/TestMetainfoParser.java
----------------------------------------------------------------------
diff --git a/slider-core/src/test/java/org/apache/slider/providers/agent/application/metadata/TestMetainfoParser.java b/slider-core/src/test/java/org/apache/slider/providers/agent/application/metadata/TestMetainfoParser.java
new file mode 100644
index 0000000..98f0afb
--- /dev/null
+++ b/slider-core/src/test/java/org/apache/slider/providers/agent/application/metadata/TestMetainfoParser.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.slider.providers.agent.application.metadata;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ *
+ */
+public class TestMetainfoParser {
+ protected static final Logger log =
+ LoggerFactory.getLogger(TestMetainfoParser.class);
+ public static final String METAINFO_XML =
+ "/org/apache/slider/providers/agent/application/metadata/metainfo.xml";
+
+ @Test
+ public void testParse() throws IOException {
+
+ InputStream resStream = this.getClass().getResourceAsStream(
+ METAINFO_XML);
+ MetainfoParser parser = new MetainfoParser();
+ Metainfo metainfo = parser.parse(resStream);
+ Assert.assertNotNull(metainfo);
+ Assert.assertNotNull(metainfo.getApplication());
+ Application application = metainfo.getApplication();
+ assert "STORM".equals(application.getName());
+ assert 5 == application.getComponents().size();
+ OSPackage pkg = application.getOSSpecifics().get(0).getPackages().get(0);
+ assert "tarball".equals(pkg.getType());
+ assert "files/apache-storm-0.9.1.2.1.1.0-237.tar.gz".equals(pkg.getName());
+ boolean found = false;
+ for (Component comp : application.getComponents()) {
+ if (comp != null && comp.getName().equals("NIMBUS")) {
+ found = true;
+ Assert.assertEquals(0, comp.getComponentExports().size());
+ }
+ if (comp != null && comp.getName().equals("SUPERVISOR")) {
+ Assert.assertEquals(1, comp.getComponentExports().size());
+ }
+ }
+ assert found;
+ }
+}
[3/4] git commit: SLIDER-324. Exports should be attributed to
individual master components rather than only one master component (app
changes)
Posted by sm...@apache.org.
SLIDER-324. Exports should be attributed to individual master components rather than only one master component (app changes)
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/14b54a75
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/14b54a75
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/14b54a75
Branch: refs/heads/develop
Commit: 14b54a75bed9f6e74e27b54c096cd1469b023b7c
Parents: 2a25ab9
Author: Sumit Mohanty <sm...@hortonworks.com>
Authored: Sun Aug 17 14:15:16 2014 -0700
Committer: Sumit Mohanty <sm...@hortonworks.com>
Committed: Sun Aug 17 14:15:16 2014 -0700
----------------------------------------------------------------------
app-packages/accumulo/metainfo.xml | 3 ++-
app-packages/hbase/appConfig.json | 1 +
app-packages/hbase/metainfo.xml | 30 ++++++++++++++++++++++--------
app-packages/hbase/pom.xml | 2 +-
4 files changed, 26 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/14b54a75/app-packages/accumulo/metainfo.xml
----------------------------------------------------------------------
diff --git a/app-packages/accumulo/metainfo.xml b/app-packages/accumulo/metainfo.xml
index 4cf6c79..b1aa9de 100644
--- a/app-packages/accumulo/metainfo.xml
+++ b/app-packages/accumulo/metainfo.xml
@@ -40,7 +40,7 @@
</value>
</export>
<export>
- <name>org.apache.slider.jmx</name>
+ <name>app.jmx</name>
<value>
${site.global.monitor_protocol}://${ACCUMULO_MONITOR_HOST}:${site.accumulo-site.monitor.port.client}/xml
</value>
@@ -85,6 +85,7 @@
<name>ACCUMULO_MONITOR</name>
<category>MASTER</category>
<publishConfig>true</publishConfig>
+ <appExports>QuickLinks-app.jmx,QuickLinks-org.apache.slider.monitor</appExports>
<commandScript>
<script>scripts/accumulo_monitor.py</script>
<scriptType>PYTHON</scriptType>
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/14b54a75/app-packages/hbase/appConfig.json
----------------------------------------------------------------------
diff --git a/app-packages/hbase/appConfig.json b/app-packages/hbase/appConfig.json
index 24d9a84..d00ae6d 100644
--- a/app-packages/hbase/appConfig.json
+++ b/app-packages/hbase/appConfig.json
@@ -25,6 +25,7 @@
"site.global.ganglia_server_id": "Application1",
"site.global.hbase_thrift_port": "${HBASE_THRIFT.ALLOCATED_PORT}",
"site.global.hbase_thrift2_port": "${HBASE_THRIFT2.ALLOCATED_PORT}",
+ "site.global.hbase_rest_port": "${HBASE_REST.ALLOCATED_PORT}",
"site.hbase-site.hbase.hstore.flush.retries.number": "120",
"site.hbase-site.hbase.client.keyvalue.maxsize": "10485760",
"site.hbase-site.hbase.hstore.compactionThreshold": "3",
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/14b54a75/app-packages/hbase/metainfo.xml
----------------------------------------------------------------------
diff --git a/app-packages/hbase/metainfo.xml b/app-packages/hbase/metainfo.xml
index a5dab0c..aae048d 100644
--- a/app-packages/hbase/metainfo.xml
+++ b/app-packages/hbase/metainfo.xml
@@ -53,11 +53,11 @@
<value>http://${HBASE_THRIFT_HOST}:${site.global.hbase_thrift_port}</value>
</export>
<export>
- <name>org.apache.slider.metrics</name>
+ <name>app.metrics</name>
<value>http://${site.global.ganglia_server_host}/cgi-bin/rrd.py?c=${site.global.ganglia_server_id}</value>
</export>
<export>
- <name>org.apache.slider.ganglia</name>
+ <name>app.ganglia</name>
<value>http://${site.global.ganglia_server_host}/ganglia?c=${site.global.ganglia_server_id}</value>
</export>
</exports>
@@ -81,6 +81,17 @@
<category>MASTER</category>
<minInstanceCount>1</minInstanceCount>
<maxInstanceCount>2</maxInstanceCount>
+ <appExports>QuickLinks-org.apache.slider.jmx,QuickLinks-org.apache.slider.monitor,QuickLinks-app.metrics,QuickLinks-app.ganglia</appExports>
+ <componentExports>
+ <componentExport>
+ <name>app.jmx</name>
+ <value>${THIS_HOST}:${site.hbase-site.hbase.master.info.port}/jmx</value>
+ </componentExport>
+ <componentExport>
+ <name>app.monitor</name>
+ <value>${THIS_HOST}:${site.hbase-site.hbase.master.info.port}/master-status</value>
+ </componentExport>
+ </componentExports>
<commandScript>
<script>scripts/hbase_master.py</script>
<scriptType>PYTHON</scriptType>
@@ -100,8 +111,9 @@
<component>
<name>HBASE_REST</name>
- <category>SLAVE</category>
- <minInstanceCount>1</minInstanceCount>
+ <category>MASTER</category>
+ <minInstanceCount>0</minInstanceCount>
+ <appExports>QuickLinks-org.apache.slider.hbase.rest</appExports>
<commandScript>
<script>scripts/hbase_rest.py</script>
<scriptType>PYTHON</scriptType>
@@ -110,8 +122,9 @@
<component>
<name>HBASE_THRIFT</name>
- <category>SLAVE</category>
- <minInstanceCount>1</minInstanceCount>
+ <category>MASTER</category>
+ <minInstanceCount>0</minInstanceCount>
+ <appExports>QuickLinks-org.apache.slider.hbase.thrift</appExports>
<commandScript>
<script>scripts/hbase_thrift.py</script>
<scriptType>PYTHON</scriptType>
@@ -120,8 +133,9 @@
<component>
<name>HBASE_THRIFT2</name>
- <category>SLAVE</category>
- <minInstanceCount>1</minInstanceCount>
+ <category>MASTER</category>
+ <minInstanceCount>0</minInstanceCount>
+ <appExports>QuickLinks-org.apache.slider.hbase.thrift2</appExports>
<commandScript>
<script>scripts/hbase_thrift2.py</script>
<scriptType>PYTHON</scriptType>
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/14b54a75/app-packages/hbase/pom.xml
----------------------------------------------------------------------
diff --git a/app-packages/hbase/pom.xml b/app-packages/hbase/pom.xml
index 4450f8b..7dede6c 100644
--- a/app-packages/hbase/pom.xml
+++ b/app-packages/hbase/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.apache.slider</groupId>
<artifactId>slider</artifactId>
- <version>0.31.0-incubating-SNAPSHOT</version>
+ <version>0.41.0-incubating-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>