You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mr...@apache.org on 2017/10/30 19:04:41 UTC

[05/30] ambari git commit: AMBARI-22181 : Remove cluster-stackid dependency related to Configs (mradhakrishnan)

AMBARI-22181 : Remove cluster-stackid dependency related to Configs (mradhakrishnan)


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

Branch: refs/heads/branch-feature-AMBARI-14714-ui
Commit: b0ff5da4606ae194390c20491a6d8b779c898820
Parents: a5d0f0c
Author: Madhuvanthi Radhakrishnan <mr...@hortonworks.com>
Authored: Fri Oct 13 09:33:33 2017 -0700
Committer: Madhuvanthi Radhakrishnan <mr...@hortonworks.com>
Committed: Fri Oct 13 09:33:33 2017 -0700

----------------------------------------------------------------------
 .../server/checks/AbstractCheckDescriptor.java  |  8 +--
 .../AmbariCustomCommandExecutionHelper.java     |  2 +-
 .../AmbariManagementControllerImpl.java         | 21 +++---
 .../controller/DeleteIdentityHandler.java       |  4 +-
 .../ambari/server/state/ConfigHelper.java       | 72 +++++++++++---------
 .../ambari/server/state/ConfigMergeHelper.java  |  4 +-
 .../ambari/server/state/UpgradeHelper.java      | 17 +++--
 .../server/state/cluster/ClusterImpl.java       |  7 +-
 8 files changed, 75 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/b0ff5da4/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java b/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java
index 6726d30..ae23897 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java
@@ -35,7 +35,7 @@ import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Config;
 import org.apache.ambari.server.state.DesiredConfig;
-import org.apache.ambari.server.state.ServiceInfo;
+import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.repository.ClusterVersionSummary;
 import org.apache.ambari.server.state.repository.VersionDefinitionXml;
 import org.apache.ambari.server.state.stack.PrereqCheckStatus;
@@ -238,14 +238,12 @@ public abstract class AbstractCheckDescriptor {
         AmbariMetaInfo metaInfo = ambariMetaInfo.get();
 
         Cluster c = clusters.getCluster(request.getClusterName());
-        Map<String, ServiceInfo> services = metaInfo.getServices(
-            c.getDesiredStackVersion().getStackName(),
-            c.getDesiredStackVersion().getStackVersion());
+        Map<String, Service> services = c.getServices();
 
         LinkedHashSet<String> displays = new LinkedHashSet<>();
         for (String name : names) {
           if (services.containsKey(name)) {
-            displays.add(services.get(name).getDisplayName());
+            displays.add(services.get(name).getName());
           } else {
             displays.add(name);
           }

http://git-wip-us.apache.org/repos/asf/ambari/blob/b0ff5da4/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
index e12477e..ff35e80 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
@@ -1544,7 +1544,7 @@ public class AmbariCustomCommandExecutionHelper {
       }
 
       if (stackId == null) {
-        stackId = cluster.getDesiredStackVersion();
+        throw new AmbariException("StackId should not be null. Service " + serviceName + " should have a desiredStackId");
       }
 
       AmbariMetaInfo ambariMetaInfo = managementController.getAmbariMetaInfo();

http://git-wip-us.apache.org/repos/asf/ambari/blob/b0ff5da4/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 28b5c28..58f1cbd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -2401,7 +2401,11 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
     HostEntity hostEntity = host.getHostEntity();
     Map<String, String> hostAttributes = gson.fromJson(hostEntity.getHostAttributes(), hostAttributesType);
     String osFamily = host.getOSFamilyFromHostAttributes(hostAttributes);
-
+    Map<String, Service> services = cluster.getServices();
+    Map<String, ServiceInfo> servicesMap = new HashMap<>();
+    for(String clusterServiceName : services.keySet() ){
+      servicesMap.put(clusterServiceName, ambariMetaInfo.getService(services.get(clusterServiceName)));
+    }
     StackId stackId = scHost.getServiceComponent().getDesiredStackId();
 
     ServiceInfo serviceInfo = ambariMetaInfo.getService(stackId.getStackName(),
@@ -2411,7 +2415,6 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
       serviceName, componentName);
     StackInfo stackInfo = ambariMetaInfo.getStack(stackId.getStackName(),
         stackId.getStackVersion());
-    Map<String, ServiceInfo> servicesMap = ambariMetaInfo.getServices(stackInfo.getName(), stackInfo.getVersion());
 
     ExecutionCommandWrapper execCmdWrapper = stage.getExecutionCommandWrapper(hostname, componentName);
     ExecutionCommand execCmd = execCmdWrapper.getExecutionCommand();
@@ -2445,12 +2448,14 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
     // Propagate HCFS service type info
     for (Service service : cluster.getServices().values()) {
       ServiceInfo serviceInfoInstance = servicesMap.get(service.getName());
-      LOG.debug("Iterating service type Instance in createHostAction: {}", serviceInfoInstance.getName());
-      String serviceType = serviceInfoInstance.getServiceType();
-      if (serviceType != null) {
-        LOG.info("Adding service type info in createHostAction: {}", serviceType);
-        commandParams.put("dfs_type", serviceType);
-        break;
+      if(serviceInfoInstance != null){
+        LOG.debug("Iterating service type Instance in createHostAction: {}", serviceInfoInstance.getName());
+        String serviceType = serviceInfoInstance.getServiceType();
+        if (serviceType != null) {
+          LOG.info("Adding service type info in createHostAction: {}", serviceType);
+          commandParams.put("dfs_type", serviceType);
+          break;
+        }
       }
     }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/b0ff5da4/ambari-server/src/main/java/org/apache/ambari/server/controller/DeleteIdentityHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/DeleteIdentityHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/DeleteIdentityHandler.java
index 29f8e2a..f5d51c3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/DeleteIdentityHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/DeleteIdentityHandler.java
@@ -47,6 +47,7 @@ import org.apache.ambari.server.serveraction.kerberos.KerberosOperationHandler;
 import org.apache.ambari.server.serveraction.kerberos.KerberosServerAction;
 import org.apache.ambari.server.state.Cluster;
 import org.apache.ambari.server.state.Config;
+import org.apache.ambari.server.state.Service;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.kerberos.KerberosDescriptor;
 import org.apache.ambari.server.state.svccomphost.ServiceComponentHostServerActionEvent;
@@ -263,7 +264,8 @@ class DeleteIdentityHandler {
 
     private Set<String> configTypesOfService(String serviceName) {
       try {
-        StackId stackId = getCluster().getCurrentStackVersion();
+        Service service = getCluster().getService(serviceName);
+        StackId stackId = service.getDesiredStackId();
         StackServiceRequest stackServiceRequest = new StackServiceRequest(stackId.getStackName(), stackId.getStackVersion(), serviceName);
         return AmbariServer.getController().getStackServices(singleton(stackServiceRequest)).stream()
           .findFirst()

http://git-wip-us.apache.org/repos/asf/ambari/blob/b0ff5da4/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
index 58b0300..e89f3dc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigHelper.java
@@ -684,24 +684,26 @@ public class ConfigHelper {
     }
 
     for (Service service : cluster.getServices().values()) {
-      Set<PropertyInfo> serviceProperties = new HashSet<>(servicesMap.get(service.getName()).getProperties());
-      for (PropertyInfo serviceProperty : serviceProperties) {
-        if (serviceProperty.getPropertyTypes().contains(propertyType)) {
-          String stackPropertyConfigType = fileNameToConfigType(serviceProperty.getFilename());
-          try {
-            String property = actualConfigs.get(stackPropertyConfigType).getProperties().get(serviceProperty.getName());
-            if (null == property){
-              LOG.error(String.format("Unable to obtain property values for %s with property attribute %s. "
-                  + "The property does not exist in version %s of %s configuration.",
-                serviceProperty.getName(),
-                propertyType,
-                desiredConfigs.get(stackPropertyConfigType),
-                stackPropertyConfigType
-              ));
-            } else {
-              result.put(serviceProperty, property);
+      if (servicesMap.containsKey(service.getName())) {
+        Set<PropertyInfo> serviceProperties = new HashSet<>(servicesMap.get(service.getName()).getProperties());
+        for (PropertyInfo serviceProperty : serviceProperties) {
+          if (serviceProperty.getPropertyTypes().contains(propertyType)) {
+            String stackPropertyConfigType = fileNameToConfigType(serviceProperty.getFilename());
+            try {
+              String property = actualConfigs.get(stackPropertyConfigType).getProperties().get(serviceProperty.getName());
+              if (null == property) {
+                LOG.error(String.format("Unable to obtain property values for %s with property attribute %s. "
+                                + "The property does not exist in version %s of %s configuration.",
+                        serviceProperty.getName(),
+                        propertyType,
+                        desiredConfigs.get(stackPropertyConfigType),
+                        stackPropertyConfigType
+                ));
+              } else {
+                result.put(serviceProperty, property);
+              }
+            } catch (Exception ignored) {
             }
-          } catch (Exception ignored) {
           }
         }
       }
@@ -763,24 +765,26 @@ public class ConfigHelper {
     }
 
     for (Service service : cluster.getServices().values()) {
-      Set<PropertyInfo> serviceProperties = new HashSet<>(servicesMap.get(service.getName()).getProperties());
-      for (PropertyInfo serviceProperty : serviceProperties) {
-        if (serviceProperty.getPropertyTypes().contains(propertyType)) {
-          String stackPropertyConfigType = fileNameToConfigType(serviceProperty.getFilename());
-          try {
-            String property = actualConfigs.get(stackPropertyConfigType).getProperties().get(serviceProperty.getName());
-            if (null == property){
-              LOG.error(String.format("Unable to obtain property values for %s with property attribute %s. "
-                  + "The property does not exist in version %s of %s configuration.",
-                  serviceProperty.getName(),
-                  propertyType,
-                  desiredConfigs.get(stackPropertyConfigType),
-                  stackPropertyConfigType
-                  ));
-            } else {
-              result.add(property);
+      if (servicesMap.containsKey(service.getName())) {
+        Set<PropertyInfo> serviceProperties = new HashSet<>(servicesMap.get(service.getName()).getProperties());
+        for (PropertyInfo serviceProperty : serviceProperties) {
+          if (serviceProperty.getPropertyTypes().contains(propertyType)) {
+            String stackPropertyConfigType = fileNameToConfigType(serviceProperty.getFilename());
+            try {
+              String property = actualConfigs.get(stackPropertyConfigType).getProperties().get(serviceProperty.getName());
+              if (null == property) {
+                LOG.error(String.format("Unable to obtain property values for %s with property attribute %s. "
+                                + "The property does not exist in version %s of %s configuration.",
+                        serviceProperty.getName(),
+                        propertyType,
+                        desiredConfigs.get(stackPropertyConfigType),
+                        stackPropertyConfigType
+                ));
+              } else {
+                result.add(property);
+              }
+            } catch (Exception ignored) {
             }
-          } catch (Exception ignored) {
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/b0ff5da4/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigMergeHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigMergeHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigMergeHelper.java
index cf55660..36918cc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigMergeHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigMergeHelper.java
@@ -53,13 +53,15 @@ public class ConfigMergeHelper {
   @SuppressWarnings("unchecked")
   public Map<String, Map<String, ThreeWayValue>> getConflicts(String clusterName, StackId targetStack) throws AmbariException {
     Cluster cluster = m_clusters.get().getCluster(clusterName);
-    StackId oldStack = cluster.getCurrentStackVersion();
+    StackId oldStack = null;
 
     Map<String, Map<String, String>> oldMap = new HashMap<>();
     Map<String, Map<String, String>> newMap = new HashMap<>();
 
     // Collect service-level properties for old and new stack
     for (String serviceName : cluster.getServices().keySet()) {
+      Service service = cluster.getService(serviceName);
+      oldStack = service.getDesiredStackId();
       Set<PropertyInfo> oldStackProperties = m_ambariMetaInfo.get().getServiceProperties(
           oldStack.getStackName(), oldStack.getStackVersion(), serviceName);
       addToMap(oldMap, oldStackProperties);

http://git-wip-us.apache.org/repos/asf/ambari/blob/b0ff5da4/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
index 8f9d8e1..ebc82ee 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
@@ -219,8 +219,6 @@ public class UpgradeHelper {
    *          {@code Direction} of the upgrade
    * @param upgradeType
    *          The {@code UpgradeType}
-   * @param targetStackName
-   *          The destination target stack name.
    * @param preferredUpgradePackName
    *          For unit test, need to prefer an upgrade pack since multiple
    *          matches can be found.
@@ -805,18 +803,19 @@ public class UpgradeHelper {
   /**
    * Helper to set service and component display names on the context
    * @param context   the context to update
-   * @param service   the service name
+   * @param serviceName   the service name
    * @param component the component name
    */
-  private void setDisplayNames(UpgradeContext context, String service, String component) {
-    StackId stackId = context.getCluster().getDesiredStackVersion();
+  private void setDisplayNames(UpgradeContext context, String serviceName, String component) {
+    Cluster c = context.getCluster();
+
     try {
-      ServiceInfo serviceInfo = m_ambariMetaInfoProvider.get().getService(stackId.getStackName(),
-          stackId.getStackVersion(), service);
-      context.setServiceDisplay(service, serviceInfo.getDisplayName());
+      Service service = c.getService(serviceName);
+      ServiceInfo serviceInfo = m_ambariMetaInfoProvider.get().getService(service);
+      context.setServiceDisplay(serviceName, serviceInfo.getDisplayName());
 
       ComponentInfo compInfo = serviceInfo.getComponentByName(component);
-      context.setComponentDisplay(service, component, compInfo.getDisplayName());
+      context.setComponentDisplay(serviceName, component, compInfo.getDisplayName());
 
     } catch (AmbariException e) {
       LOG.debug("Could not get service detail", e);

http://git-wip-us.apache.org/repos/asf/ambari/blob/b0ff5da4/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index 3bde889..fcc07b6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -97,6 +97,7 @@ import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
 import org.apache.ambari.server.orm.entities.RequestScheduleEntity;
 import org.apache.ambari.server.orm.entities.ResourceEntity;
 import org.apache.ambari.server.orm.entities.ServiceConfigEntity;
+import org.apache.ambari.server.orm.entities.ServiceDesiredStateEntity;
 import org.apache.ambari.server.orm.entities.ServiceGroupEntity;
 import org.apache.ambari.server.orm.entities.StackEntity;
 import org.apache.ambari.server.orm.entities.TopologyRequestEntity;
@@ -431,13 +432,17 @@ public class ClusterImpl implements Cluster {
     }
 
     for (ClusterServiceEntity serviceEntity : clusterEntity.getClusterServiceEntities()) {
-      StackId stackId = getCurrentStackVersion();
+      ServiceDesiredStateEntity serviceDesiredStateEntity = serviceEntity.getServiceDesiredStateEntity();
+      StackEntity stackEntity = serviceDesiredStateEntity.getDesiredStack();
+      StackId stackId = new StackId(stackEntity);
       try {
         if (ambariMetaInfo.getService(stackId.getStackName(),
           stackId.getStackVersion(), serviceEntity.getServiceName()) != null) {
           services.put(serviceEntity.getServiceName(),
             serviceFactory.createExisting(this, getServiceGroup(serviceEntity.getServiceGroupId()), serviceEntity));
+           stackId = getService(serviceEntity.getServiceName()).getDesiredStackId();
         }
+
       } catch (AmbariException e) {
         LOG.error(String.format(
           "Can not get service info: stackName=%s, stackVersion=%s, serviceName=%s",