AMBARI-20309. HBase Master CPU Utilization Alert is in unknown state due to 
kinit error (rlevas)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6cfcc90a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6cfcc90a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6cfcc90a

Branch: refs/heads/branch-feature-AMBARI-12556
Commit: 6cfcc90acfaced9cbcefe8abaa1a5d98a2db20ad
Parents: 801cd61
Author: Robert Levas <[email protected]>
Authored: Mon Mar 6 12:27:23 2017 -0500
Committer: Robert Levas <[email protected]>
Committed: Mon Mar 6 12:27:29 2017 -0500

----------------------------------------------------------------------
 .../server/upgrade/UpgradeCatalog250.java       |   57 +
 .../HBASE/0.96.0.2.0/alerts.json                |    4 +-
 .../server/upgrade/UpgradeCatalog250Test.java   | 1077 +++++++++---------
 3 files changed, 627 insertions(+), 511 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/6cfcc90a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
index 2a684dc..141e9cd 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
@@ -29,6 +29,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.ambari.server.AmbariException;
@@ -65,6 +66,7 @@ import org.springframework.jdbc.support.JdbcUtils;
 
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
 
@@ -192,6 +194,61 @@ public class UpgradeCatalog250 extends 
AbstractUpgradeCatalog {
     addManageServiceAutoStartPermissions();
     addManageAlertNotificationsPermissions();
     updateKerberosDescriptorArtifacts();
+    fixHBaseMasterCPUUtilizationAlertDefinition();
+  }
+
+  /**
+   * Fix the HBase Master CPU Utilization alert definition by swapping the 
values for <code>kerberos_keytab</code>
+   * and <code>kerberos_principal</code>.
+   */
+  protected void fixHBaseMasterCPUUtilizationAlertDefinition() {
+    AlertDefinitionDAO alertDefinitionDAO = 
injector.getInstance(AlertDefinitionDAO.class);
+    AmbariManagementController ambariManagementController = 
injector.getInstance(AmbariManagementController.class);
+    Clusters clusters = ambariManagementController.getClusters();
+
+    Map<String, Cluster> clusterMap = getCheckedClusterMap(clusters);
+    for (final Cluster cluster : clusterMap.values()) {
+      long clusterID = cluster.getClusterId();
+      AlertDefinitionEntity alertDefinition = 
alertDefinitionDAO.findByName(clusterID, "hbase_master_cpu");
+      if(alertDefinition != null) {
+        LOG.info("Updating alert definition {} in cluster {}", 
alertDefinition.getDefinitionName(), clusterID);
+        String source = alertDefinition.getSource();
+
+        if(source != null) {
+          JsonObject sourceJson = new 
JsonParser().parse(source).getAsJsonObject();
+          LOG.debug("Source before update : {}", sourceJson);
+
+          JsonObject uriJson = sourceJson.get("uri").getAsJsonObject();
+          JsonPrimitive primitive;
+
+          // Replace
+          //  "kerberos_keytab": 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}"
+          // With
+          //  "kerberos_keytab": 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
+          primitive = uriJson.getAsJsonPrimitive("kerberos_keytab");
+          if(primitive.isString() && 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}".equals(primitive.getAsString()))
 {
+            uriJson.remove("kerberos_keytab");
+            uriJson.addProperty("kerberos_keytab", 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}");
+          }
+
+          // Replace
+          //  "kerberos_principal": 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
+          // With
+          //  "kerberos_principal": 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}"
+          primitive = uriJson.getAsJsonPrimitive("kerberos_principal");
+          if(primitive.isString() && 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}".equals(primitive.getAsString()))
 {
+            uriJson.remove("kerberos_principal");
+            uriJson.addProperty("kerberos_principal", 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}");
+          }
+
+          LOG.debug("Source after update : {}", sourceJson);
+          alertDefinition.setSource(sourceJson.toString());
+          alertDefinition.setHash(UUID.randomUUID().toString());
+
+          alertDefinitionDAO.merge(alertDefinition);
+        }
+      }
+    }
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/6cfcc90a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json 
b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json
index 1b3ae25..6fcb4dc 100644
--- 
a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json
+++ 
b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/alerts.json
@@ -68,8 +68,8 @@
             "http": "{{hbase-site/hbase.master.info.port}}",
             "default_port": 60010,
             "connection_timeout": 5.0,
-            "kerberos_keytab": 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}",
-            "kerberos_principal": 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
+            "kerberos_principal": 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.principal}}",
+            "kerberos_keytab": 
"{{hbase-site/hbase.security.authentication.spnego.kerberos.keytab}}"
           },
           "reporting": {
             "ok": {

Reply via email to