summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Cole <ncole@hortonworks.com>2018-05-30 17:06:21 -0400
committerncole <ncole@hortonworks.com>2018-05-30 18:28:53 -0400
commit4292cabf5634ddf94786d43ebdecbd1a45b20e33 (patch)
treeb76bca6d8f4de05b3eb6372afad1f720c30610ff
parentb337817798dadc4b516b71c04775174fbdbf9b9a (diff)
[AMBARI-23989] Provide Patch or Maint Flag to Command JSON
-rw-r--r--ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py5
-rw-r--r--ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java11
-rw-r--r--ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeContextTest.java9
-rw-r--r--ambari-server/src/test/python/TestStackFeature.py9
-rw-r--r--ambari-server/src/test/python/TestStackSelect.py6
-rw-r--r--ambari-server/src/test/python/TestUpgradeSummary.py6
6 files changed, 36 insertions, 10 deletions
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py b/ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py
index e231d49509..0b300671b2 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py
@@ -22,7 +22,7 @@ from collections import namedtuple
from resource_management.libraries.script.script import Script
from resource_management.libraries.functions.constants import Direction
-UpgradeSummary = namedtuple("UpgradeSummary", "type direction orchestration is_revert services is_downgrade_allowed")
+UpgradeSummary = namedtuple("UpgradeSummary", "type direction orchestration is_revert services is_downgrade_allowed is_switch_bits")
UpgradeServiceSummary = namedtuple("UpgradeServiceSummary", "service_name source_stack source_version target_stack target_version")
@@ -101,7 +101,8 @@ def get_upgrade_summary():
return UpgradeSummary(type=upgrade_summary["type"], direction=upgrade_summary["direction"],
orchestration=upgrade_summary["orchestration"], is_revert = upgrade_summary["isRevert"],
services = service_summary_dict,
- is_downgrade_allowed=upgrade_summary["isDowngradeAllowed"])
+ is_downgrade_allowed=upgrade_summary["isDowngradeAllowed"],
+ is_switch_bits=upgrade_summary["isSwitchBits"])
def get_downgrade_from_version(service_name = None):
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
index d5fd7295dc..c016bc628b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java
@@ -971,6 +971,10 @@ public class UpgradeContext {
summary.isDowngradeAllowed = isDowngradeAllowed();
+ // !!! a) if we are reverting, that can only happen via PATCH or MAINT
+ // b) if orchestration is a revertible type (on upgrade)
+ summary.isSwitchBits = m_isRevert || m_orchestration.isRevertable();
+
summary.services = new HashMap<>();
for (String serviceName : m_services) {
@@ -1435,6 +1439,13 @@ public class UpgradeContext {
@SerializedName("services")
public Map<String, UpgradeServiceSummary> services;
+
+ /**
+ * MAINT or PATCH upgrades are meant to just be switching the bits and no other
+ * incompatible changes.
+ */
+ @SerializedName("isSwitchBits")
+ public boolean isSwitchBits = false;
}
/**
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeContextTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeContextTest.java
index b38b2721fa..badd3405b0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeContextTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeContextTest.java
@@ -127,8 +127,11 @@ public class UpgradeContextTest extends EasyMockSupport {
expect(m_sourceRepositoryVersion.getId()).andReturn(1L).anyTimes();
expect(m_sourceRepositoryVersion.getStackId()).andReturn(new StackId("HDP", "2.6")).anyTimes();
+ expect(m_sourceRepositoryVersion.getVersion()).andReturn("2.6.0.0").anyTimes();
+
expect(m_targetRepositoryVersion.getId()).andReturn(99L).anyTimes();
expect(m_targetRepositoryVersion.getStackId()).andReturn(new StackId("HDP", "2.6")).anyTimes();
+ expect(m_targetRepositoryVersion.getVersion()).andReturn("2.6.0.2").anyTimes();
UpgradeHistoryEntity upgradeHistoryEntity = createNiceMock(UpgradeHistoryEntity.class);
expect(upgradeHistoryEntity.getServiceName()).andReturn(HDFS_SERVICE_NAME).anyTimes();
@@ -153,7 +156,8 @@ public class UpgradeContextTest extends EasyMockSupport {
expect(m_completedRevertableUpgrade.getUpgradePackage()).andReturn(null).anyTimes();
RepositoryVersionEntity hdfsRepositoryVersion = createNiceMock(RepositoryVersionEntity.class);
-
+ expect(hdfsRepositoryVersion.getId()).andReturn(1L).anyTimes();
+ expect(hdfsRepositoryVersion.getStackId()).andReturn(new StackId("HDP-2.6")).anyTimes();
expect(m_hdfsService.getDesiredRepositoryVersion()).andReturn(hdfsRepositoryVersion).anyTimes();
expect(m_zookeeperService.getDesiredRepositoryVersion()).andReturn(hdfsRepositoryVersion).anyTimes();
expect(m_cluster.getService(HDFS_SERVICE_NAME)).andReturn(m_hdfsService).anyTimes();
@@ -202,6 +206,7 @@ public class UpgradeContextTest extends EasyMockSupport {
assertEquals(RepositoryType.STANDARD, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertFalse(context.isPatchRevert());
+ assertFalse(context.getUpgradeSummary().isSwitchBits);
verifyAll();
}
@@ -248,6 +253,7 @@ public class UpgradeContextTest extends EasyMockSupport {
assertEquals(RepositoryType.PATCH, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertFalse(context.isPatchRevert());
+ assertTrue(context.getUpgradeSummary().isSwitchBits);
verifyAll();
}
@@ -332,6 +338,7 @@ public class UpgradeContextTest extends EasyMockSupport {
assertEquals(RepositoryType.PATCH, context.getOrchestrationType());
assertEquals(1, context.getSupportedServices().size());
assertTrue(context.isPatchRevert());
+ assertTrue(context.getUpgradeSummary().isSwitchBits);
verifyAll();
}
diff --git a/ambari-server/src/test/python/TestStackFeature.py b/ambari-server/src/test/python/TestStackFeature.py
index 35c4df88dc..09d2d8cbf2 100644
--- a/ambari-server/src/test/python/TestStackFeature.py
+++ b/ambari-server/src/test/python/TestStackFeature.py
@@ -196,7 +196,8 @@ class TestStackFeature(TestCase):
"type":"rolling_upgrade",
"isRevert":False,
"orchestration":"STANDARD",
- "isDowngradeAllowed": True
+ "isDowngradeAllowed": True,
+ "isSwitchBits": False
}
}
@@ -234,7 +235,8 @@ class TestStackFeature(TestCase):
"type":"rolling_upgrade",
"isRevert":False,
"orchestration":"STANDARD",
- "isDowngradeAllowed": True
+ "isDowngradeAllowed": True,
+ "isSwitchBits": False
}
}
@@ -273,7 +275,8 @@ class TestStackFeature(TestCase):
"type":"rolling_upgrade",
"isRevert":False,
"orchestration":"STANDARD",
- "isDowngradeAllowed": True
+ "isDowngradeAllowed": True,
+ "isSwitchBits": False
}
}
diff --git a/ambari-server/src/test/python/TestStackSelect.py b/ambari-server/src/test/python/TestStackSelect.py
index c8429054ea..f8c5b8b635 100644
--- a/ambari-server/src/test/python/TestStackSelect.py
+++ b/ambari-server/src/test/python/TestStackSelect.py
@@ -161,7 +161,8 @@ class TestStackSelect(TestCase):
"type":"rolling_upgrade",
"isRevert":False,
"orchestration":"STANDARD",
- "isDowngradeAllowed": True
+ "isDowngradeAllowed": True,
+ "isSwitchBits": False
}
}
@@ -200,7 +201,8 @@ class TestStackSelect(TestCase):
"type":"rolling_upgrade",
"isRevert":False,
"orchestration":"STANDARD",
- "isDowngradeAllowed": True
+ "isDowngradeAllowed": True,
+ "isSwitchBits": False
}
}
diff --git a/ambari-server/src/test/python/TestUpgradeSummary.py b/ambari-server/src/test/python/TestUpgradeSummary.py
index ae4aca9bfd..a117f1ae6e 100644
--- a/ambari-server/src/test/python/TestUpgradeSummary.py
+++ b/ambari-server/src/test/python/TestUpgradeSummary.py
@@ -97,7 +97,8 @@ class TestUpgradeSummary(TestCase):
"type":"rolling_upgrade",
"isRevert":False,
"orchestration":"STANDARD",
- "isDowngradeAllowed": True
+ "isDowngradeAllowed": True,
+ "isSwitchBits": False
}
}
@@ -134,6 +135,7 @@ class TestUpgradeSummary(TestCase):
"type":"rolling_upgrade",
"isRevert":False,
"orchestration":"STANDARD",
- "isDowngradeAllowed": True
+ "isDowngradeAllowed": True,
+ "isSwitchBits": False
}
}