Repository: ambari Updated Branches: refs/heads/trunk cc14719c7 -> 9eed34e7b
AMBARI-18679. Create HOST_ORDERED Upgrade Pack (ncole) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ba526d9a Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ba526d9a Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ba526d9a Branch: refs/heads/trunk Commit: ba526d9a2cfbb84ce03787fde5e3cf740950dc18 Parents: 70d8da7 Author: Nate Cole <[email protected]> Authored: Wed Oct 26 11:24:50 2016 -0400 Committer: Nate Cole <[email protected]> Committed: Thu Oct 27 10:02:21 2016 -0400 ---------------------------------------------------------------------- .../server/state/stack/upgrade/Grouping.java | 4 +- .../state/stack/upgrade/HostOrderGrouping.java | 70 +++ .../server/state/stack/upgrade/UpgradeType.java | 9 +- .../HDP/2.5/upgrades/host-ordered-upgrade.xml | 595 +++++++++++++++++++ .../src/main/resources/upgrade-pack.xsd | 9 + .../server/state/stack/UpgradePackTest.java | 16 + .../upgrades/upgrade_test_host_ordered.xml | 79 +++ 7 files changed, 780 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/ba526d9a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java index be1f469..49149e6 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java @@ -42,7 +42,9 @@ import org.apache.commons.lang.StringUtils; /** * */ -@XmlSeeAlso(value = { ColocatedGrouping.class, ClusterGrouping.class, UpdateStackGrouping.class, ServiceCheckGrouping.class, RestartGrouping.class, StartGrouping.class, StopGrouping.class }) +@XmlSeeAlso(value = { ColocatedGrouping.class, ClusterGrouping.class, + UpdateStackGrouping.class, ServiceCheckGrouping.class, RestartGrouping.class, + StartGrouping.class, StopGrouping.class, HostOrderGrouping.class }) public class Grouping { @XmlAttribute(name="name") http://git-wip-us.apache.org/repos/asf/ambari/blob/ba526d9a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/HostOrderGrouping.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/HostOrderGrouping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/HostOrderGrouping.java new file mode 100644 index 0000000..9c75344 --- /dev/null +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/HostOrderGrouping.java @@ -0,0 +1,70 @@ +/** + * 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.ambari.server.state.stack.upgrade; + +import java.util.List; +import java.util.Map; + +import javax.xml.bind.annotation.XmlType; + +import org.apache.ambari.server.stack.HostsType; +import org.apache.ambari.server.state.UpgradeContext; +import org.apache.ambari.server.state.stack.UpgradePack.ProcessingComponent; + +/** + * Marker group for Host-Ordered upgrades. + */ +@XmlType(name="host-order") +public class HostOrderGrouping extends Grouping { + + /** + * Constructor + */ + public HostOrderGrouping() { + } + + @Override + public StageWrapperBuilder getBuilder() { + return new HostBuilder(this); + } + + /** + * Builder for host upgrades. + */ + private static class HostBuilder extends StageWrapperBuilder { + /** + * @param grouping the grouping + */ + protected HostBuilder(HostOrderGrouping grouping) { + super(grouping); + } + + @Override + public void add(UpgradeContext upgradeContext, HostsType hostsType, String service, + boolean clientOnly, ProcessingComponent pc, Map<String, String> params) { + + } + + @Override + public List<StageWrapper> build(UpgradeContext upgradeContext, + List<StageWrapper> stageWrappers) { + return null; + } + } + +} http://git-wip-us.apache.org/repos/asf/ambari/blob/ba526d9a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/UpgradeType.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/UpgradeType.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/UpgradeType.java index ff31008..63cac87 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/UpgradeType.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/UpgradeType.java @@ -37,5 +37,12 @@ public enum UpgradeType { */ @XmlEnumValue("NON_ROLLING") @SerializedName("nonrolling_upgrade") - NON_ROLLING; + NON_ROLLING, + + /** + * Host-ordered upgrade. + */ + @XmlEnumValue("HOST_ORDERED") + @SerializedName("host_ordered_upgrade") + HOST_ORDERED; } http://git-wip-us.apache.org/repos/asf/ambari/blob/ba526d9a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/host-ordered-upgrade.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/host-ordered-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/host-ordered-upgrade.xml new file mode 100644 index 0000000..d41e986 --- /dev/null +++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/host-ordered-upgrade.xml @@ -0,0 +1,595 @@ +<?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. +--> + +<upgrade xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="upgrade-pack.xsd"> + <target>2.5.*.*</target> + <target-stack>HDP-2.5</target-stack> + <skip-failures>false</skip-failures> + <skip-service-check-failures>false</skip-service-check-failures> + <type>HOST_ORDERED</type> + <prerequisite-checks> + <!-- List of additional pre-req checks to run in addition to the required pre-reqs --> + <check>org.apache.ambari.server.checks.HiveMultipleMetastoreCheck</check> + <check>org.apache.ambari.server.checks.MapReduce2JobHistoryStatePreservingCheck</check> + <check>org.apache.ambari.server.checks.SecondaryNamenodeDeletedCheck</check> + <check>org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck</check> + <check>org.apache.ambari.server.checks.ServicesNamenodeHighAvailabilityCheck</check> + <check>org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck</check> + <check>org.apache.ambari.server.checks.ServicesYarnWorkPreservingCheck</check> + <check>org.apache.ambari.server.checks.YarnRMHighAvailabilityCheck</check> + <check>org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck</check> + + <configuration> + <!-- Configuration properties for all pre-reqs including required pre-reqs --> + <!--TODO: is it required? --> + <check-properties name="org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheck"> + <property name="min-failure-stack-version">HDP-2.3.0.0</property> + </check-properties> + </configuration> + </prerequisite-checks> + + <order> + <group xsi:type="cluster" name="PRE_CLUSTER" title="Prepare Upgrade"> + <direction>UPGRADE</direction> + <execute-stage service="HDFS" component="NAMENODE" title="Pre Upgrade HDFS"> + <task xsi:type="execute" hosts="master"> + <script>scripts/namenode.py</script> + <function>prepare_rolling_upgrade</function> + </task> + </execute-stage> + + <execute-stage service="TEZ" component="TEZ_CLIENT" title="Check Tez Tarball"> + <task xsi:type="execute" hosts="any"> + <script>scripts/pre_upgrade.py</script> + <function>prepare</function> + </task> + </execute-stage> + </group> + + <group xsi:type="cluster" name="PREPARE_BACKUPS" title="Prepare Backups"> + <direction>UPGRADE</direction> + <skippable>true</skippable> + <supports-auto-skip-failure>false</supports-auto-skip-failure> + + <execute-stage service="HBASE" component="HBASE_MASTER" title="Pre Upgrade HBase Backup"> + <task xsi:type="execute" hosts="master"> + <script>scripts/hbase_upgrade.py</script> + <function>take_snapshot</function> + </task> + </execute-stage> + + </group> + + <!-- + In a HOST_ORDERED upgrade, this placeholder group is expanded by the number of hosts passed + when creating the upgrade. For starters, this will include "stop" commands, a manual + verification task, and the "start" commands as indicated by the processing element. + If we get to the point where we need additional flexibility, it will get added at that time. + --> + <group xsi:type="host-order" name="HOST_ORDER" /> + + <!-- + After processing this group, the user-specified Kerberos descriptor will be updated to work with + the new stack-level Kerberos descriptor. + --> + <group xsi:type="cluster" name="UPDATE_KERBEROS_DESCRIPTORS" title="Update Kerberos Descriptors"> + <execute-stage title="Update the user-specified Kerberos descriptor" service="" component=""> + <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.UpgradeUserKerberosDescriptor"/> + </execute-stage> + </group> + + <group xsi:type="cluster" name="FINALIZE_PRE_CHECK" title="Finalize {{direction.text.proper}} Pre-Check"> + <direction>UPGRADE</direction> + + <execute-stage title="Check Component Versions"> + <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.ComponentVersionCheckAction" /> + </execute-stage> + </group> + + <group xsi:type="cluster" name="POST_CLUSTER" title="Finalize {{direction.text.proper}}"> + <skippable>true</skippable> + <supports-auto-skip-failure>false</supports-auto-skip-failure> + + <execute-stage service="HDFS" component="NAMENODE" title="Execute HDFS Finalize"> + <task xsi:type="execute" hosts="master"> + <script>scripts/namenode.py</script> + <function>finalize_rolling_upgrade</function> + </task> + </execute-stage> + + <execute-stage title="Save Cluster State" service="" component=""> + <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction"> + </task> + </execute-stage> + </group> + </order> + + <processing> + <service name="ZOOKEEPER"> + <component name="ZOOKEEPER_SERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="ZOOKEEPER_CLIENT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="RANGER"> + <component name="RANGER_ADMIN"> + <pre-upgrade> + <task xsi:type="execute" hosts="all"> + <summary>Stop Ranger Admin</summary> + <script>scripts/ranger_admin.py</script> + <function>stop</function> + </task> + + <task xsi:type="execute" hosts="all"> + <script>scripts/ranger_admin.py</script> + <function>set_pre_start</function> + </task> + + <task xsi:type="execute" hosts="any"> + <summary>Upgrading Ranger database schema</summary> + <script>scripts/ranger_admin.py</script> + <function>setup_ranger_database</function> + </task> + + <task xsi:type="configure_function" hosts="all" /> + + <task xsi:type="execute" hosts="any"> + <summary>Applying Ranger java patches</summary> + <script>scripts/ranger_admin.py</script> + <function>setup_ranger_java_patches</function> + </task> + </pre-upgrade> + + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + + </component> + + <component name="RANGER_USERSYNC"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="RANGER_TAGSYNC"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="RANGER_KMS"> + <component name="RANGER_KMS_SERVER"> + <pre-upgrade> + <task xsi:type="execute" hosts="any" sequential="true"> + <summary>Upgrading Ranger KMS database schema</summary> + <script>scripts/kms_server.py</script> + <function>setup_ranger_kms_database</function> + </task> + </pre-upgrade> + + <pre-downgrade> + <task xsi:type="execute" hosts="any" sequential="true"> + <summary>Downgrading Ranger KMS database schema</summary> + <script>scripts/kms_server.py</script> + <function>setup_ranger_kms_database</function> + </task> + </pre-downgrade> + + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="KAFKA"> + <component name="KAFKA_BROKER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="HDFS"> + <component name="NAMENODE"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="DATANODE"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="NFS_GATEWAY"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="HDFS_CLIENT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="JOURNALNODE"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="ZKFC"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="SLIDER"> + <component name="SLIDER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="MAPREDUCE2"> + <component name="HISTORYSERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="MAPREDUCE2_CLIENT"> + <pre-upgrade> + <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath"> + <summary>Verifying LZO codec path for mapreduce</summary> + </task> + </pre-upgrade> + + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="YARN"> + <component name="APP_TIMELINE_SERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="RESOURCEMANAGER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="NODEMANAGER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="YARN_CLIENT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="HBASE"> + <component name="HBASE_MASTER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="HBASE_REGIONSERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="HBASE_CLIENT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="PHOENIX_QUERY_SERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="TEZ"> + <component name="TEZ_CLIENT"> + <pre-upgrade> + <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath"> + <summary>Verifying LZO codec path for Tez</summary> + </task> + </pre-upgrade> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="PIG"> + <component name="PIG"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="SQOOP"> + <component name="SQOOP"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="MAHOUT"> + <component name="MAHOUT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="HIVE"> + <component name="HIVE_METASTORE"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="HIVE_SERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="HIVE_SERVER_INTERACTIVE"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="WEBHCAT_SERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="HIVE_CLIENT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="HCAT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="SPARK"> + <component name="SPARK_JOBHISTORYSERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="SPARK_THRIFTSERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="LIVY_SERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="SPARK_CLIENT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="ZEPPELIN"> + <component name="ZEPPELIN_MASTER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="OOZIE"> + <component name="OOZIE_SERVER"> + <pre-upgrade> + <task xsi:type="execute" hosts="all" sequential="true"> + <summary>Shut down all Oozie servers</summary> + <script>scripts/oozie_server.py</script> + <function>stop</function> + </task> + + <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.OozieConfigCalculation"> + <summary>Adjusting Oozie properties</summary> + </task> + + <!-- It is extremely important that both of these tasks run on the exact same host. Hence, pick the first alphabetically. --> + <task xsi:type="configure_function" hosts="first" /> + + <task xsi:type="execute" hosts="first" sequential="true"> + <summary>Upgrading the Oozie database and creating a new sharelib</summary> + <script>scripts/oozie_server_upgrade.py</script> + <function>upgrade_oozie_database_and_sharelib</function> + </task> + </pre-upgrade> + + <pre-downgrade> + <task xsi:type="execute" hosts="all" sequential="true"> + <summary>Shut down all Oozie servers</summary> + <script>scripts/oozie_server.py</script> + <function>stop</function> + </task> + + <task xsi:type="execute" hosts="any" sequential="true"> + <summary>Create a new sharelib</summary> + <script>scripts/oozie_server_upgrade.py</script> + <function>create_sharelib</function> + </task> + </pre-downgrade> + + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="OOZIE_CLIENT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="FALCON"> + <component name="FALCON_SERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="FALCON_CLIENT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="KNOX"> + <component name="KNOX_GATEWAY"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="STORM"> + <component name="NIMBUS"> + <pre-upgrade> + <task xsi:type="configure" id="hdp_2_5_0_0_remove_empty_storm_topology_submission_notifier_plugin_class"/> + + <task xsi:type="configure" id="increase_storm_zookeeper_timeouts"/> + </pre-upgrade> + + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="SUPERVISOR"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="STORM_UI_SERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="DRPC_SERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="FLUME"> + <component name="FLUME_HANDLER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="ACCUMULO"> + <component name="ACCUMULO_MASTER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="ACCUMULO_MONITOR"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="ACCUMULO_GC"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="ACCUMULO_TRACER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="ACCUMULO_TSERVER"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + <component name="ACCUMULO_CLIENT"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + </service> + + <service name="ATLAS"> + <component name="ATLAS_SERVER"> + <upgrade> + <task xsi:type="restart-task"/> + </upgrade> + </component> + <component name="ATLAS_CLIENT"> + <upgrade> + <task xsi:type="restart-task"/> + </upgrade> + </component> + </service> + + </processing> +</upgrade> http://git-wip-us.apache.org/repos/asf/ambari/blob/ba526d9a/ambari-server/src/main/resources/upgrade-pack.xsd ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/upgrade-pack.xsd b/ambari-server/src/main/resources/upgrade-pack.xsd index b02d941..93a5b6a 100644 --- a/ambari-server/src/main/resources/upgrade-pack.xsd +++ b/ambari-server/src/main/resources/upgrade-pack.xsd @@ -28,6 +28,7 @@ <xs:restriction base="xs:string"> <xs:enumeration value="ROLLING" /> <xs:enumeration value="NON_ROLLING" /> + <xs:enumeration value="HOST_ORDERED" /> </xs:restriction> </xs:simpleType> @@ -187,6 +188,14 @@ </xs:complexContent> </xs:complexType> + <xs:complexType name="host-order"> + <xs:complexContent> + <xs:extension base="abstract-group-type"> + <xs:sequence /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="update-stack"> <xs:complexContent> <xs:extension base="cluster"> http://git-wip-us.apache.org/repos/asf/ambari/blob/ba526d9a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java index 6c81c61..dde7ffa 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java @@ -43,6 +43,7 @@ import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping.ExecuteStage import org.apache.ambari.server.state.stack.upgrade.ConfigureTask; import org.apache.ambari.server.state.stack.upgrade.Direction; import org.apache.ambari.server.state.stack.upgrade.Grouping; +import org.apache.ambari.server.state.stack.upgrade.HostOrderGrouping; import org.apache.ambari.server.state.stack.upgrade.ParallelScheduler; import org.apache.ambari.server.state.stack.upgrade.RestartGrouping; import org.apache.ambari.server.state.stack.upgrade.RestartTask; @@ -571,6 +572,21 @@ public class UpgradePackTest { assertTrue(tasks.containsKey("HBASE")); } + + @Test + public void testPackWithHostGroup() { + Map<String, UpgradePack> upgrades = ambariMetaInfo.getUpgradePacks("HDP", "2.2.0"); + UpgradePack upgradePack = upgrades.get("upgrade_test_host_ordered"); + + assertNotNull(upgradePack); + assertEquals(upgradePack.getType(), UpgradeType.HOST_ORDERED); + assertEquals(3, upgradePack.getAllGroups().size()); + + assertEquals(HostOrderGrouping.class, upgradePack.getAllGroups().get(0).getClass()); + assertEquals(Grouping.class, upgradePack.getAllGroups().get(1).getClass()); + } + + private int indexOf(Map<String, ?> map, String keyToFind) { int result = -1; http://git-wip-us.apache.org/repos/asf/ambari/blob/ba526d9a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_host_ordered.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_host_ordered.xml b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_host_ordered.xml new file mode 100644 index 0000000..6a49472 --- /dev/null +++ b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_host_ordered.xml @@ -0,0 +1,79 @@ +<?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. +--> +<upgrade xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="upgrade-pack.xsd"> + <target>2.2.*</target> + <target-stack>HDP-2.2</target-stack> + <skip-failures>true</skip-failures> + <skip-service-check-failures>true</skip-service-check-failures> + <type>HOST_ORDERED</type> + <prerequisite-checks> + <check>org.apache.ambari.server.checks.HiveMultipleMetastoreCheck</check> + <check>org.apache.ambari.server.checks.MapReduce2JobHistoryStatePreservingCheck</check> + <check>org.apache.ambari.server.checks.SecondaryNamenodeDeletedCheck</check> + <check>org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck</check> + <check>org.apache.ambari.server.checks.ServicesNamenodeHighAvailabilityCheck</check> + <check>org.apache.ambari.server.checks.ServicesNamenodeTruncateCheck</check> + <check>org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck</check> + <check>org.apache.ambari.server.checks.ServicesYarnWorkPreservingCheck</check> + <check>org.apache.ambari.server.checks.YarnRMHighAvailabilityCheck</check> + <check>org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheck</check> + </prerequisite-checks> + <order> + + <group xsi:type="host-order" name="HOST_GROUP" /> + + <group name="ZOOKEEPER" title="Zookeeper"> + <skippable>true</skippable> + <allow-retry>false</allow-retry> + <service name="ZOOKEEPER"> + <component>ZOOKEEPER_SERVER</component> + <component>ZOOKEEPER_CLIENT</component> + </service> + </group> + + <group name="SKIPPABLE_BUT_NOT_AUTO_SKIPPABLE" title="Skippable But Not Auto Skippable"> + <skippable>true</skippable> + <supports-auto-skip-failure>false</supports-auto-skip-failure> + + <allow-retry>false</allow-retry> + <service name="ZOOKEEPER"> + <component>ZOOKEEPER_SERVER</component> + <component>ZOOKEEPER_CLIENT</component> + </service> + </group> + </order> + + <processing> + <service name="ZOOKEEPER"> + <component name="ZOOKEEPER_SERVER"> + <pre-upgrade> + <task xsi:type="manual"> + <summary>SUMMARY OF PREPARE</summary> + <message>This is a manual task with a placeholder of {{foo/bar}}</message> + </task> + </pre-upgrade> + <upgrade> + <task xsi:type="restart-task"/> + </upgrade> + <post-upgrade> + <task xsi:type="configure" id="foo" /> + </post-upgrade> + </component> + </service> + </processing> +</upgrade>
