Repository: ambari Updated Branches: refs/heads/trunk 4b3dc9d41 -> 1b54f56d5
AMBARI-19527. Downgrade executes <pre-upgrade> section if <pre-downgrade> is not defined (ncole) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1b54f56d Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1b54f56d Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1b54f56d Branch: refs/heads/trunk Commit: 1b54f56d54ddc8a66293374b456c57136df1af60 Parents: 4b3dc9d Author: Nate Cole <[email protected]> Authored: Fri Jan 13 09:36:14 2017 -0500 Committer: Nate Cole <[email protected]> Committed: Fri Jan 13 21:54:38 2017 -0500 ---------------------------------------------------------------------- .../server/stack/ModuleFileUnmarshaller.java | 11 ++ .../ambari/server/state/stack/UpgradePack.java | 67 +++++++- .../stack/upgrade/StageWrapperBuilder.java | 6 +- .../HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml | 2 + .../HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml | 9 + .../HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml | 8 + .../HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml | 9 + .../stacks/HDP/2.3/upgrades/upgrade-2.3.xml | 13 ++ .../stacks/HDP/2.3/upgrades/upgrade-2.4.xml | 6 + .../stacks/HDP/2.3/upgrades/upgrade-2.5.xml | 13 +- .../stacks/HDP/2.3/upgrades/upgrade-2.6.xml | 11 ++ .../HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml | 2 + .../HDP/2.4/upgrades/nonrolling-upgrade-2.5.xml | 8 + .../HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml | 8 + .../stacks/HDP/2.4/upgrades/upgrade-2.4.xml | 9 + .../stacks/HDP/2.4/upgrades/upgrade-2.5.xml | 8 + .../stacks/HDP/2.4/upgrades/upgrade-2.6.xml | 8 + .../HDP/2.5/upgrades/host-upgrade-2.5.xml | 9 + .../HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml | 2 + .../HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml | 4 + .../stacks/HDP/2.5/upgrades/upgrade-2.5.xml | 9 + .../stacks/HDP/2.5/upgrades/upgrade-2.6.xml | 10 ++ .../HDP/2.6/upgrades/host-upgrade-2.6.xml | 2 + .../HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml | 2 + .../stacks/HDP/2.6/upgrades/upgrade-2.6.xml | 7 + .../src/main/resources/upgrade-pack.xsd | 14 +- .../AmbariManagementControllerTest.java | 2 +- .../state/stack/UpgradePackParsingTest.java | 92 ++++++++++ .../server/state/stack/UpgradePackTest.java | 168 ++++++++++++------- .../HDP/2.1.1/upgrades/upgrade_bucket_test.xml | 4 + .../upgrades/upgrade_component_tasks_test.xml | 133 +++++++++++++++ .../HDP/2.1.1/upgrades/upgrade_direction.xml | 5 + .../upgrades/upgrade_nonrolling_new_stack.xml | 6 + .../stacks/HDP/2.1.1/upgrades/upgrade_test.xml | 8 + .../HDP/2.1.1/upgrades/upgrade_test_checks.xml | 6 + .../HDP/2.1.1/upgrades/upgrade_test_partial.xml | 8 + .../HDP/2.1.1/upgrades/upgrade_to_new_stack.xml | 10 +- .../stacks/HDP/2.2.0/upgrades/upgrade_test.xml | 7 + .../HDP/2.2.0/upgrades/upgrade_test_15388.xml | 7 + .../HDP/2.2.0/upgrades/upgrade_test_checks.xml | 6 + .../upgrades/upgrade_test_host_ordered.xml | 2 + .../upgrades/upgrade_test_skip_failures.xml | 2 + .../HDP/2.2.0/upgrades/upgrade_test_15388.xml | 7 + 43 files changed, 652 insertions(+), 78 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/java/org/apache/ambari/server/stack/ModuleFileUnmarshaller.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/ModuleFileUnmarshaller.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/ModuleFileUnmarshaller.java index d76d59f..94f196f 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/stack/ModuleFileUnmarshaller.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/ModuleFileUnmarshaller.java @@ -45,6 +45,7 @@ import org.apache.ambari.server.state.stack.ServiceMetainfoXml; import org.apache.ambari.server.state.stack.StackMetainfoXml; import org.apache.ambari.server.state.stack.UpgradePack; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.exception.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.SAXException; @@ -133,6 +134,16 @@ public class ModuleFileUnmarshaller { try { return clz.cast(u.unmarshal(file)); + } catch (Exception unmarshalException) { + + Throwable cause = ExceptionUtils.getRootCause(unmarshalException); + + LOG.error("Cannot parse {}", file.getAbsolutePath()); + if (null != cause) { + LOG.error(cause.getMessage(), cause); + } + + throw unmarshalException; } finally { IOUtils.closeQuietly(xsdStream); } http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java index 76f1897..d8676bd 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java @@ -509,11 +509,11 @@ public class UpgradePack { @XmlElement(name="task") public List<Task> preTasks; - @XmlElementWrapper(name="pre-downgrade") - @XmlElement(name="task") + @XmlElement(name="pre-downgrade") + private DowngradeTasks preDowngradeXml; + @XmlTransient public List<Task> preDowngradeTasks; - @XmlElementWrapper(name="upgrade") @XmlElement(name="task") public List<Task> tasks; @@ -522,9 +522,53 @@ public class UpgradePack { @XmlElement(name="task") public List<Task> postTasks; - @XmlElementWrapper(name="post-downgrade") - @XmlElement(name="task") + + @XmlElement(name="post-downgrade") + private DowngradeTasks postDowngradeXml; + @XmlTransient public List<Task> postDowngradeTasks; + + /** + * This method verifies that if {@code pre-upgrade} is defined, that there is also + * a sibling {@code pre-downgrade} defined. Similarly, {@code post-upgrade} must have a + * sibling {@code post-downgrade}. This is because the JDK (include 1.8) JAXB doesn't + * support XSD xpath assertions for siblings. + * + * @param unmarshaller the unmarshaller + * @param parent the parent + */ + void afterUnmarshal(Unmarshaller unmarshaller, Object parent) { + if (null != preDowngradeXml) { + preDowngradeTasks = preDowngradeXml.copyUpgrade ? preTasks : + preDowngradeXml.tasks; + } + + if (null != postDowngradeXml) { + postDowngradeTasks = postDowngradeXml.copyUpgrade ? postTasks : + postDowngradeXml.tasks; + } + + ProcessingService service = (ProcessingService) parent; + + if (LOG.isDebugEnabled()) { + LOG.debug("Processing component {}/{} preUpgrade={} postUpgrade={} preDowngrade={} postDowngrade={}", + preTasks, preDowngradeTasks, postTasks, postDowngradeTasks); + } + + if (null != preTasks && null == preDowngradeTasks) { + String error = String.format("Upgrade pack must contain pre-downgrade elements if " + + "pre-upgrade exists for processing component %s/%s", service.name, name); + + throw new RuntimeException(error); + } + + if (null != postTasks && null == postDowngradeTasks) { + String error = String.format("Upgrade pack must contain post-downgrade elements if " + + "post-upgrade exists for processing component %s/%s", service.name, name); + + throw new RuntimeException(error); + } + } } /** @@ -647,4 +691,17 @@ public class UpgradePack { @XmlValue public String value; } + + /** + * A {@code (pre|post)-downgrade} can have an attribute as well as contain {@code task} elements. + */ + private static class DowngradeTasks { + + @XmlAttribute(name="copy-upgrade") + private boolean copyUpgrade = false; + + @XmlElement(name="task") + private List<Task> tasks = new ArrayList<>(); + } + } http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java index 0b9cb3d..cfe4a78 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java @@ -214,12 +214,10 @@ public abstract class StageWrapperBuilder { if (forUpgrade) { interim = preTasks ? pc.preTasks : pc.postTasks; } else { - interim = preTasks ? - (null == pc.preDowngradeTasks ? pc.preTasks : pc.preDowngradeTasks) : - (null == pc.postDowngradeTasks ? pc.postTasks : pc.postDowngradeTasks); + interim = preTasks ? pc.preDowngradeTasks : pc.postDowngradeTasks; } - if (null == interim || interim.isEmpty()) { + if (CollectionUtils.isEmpty(interim)) { return Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml index d274135..396bf30 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml @@ -720,6 +720,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml index 8c9414a..8dff078 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml @@ -773,6 +773,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1124,6 +1126,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1138,6 +1142,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1148,6 +1154,9 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> + </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml index fa6d46b..11cd31a 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml @@ -913,6 +913,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1268,6 +1270,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1282,6 +1286,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1292,6 +1298,8 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml index 42918ff..549e5a4 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.6.xml @@ -918,6 +918,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1273,6 +1275,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1287,6 +1291,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1297,6 +1303,9 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> + </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml index a2286d8..6bf2d4c 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml @@ -449,6 +449,8 @@ <function>stop</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -492,6 +494,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -590,6 +594,8 @@ </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task"/> </upgrade> @@ -628,6 +634,8 @@ <!-- These HBASE configs changed in HDP 2.3.4.0, but Ambari can't distinguish HDP 2.3.2.0 vs HDP 2.3.4.0, so easier to always do them. --> <task xsi:type="configure" id="hdp_2_3_4_0_hbase_remove_local_indexing"/> </pre-upgrade> + + <pre-downgrade /> <upgrade> <task xsi:type="restart-task"/> @@ -662,6 +670,9 @@ <summary>Verifying LZO codec path for Tez</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task"/> </upgrade> @@ -811,6 +822,8 @@ <task xsi:type="configure" id="increase_storm_zookeeper_timeouts"/> </pre-upgrade> + + <pre-downgrade /> <upgrade> <task xsi:type="restart-task"/> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml index c082e3b..0a7bcea 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml @@ -510,6 +510,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -609,6 +611,8 @@ </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -896,6 +900,8 @@ <task xsi:type="configure" id="increase_storm_zookeeper_timeouts"/> </pre-upgrade> + <pre-downgrade /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml index ec317a9..7827533 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml @@ -612,7 +612,7 @@ </task> </pre-upgrade> - <pre-downgrade/> <!-- no-op to prevent config changes on downgrade --> + <pre-downgrade /> <!-- no-op to prevent config changes on downgrade --> <upgrade> <task xsi:type="restart-task" /> @@ -713,6 +713,8 @@ <summary>Verifying LZO codec path for mapreduce</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -870,6 +872,8 @@ <pre-upgrade> <task xsi:type="configure" id="hdp_2_5_0_0_webhcat_server_update_configuration_paths"/> </pre-upgrade> + + <pre-downgrade /> <upgrade> <task xsi:type="restart-task" /> @@ -1112,6 +1116,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -1127,6 +1133,8 @@ </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -1136,6 +1144,9 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> + </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml index a0a7929..8101682 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.6.xml @@ -715,6 +715,8 @@ <summary>Verifying LZO codec path for mapreduce</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -872,6 +874,8 @@ <pre-upgrade> <task xsi:type="configure" id="hdp_2_5_0_0_webhcat_server_update_configuration_paths"/> </pre-upgrade> + + <pre-downgrade /> <upgrade> <task xsi:type="restart-task" /> @@ -1114,6 +1118,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -1128,6 +1134,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -1138,6 +1146,9 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> + </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml index b9a7e1e..1e6c18a 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml @@ -705,6 +705,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.5.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.5.xml index d22e94a..8bee56d 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.5.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.5.xml @@ -863,6 +863,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1218,6 +1220,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1232,6 +1236,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1242,6 +1248,8 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml index 58ca724..23b2694 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.6.xml @@ -872,6 +872,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1227,6 +1229,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1241,6 +1245,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -1251,6 +1257,8 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml index 968e3b7..708c011 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml @@ -463,6 +463,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -569,6 +571,8 @@ </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -636,6 +640,9 @@ <summary>Verifying LZO codec path for Tez</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -793,6 +800,8 @@ <task xsi:type="configure" id="increase_storm_zookeeper_timeouts"/> </pre-upgrade> + + <pre-downgrade /> <upgrade> <task xsi:type="restart-task" /> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml index 9c61c39..e6f952d 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml @@ -714,6 +714,8 @@ </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -1064,6 +1066,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -1078,6 +1082,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -1088,6 +1094,8 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml index 9b3ce4e..dc21124 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.6.xml @@ -719,6 +719,8 @@ <summary>Verifying LZO codec path for mapreduce</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -1070,6 +1072,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -1084,6 +1088,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -1094,6 +1100,8 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/host-upgrade-2.5.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/host-upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/host-upgrade-2.5.xml index 11c59e9..c180b61 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/host-upgrade-2.5.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/host-upgrade-2.5.xml @@ -158,6 +158,8 @@ </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -268,6 +270,8 @@ <summary>Verifying LZO codec path for mapreduce</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -334,6 +338,9 @@ <summary>Verifying LZO codec path for Tez</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -504,6 +511,8 @@ <task xsi:type="configure" id="increase_storm_zookeeper_timeouts"/> </pre-upgrade> + + <pre-downgrade /> <upgrade> <task xsi:type="restart-task" /> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml index 6bca487..a1c9a16 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml @@ -771,6 +771,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml index 78418b0..09608a0 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml @@ -775,6 +775,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -796,6 +798,8 @@ <function>configure_atlas_user_for_tagsync</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml index 076b45b..7205924 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml @@ -511,6 +511,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -622,6 +624,8 @@ <summary>Verifying LZO codec path for mapreduce</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -688,6 +692,9 @@ <summary>Verifying LZO codec path for Tez</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -864,6 +871,8 @@ <task xsi:type="configure" id="increase_storm_zookeeper_timeouts"/> </pre-upgrade> + + <pre-downgrade /> <upgrade> <task xsi:type="restart-task" /> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml index 4abf0ec..949a174 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.6.xml @@ -528,6 +528,8 @@ <function>configure_atlas_user_for_tagsync</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -626,6 +628,8 @@ <summary>Verifying LZO codec path for mapreduce</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -692,6 +696,9 @@ <summary>Verifying LZO codec path for Tez</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -775,6 +782,9 @@ <pre-upgrade> <task xsi:type="configure" id="hdp_2_5_0_0_rename_spark_livy_configs" /> </pre-upgrade> + + <pre-downgrade /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/host-upgrade-2.6.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/host-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/host-upgrade-2.6.xml index e7aace9..087482c 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/host-upgrade-2.6.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/host-upgrade-2.6.xml @@ -152,6 +152,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml index 1c65f9b..5786695 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml @@ -744,6 +744,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml index eb4309a..a4719c1 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml +++ b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml @@ -504,6 +504,8 @@ <function>setup_ranger_java_patches</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -615,6 +617,8 @@ <summary>Verifying LZO codec path for mapreduce</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> @@ -681,6 +685,9 @@ <summary>Verifying LZO codec path for Tez</summary> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/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 3963a2c..1f11aa1 100644 --- a/ambari-server/src/main/resources/upgrade-pack.xsd +++ b/ambari-server/src/main/resources/upgrade-pack.xsd @@ -354,6 +354,13 @@ <xs:element name="task" type="abstract-task-type" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> + + <xs:complexType name="downgrade-directive-type"> + <xs:sequence> + <xs:element name="task" type="abstract-task-type" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="copy-upgrade" use="optional" type="xs:boolean" /> + </xs:complexType> <xs:complexType name="processing-type"> <xs:sequence> @@ -364,14 +371,15 @@ <xs:complexType> <xs:sequence> <xs:element name="pre-upgrade" type="upgrade-directive-type" minOccurs="0"/> - <xs:element name="pre-downgrade" type="upgrade-directive-type" minOccurs="0" /> + <xs:element name="pre-downgrade" type="downgrade-directive-type" minOccurs="0" /> <xs:element name="upgrade" type="upgrade-directive-type" minOccurs="1" /> <xs:element name="post-upgrade" type="upgrade-directive-type" minOccurs="0" /> - <xs:element name="post-downgrade" type="upgrade-directive-type" minOccurs="0" /> + <xs:element name="post-downgrade" type="downgrade-directive-type" minOccurs="0" /> </xs:sequence> <!-- - Want to use <xs:assert> to make sure that a pre-downgrade is available i + Want to use <xs:assert> to make sure that a pre-downgrade is available if pre-upgrade is set. It appears as though that is not yet available to jaxb. + See java implementation for the workaround for this. --> <xs:attribute name="name" type="xs:NMTOKEN" /> </xs:complexType> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java index 50780e3..6e2190b 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java @@ -7284,7 +7284,7 @@ public class AmbariManagementControllerTest { Assert.assertEquals(1, responsesWithParams.size()); StackVersionResponse resp = responsesWithParams.iterator().next(); assertNotNull(resp.getUpgradePacks()); - assertEquals(11, resp.getUpgradePacks().size()); + assertEquals(12, resp.getUpgradePacks().size()); assertTrue(resp.getUpgradePacks().contains("upgrade_test")); } http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackParsingTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackParsingTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackParsingTest.java new file mode 100644 index 0000000..04dfbd1 --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackParsingTest.java @@ -0,0 +1,92 @@ +/** + * 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; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import org.apache.ambari.server.stack.ModuleFileUnmarshaller; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.filefilter.FileFilterUtils; +import org.apache.commons.io.filefilter.IOFileFilter; +import org.junit.Assert; +import org.junit.Test; +import org.junit.experimental.categories.Category; + +/** + * Tests parsing upgrade packs in the entire codebase. This does not use Guice + * initialization, which will parse upgrade packs itself. + */ +@Category({ category.StackUpgradeTest.class}) +public class UpgradePackParsingTest { + + @Test + @SuppressWarnings("unchecked") + public void findAndValidateUpgradePacks() throws Exception { + + IOFileFilter filter = new IOFileFilter() { + @Override + public boolean accept(File dir, String name) { + return false; + } + + @Override + public boolean accept(File file) { + // file has the folder named 'upgrades', ends with '.xml' and is NOT 'config-upgrade.xml' + if (file.getAbsolutePath().contains("upgrades") && + file.getAbsolutePath().endsWith(".xml") && + !file.getAbsolutePath().contains("config-upgrade.xml")) { + + return true; + } + + return false; + } + }; + + List<File> files = new ArrayList<>(); + + files.addAll(FileUtils.listFiles(new File("src/main/resources/stacks"), filter, + FileFilterUtils.directoryFileFilter())); + + files.addAll(FileUtils.listFiles(new File("src/test/resources/stacks"), filter, + FileFilterUtils.directoryFileFilter())); + + files.addAll(FileUtils.listFiles(new File("src/test/resources/stacks_with_upgrade_cycle"), filter, + FileFilterUtils.directoryFileFilter())); + + ModuleFileUnmarshaller unmarshaller = new ModuleFileUnmarshaller(); + + for (File file : files) { + String fileContent = FileUtils.readFileToString(file, "UTF-8"); + + // these things must be in upgrade packs for them to work anyway + if (fileContent.contains("<upgrade") && fileContent.contains("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"")) { + if (!fileContent.contains("xsi:noNamespaceSchemaLocation=\"upgrade-pack.xsd\"")) { + String msg = String.format("File %s appears to be an upgrade pack, but does not define 'upgrade-pack.xsd' as its schema", + file.getAbsolutePath()); + Assert.fail(msg); + } else { + unmarshaller.unmarshal(UpgradePack.class, file, true); + } + } + } + } + +} http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/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 d9b1dd6..2d9a95f 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 @@ -23,8 +23,6 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import java.io.File; -import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedHashMap; @@ -36,7 +34,6 @@ import java.util.Set; import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; -import org.apache.ambari.server.stack.ModuleFileUnmarshaller; import org.apache.ambari.server.state.stack.UpgradePack.PrerequisiteCheckConfig; import org.apache.ambari.server.state.stack.UpgradePack.ProcessingComponent; import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping; @@ -53,9 +50,6 @@ import org.apache.ambari.server.state.stack.upgrade.StopGrouping; import org.apache.ambari.server.state.stack.upgrade.Task; import org.apache.ambari.server.state.stack.upgrade.UpdateStackGrouping; import org.apache.ambari.server.state.stack.upgrade.UpgradeType; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.filefilter.FileFilterUtils; -import org.apache.commons.io.filefilter.IOFileFilter; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -64,6 +58,7 @@ import org.junit.experimental.categories.Category; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.collect.Sets; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.persist.PersistService; @@ -93,59 +88,6 @@ public class UpgradePackTest { } @Test - @SuppressWarnings("unchecked") - public void findAndValidateUpgradePacks() throws Exception { - - IOFileFilter filter = new IOFileFilter() { - @Override - public boolean accept(File dir, String name) { - return false; - } - - @Override - public boolean accept(File file) { - // file has the folder named 'upgrades', ends with '.xml' and is NOT 'config-upgrade.xml' - if (file.getAbsolutePath().contains("upgrades") && - file.getAbsolutePath().endsWith(".xml") && - !file.getAbsolutePath().contains("config-upgrade.xml")) { - - return true; - } - - return false; - } - }; - - List<File> files = new ArrayList<>(); - - files.addAll(FileUtils.listFiles(new File("src/main/resources/stacks"), filter, - FileFilterUtils.directoryFileFilter())); - - files.addAll(FileUtils.listFiles(new File("src/test/resources/stacks"), filter, - FileFilterUtils.directoryFileFilter())); - - files.addAll(FileUtils.listFiles(new File("src/test/resources/stacks_with_upgrade_cycle"), filter, - FileFilterUtils.directoryFileFilter())); - - ModuleFileUnmarshaller unmarshaller = new ModuleFileUnmarshaller(); - - for (File file : files) { - String fileContent = FileUtils.readFileToString(file, "UTF-8"); - - // these things must be in upgrade packs for them to work anyway - if (fileContent.contains("<upgrade") && fileContent.contains("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"")) { - if (!fileContent.contains("xsi:noNamespaceSchemaLocation=\"upgrade-pack.xsd\"")) { - String msg = String.format("File %s appears to be an upgrade pack, but does not define 'upgrade-pack.xsd' as its schema", - file.getAbsolutePath()); - Assert.fail(msg); - } else { - unmarshaller.unmarshal(UpgradePack.class, file, true); - } - } - } - } - - @Test public void testExistence() throws Exception { Map<String, UpgradePack> upgrades = ambariMetaInfo.getUpgradePacks("foo", "bar"); assertTrue(upgrades.isEmpty()); @@ -192,10 +134,13 @@ public class UpgradePackTest { assertNotNull(pc.preTasks); assertNotNull(pc.postTasks); assertNotNull(pc.tasks); - assertNull(pc.preDowngradeTasks); - assertNull(pc.postDowngradeTasks); + assertNotNull(pc.preDowngradeTasks); + assertNotNull(pc.postDowngradeTasks); assertEquals(1, pc.tasks.size()); + assertEquals(3, pc.preDowngradeTasks.size()); + assertEquals(1, pc.postDowngradeTasks.size()); + assertEquals(Task.Type.RESTART, pc.tasks.get(0).getType()); assertEquals(RestartTask.class, pc.tasks.get(0).getClass()); @@ -556,7 +501,7 @@ public class UpgradePackTest { ServiceCheckGrouping scGroup = (ServiceCheckGrouping) group; Set<String> priorityServices = scGroup.getPriorities(); assertEquals(4, priorityServices.size()); - Iterator serviceIterator = priorityServices.iterator(); + Iterator<String> serviceIterator = priorityServices.iterator(); assertEquals("ZOOKEEPER", serviceIterator.next()); assertEquals("HBASE", serviceIterator.next()); @@ -609,6 +554,105 @@ public class UpgradePackTest { assertEquals(Grouping.class, upgradePack.getAllGroups().get(1).getClass()); } + @Test + public void testDowngradeComponentTasks() throws Exception { + Map<String, UpgradePack> upgrades = ambariMetaInfo.getUpgradePacks("HDP", "2.1.1"); + UpgradePack upgradePack = upgrades.get("upgrade_component_tasks_test"); + assertNotNull(upgradePack); + + Map<String, Map<String, ProcessingComponent>> components = upgradePack.getTasks(); + assertTrue(components.containsKey("ZOOKEEPER")); + assertTrue(components.containsKey("HDFS")); + + Map<String, ProcessingComponent> zkMap = components.get("ZOOKEEPER"); + Map<String, ProcessingComponent> hdfsMap = components.get("HDFS"); + + assertTrue(zkMap.containsKey("ZOOKEEPER_SERVER")); + assertTrue(zkMap.containsKey("ZOOKEEPER_CLIENT")); + assertTrue(hdfsMap.containsKey("NAMENODE")); + assertTrue(hdfsMap.containsKey("DATANODE")); + assertTrue(hdfsMap.containsKey("HDFS_CLIENT")); + assertTrue(hdfsMap.containsKey("JOURNALNODE")); + + ProcessingComponent zkServer = zkMap.get("ZOOKEEPER_SERVER"); + ProcessingComponent zkClient = zkMap.get("ZOOKEEPER_CLIENT"); + ProcessingComponent hdfsNN = hdfsMap.get("NAMENODE"); + ProcessingComponent hdfsDN = hdfsMap.get("DATANODE"); + ProcessingComponent hdfsClient = hdfsMap.get("HDFS_CLIENT"); + ProcessingComponent hdfsJN = hdfsMap.get("JOURNALNODE"); + + // ZK server has only pretasks defined, with pre-downgrade being a copy of pre-upgrade + assertNotNull(zkServer.preTasks); + assertNotNull(zkServer.preDowngradeTasks); + assertNull(zkServer.postTasks); + assertNull(zkServer.postDowngradeTasks); + assertEquals(1, zkServer.preTasks.size()); + assertEquals(1, zkServer.preDowngradeTasks.size()); + + // ZK client has only post-tasks defined, with post-downgrade being a copy of pre-upgrade + assertNull(zkClient.preTasks); + assertNull(zkClient.preDowngradeTasks); + assertNotNull(zkClient.postTasks); + assertNotNull(zkClient.postDowngradeTasks); + assertEquals(1, zkClient.postTasks.size()); + assertEquals(1, zkClient.postDowngradeTasks.size()); + + // NN has only pre-tasks defined, with an empty pre-downgrade + assertNotNull(hdfsNN.preTasks); + assertNotNull(hdfsNN.preDowngradeTasks); + assertNull(hdfsNN.postTasks); + assertNull(hdfsNN.postDowngradeTasks); + assertEquals(1, hdfsNN.preTasks.size()); + assertEquals(0, hdfsNN.preDowngradeTasks.size()); + + // DN has only post-tasks defined, with post-downgrade being empty + assertNull(hdfsDN.preTasks); + assertNull(hdfsDN.preDowngradeTasks); + assertNotNull(hdfsDN.postTasks); + assertNotNull(hdfsDN.postDowngradeTasks); + assertEquals(1, hdfsDN.postTasks.size()); + assertEquals(0, hdfsDN.postDowngradeTasks.size()); + + // HDFS client has only post and post-downgrade tasks + assertNull(hdfsClient.preTasks); + assertNotNull(hdfsClient.preDowngradeTasks); + assertNull(hdfsClient.postTasks); + assertNotNull(hdfsClient.postDowngradeTasks); + assertEquals(1, hdfsClient.preDowngradeTasks.size()); + assertEquals(1, hdfsClient.postDowngradeTasks.size()); + + // JN has differing tasks for pre and post downgrade + assertNotNull(hdfsJN.preTasks); + assertNotNull(hdfsJN.preDowngradeTasks); + assertNotNull(hdfsJN.postTasks); + assertNotNull(hdfsJN.postDowngradeTasks); + assertEquals(1, hdfsJN.preTasks.size()); + assertEquals(2, hdfsJN.preDowngradeTasks.size()); + assertEquals(1, hdfsJN.postTasks.size()); + assertEquals(2, hdfsJN.postDowngradeTasks.size()); + + // make sure all ids are accounted for + + Set<String> allIds = Sets.newHashSet("some_id", "some_id1", "some_id2", "some_id3", "some_id4", "some_id5"); + + @SuppressWarnings("unchecked") + Set<List<Task>> allTasks = Sets.newHashSet(hdfsJN.preTasks, hdfsJN.preDowngradeTasks, + hdfsJN.postTasks, hdfsJN.postDowngradeTasks); + + for (List<Task> list : allTasks) { + for (Task t : list) { + assertEquals(ConfigureTask.class, t.getClass()); + + ConfigureTask ct = (ConfigureTask) t; + assertTrue(allIds.contains(ct.id)); + + allIds.remove(ct.id); + } + } + + assertTrue(allIds.isEmpty()); + } + private int indexOf(Map<String, ?> map, String keyToFind) { int result = -1; http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_bucket_test.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_bucket_test.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_bucket_test.xml index 8ca9df4..48433fe 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_bucket_test.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_bucket_test.xml @@ -58,6 +58,8 @@ </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> + <upgrade /> <post-upgrade> @@ -86,6 +88,8 @@ </post-upgrade> + <post-downgrade copy-upgrade="true" /> + </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_component_tasks_test.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_component_tasks_test.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_component_tasks_test.xml new file mode 100644 index 0000000..6cd9ce8 --- /dev/null +++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_component_tasks_test.xml @@ -0,0 +1,133 @@ +<?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.0</target-stack> + <type>ROLLING</type> + <prerequisite-checks /> + + <order> + <group name="ZOOKEEPER" title="Zookeeper"> + <service name="ZOOKEEPER"> + <component>ZOOKEEPER_SERVER</component> + <component>ZOOKEEPER_CLIENT</component> + </service> + </group> + + <group name="HDFS" title="HDFS"> + <service name="HDFS"> + <component>NAMENODE</component> + <component>DATANODE</component> + <component>HDFS_CLIENT</component> + <component>JOURNALNODE</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> + <pre-downgrade copy-upgrade="true" /> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="ZOOKEEPER_CLIENT"> + <upgrade /> + + <post-upgrade> + <task xsi:type="configure" id="hdp_2_1_1_zookeeper_new_config_type" /> + </post-upgrade> + <post-downgrade copy-upgrade="true" /> + </component> + + </service> + + <service name="HDFS"> + <component name="NAMENODE"> + <pre-upgrade> + <task xsi:type="execute" hosts="master"> + <script>foo</script> + <function>list</function> + </task> + </pre-upgrade> + <pre-downgrade /> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + </component> + + <component name="DATANODE"> + <upgrade> + <task xsi:type="restart-task" /> + </upgrade> + <post-upgrade> + <task xsi:type="manual"> + <message>Manual Downgrade</message> + </task> + </post-upgrade> + <post-downgrade /> + </component> + + <component name="HDFS_CLIENT"> + <pre-downgrade> + <task xsi:type="configure" id="some_id" /> + </pre-downgrade> + <upgrade /> + <post-downgrade> + <task xsi:type="configure" id="some_id" /> + </post-downgrade> + </component> + + <component name="JOURNALNODE"> + <pre-upgrade> + <task xsi:type="configure" id="some_id" /> + </pre-upgrade> + + <pre-downgrade> + <task xsi:type="configure" id="some_id1" /> + <task xsi:type="configure" id="some_id2" /> + </pre-downgrade> + + <upgrade /> + + <post-upgrade> + <task xsi:type="configure" id="some_id3" /> + </post-upgrade> + + <post-downgrade> + <task xsi:type="configure" id="some_id4" /> + <task xsi:type="configure" id="some_id5" /> + </post-downgrade> + + + + </component> + </service> + + + </processing> +</upgrade> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_direction.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_direction.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_direction.xml index 802a04c..ab88df2 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_direction.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_direction.xml @@ -88,12 +88,17 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> + <upgrade> <task xsi:type="restart-task" /> </upgrade> <post-upgrade> <task xsi:type="configure" id="foo" /> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> </component> </service> </processing> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_nonrolling_new_stack.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_nonrolling_new_stack.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_nonrolling_new_stack.xml index 018dab3..9d53714 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_nonrolling_new_stack.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_nonrolling_new_stack.xml @@ -935,6 +935,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -949,6 +951,8 @@ <function>delete_storm_local_data</function> </task> </pre-upgrade> + + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> @@ -959,6 +963,8 @@ <message>Please rebuild your topology using the new Storm version dependencies and resubmit it using the newly created jar.</message> </task> </post-upgrade> + + <post-downgrade copy-upgrade="true" /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml index cba7685..8d506bf 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml @@ -144,12 +144,14 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> <post-upgrade> <task xsi:type="configure" id="hdp_2_1_1_zookeeper_new_config_type" /> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> </service> @@ -165,6 +167,7 @@ <message>{{direction.verb.proper}} your database</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -174,6 +177,7 @@ <function>list</function> </task> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> <component name="DATANODE"> <pre-downgrade /> @@ -196,6 +200,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> <component name="NODEMANAGER"> @@ -206,6 +211,7 @@ </task> <task xsi:type="configure" id="hdp_2_1_1_nm_pre_upgrade"/> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> @@ -222,6 +228,7 @@ <task xsi:type="configure" id="hdp_2_1_1_hive_server_conditions_skip"/> <task xsi:type="configure" id="hdp_2_1_1_no_conditions_met"/> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> @@ -244,6 +251,7 @@ <function>upgrade_oozie_database_and_sharelib</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml index 6476978..f82b025 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_checks.xml @@ -145,12 +145,14 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> <post-upgrade> <task xsi:type="configure" id="hdp_2_1_1_zk_post_upgrade"/> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> </service> <service name="HDFS"> @@ -165,6 +167,7 @@ <message>Update your database</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -174,6 +177,7 @@ <function>list</function> </task> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> <component name="DATANODE"> <pre-downgrade /> @@ -195,6 +199,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> <component name="NODEMANAGER"> @@ -204,6 +209,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml index 9348aa5..6e8745d 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml @@ -157,12 +157,14 @@ <message>This is only for partials</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> <post-upgrade> <task xsi:type="configure" id="hdp_2_1_1_zookeeper_new_config_type" /> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> </service> @@ -178,6 +180,7 @@ <message>{{direction.verb.proper}} your database</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -187,6 +190,7 @@ <function>list</function> </task> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> <component name="DATANODE"> <pre-downgrade /> @@ -209,6 +213,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> <component name="NODEMANAGER"> @@ -219,6 +224,7 @@ </task> <task xsi:type="configure" id="hdp_2_1_1_nm_pre_upgrade"/> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> @@ -233,6 +239,7 @@ <task xsi:type="configure" id="hdp_2_1_1_set_transport_mode"/> <task xsi:type="configure" id="hdp_2_1_1_hive_server_foo"/> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> @@ -255,6 +262,7 @@ <function>upgrade_oozie_database_and_sharelib</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_to_new_stack.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_to_new_stack.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_to_new_stack.xml index f505220..fe387f3 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_to_new_stack.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_to_new_stack.xml @@ -142,11 +142,12 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> - <post-upgrade> - </post-upgrade> + <post-upgrade /> + <post-downgrade /> </component> </service> @@ -162,6 +163,7 @@ <message>{{direction.verb.proper}} your database</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -171,6 +173,7 @@ <function>list</function> </task> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> <component name="DATANODE"> <pre-downgrade /> @@ -193,6 +196,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> <component name="NODEMANAGER"> @@ -202,6 +206,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> @@ -216,6 +221,7 @@ <task xsi:type="configure" id="hdp_2_1_1_test_properties"/> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test.xml b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test.xml index 7fe275f..c819d12 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test.xml @@ -133,12 +133,14 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> <post-upgrade> <task xsi:type="configure" id="foo" /> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> </service> @@ -154,6 +156,7 @@ <message>{{direction.verb.proper}} your database</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -163,6 +166,7 @@ <function>list</function> </task> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> <component name="DATANODE"> <pre-downgrade /> @@ -185,6 +189,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> <component name="NODEMANAGER"> @@ -194,6 +199,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> @@ -206,6 +212,7 @@ <message>The HiveServer port will now change to 10010 if hive is using a binary transfer mode or 10011 if hive is using an http transport mode. You can use "netstat -anp | grep 1001[01]" to determine if the port is available on each of following HiveServer host(s): {{hosts.all}}. If the port is not available, the process using it must be terminated.</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_15388.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_15388.xml b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_15388.xml index 1f0d9bf..640ea0a 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_15388.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_15388.xml @@ -144,12 +144,14 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> <post-upgrade> <task xsi:type="configure" id="foo" /> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> </service> @@ -166,6 +168,7 @@ <message>{{direction.verb.proper}} your database</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -175,6 +178,7 @@ <function>list</function> </task> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> <component name="DATANODE"> <pre-downgrade /> @@ -197,6 +201,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> <component name="NODEMANAGER"> @@ -206,6 +211,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> @@ -218,6 +224,7 @@ <message>The HiveServer port will now change to 10010 if hive is using a binary transfer mode or 10011 if hive is using an http transport mode. You can use "netstat -anp | grep 1001[01]" to determine if the port is available on each of following HiveServer host(s): {{hosts.all}}. If the port is not available, the process using it must be terminated.</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml index ed9391f..4d4d972 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_checks.xml @@ -151,12 +151,14 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> <post-upgrade> <task xsi:type="configure" id="hdp_2_2_0_zk_post_upgrade"/> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> </service> <service name="HDFS"> @@ -171,6 +173,7 @@ <message>Update your database</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -180,6 +183,7 @@ <function>list</function> </task> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> <component name="DATANODE"> <pre-downgrade /> @@ -201,6 +205,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> <component name="NODEMANAGER"> @@ -210,6 +215,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/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 index 020a49f..6b9e086 100644 --- 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 @@ -67,12 +67,14 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> </upgrade> <post-upgrade> <task xsi:type="configure" id="foo" /> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> </service> </processing> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_skip_failures.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_skip_failures.xml b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_skip_failures.xml index dae1c16..ed0fdda 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_skip_failures.xml +++ b/ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_skip_failures.xml @@ -64,12 +64,14 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task"/> </upgrade> <post-upgrade> <task xsi:type="configure" id="foo" /> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> </service> </processing> http://git-wip-us.apache.org/repos/asf/ambari/blob/1b54f56d/ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/upgrades/upgrade_test_15388.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/upgrades/upgrade_test_15388.xml b/ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/upgrades/upgrade_test_15388.xml index 947f05a..8a02781 100644 --- a/ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/upgrades/upgrade_test_15388.xml +++ b/ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/upgrades/upgrade_test_15388.xml @@ -144,12 +144,14 @@ <message>This is a manual task with a placeholder of {{foo/bar}}</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> <post-upgrade> <task xsi:type="configure" id="foo" /> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> </service> @@ -166,6 +168,7 @@ <message>{{direction.verb.proper}} your database</message> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -175,6 +178,7 @@ <function>list</function> </task> </post-upgrade> + <post-downgrade copy-upgrade="true" /> </component> <component name="DATANODE"> <pre-downgrade /> @@ -197,6 +201,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -208,6 +213,7 @@ <function>list</function> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade> <task xsi:type="restart-task" /> </upgrade> @@ -225,6 +231,7 @@ <task xsi:type="configure" id="foo"> </task> </pre-upgrade> + <pre-downgrade copy-upgrade="true" /> <upgrade /> </component> </service>
