Repository: ambari Updated Branches: refs/heads/trunk 46fdf5cd2 -> 13797a000
AMBARI-5988 Stack extension does not work for monitoringService service property (dsen) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/13797a00 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/13797a00 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/13797a00 Branch: refs/heads/trunk Commit: 13797a0007f5bfa8e9ea5fcf609c426b8f3f59f5 Parents: 46fdf5c Author: Dmitry Sen <[email protected]> Authored: Mon Jun 2 19:36:38 2014 +0300 Committer: Dmitry Sen <[email protected]> Committed: Mon Jun 2 19:37:00 2014 +0300 ---------------------------------------------------------------------- .../server/api/services/AmbariMetaInfo.java | 3 +- .../server/api/util/StackExtensionHelper.java | 4 + .../apache/ambari/server/state/ServiceInfo.java | 13 +- .../api/util/StackExtensionHelperTest.java | 51 +++++-- .../HDP/2.0.6/services/NAGIOS/metainfo.xml | 137 +++++++++++++++++++ .../HDP/2.0.7/services/NAGIOS/metainfo.xml | 136 ++++++++++++++++++ 6 files changed, 331 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/13797a00/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java index fc113f4..3675b6a 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java @@ -561,7 +561,8 @@ public class AmbariMetaInfo { List<String> monitoringServices = new ArrayList<String>(); for (ServiceInfo service : getSupportedServices(stackName, version)) { - if (service.isMonitoringService()) { + if ((service.isMonitoringService() != null) && + service.isMonitoringService()) { monitoringServices.add(service.getName()); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/13797a00/ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java index 910de1d..5700ccf 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java @@ -140,6 +140,10 @@ public class StackExtensionHelper { (childService.isRestartRequiredAfterChange() != null) ? childService.isRestartRequiredAfterChange() : parentService.isRestartRequiredAfterChange()); + mergedServiceInfo.setMonitoringService( + (childService.isMonitoringService() != null) + ? childService.isMonitoringService() + : parentService.isMonitoringService()); Map<String, ServiceOsSpecific> osSpecific = childService.getOsSpecifics(); if (! osSpecific.isEmpty()) { http://git-wip-us.apache.org/repos/asf/ambari/blob/13797a00/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java index 2a6de41..7faa046 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java @@ -59,8 +59,7 @@ public class ServiceInfo { private List<String> configDependencies; @JsonIgnore - @XmlElement(defaultValue = "false") - private boolean monitoringService; + private Boolean monitoringService; @JsonIgnore @XmlElement(name = "restartRequiredAfterChange") @@ -395,11 +394,17 @@ public class ServiceInfo { return configDir; } - public boolean isMonitoringService() { + /** + * @return whether the service is a monitoring service + */ + public Boolean isMonitoringService() { return monitoringService; } - public void setMonitoringService(boolean monitoringService) { + /** + * @param monitoringService whether the service is a monitoring service + */ + public void setMonitoringService(Boolean monitoringService) { this.monitoringService = monitoringService; } } http://git-wip-us.apache.org/repos/asf/ambari/blob/13797a00/ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java index cedcb11..31fa37f 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java @@ -19,7 +19,6 @@ package org.apache.ambari.server.api.util; import org.apache.ambari.server.api.services.AmbariMetaInfo; -import org.apache.ambari.server.api.services.AmbariMetaInfoTest.MockModule; import org.apache.ambari.server.metadata.ActionMetadata; import org.apache.ambari.server.state.*; @@ -30,7 +29,6 @@ import java.util.Map; import static org.junit.Assert.*; -import org.junit.Before; import org.junit.Test; import com.google.inject.AbstractModule; @@ -41,11 +39,7 @@ public class StackExtensionHelperTest { private final String stackRootStr = "./src/test/resources/stacks/". replaceAll("/", File.separator); - private final String hBaseDirStr = stackRootStr + "services/HBASE/". - replaceAll("/", File.separator); - private final String yarnDirStr = stackRootStr + "services/YARN/". - replaceAll("/", File.separator); - + private Injector injector = Guice.createInjector(new MockModule()); @@ -69,7 +63,7 @@ public class StackExtensionHelperTest { StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot); helper.populateServicesForStack(stackInfo); List<ServiceInfo> services = stackInfo.getServices(); - assertEquals(7, services.size()); + assertEquals(8, services.size()); for (ServiceInfo serviceInfo : services) { if (serviceInfo.getName().equals("HIVE")) { // Check old-style service @@ -203,6 +197,7 @@ public class StackExtensionHelperTest { if (!serviceInfo.getName().equals("YARN") && !serviceInfo.getName().equals("HDFS") && !serviceInfo.getName().equals("MAPREDUCE2") && + !serviceInfo.getName().equals("NAGIOS") && !serviceInfo.getName().equals("SQOOP")) { fail("Unknown service"); } @@ -211,6 +206,46 @@ public class StackExtensionHelperTest { } @Test + public void testPropertyInheritance() throws Exception{ + File stackRoot = new File(stackRootStr); + StackInfo stackInfo = new StackInfo(); + stackInfo.setName("HDP"); + stackInfo.setVersion("2.0.7"); + StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot); + helper.populateServicesForStack(stackInfo); + helper.fillInfo(); + List<ServiceInfo> allServices = helper.getAllApplicableServices(stackInfo); + assertEquals(13, allServices.size()); + for (ServiceInfo serviceInfo : allServices) { + if (serviceInfo.getName().equals("NAGIOS")) { + assertTrue(serviceInfo.isMonitoringService()); + } else { + assertNull(serviceInfo.isMonitoringService()); + } + } + } + + @Test + public void testPropertyInheritance() throws Exception{ + File stackRoot = new File(stackRootStr); + StackInfo stackInfo = new StackInfo(); + stackInfo.setName("HDP"); + stackInfo.setVersion("2.0.7"); + StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot); + helper.populateServicesForStack(stackInfo); + helper.fillInfo(); + List<ServiceInfo> allServices = helper.getAllApplicableServices(stackInfo); + assertEquals(13, allServices.size()); + for (ServiceInfo serviceInfo : allServices) { + if (serviceInfo.getName().equals("NAGIOS")) { + assertTrue(serviceInfo.isMonitoringService()); + } else { + assertNull(serviceInfo.isMonitoringService()); + } + } + } + + @Test public void getSchemaVersion() throws Exception { File stackRoot = new File(stackRootStr); StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot); http://git-wip-us.apache.org/repos/asf/ambari/blob/13797a00/ambari-server/src/test/resources/stacks/HDP/2.0.6/services/NAGIOS/metainfo.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.6/services/NAGIOS/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.6/services/NAGIOS/metainfo.xml new file mode 100644 index 0000000..a097d47 --- /dev/null +++ b/ambari-server/src/test/resources/stacks/HDP/2.0.6/services/NAGIOS/metainfo.xml @@ -0,0 +1,137 @@ +<?xml version="1.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. +--> +<metainfo> + <schemaVersion>2.0</schemaVersion> + <services> + <service> + <name>NAGIOS</name> + <comment>Nagios Monitoring and Alerting system</comment> + <version>3.5.0</version> + <components> + <component> + <name>NAGIOS_SERVER</name> + <category>MASTER</category> + <cardinality>1</cardinality> + <dependencies> + <dependency> + <name>HDFS/HDFS_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>MAPREDUCE2/MAPREDUCE2_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>OOZIE/OOZIE_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>YARN/YARN_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>TEZ/TEZ_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>HCATALOG/HCAT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + </dependencies> + <commandScript> + <script>scripts/nagios_server.py</script> + <scriptType>PYTHON</scriptType> + <timeout>600</timeout> + </commandScript> + </component> + </components> + <osSpecifics> + <osSpecific> + <osFamily>any</osFamily> + <packages> + <package> + <name>perl</name> + </package> + <package> + <name>nagios-plugins-1.4.9</name> + </package> + <package> + <name>nagios-3.5.0-99</name> + </package> + <package> + <name>nagios-www-3.5.0-99</name> + </package> + <package> + <name>nagios-devel-3.5.0-99</name> + </package> + <package> + <name>fping</name> + </package> + <package> + <name>hdp_mon_nagios_addons</name> + </package> + </packages> + </osSpecific> + <osSpecific> + <osFamily>suse11</osFamily> + <packages> + <package> + <name>php5-json</name> + </package> + <package> + <name>apache2?mod_php*</name> + </package> + <package> + <name>php-curl</name> + </package> + </packages> + </osSpecific> + <osSpecific> + <osFamily>redhat5</osFamily> + <packages> + <package> + <name>php-pecl-json.x86_64</name> + </package> + </packages> + </osSpecific> + </osSpecifics> + <configuration-dependencies> + <config-type>global</config-type> + </configuration-dependencies> + <monitoringService>true</monitoringService> + </service> + </services> +</metainfo> http://git-wip-us.apache.org/repos/asf/ambari/blob/13797a00/ambari-server/src/test/resources/stacks/HDP/2.0.7/services/NAGIOS/metainfo.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.7/services/NAGIOS/metainfo.xml b/ambari-server/src/test/resources/stacks/HDP/2.0.7/services/NAGIOS/metainfo.xml new file mode 100644 index 0000000..f9cd4ed --- /dev/null +++ b/ambari-server/src/test/resources/stacks/HDP/2.0.7/services/NAGIOS/metainfo.xml @@ -0,0 +1,136 @@ +<?xml version="1.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. +--> +<metainfo> + <schemaVersion>2.0</schemaVersion> + <services> + <service> + <name>NAGIOS</name> + <comment>Nagios Monitoring and Alerting system</comment> + <version>3.5.0</version> + <components> + <component> + <name>NAGIOS_SERVER</name> + <category>MASTER</category> + <cardinality>1</cardinality> + <dependencies> + <dependency> + <name>HDFS/HDFS_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>MAPREDUCE2/MAPREDUCE2_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>OOZIE/OOZIE_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>YARN/YARN_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>TEZ/TEZ_CLIENT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + <dependency> + <name>HCATALOG/HCAT</name> + <scope>host</scope> + <auto-deploy> + <enabled>true</enabled> + </auto-deploy> + </dependency> + </dependencies> + <commandScript> + <script>scripts/nagios_server.py</script> + <scriptType>PYTHON</scriptType> + <timeout>600</timeout> + </commandScript> + </component> + </components> + <osSpecifics> + <osSpecific> + <osFamily>any</osFamily> + <packages> + <package> + <name>perl</name> + </package> + <package> + <name>nagios-plugins-1.4.9</name> + </package> + <package> + <name>nagios-3.5.0-99</name> + </package> + <package> + <name>nagios-www-3.5.0-99</name> + </package> + <package> + <name>nagios-devel-3.5.0-99</name> + </package> + <package> + <name>fping</name> + </package> + <package> + <name>hdp_mon_nagios_addons</name> + </package> + </packages> + </osSpecific> + <osSpecific> + <osFamily>suse11</osFamily> + <packages> + <package> + <name>php5-json</name> + </package> + <package> + <name>apache2?mod_php*</name> + </package> + <package> + <name>php-curl</name> + </package> + </packages> + </osSpecific> + <osSpecific> + <osFamily>redhat5</osFamily> + <packages> + <package> + <name>php-pecl-json.x86_64</name> + </package> + </packages> + </osSpecific> + </osSpecifics> + <configuration-dependencies> + <config-type>global</config-type> + </configuration-dependencies> + </service> + </services> +</metainfo>
