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/e8956590 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e8956590 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e8956590 Branch: refs/heads/branch-dev-logsearch Commit: e8956590389cf1c8e6a3942747710223ff3a5d34 Parents: 84e767b Author: Robert Levas <[email protected]> Authored: Mon Mar 6 12:30:26 2017 -0500 Committer: Robert Levas <[email protected]> Committed: Mon Mar 6 12:30:26 2017 -0500 ---------------------------------------------------------------------- .../server/upgrade/UpgradeCatalog250.java | 57 + .../HBASE/0.96.0.2.0/alerts.json | 4 +- .../server/upgrade/UpgradeCatalog250Test.java | 1014 ++++++++++-------- 3 files changed, 596 insertions(+), 479 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/e8956590/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 c67e80d..0246229 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 @@ -19,6 +19,7 @@ package org.apache.ambari.server.upgrade; 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; @@ -66,6 +67,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; /** @@ -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/e8956590/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": {
