浏览代码

AMBARI-12440. RU: hdp-select set all should be called before finalize (ncole)

Nate Cole 10 年之前
父节点
当前提交
ee08a07c2f

+ 8 - 7
ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.2.xml

@@ -267,6 +267,14 @@
       </service>
     </group>
 
+    <group xsi:type="cluster" name="ALL_HOST_OPS" title="Finalize Hosts">
+      <execute-stage title="Update remaining HDP stack to {{version}}">
+        <task xsi:type="execute">
+          <script>scripts/ru_set_all.py</script>
+          <function>actionexecute</function>
+        </task>
+      </execute-stage>
+    </group>
 
     <group xsi:type="cluster" name="POST_CLUSTER" title="Finalize {{direction.text.proper}}">
       <skippable>true</skippable>
@@ -290,13 +298,6 @@
         </task>
       </execute-stage>
       
-      <execute-stage title="Update remaining HDP stack to {{version}}">
-        <task xsi:type="execute">
-          <script>scripts/ru_set_all.py</script>
-          <function>actionexecute</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>

+ 9 - 7
ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml

@@ -287,6 +287,15 @@
       </service>
     </group>
 
+    <group xsi:type="cluster" name="ALL_HOST_OPS" title="Finalize Hosts">
+      <execute-stage title="Update remaining HDP stack to {{version}}">
+        <task xsi:type="execute">
+          <script>scripts/ru_set_all.py</script>
+          <function>actionexecute</function>
+        </task>
+      </execute-stage>
+    </group>
+
     <group xsi:type="cluster" name="POST_CLUSTER" title="Finalize {{direction.text.proper}}">
       <skippable>true</skippable>
       <execute-stage title="Check Unhealthy Hosts" id="unhealthy-hosts">
@@ -309,13 +318,6 @@
         </task>
       </execute-stage>
 
-      <execute-stage title="Update remaining HDP stack to {{version}}">
-        <task xsi:type="execute">
-          <script>scripts/ru_set_all.py</script>
-          <function>actionexecute</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" />
       </execute-stage>

+ 9 - 7
ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml

@@ -307,6 +307,15 @@
       </service>
     </group>
 
+    <group xsi:type="cluster" name="ALL_HOST_OPS" title="Finalize Hosts">
+      <execute-stage title="Update remaining HDP stack to {{version}}">
+        <task xsi:type="execute">
+          <script>scripts/ru_set_all.py</script>
+          <function>actionexecute</function>
+        </task>
+      </execute-stage>
+    </group>
+
     <group xsi:type="cluster" name="POST_CLUSTER" title="Finalize {{direction.text.proper}}">
       <skippable>true</skippable>
       <execute-stage title="Check Unhealthy Hosts" id="unhealthy-hosts">
@@ -329,13 +338,6 @@
         </task>
       </execute-stage>
       
-      <execute-stage title="Update remaining HDP stack to {{version}}">
-        <task xsi:type="execute">
-          <script>scripts/ru_set_all.py</script>
-          <function>actionexecute</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>

+ 7 - 1
ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java

@@ -940,11 +940,17 @@ public class UpgradeHelperTest {
     assertNotNull(upgrade);
 
     List<UpgradeGroupHolder> groups = m_upgradeHelper.createSequence(upgrade, context);
-    assertEquals(1, groups.size());
+    assertEquals(2, groups.size());
 
     UpgradeGroupHolder group = groups.get(0);
+    assertEquals(1, group.items.size());
+    assertEquals("PRE_POST_CLUSTER", group.name);
+
+    group = groups.get(1);
+    assertEquals("POST_CLUSTER", group.name);
     assertEquals(3, group.items.size());
 
+
     StageWrapper stage = group.items.get(1);
     assertEquals("NameNode Finalize", stage.getText());
     assertEquals(1, stage.getTasks().size());

+ 14 - 4
ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java

@@ -237,19 +237,29 @@ public class UpgradePackTest {
     UpgradePack up = upgrades.get("upgrade_direction");
 
     List<Grouping> groups = up.getGroups(Direction.UPGRADE);
-    assertEquals(3, groups.size());
+    assertEquals(4, groups.size());
     Grouping group = groups.get(2);
     assertEquals(ClusterGrouping.class, group.getClass());
+    ClusterGrouping cluster_group = (ClusterGrouping) group;
+    assertEquals("Run on All", group.title);
 
-    ClusterGrouping cluster_group = (ClusterGrouping) groups.get(2);
+    cluster_group = (ClusterGrouping) groups.get(3);
     List<ExecuteStage> stages = cluster_group.executionStages;
     assertEquals(3, stages.size());
     assertNotNull(stages.get(0).intendedDirection);
     assertEquals(Direction.DOWNGRADE, stages.get(0).intendedDirection);
 
     groups = up.getGroups(Direction.DOWNGRADE);
-    assertEquals(2, groups.size());
-    assertEquals(ClusterGrouping.class, groups.get(1).getClass());
+    assertEquals(3, groups.size());
+    // there are two clustergroupings at the end
+    group = groups.get(1);
+    assertEquals(ClusterGrouping.class, group.getClass());
+    assertEquals("Run on All", group.title);
+
+    group = groups.get(2);
+    assertEquals(ClusterGrouping.class, group.getClass());
+    assertEquals("Finalize Upgrade", group.title);
+
   }
 
 

+ 9 - 0
ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_direction.xml

@@ -34,6 +34,15 @@
       </priority>
     </group>
     
+    <group xsi:type="cluster" name="PRE_POST_CLUSTER" title="Run on All">
+      <execute-stage title="Host Finalize" service="HDFS" component="NAMENODE" >
+        <task xsi:type="execute" hosts="master">
+          <script>scripts/ru_run_all.py</script>
+          <function>actionexecute</function>
+        </task>
+      </execute-stage>      
+    </group>
+    
     <group xsi:type="cluster" name="POST_CLUSTER" title="Finalize Upgrade">
       <execute-stage title="Direction Downgrade Only">
         <direction>DOWNGRADE</direction>