Browse Source

Revert "AMBARI-9498. RU: hosts master check is not checking all masters (Yurii Shylov via ncole)"

This reverts commit 2f3020c7e377cc7b3f253d20a82754e1ef9799f6.
Jonathan Hurley 10 years ago
parent
commit
c08982aef4

+ 5 - 9
ambari-server/src/main/java/org/apache/ambari/server/checks/AbstractCheckDescriptor.java

@@ -19,16 +19,15 @@ package org.apache.ambari.server.checks;
 
 
 import com.google.inject.Inject;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Provider;
-
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.AmbariException;
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.PrereqCheckRequest;
 import org.apache.ambari.server.controller.PrereqCheckRequest;
 import org.apache.ambari.server.orm.dao.HostVersionDAO;
 import org.apache.ambari.server.orm.dao.HostVersionDAO;
 import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
 import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.ConfigHelper;
 import org.apache.ambari.server.state.stack.PrerequisiteCheck;
 import org.apache.ambari.server.state.stack.PrerequisiteCheck;
 import org.apache.ambari.server.state.stack.PrereqCheckType;
 import org.apache.ambari.server.state.stack.PrereqCheckType;
-import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper;
 
 
 /**
 /**
  * Describes prerequisite check.
  * Describes prerequisite check.
@@ -43,16 +42,13 @@ public abstract class AbstractCheckDescriptor {
   Provider<Clusters> clustersProvider;
   Provider<Clusters> clustersProvider;
 
 
   @Inject
   @Inject
-  Provider<HostVersionDAO> hostVersionDaoProvider;
+  Provider<ConfigHelper> configHelperProvider;
 
 
   @Inject
   @Inject
-  Provider<RepositoryVersionDAO> repositoryVersionDaoProvider;
-
-  @Inject
-  Provider<RepositoryVersionHelper> repositoryVersionHelper;
+  Provider<HostVersionDAO> hostVersionDaoProvider;
 
 
   @Inject
   @Inject
-  Provider<AmbariMetaInfo> ambariMetaInfo;
+  Provider<RepositoryVersionDAO> repositoryVersionDaoProvider;
 
 
   /**
   /**
    * Constructor.
    * Constructor.

+ 10 - 28
ambari-server/src/main/java/org/apache/ambari/server/checks/HostsMasterMaintenanceCheck.java

@@ -19,12 +19,12 @@ package org.apache.ambari.server.checks;
 
 
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.controller.PrereqCheckRequest;
 import org.apache.ambari.server.controller.PrereqCheckRequest;
+import org.apache.ambari.server.stack.HostsType;
+import org.apache.ambari.server.stack.MasterHostResolver;
 import org.apache.ambari.server.state.*;
 import org.apache.ambari.server.state.*;
 import org.apache.ambari.server.state.stack.PrereqCheckStatus;
 import org.apache.ambari.server.state.stack.PrereqCheckStatus;
 import org.apache.ambari.server.state.stack.PrerequisiteCheck;
 import org.apache.ambari.server.state.stack.PrerequisiteCheck;
 import org.apache.ambari.server.state.stack.PrereqCheckType;
 import org.apache.ambari.server.state.stack.PrereqCheckType;
-import org.apache.ambari.server.state.stack.UpgradePack;
-import org.apache.ambari.server.state.stack.UpgradePack.ProcessingComponent;
 
 
 import java.util.HashSet;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Map;
@@ -42,37 +42,19 @@ public class HostsMasterMaintenanceCheck extends AbstractCheckDescriptor {
     super("HOSTS_MASTER_MAINTENANCE", PrereqCheckType.HOST, "Hosts in Maintenance Mode must not have any master components");
     super("HOSTS_MASTER_MAINTENANCE", PrereqCheckType.HOST, "Hosts in Maintenance Mode must not have any master components");
   }
   }
 
 
-  @Override
-  public boolean isApplicable(PrereqCheckRequest request) throws AmbariException {
-    return request.getRepositoryVersion() != null;
-  }
-
   @Override
   @Override
   public void perform(PrerequisiteCheck prerequisiteCheck, PrereqCheckRequest request) throws AmbariException {
   public void perform(PrerequisiteCheck prerequisiteCheck, PrereqCheckRequest request) throws AmbariException {
     final String clusterName = request.getClusterName();
     final String clusterName = request.getClusterName();
     final Cluster cluster = clustersProvider.get().getCluster(clusterName);
     final Cluster cluster = clustersProvider.get().getCluster(clusterName);
-    final StackId stackId = cluster.getDesiredStackVersion();
+    final MasterHostResolver masterHostResolver = new MasterHostResolver(configHelperProvider.get(), cluster);
     final Set<String> hostsWithMasterComponent = new HashSet<String>();
     final Set<String> hostsWithMasterComponent = new HashSet<String>();
-    final String upgradePackName = repositoryVersionHelper.get().getUpgradePackageName(stackId.getStackName(), stackId.getStackVersion(), request.getRepositoryVersion());
-    if (upgradePackName == null) {
-      prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
-      prerequisiteCheck.setFailReason("Could not find suitable upgrade pack for " + stackId.getStackName() + " " + stackId.getStackVersion() + " to version " + request.getRepositoryVersion());
-      return;
-    }
-    final UpgradePack upgradePack = ambariMetaInfo.get().getUpgradePacks(stackId.getStackName(), stackId.getStackVersion()).get(upgradePackName);
-    if (upgradePack == null) {
-      prerequisiteCheck.setStatus(PrereqCheckStatus.FAIL);
-      prerequisiteCheck.setFailReason("Could not find upgrade pack named " + upgradePackName);
-      return;
-    }
-    final Set<String> componentsFromUpgradePack = new HashSet<String>();
-    for (Map<String, ProcessingComponent> task: upgradePack.getTasks().values()) {
-      componentsFromUpgradePack.addAll(task.keySet());
-    }
-    for (Service service: cluster.getServices().values()) {
-      for (ServiceComponent serviceComponent: service.getServiceComponents().values()) {
-        if (serviceComponent.isMasterComponent() && componentsFromUpgradePack.contains(serviceComponent.getName())) {
-          hostsWithMasterComponent.addAll(serviceComponent.getServiceComponentHosts().keySet());
+    for (Map.Entry<String, Service> serviceEntry: cluster.getServices().entrySet()) {
+      final Service service = serviceEntry.getValue();
+      for (Map.Entry<String, ServiceComponent> serviceComponentEntry: service.getServiceComponents().entrySet()) {
+        final ServiceComponent serviceComponent = serviceComponentEntry.getValue();
+        final HostsType hostsType = masterHostResolver.getMasterAndHosts(service.getName(), serviceComponent.getName());
+        if (hostsType != null && hostsType.master != null) {
+          hostsWithMasterComponent.add(hostsType.master);
         }
         }
       }
       }
     }
     }