You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2017/05/31 20:13:04 UTC
[33/50] [abbrv] ambari git commit: AMBARI-21059. Reduce Dependency on
Cluster Desired Stack ID (ncole)
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
index 664ba42..e6c50fb 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
@@ -29,6 +29,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.ambari.annotations.Experimental;
+import org.apache.ambari.annotations.ExperimentalFeature;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.ClusterNotFoundException;
import org.apache.ambari.server.DuplicateResourceException;
@@ -420,29 +422,14 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
for (ServiceRequest request : requests) {
Cluster cluster = clusters.getCluster(request.getClusterName());
-
String desiredStack = request.getDesiredStack();
- String desiredRepositoryVersion = request.getDesiredRepositoryVersion();
- RepositoryVersionEntity repositoryVersion = null;
- if (StringUtils.isNotBlank(desiredStack) && StringUtils.isNotBlank(desiredRepositoryVersion)){
- repositoryVersion = repositoryVersionDAO.findByStackAndVersion(new StackId(desiredStack),
- desiredRepositoryVersion);
- }
-
- if (null == desiredStack) {
- desiredStack = cluster.getDesiredStackVersion().toString();
- }
- if (null == repositoryVersion) {
- List<RepositoryVersionEntity> allVersions = repositoryVersionDAO.findByStack(new StackId(desiredStack));
-
- if (CollectionUtils.isNotEmpty(allVersions)) {
- repositoryVersion = allVersions.get(0);
- }
- }
+ RepositoryVersionEntity repositoryVersion = request.getResolvedRepository();
if (null == repositoryVersion) {
throw new AmbariException(String.format("Could not find any repositories defined by %s", desiredStack));
+ } else {
+ desiredStack = repositoryVersion.getStackId().toString();
}
Service s = cluster.addService(request.getServiceName(), repositoryVersion);
@@ -451,7 +438,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
* Get the credential_store_supported field only from the stack definition.
* Not possible to update the value through a request.
*/
- StackId stackId = cluster.getDesiredStackVersion();
+ StackId stackId = repositoryVersion.getStackId();
AmbariMetaInfo ambariMetaInfo = getManagementController().getAmbariMetaInfo();
ServiceInfo serviceInfo = ambariMetaInfo.getService(stackId.getStackName(),
stackId.getStackVersion(), request.getServiceName());
@@ -621,6 +608,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
if (!serviceNames.containsKey(request.getClusterName())) {
serviceNames.put(request.getClusterName(), new HashSet<String>());
}
+
if (serviceNames.get(request.getClusterName())
.contains(request.getServiceName())) {
// TODO throw single exception
@@ -746,6 +734,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
}
}
}
+
for (Service service : depServices) {
updateServiceComponents(requestStages, changedComps, changedScHosts,
ignoredScHosts, reqOpLvl, service, State.STARTED);
@@ -767,6 +756,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
service.setCredentialStoreEnabled(credentialStoreEnabled);
}
+
Cluster cluster = clusters.getCluster(clusterNames.iterator().next());
return controller.addStages(requestStages, cluster, requestProperties,
@@ -877,7 +867,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
+ ", hostname=" + sch.getHostName()
+ ", currentState=" + oldSchState
+ ", newDesiredState=" + newState;
- StackId sid = cluster.getDesiredStackVersion();
+ StackId sid = service.getDesiredStackId();
if ( ambariMetaInfo.getComponent(
sid.getStackName(), sid.getStackVersion(), sc.getServiceName(),
@@ -1050,6 +1040,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
AmbariMetaInfo ambariMetaInfo = getManagementController().getAmbariMetaInfo();
Map<String, Set<String>> serviceNames = new HashMap<>();
Set<String> duplicates = new HashSet<>();
+
for (ServiceRequest request : requests) {
final String clusterName = request.getClusterName();
final String serviceName = request.getServiceName();
@@ -1102,7 +1093,38 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
// Expected
}
- StackId stackId = cluster.getDesiredStackVersion();
+ @Experimental(feature = ExperimentalFeature.MULTI_SERVICE,
+ comment = "the desired stack should not come from the cluster. this is a placeholder until the UI sends correct information")
+ String desiredStack = request.getDesiredStack();
+ StackId stackId = new StackId(desiredStack);
+
+ String desiredRepositoryVersion = request.getDesiredRepositoryVersion();
+ RepositoryVersionEntity repositoryVersion = null;
+ if (StringUtils.isNotBlank(desiredRepositoryVersion)){
+ repositoryVersion = repositoryVersionDAO.findByVersion(desiredRepositoryVersion);
+ }
+
+ if (null == repositoryVersion) {
+ // !!! FIXME hack until the UI always sends the repository
+ if (null == desiredStack) {
+ desiredStack = cluster.getDesiredStackVersion().toString();
+ }
+
+ List<RepositoryVersionEntity> allVersions = repositoryVersionDAO.findByStack(new StackId(desiredStack));
+
+ if (CollectionUtils.isNotEmpty(allVersions)) {
+ repositoryVersion = allVersions.get(0);
+ }
+ }
+
+ if (null == repositoryVersion) {
+ throw new AmbariException(String.format("Could not find any repositories defined by %s", desiredStack));
+ } else {
+ stackId = repositoryVersion.getStackId();
+ }
+
+ request.setResolvedRepository(repositoryVersion);
+
if (!ambariMetaInfo.isValidService(stackId.getStackName(),
stackId.getStackVersion(), request.getServiceName())) {
throw new IllegalArgumentException("Unsupported or invalid service in stack, clusterName=" + clusterName
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProvider.java
index 8972ca2..e9682fb 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProvider.java
@@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import org.apache.ambari.server.ServiceNotFoundException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.ComponentSSLConfiguration;
import org.apache.ambari.server.controller.jmx.JMXHostProvider;
@@ -46,6 +47,7 @@ import org.apache.ambari.server.controller.utilities.StreamProvider;
import org.apache.ambari.server.security.authorization.AuthorizationException;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.stack.Metric;
import org.apache.ambari.server.state.stack.MetricDefinition;
@@ -160,12 +162,19 @@ public class StackDefinedPropertyProvider implements PropertyProvider {
String componentName = r.getPropertyValue(componentNamePropertyId).toString();
Cluster cluster = clusters.getCluster(clusterName);
- StackId stack = cluster.getDesiredStackVersion();
- String svc = metaInfo.getComponentToService(stack.getStackName(),
- stack.getStackVersion(), componentName);
+ Service service = null;
+
+ try {
+ service = cluster.getServiceByComponentName(componentName);
+ } catch (ServiceNotFoundException e) {
+ LOG.debug("Could not load component {}", componentName);
+ continue;
+ }
+
+ StackId stack = service.getDesiredStackId();
List<MetricDefinition> defs = metaInfo.getMetrics(
- stack.getStackName(), stack.getStackVersion(), svc, componentName, type.name());
+ stack.getStackName(), stack.getStackVersion(), service.getName(), componentName, type.name());
if (null == defs || 0 == defs.size()) {
continue;
@@ -227,6 +236,7 @@ public class StackDefinedPropertyProvider implements PropertyProvider {
// Need to rethrow the catched 'AuthorizationException'.
throw e;
} catch (Exception e) {
+ e.printStackTrace();
LOG.error("Error loading deferred resources", e);
throw new SystemException("Error loading deferred resources", e);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
index 6027ce7..115a043 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
@@ -1456,7 +1456,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
actionContext.setMaintenanceModeHostExcluded(true);
ExecuteCommandJson jsons = s_commandExecutionHelper.get().getCommandJson(actionContext,
- cluster, null);
+ cluster, context.getRepositoryVersion());
Stage stage = s_stageFactory.get().createNew(request.getId().longValue(), "/tmp/ambari",
cluster.getClusterName(), cluster.getClusterId(), stageText, jsons.getClusterHostInfo(),
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingSearchPropertyProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingSearchPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingSearchPropertyProvider.java
index c69d00b..3cf119c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingSearchPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/logging/LoggingSearchPropertyProvider.java
@@ -41,6 +41,7 @@ import org.apache.ambari.server.security.authorization.RoleAuthorization;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.ComponentInfo;
import org.apache.ambari.server.state.LogDefinition;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
@@ -71,7 +72,7 @@ public class LoggingSearchPropertyProvider implements PropertyProvider {
@Inject
private LoggingRequestHelperFactory loggingRequestHelperFactory;
-
+
@Override
public Set<Resource> populateResources(Set<Resource> resources, Request request, Predicate predicate) throws SystemException {
Map<String, Boolean> isLogSearchRunning = new HashMap<>();
@@ -186,12 +187,13 @@ public class LoggingSearchPropertyProvider implements PropertyProvider {
private String getMappedComponentNameForSearch(String clusterName, String componentName, AmbariManagementController controller) {
try {
AmbariMetaInfo metaInfo = controller.getAmbariMetaInfo();
- StackId stackId =
- controller.getClusters().getCluster(clusterName).getCurrentStackVersion();
+ Cluster cluster = controller.getClusters().getCluster(clusterName);
+ String serviceName = controller.findServiceName(cluster, componentName);
+ Service service = cluster.getService(serviceName);
+ StackId stackId = service.getDesiredStackId();
+
final String stackName = stackId.getStackName();
final String stackVersion = stackId.getStackVersion();
- final String serviceName =
- metaInfo.getComponentToService(stackName, stackVersion, componentName);
ComponentInfo componentInfo =
metaInfo.getComponent(stackName, stackVersion, serviceName, componentName);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
index c4c2ddc..f77d47a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java
@@ -59,6 +59,8 @@ import org.apache.ambari.server.controller.spi.TemporalInfo;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
import org.apache.ambari.server.events.MetricsCollectorHostDownEvent;
import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
+import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
@@ -308,12 +310,15 @@ public abstract class AMSPropertyProvider extends MetricsPropertyProvider {
StackId stackId;
try {
AmbariManagementController managementController = AmbariServer.getController();
- stackId = managementController.getClusters().getCluster(clusterName).getCurrentStackVersion();
+ Cluster cluster = managementController.getClusters().getCluster(clusterName);
+ Service service = cluster.getServiceByComponentName(componentName);
+ stackId = service.getDesiredStackId();
+
if (stackId != null) {
String stackName = stackId.getStackName();
String version = stackId.getStackVersion();
AmbariMetaInfo ambariMetaInfo = managementController.getAmbariMetaInfo();
- String serviceName = ambariMetaInfo.getComponentToService(stackName, version, componentName);
+ String serviceName = service.getName();
String timeLineAppId = ambariMetaInfo.getComponent(stackName, version, serviceName, componentName).getTimelineAppid();
if (timeLineAppId != null){
timelineAppIdCache.put(componentName, timeLineAppId);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/DefaultServiceCalculatedState.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/DefaultServiceCalculatedState.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/DefaultServiceCalculatedState.java
index 264ba03..7cd2624 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/DefaultServiceCalculatedState.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/DefaultServiceCalculatedState.java
@@ -32,6 +32,7 @@ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.ComponentInfo;
import org.apache.ambari.server.state.MaintenanceState;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
import org.slf4j.Logger;
@@ -78,12 +79,14 @@ public class DefaultServiceCalculatedState implements ServiceCalculatedState {
return null;
}
+ @Override
public State getState(String clusterName, String serviceName) {
try {
Cluster cluster = getCluster(clusterName);
if (cluster != null && managementControllerProvider != null) {
+ Service service = cluster.getService(serviceName);
AmbariMetaInfo ambariMetaInfo = managementControllerProvider.get().getAmbariMetaInfo();
- StackId stackId = cluster.getDesiredStackVersion();
+ StackId stackId = service.getDesiredStackId();
ServiceComponentHostRequest request = new ServiceComponentHostRequest(clusterName,
serviceName, null, null, null);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HBaseServiceCalculatedState.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HBaseServiceCalculatedState.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HBaseServiceCalculatedState.java
index d44515c..d953156 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HBaseServiceCalculatedState.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HBaseServiceCalculatedState.java
@@ -29,6 +29,7 @@ import org.apache.ambari.server.controller.ServiceComponentHostRequest;
import org.apache.ambari.server.controller.ServiceComponentHostResponse;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.ComponentInfo;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
@@ -45,7 +46,8 @@ public final class HBaseServiceCalculatedState extends DefaultServiceCalculatedS
Cluster cluster = getCluster(clusterName);
if (cluster != null && managementControllerProvider != null) {
AmbariMetaInfo ambariMetaInfo = managementControllerProvider.get().getAmbariMetaInfo();
- StackId stackId = cluster.getDesiredStackVersion();
+ Service service = cluster.getService(serviceName);
+ StackId stackId = service.getDesiredStackId();
ServiceComponentHostRequest request = new ServiceComponentHostRequest(clusterName,
serviceName, null, null, null);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HDFSServiceCalculatedState.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HDFSServiceCalculatedState.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HDFSServiceCalculatedState.java
index 89d4004..20f5fc7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HDFSServiceCalculatedState.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HDFSServiceCalculatedState.java
@@ -29,6 +29,7 @@ import org.apache.ambari.server.controller.ServiceComponentHostRequest;
import org.apache.ambari.server.controller.ServiceComponentHostResponse;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.ComponentInfo;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
@@ -45,7 +46,8 @@ public final class HDFSServiceCalculatedState extends DefaultServiceCalculatedSt
Cluster cluster = getCluster(clusterName);
if (cluster != null && managementControllerProvider != null) {
AmbariMetaInfo ambariMetaInfo = managementControllerProvider.get().getAmbariMetaInfo();
- StackId stackId = cluster.getDesiredStackVersion();
+ Service service = cluster.getService(serviceName);
+ StackId stackId = service.getDesiredStackId();
ServiceComponentHostRequest request = new ServiceComponentHostRequest(clusterName,
serviceName, null, null, null);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HiveServiceCalculatedState.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HiveServiceCalculatedState.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HiveServiceCalculatedState.java
index 0643c94..69ecddd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HiveServiceCalculatedState.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/HiveServiceCalculatedState.java
@@ -29,6 +29,7 @@ import org.apache.ambari.server.controller.ServiceComponentHostRequest;
import org.apache.ambari.server.controller.ServiceComponentHostResponse;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.ComponentInfo;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
@@ -45,7 +46,9 @@ public final class HiveServiceCalculatedState extends DefaultServiceCalculatedSt
Cluster cluster = getCluster(clusterName);
if (cluster != null && managementControllerProvider != null) {
AmbariMetaInfo ambariMetaInfo = managementControllerProvider.get().getAmbariMetaInfo();
- StackId stackId = cluster.getDesiredStackVersion();
+ Service service = cluster.getService(serviceName);
+ StackId stackId = service.getDesiredStackId();
+
ServiceComponentHostRequest request = new ServiceComponentHostRequest(clusterName,
serviceName, null, null, null);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/OozieServiceCalculatedState.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/OozieServiceCalculatedState.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/OozieServiceCalculatedState.java
index 4d0cf92..76f047b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/OozieServiceCalculatedState.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/OozieServiceCalculatedState.java
@@ -29,6 +29,7 @@ import org.apache.ambari.server.controller.ServiceComponentHostRequest;
import org.apache.ambari.server.controller.ServiceComponentHostResponse;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.ComponentInfo;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
@@ -45,7 +46,9 @@ public final class OozieServiceCalculatedState extends DefaultServiceCalculatedS
Cluster cluster = getCluster(clusterName);
if (cluster != null && managementControllerProvider != null) {
AmbariMetaInfo ambariMetaInfo = managementControllerProvider.get().getAmbariMetaInfo();
- StackId stackId = cluster.getDesiredStackVersion();
+ Service service = cluster.getService(serviceName);
+ StackId stackId = service.getDesiredStackId();
+
ServiceComponentHostRequest request = new ServiceComponentHostRequest(clusterName,
serviceName, null, null, null);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/YARNServiceCalculatedState.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/YARNServiceCalculatedState.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/YARNServiceCalculatedState.java
index 24c4602..e73f6b4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/YARNServiceCalculatedState.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/utilities/state/YARNServiceCalculatedState.java
@@ -29,6 +29,7 @@ import org.apache.ambari.server.controller.ServiceComponentHostRequest;
import org.apache.ambari.server.controller.ServiceComponentHostResponse;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.ComponentInfo;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.State;
@@ -45,7 +46,9 @@ public final class YARNServiceCalculatedState extends DefaultServiceCalculatedSt
Cluster cluster = getCluster(clusterName);
if (cluster != null && managementControllerProvider != null) {
AmbariMetaInfo ambariMetaInfo = managementControllerProvider.get().getAmbariMetaInfo();
- StackId stackId = cluster.getDesiredStackVersion();
+ Service service = cluster.getService(serviceName);
+ StackId stackId = service.getDesiredStackId();
+
ServiceComponentHostRequest request = new ServiceComponentHostRequest(clusterName,
serviceName, null, null, null);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java b/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
index 40ec0a1..b217b45 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/metadata/RoleCommandOrder.java
@@ -133,25 +133,31 @@ public class RoleCommandOrder implements Cloneable {
this.sectionKeys = sectionKeys;
dependencies.clear();
- StackId stackId = cluster.getCurrentStackVersion();
- StackInfo stack = null;
- try {
- stack = ambariMetaInfo.getStack(stackId.getStackName(),
- stackId.getStackVersion());
- } catch (AmbariException ignored) {
- // initialize() will fail with NPE
+ Set<StackId> stackIds = new HashSet<>();
+ for (Service service : cluster.getServices().values()) {
+ stackIds.add(service.getDesiredStackId());
}
- Map<String,Object> userData = stack.getRoleCommandOrder().getContent();
- Map<String,Object> generalSection =
- (Map<String, Object>) userData.get(GENERAL_DEPS_KEY);
+ for (StackId stackId : stackIds) {
+ StackInfo stack = null;
+ try {
+ stack = ambariMetaInfo.getStack(stackId.getStackName(),
+ stackId.getStackVersion());
+ } catch (AmbariException ignored) {
+ // initialize() will fail with NPE
+ }
+
+ Map<String,Object> userData = stack.getRoleCommandOrder().getContent();
+ Map<String,Object> generalSection =
+ (Map<String, Object>) userData.get(GENERAL_DEPS_KEY);
- addDependencies(generalSection);
+ addDependencies(generalSection);
- for (String sectionKey : sectionKeys) {
- Map<String, Object> section = (Map<String, Object>) userData.get(sectionKey);
+ for (String sectionKey : sectionKeys) {
+ Map<String, Object> section = (Map<String, Object>) userData.get(sectionKey);
- addDependencies(section);
+ addDependencies(section);
+ }
}
extendTransitiveDependency();
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterDAO.java
index 3817570..f0a99e2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterDAO.java
@@ -348,7 +348,7 @@ public class ClusterDAO {
@Transactional
public void remove(ClusterEntity clusterEntity) {
- entityManagerProvider.get().remove(merge(clusterEntity));
+ entityManagerProvider.get().remove(clusterEntity);
}
@Transactional
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
index a2472b6..f94e45d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAO.java
@@ -211,4 +211,18 @@ public class RepositoryVersionDAO extends CrudDAO<RepositoryVersionEntity, Long>
"repositoryVersionsFromDefinition", RepositoryVersionEntity.class);
return daoUtils.selectList(query);
}
+
+
+ /**
+ * @param repositoryVersion
+ * @return
+ */
+ @RequiresSession
+ public RepositoryVersionEntity findByVersion(String repositoryVersion) {
+ TypedQuery<RepositoryVersionEntity> query = entityManagerProvider.get().createNamedQuery("repositoryVersionByVersion", RepositoryVersionEntity.class);
+
+ query.setParameter("version", repositoryVersion);
+
+ return daoUtils.selectOne(query);
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
index 47abde4..513325f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
@@ -75,8 +75,10 @@ import com.google.inject.Provider;
@NamedQueries({
@NamedQuery(name = "repositoryVersionByDisplayName", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.displayName=:displayname"),
@NamedQuery(name = "repositoryVersionByStack", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.stack.stackName=:stackName AND repoversion.stack.stackVersion=:stackVersion"),
+ @NamedQuery(name = "repositoryVersionByVersion", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.version=:version"),
@NamedQuery(name = "repositoryVersionByStackNameAndVersion", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.stack.stackName=:stackName AND repoversion.version=:version"),
@NamedQuery(name = "repositoryVersionsFromDefinition", query = "SELECT repoversion FROM RepositoryVersionEntity repoversion WHERE repoversion.versionXsd IS NOT NULL")
+
})
@StaticallyInject
public class RepositoryVersionEntity {
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/AutoSkipFailedSummaryAction.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/AutoSkipFailedSummaryAction.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/AutoSkipFailedSummaryAction.java
index 7a99f09..743e5c8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/AutoSkipFailedSummaryAction.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/AutoSkipFailedSummaryAction.java
@@ -34,7 +34,6 @@ import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.actionmanager.HostRoleStatus;
import org.apache.ambari.server.actionmanager.ServiceComponentHostEventWrapper;
import org.apache.ambari.server.agent.CommandReport;
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.metadata.ActionMetadata;
import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
import org.apache.ambari.server.orm.dao.UpgradeDAO;
@@ -45,7 +44,6 @@ import org.apache.ambari.server.serveraction.AbstractServerAction;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.ServiceComponentHostEvent;
-import org.apache.ambari.server.state.StackId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -102,9 +100,6 @@ public class AutoSkipFailedSummaryAction extends AbstractServerAction {
private ActionMetadata actionMetadata;
@Inject
- private AmbariMetaInfo ambariMetaInfo;
-
- @Inject
private Clusters clusters;
/**
@@ -125,7 +120,6 @@ public class AutoSkipFailedSummaryAction extends AbstractServerAction {
String clusterName = hostRoleCommand.getExecutionCommandWrapper().getExecutionCommand().getClusterName();
Cluster cluster = clusters.getCluster(clusterName);
- StackId stackId = cluster.getDesiredStackVersion();
// use the host role command to get to the parent upgrade group
UpgradeItemEntity upgradeItem = m_upgradeDAO.findUpgradeItemByRequestAndStage(requestId,stageId);
@@ -197,8 +191,8 @@ public class AutoSkipFailedSummaryAction extends AbstractServerAction {
Role role = skippedTask.getRole();
if (! publishedHostComponentsOnHost.contains(role)) {
HashMap<String, String> details = new HashMap<>();
- String service = ambariMetaInfo.getComponentToService(
- stackId.getStackName(), stackId.getStackVersion(), role.toString());
+
+ String service = cluster.getServiceByComponentName(role.toString()).getName();
details.put("service", service);
details.put("component", role.toString());
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
index cf2844b..4d943f4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
@@ -74,6 +74,14 @@ public interface Cluster {
Service getService(String serviceName) throws AmbariException;
/**
+ * Gets a service from the given component name.
+ * @param componentName
+ * @return
+ * @throws AmbariException
+ */
+ Service getServiceByComponentName(String componentName) throws AmbariException;
+
+ /**
* Get all services
* @return
*/
@@ -199,34 +207,6 @@ public interface Cluster {
VersionDefinitionXml versionDefinitionXml, boolean forceInstalled) throws AmbariException;
/**
-
- * Update state of a cluster stack version for cluster based on states of host versions and stackids.
- * @param repositoryVersion the repository version entity whose version is a value like 2.2.1.0-100)
- * @throws AmbariException
- */
-// void recalculateClusterVersionState(RepositoryVersionEntity repositoryVersion) throws AmbariException;
-
- /**
- * Update state of all cluster stack versions for cluster based on states of host versions.
- * @throws AmbariException
- */
-// void recalculateAllClusterVersionStates() throws AmbariException;
-
- /**
- * Transition an existing cluster version from one state to another.
- *
- * @param stackId
- * Stack ID
- * @param version
- * Stack version
- * @param state
- * Desired state
- * @throws AmbariException
- */
-// void transitionClusterVersion(StackId stackId, String version,
-// RepositoryVersionState state) throws AmbariException;
-
- /**
* Gets whether the cluster is still initializing or has finished with its
* deployment requests.
*
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java
index aa53564..88e0cb8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Clusters.java
@@ -209,15 +209,6 @@ public interface Clusters {
throws AmbariException;
/**
- * Sets the current stack version for the cluster
- * @param clusterName The name of the cluster
- * @param stackId The identifier for the stack
- * @throws AmbariException
- */
- void setCurrentStackVersion(String clusterName, StackId stackId)
- throws AmbariException;
-
- /**
* Update the host set for clusters and the host attributes associated with the hosts
* @param hostsClusters
* @param hostAttributes
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigFactory.java
index d6cd997..78f10cd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigFactory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigFactory.java
@@ -19,6 +19,8 @@ package org.apache.ambari.server.state;
import java.util.Map;
+import org.apache.ambari.annotations.Experimental;
+import org.apache.ambari.annotations.ExperimentalFeature;
import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
import com.google.inject.assistedinject.Assisted;
@@ -38,9 +40,25 @@ public interface ConfigFactory {
* @param mapAttributes
* @return
*/
+ @Experimental(feature = ExperimentalFeature.MULTI_SERVICE,
+ comment = "This constructor is only used for test compatibility and should be removed")
Config createNew(Cluster cluster, @Assisted("type") String type, @Assisted("tag") String tag,
Map<String, String> map, Map<String, Map<String, String>> mapAttributes);
+
+ /**
+ * Creates a new {@link Config} object using provided values.
+ *
+ * @param cluster
+ * @param type
+ * @param tag
+ * @param map
+ * @param mapAttributes
+ * @return
+ */
+ Config createNew(StackId stackId, Cluster cluster, @Assisted("type") String type, @Assisted("tag") String tag,
+ Map<String, String> map, Map<String, Map<String, String>> mapAttributes);
+
/**
* Creates a new {@link Config} object using provided entity
*
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/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 05b50ab..96c2dd0 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
@@ -17,14 +17,12 @@
*/
package org.apache.ambari.server.state;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@@ -775,23 +773,31 @@ public class ConfigHelper {
* @throws AmbariException
*/
public String getPropertyValueFromStackDefinitions(Cluster cluster, String configType, String propertyName) throws AmbariException {
- StackId stackId = cluster.getCurrentStackVersion();
- StackInfo stack = ambariMetaInfo.getStack(stackId.getStackName(),
- stackId.getStackVersion());
- for (ServiceInfo serviceInfo : stack.getServices()) {
- Set<PropertyInfo> serviceProperties = ambariMetaInfo.getServiceProperties(stack.getName(), stack.getVersion(), serviceInfo.getName());
- Set<PropertyInfo> stackProperties = ambariMetaInfo.getStackProperties(stack.getName(), stack.getVersion());
- serviceProperties.addAll(stackProperties);
+ Set<StackId> stackIds = new HashSet<>();
- for (PropertyInfo stackProperty : serviceProperties) {
- String stackPropertyConfigType = fileNameToConfigType(stackProperty.getFilename());
+ for (Service service : cluster.getServices().values()) {
+ stackIds.add(service.getDesiredStackId());
+ }
+
+ for (StackId stackId : stackIds) {
- if (stackProperty.getName().equals(propertyName) && stackPropertyConfigType.equals(configType)) {
- return stackProperty.getValue();
+ StackInfo stack = ambariMetaInfo.getStack(stackId.getStackName(),
+ stackId.getStackVersion());
+
+ for (ServiceInfo serviceInfo : stack.getServices()) {
+ Set<PropertyInfo> serviceProperties = ambariMetaInfo.getServiceProperties(stack.getName(), stack.getVersion(), serviceInfo.getName());
+ Set<PropertyInfo> stackProperties = ambariMetaInfo.getStackProperties(stack.getName(), stack.getVersion());
+ serviceProperties.addAll(stackProperties);
+
+ for (PropertyInfo stackProperty : serviceProperties) {
+ String stackPropertyConfigType = fileNameToConfigType(stackProperty.getFilename());
+
+ if (stackProperty.getName().equals(propertyName) && stackPropertyConfigType.equals(configType)) {
+ return stackProperty.getValue();
+ }
}
}
-
}
return null;
@@ -850,20 +856,22 @@ public class ConfigHelper {
}
public ServiceInfo getPropertyOwnerService(Cluster cluster, String configType, String propertyName) throws AmbariException {
- StackId stackId = cluster.getCurrentStackVersion();
- StackInfo stack = ambariMetaInfo.getStack(stackId.getStackName(), stackId.getStackVersion());
- for (ServiceInfo serviceInfo : stack.getServices()) {
- Set<PropertyInfo> serviceProperties = ambariMetaInfo.getServiceProperties(stack.getName(), stack.getVersion(), serviceInfo.getName());
+ for (Service service : cluster.getServices().values()) {
+ StackId stackId = service.getDesiredStackId();
+ StackInfo stack = ambariMetaInfo.getStack(stackId.getStackName(), stackId.getStackVersion());
- for (PropertyInfo stackProperty : serviceProperties) {
- String stackPropertyConfigType = fileNameToConfigType(stackProperty.getFilename());
+ for (ServiceInfo serviceInfo : stack.getServices()) {
+ Set<PropertyInfo> serviceProperties = ambariMetaInfo.getServiceProperties(stack.getName(), stack.getVersion(), serviceInfo.getName());
- if (stackProperty.getName().equals(propertyName) && stackPropertyConfigType.equals(configType)) {
- return serviceInfo;
+ for (PropertyInfo stackProperty : serviceProperties) {
+ String stackPropertyConfigType = fileNameToConfigType(stackProperty.getFilename());
+
+ if (stackProperty.getName().equals(propertyName) && stackPropertyConfigType.equals(configType)) {
+ return serviceInfo;
+ }
}
}
-
}
return null;
@@ -873,7 +881,9 @@ public class ConfigHelper {
// The original implementation of this method is to return all properties regardless of whether
// they should be excluded or not. By setting removeExcluded to false in the method invocation
// below, no attempt will be made to remove properties that exist in excluded types.
- return getServiceProperties(cluster.getCurrentStackVersion(), serviceName, false);
+ Service service = cluster.getService(serviceName);
+
+ return getServiceProperties(service.getDesiredStackId(), serviceName, false);
}
/**
@@ -922,10 +932,20 @@ public class ConfigHelper {
}
public Set<PropertyInfo> getStackProperties(Cluster cluster) throws AmbariException {
- StackId stackId = cluster.getCurrentStackVersion();
- StackInfo stack = ambariMetaInfo.getStack(stackId.getStackName(), stackId.getStackVersion());
- return ambariMetaInfo.getStackProperties(stack.getName(), stack.getVersion());
+ Set<StackId> stackIds = new HashSet<>();
+ for (Service service : cluster.getServices().values()) {
+ stackIds.add(service.getDesiredStackId());
+ }
+
+ Set<PropertyInfo> propertySets = new HashSet<>();
+
+ for (StackId stackId : stackIds) {
+ StackInfo stack = ambariMetaInfo.getStack(stackId.getStackName(), stackId.getStackVersion());
+ propertySets.addAll(ambariMetaInfo.getStackProperties(stack.getName(), stack.getVersion()));
+ }
+
+ return propertySets;
}
/**
@@ -1138,7 +1158,7 @@ public class ConfigHelper {
}
}
- return controller.createConfig(cluster, type, properties, tag, propertyAttributes);
+ return controller.createConfig(cluster.getDesiredStackVersion(), cluster, type, properties, tag, propertyAttributes);
}
/**
@@ -1197,28 +1217,6 @@ public class ConfigHelper {
return defaultPropertiesByType;
}
- /**
- * Gets whether configurations are stale for a given service host component.
- *
- * @param sch
- * the SCH to calcualte config staleness for (not {@code null}).
- * @param desiredConfigs
- * the desired configurations for the cluster. Obtaining these can be
- * expensive and since this method operates on SCH's, it could be
- * called 10,000's of times when generating cluster/host responses.
- * Therefore, the caller should build these once and pass them in. If
- * {@code null}, then this method will retrieve them at runtime,
- * incurring a performance penality.
- * @return
- * @throws AmbariException
- */
- private boolean calculateIsStaleConfigs(ServiceComponentHost sch,
- Map<String, DesiredConfig> desiredConfigs) throws AmbariException {
-
- HostComponentDesiredStateEntity hostComponentDesiredStateEntity = sch.getDesiredStateEntity();
- return calculateIsStaleConfigs(sch, desiredConfigs, hostComponentDesiredStateEntity);
- }
-
private boolean calculateIsStaleConfigs(ServiceComponentHost sch, Map<String, DesiredConfig> desiredConfigs,
HostComponentDesiredStateEntity hostComponentDesiredStateEntity) throws AmbariException {
@@ -1252,7 +1250,7 @@ public class ConfigHelper {
stale = false;
- StackId stackId = cluster.getDesiredStackVersion();
+ StackId stackId = sch.getServiceComponent().getDesiredStackId();
ServiceInfo serviceInfo = ambariMetaInfo.getService(stackId.getStackName(),
stackId.getStackVersion(), sch.getServiceName());
@@ -1326,64 +1324,6 @@ public class ConfigHelper {
}
/**
- * @return <code>true</code> if any service on the stack defines a property
- * for the type.
- */
- private boolean hasPropertyFor(StackId stack, String type,
- Collection<String> keys) throws AmbariException {
-
- for (ServiceInfo svc : ambariMetaInfo.getServices(stack.getStackName(),
- stack.getStackVersion()).values()) {
-
- if (svc.hasDependencyAndPropertyFor(type, keys)) {
- return true;
- }
-
- }
-
- return false;
- }
-
- /**
- * @return the keys that have changed values
- */
- private Collection<String> findChangedKeys(Cluster cluster, String type,
- Collection<String> desiredTags, Collection<String> actualTags) {
-
- Map<String, String> desiredValues = new HashMap<>();
- Map<String, String> actualValues = new HashMap<>();
-
- for (String tag : desiredTags) {
- Config config = cluster.getConfig(type, tag);
- if (null != config) {
- desiredValues.putAll(config.getProperties());
- }
- }
-
- for (String tag : actualTags) {
- Config config = cluster.getConfig(type, tag);
- if (null != config) {
- actualValues.putAll(config.getProperties());
- }
- }
-
- List<String> keys = new ArrayList<>();
-
- for (Entry<String, String> entry : desiredValues.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue();
-
- if (!actualValues.containsKey(key)) {
- keys.add(key);
- } else if (!actualValues.get(key).equals(value)) {
- keys.add(key);
- }
- }
-
- return keys;
- }
-
- /**
* @return the map of tags for a desired config
*/
private Map<String, String> buildTags(HostConfig hc) {
@@ -1419,23 +1359,6 @@ public class ConfigHelper {
return !desiredSet.equals(actualSet);
}
- /**
- * @return the list of combined config property names
- */
- private Collection<String> mergeKeyNames(Cluster cluster, String type, Collection<String> tags) {
- Set<String> names = new HashSet<>();
-
- for (String tag : tags) {
- Config config = cluster.getConfig(type, tag);
- if (null != config) {
- names.addAll(config.getProperties().keySet());
- }
- }
-
- return names;
- }
-
-
public static String fileNameToConfigType(String filename) {
int extIndex = filename.indexOf(AmbariMetaInfo.SERVICE_CONFIG_FILE_NAME_POSTFIX);
return filename.substring(0, extIndex);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
index 0e40254..0adf1bd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ConfigImpl.java
@@ -101,6 +101,17 @@ public class ConfigImpl implements Config {
@Assisted Map<String, String> properties,
@Assisted @Nullable Map<String, Map<String, String>> propertiesAttributes, ClusterDAO clusterDAO,
Gson gson, AmbariEventPublisher eventPublisher, LockFactory lockFactory) {
+ this(cluster.getDesiredStackVersion(), cluster, type, tag, properties, propertiesAttributes,
+ clusterDAO, gson, eventPublisher, lockFactory);
+ }
+
+
+ @AssistedInject
+ ConfigImpl(@Assisted @Nullable StackId stackId, @Assisted Cluster cluster, @Assisted("type") String type,
+ @Assisted("tag") @Nullable String tag,
+ @Assisted Map<String, String> properties,
+ @Assisted @Nullable Map<String, Map<String, String>> propertiesAttributes, ClusterDAO clusterDAO,
+ Gson gson, AmbariEventPublisher eventPublisher, LockFactory lockFactory) {
propertyLock = lockFactory.newReadWriteLock(PROPERTY_LOCK_LABEL);
@@ -139,7 +150,7 @@ public class ConfigImpl implements Config {
// when creating a brand new config without a backing entity, use the
// cluster's desired stack as the config's stack
- stackId = cluster.getDesiredStackVersion();
+ this.stackId = stackId;
propertiesTypes = cluster.getConfigPropertiesTypes(type);
persist(entity);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java
index 9a35bcc..632298d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentHost.java
@@ -254,4 +254,11 @@ public interface ServiceComponentHost {
*/
HostVersionEntity recalculateHostVersionState() throws AmbariException;
+ /**
+ * Convenience method to get the desired stack id from the service component
+ *
+ * @return the desired stack id
+ */
+ StackId getDesiredStackId();
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
index 3c8ef35..ca73f17 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
@@ -40,7 +40,6 @@ import org.apache.ambari.server.orm.dao.HostComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
-import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterServiceEntity;
import org.apache.ambari.server.orm.entities.ClusterServiceEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
@@ -92,11 +91,6 @@ public class ServiceComponentImpl implements ServiceComponent {
*/
private final long desiredStateEntityId;
- /**
- * Data access object used for lookup up stacks.
- */
- private final StackDAO stackDAO;
-
@Inject
private RepositoryVersionDAO repoVersionDAO;
@@ -108,7 +102,7 @@ public class ServiceComponentImpl implements ServiceComponent {
AmbariMetaInfo ambariMetaInfo,
ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO,
ClusterServiceDAO clusterServiceDAO, ServiceComponentHostFactory serviceComponentHostFactory,
- StackDAO stackDAO, AmbariEventPublisher eventPublisher)
+ AmbariEventPublisher eventPublisher)
throws AmbariException {
this.ambariMetaInfo = ambariMetaInfo;
@@ -117,7 +111,6 @@ public class ServiceComponentImpl implements ServiceComponent {
this.serviceComponentDesiredStateDAO = serviceComponentDesiredStateDAO;
this.clusterServiceDAO = clusterServiceDAO;
this.serviceComponentHostFactory = serviceComponentHostFactory;
- this.stackDAO = stackDAO;
this.eventPublisher = eventPublisher;
ServiceComponentDesiredStateEntity desiredStateEntity = new ServiceComponentDesiredStateEntity();
@@ -161,14 +154,13 @@ public class ServiceComponentImpl implements ServiceComponent {
ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO,
ClusterServiceDAO clusterServiceDAO,
HostComponentDesiredStateDAO hostComponentDesiredStateDAO,
- ServiceComponentHostFactory serviceComponentHostFactory, StackDAO stackDAO,
+ ServiceComponentHostFactory serviceComponentHostFactory,
AmbariEventPublisher eventPublisher)
throws AmbariException {
this.service = service;
this.serviceComponentDesiredStateDAO = serviceComponentDesiredStateDAO;
this.clusterServiceDAO = clusterServiceDAO;
this.serviceComponentHostFactory = serviceComponentHostFactory;
- this.stackDAO = stackDAO;
this.eventPublisher = eventPublisher;
this.ambariMetaInfo = ambariMetaInfo;
@@ -191,7 +183,7 @@ public class ServiceComponentImpl implements ServiceComponent {
serviceComponentHostFactory.createExisting(this,
hostComponentStateEntity, hostComponentDesiredStateEntity));
} catch(ProvisionException ex) {
- StackId currentStackId = service.getCluster().getCurrentStackVersion();
+ StackId currentStackId = getDesiredStackId();
LOG.error(String.format("Can not get host component info: stackName=%s, stackVersion=%s, serviceName=%s, componentName=%s, hostname=%s",
currentStackId.getStackName(), currentStackId.getStackVersion(),
service.getName(),serviceComponentDesiredStateEntity.getComponentName(), hostComponentStateEntity.getHostName()));
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
index 6bb0ffb..6c7c238 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java
@@ -161,7 +161,7 @@ public class ServiceImpl implements Service {
serviceComponentFactory.createExisting(this,
serviceComponentDesiredStateEntity));
} catch(ProvisionException ex) {
- StackId stackId = cluster.getCurrentStackVersion();
+ StackId stackId = new StackId(serviceComponentDesiredStateEntity.getDesiredStack());
LOG.error(String.format("Can not get component info: stackName=%s, stackVersion=%s, serviceName=%s, componentName=%s",
stackId.getStackName(), stackId.getStackVersion(),
serviceEntity.getServiceName(),serviceComponentDesiredStateEntity.getComponentName()));
@@ -186,8 +186,8 @@ public class ServiceImpl implements Service {
@Override
public void updateServiceInfo() throws AmbariException {
try {
- ServiceInfo serviceInfo = ambariMetaInfo.getService(cluster.getDesiredStackVersion().getStackName(),
- cluster.getDesiredStackVersion().getStackVersion(), getName());
+ ServiceInfo serviceInfo = ambariMetaInfo.getService(this);
+
isClientOnlyService = serviceInfo.isClientOnlyService();
isCredentialStoreSupported = serviceInfo.isCredentialStoreSupported();
isCredentialStoreRequired = serviceInfo.isCredentialStoreRequired();
@@ -197,7 +197,7 @@ public class ServiceImpl implements Service {
+ " not recognized in stack info"
+ ", clusterName=" + cluster.getClusterName()
+ ", serviceName=" + getName()
- + ", stackInfo=" + cluster.getDesiredStackVersion().getStackName());
+ + ", stackInfo=" + getDesiredStackId().getStackName());
}
}
@@ -308,8 +308,13 @@ public class ServiceImpl implements Service {
@Override
public StackId getDesiredStackId() {
ServiceDesiredStateEntity serviceDesiredStateEntity = getServiceDesiredStateEntity();
- StackEntity desiredStackEntity = serviceDesiredStateEntity.getDesiredStack();
- return new StackId(desiredStackEntity);
+
+ if (null == serviceDesiredStateEntity) {
+ return null;
+ } else {
+ StackEntity desiredStackEntity = serviceDesiredStateEntity.getDesiredStack();
+ return new StackId(desiredStackEntity);
+ }
}
/**
@@ -470,7 +475,7 @@ public class ServiceImpl implements Service {
persistEntities(serviceEntity);
// publish the service installed event
- StackId stackId = cluster.getDesiredStackVersion();
+ StackId stackId = getDesiredStackId();
cluster.addService(this);
ServiceInstalledEvent event = new ServiceInstalledEvent(getClusterId(), stackId.getStackName(),
@@ -595,10 +600,14 @@ public class ServiceImpl implements Service {
deleteAllComponents();
deleteAllServiceConfigs();
+ StackId stackId = getDesiredStackId();
+
removeEntities();
// publish the service removed event
- StackId stackId = cluster.getDesiredStackVersion();
+ if (null == stackId) {
+ return;
+ }
ServiceRemovedEvent event = new ServiceRemovedEvent(getClusterId(), stackId.getStackName(),
stackId.getStackVersion(), getName());
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/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 e4ac23e..23b6db1 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
@@ -34,7 +34,6 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import javax.annotation.Nullable;
@@ -195,9 +194,6 @@ public class ClusterImpl implements Cluster {
private final ReadWriteLock clusterGlobalLock;
- // This is a lock for operations that do not need to be cluster global
- private final Lock hostTransitionStateWriteLock;
-
/**
* The unique ID of the {@link @ClusterEntity}.
*/
@@ -315,7 +311,6 @@ public class ClusterImpl implements Cluster {
injector.injectMembers(this);
clusterGlobalLock = lockFactory.newReadWriteLock("clusterGlobalLock");
- hostTransitionStateWriteLock = lockFactory.newLock("hostTransitionStateLock");
loadStackVersion();
loadServices();
@@ -876,6 +871,20 @@ public class ClusterImpl implements Cluster {
}
@Override
+ public Service getServiceByComponentName(String componentName) throws AmbariException {
+ for (Service service : services.values()) {
+ for (ServiceComponent component : service.getServiceComponents().values()) {
+ if (component.getName().equals(componentName)) {
+ return service;
+ }
+ }
+ }
+
+ throw new ServiceNotFoundException(getClusterName(), "component: " + componentName);
+ }
+
+
+ @Override
public StackId getDesiredStackVersion() {
return desiredStackVersion;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
index bdc4f90..3700c9f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClustersImpl.java
@@ -37,7 +37,6 @@ import org.apache.ambari.server.ClusterNotFoundException;
import org.apache.ambari.server.DuplicateResourceException;
import org.apache.ambari.server.HostNotFoundException;
import org.apache.ambari.server.agent.DiskInfo;
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.events.HostRegisteredEvent;
import org.apache.ambari.server.events.HostsAddedEvent;
import org.apache.ambari.server.events.HostsRemovedEvent;
@@ -78,7 +77,6 @@ import org.apache.ambari.server.state.Host;
import org.apache.ambari.server.state.HostHealthStatus;
import org.apache.ambari.server.state.HostHealthStatus.HealthStatus;
import org.apache.ambari.server.state.HostState;
-import org.apache.ambari.server.state.RepositoryInfo;
import org.apache.ambari.server.state.SecurityType;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.configgroup.ConfigGroup;
@@ -128,8 +126,6 @@ public class ClustersImpl implements Clusters {
@Inject
private HostFactory hostFactory;
@Inject
- private AmbariMetaInfo ambariMetaInfo;
- @Inject
private SecurityHelper securityHelper;
@Inject
private TopologyLogicalTaskDAO topologyLogicalTaskDAO;
@@ -297,25 +293,6 @@ public class ClustersImpl implements Clusters {
}
@Override
- public void setCurrentStackVersion(String clusterName, StackId stackId)
- throws AmbariException{
-
- if(stackId == null || clusterName == null || clusterName.isEmpty()){
- LOG.warn("Unable to set version for cluster " + clusterName);
- throw new AmbariException("Unable to set"
- + " version=" + stackId
- + " for cluster " + clusterName);
- }
-
- Cluster cluster = clusters.get(clusterName);
- if (null == cluster) {
- throw new ClusterNotFoundException(clusterName);
- }
-
- cluster.setCurrentStackVersion(stackId);
- }
-
- @Override
public List<Host> getHosts() {
return new ArrayList<>(hosts.values());
}
@@ -428,13 +405,6 @@ public class ClustersImpl implements Clusters {
eventPublisher.publish(event);
}
- private boolean isOsSupportedByClusterStack(Cluster c, Host h) throws AmbariException {
- Map<String, List<RepositoryInfo>> repos =
- ambariMetaInfo.getRepository(c.getDesiredStackVersion().getStackName(),
- c.getDesiredStackVersion().getStackVersion());
- return !(repos == null || repos.isEmpty()) && repos.containsKey(h.getOsFamily());
- }
-
@Override
public void updateHostWithClusterAndAttributes(
Map<String, Set<String>> hostClusters,
@@ -527,11 +497,9 @@ public class ClustersImpl implements Clusters {
@Override
public void mapHostToCluster(String hostname, String clusterName)
throws AmbariException {
- Host host = null;
- Cluster cluster = null;
- host = getHost(hostname);
- cluster = getCluster(clusterName);
+ Host host = getHost(hostname);
+ Cluster cluster = getCluster(clusterName);
// check to ensure there are no duplicates
for (Cluster c : hostClusterMap.get(hostname)) {
@@ -541,15 +509,6 @@ public class ClustersImpl implements Clusters {
}
}
- if (!isOsSupportedByClusterStack(cluster, host)) {
- String message = "Trying to map host to cluster where stack does not"
- + " support host's os type" + ", clusterName=" + clusterName
- + ", clusterStackId=" + cluster.getDesiredStackVersion().getStackId()
- + ", hostname=" + hostname + ", hostOsFamily=" + host.getOsFamily();
- LOG.error(message);
- throw new AmbariException(message);
- }
-
long clusterId = cluster.getClusterId();
if (LOG.isDebugEnabled()) {
LOG.debug("Mapping host {} to cluster {} (id={})", hostname, clusterName,
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
index a74e2a2..a04df3c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
@@ -409,7 +409,7 @@ public class ConfigGroupImpl implements ConfigGroup {
(cluster.getClusterId(), config.getType(), config.getTag());
if (clusterConfigEntity == null) {
- config = configFactory.createNew(cluster, config.getType(), config.getTag(),
+ config = configFactory.createNew(null, cluster, config.getType(), config.getTag(),
config.getProperties(), config.getPropertiesAttributes());
entry.setValue(config);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java
index dbfce48..e07b822 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java
@@ -180,7 +180,7 @@ public class ServiceCheckGrouping extends Grouping {
Service svc = clusterServices.get(service);
if (null != svc) {
// Services that only have clients such as Pig can still have service check scripts.
- StackId stackId = m_cluster.getDesiredStackVersion();
+ StackId stackId = svc.getDesiredStackId();
try {
ServiceInfo si = m_metaInfo.getService(stackId.getStackName(), stackId.getStackVersion(), service);
CommandScriptDefinition script = si.getCommandScript();
@@ -201,6 +201,7 @@ public class ServiceCheckGrouping extends Grouping {
* Attempts to merge all the service check groupings. This merges the excluded list and
* the priorities. The priorities are merged in an order specific manner.
*/
+ @Override
public void merge(Iterator<Grouping> iterator) throws AmbariException {
List<String> priorities = new ArrayList<>();
priorities.addAll(getPriorities());
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
index e08b1f9..1b84f46 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
@@ -1567,4 +1567,13 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
public ServiceComponent getServiceComponent() {
return serviceComponent;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public StackId getDesiredStackId() {
+ return serviceComponent.getDesiredStackId();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
index cb12959..5939fca 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java
@@ -42,6 +42,8 @@ import javax.persistence.EntityManager;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.ambari.annotations.Experimental;
+import org.apache.ambari.annotations.ExperimentalFeature;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
@@ -67,6 +69,7 @@ import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.PropertyInfo;
import org.apache.ambari.server.state.PropertyUpgradeBehavior;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.ServiceInfo;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.StackInfo;
@@ -584,7 +587,7 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog {
propertiesAttributes = Collections.emptyMap();
}
- controller.createConfig(cluster, configType, mergedProperties, newTag, propertiesAttributes);
+ controller.createConfig(cluster.getDesiredStackVersion(), cluster, configType, mergedProperties, newTag, propertiesAttributes);
Config baseConfig = cluster.getConfig(configType, newTag);
if (baseConfig != null) {
@@ -772,7 +775,13 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog {
protected KerberosDescriptor getKerberosDescriptor(Cluster cluster) throws AmbariException {
// Get the Stack-defined Kerberos Descriptor (aka default Kerberos Descriptor)
AmbariMetaInfo ambariMetaInfo = injector.getInstance(AmbariMetaInfo.class);
- StackId stackId = cluster.getCurrentStackVersion();
+
+
+ // !!! FIXME
+ @Experimental(feature = ExperimentalFeature.PATCH_UPGRADES,
+ comment = "can only take the first stack we find until we can support multiple with Kerberos")
+ StackId stackId = getStackId(cluster);
+
KerberosDescriptor defaultDescriptor = ambariMetaInfo.getKerberosDescriptor(stackId.getStackName(), stackId.getStackVersion());
// Get the User-set Kerberos Descriptor
@@ -1065,7 +1074,13 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog {
for (final Cluster cluster : clusterMap.values()) {
long clusterID = cluster.getClusterId();
- StackId stackId = cluster.getDesiredStackVersion();
+ Service service = cluster.getServices().get(serviceName);
+ if (null == service) {
+ continue;
+ }
+
+ StackId stackId = service.getDesiredStackId();
+
Map<String, Object> widgetDescriptor = null;
StackInfo stackInfo = ambariMetaInfo.getStack(stackId.getStackName(), stackId.getStackVersion());
ServiceInfo serviceInfo = stackInfo.getService(serviceName);
@@ -1133,4 +1148,10 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog {
}
}
}
+
+ @Experimental(feature = ExperimentalFeature.PATCH_UPGRADES,
+ comment = "can only take the first stack we find until we can support multiple with Kerberos")
+ private StackId getStackId(Cluster cluster) throws AmbariException {
+ return cluster.getServices().values().iterator().next().getDesiredStackId();
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/upgrade/FinalUpgradeCatalog.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/FinalUpgradeCatalog.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/FinalUpgradeCatalog.java
index 38ad5ba..9418489 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/FinalUpgradeCatalog.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/FinalUpgradeCatalog.java
@@ -20,8 +20,10 @@ package org.apache.ambari.server.upgrade;
import java.sql.SQLException;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
@@ -30,6 +32,7 @@ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.PropertyInfo;
+import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.StackInfo;
import org.apache.ambari.server.utils.VersionUtils;
@@ -91,17 +94,24 @@ public class FinalUpgradeCatalog extends AbstractUpgradeCatalog {
Clusters clusters = ambariManagementController.getClusters();
Map<String, Cluster> clusterMap = getCheckedClusterMap(clusters);
for (final Cluster cluster : clusterMap.values()) {
- Map<String, String> propertyMap = new HashMap<>();
- StackId stackId = cluster.getCurrentStackVersion();
- StackInfo stackInfo = ambariMetaInfo.getStack(stackId.getStackName(), stackId.getStackVersion());
- List<PropertyInfo> properties = stackInfo.getProperties();
- for(PropertyInfo property : properties) {
- if(property.getName().equals(ConfigHelper.CLUSTER_ENV_STACK_FEATURES_PROPERTY) ||
- property.getName().equals(ConfigHelper.CLUSTER_ENV_STACK_TOOLS_PROPERTY)) {
- propertyMap.put(property.getName(), property.getValue());
+
+ Set<StackId> stackIds = new HashSet<>();
+ for (Service service : cluster.getServices().values()) {
+ stackIds.add(service.getDesiredStackId());
+ }
+
+ for (StackId stackId : stackIds) {
+ Map<String, String> propertyMap = new HashMap<>();
+ StackInfo stackInfo = ambariMetaInfo.getStack(stackId.getStackName(), stackId.getStackVersion());
+ List<PropertyInfo> properties = stackInfo.getProperties();
+ for(PropertyInfo property : properties) {
+ if(property.getName().equals(ConfigHelper.CLUSTER_ENV_STACK_FEATURES_PROPERTY) ||
+ property.getName().equals(ConfigHelper.CLUSTER_ENV_STACK_TOOLS_PROPERTY)) {
+ propertyMap.put(property.getName(), property.getValue());
+ }
}
+ updateConfigurationPropertiesForCluster(cluster, ConfigHelper.CLUSTER_ENV, propertyMap, true, true);
}
- updateConfigurationPropertiesForCluster(cluster, ConfigHelper.CLUSTER_ENV, propertyMap, true, true);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java
index edf107a..b7a2e78 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog200.java
@@ -27,8 +27,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.ambari.annotations.Experimental;
+import org.apache.ambari.annotations.ExperimentalFeature;
import org.apache.ambari.server.AmbariException;
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo;
@@ -36,7 +37,6 @@ import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.dao.ClusterServiceDAO;
import org.apache.ambari.server.orm.dao.HostComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
-import org.apache.ambari.server.orm.dao.MetainfoDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.ServiceDesiredStateDAO;
import org.apache.ambari.server.orm.entities.ClusterEntity;
@@ -50,12 +50,10 @@ 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.ConfigHelper;
-import org.apache.ambari.server.state.OperatingSystemInfo;
import org.apache.ambari.server.state.PropertyInfo;
import org.apache.ambari.server.state.RepositoryInfo;
import org.apache.ambari.server.state.SecurityState;
import org.apache.ambari.server.state.SecurityType;
-import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.UpgradeState;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -331,7 +329,10 @@ public class UpgradeCatalog200 extends AbstractUpgradeCatalog {
updateClusterEnvConfiguration();
}
+ @Experimental(feature=ExperimentalFeature.PATCH_UPGRADES,
+ comment = "the metainfo table of storing the latest repo will be removed")
protected void persistHDPRepo() throws AmbariException{
+ /*
AmbariManagementController amc = injector.getInstance(
AmbariManagementController.class);
AmbariMetaInfo ambariMetaInfo = amc.getAmbariMetaInfo();
@@ -369,7 +370,7 @@ public class UpgradeCatalog200 extends AbstractUpgradeCatalog {
cluster.getClusterName());
System.out.println(repositoryTable(ambariMetaInfo.getStack(stackName, stackVersion).getRepositories()));
}
-
+ */
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
index 7b7681c..5c04b79 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java
@@ -1072,18 +1072,23 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
if (clusters != null) {
Map<String, Cluster> clusterMap = clusters.getClusters();
for (final Cluster cluster : clusterMap.values()) {
- StackId stackId = cluster.getCurrentStackVersion();
- if (stackId != null && stackId.getStackName().equals("HDP") &&
+
+ ServiceComponentDesiredStateDAO dao = injector.getInstance(ServiceComponentDesiredStateDAO.class);
+ ServiceComponentDesiredStateEntity entity = dao.findByName(cluster.getClusterId(),
+ "STORM", "STORM_REST_API");
+
+ if (null == entity) {
+ continue;
+ }
+
+ StackId stackId = new StackId(entity.getDesiredStack());
+
+ if (stackId.getStackName().equals("HDP") &&
VersionUtils.compareVersions(stackId.getStackVersion(), "2.2") >= 0) {
executeInTransaction(new Runnable() {
@Override
public void run() {
- ServiceComponentDesiredStateDAO dao = injector.getInstance(ServiceComponentDesiredStateDAO.class);
- ServiceComponentDesiredStateEntity entity = dao.findByName(cluster.getClusterId(),
- "STORM", "STORM_REST_API");
-
- if (entity != null) {
EntityManager em = getEntityManagerProvider().get();
CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -1114,7 +1119,6 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
"delete from servicecomponentdesiredstate where component_name='STORM_REST_API';\n", e);
}
}
- }
});
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a45f5427/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog212.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog212.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog212.java
index 90854dd..8eb2654 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog212.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog212.java
@@ -35,6 +35,7 @@ import org.apache.ambari.server.orm.dao.DaoUtils;
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.Service;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.utils.VersionUtils;
import org.slf4j.Logger;
@@ -305,9 +306,16 @@ public class UpgradeCatalog212 extends AbstractUpgradeCatalog {
if (clusterMap != null && !clusterMap.isEmpty()) {
for (final Cluster cluster : clusterMap.values()) {
+ Service service = cluster.getServices().get("HIVE");
+
+ if (null == service) {
+ continue;
+ }
+
+ StackId stackId = service.getDesiredStackId();
+
String content = null;
Boolean isHiveSitePresent = cluster.getDesiredConfigByType(HIVE_SITE) != null;
- StackId stackId = cluster.getCurrentStackVersion();
Boolean isStackNotLess22 = (stackId != null && stackId.getStackName().equals("HDP") &&
VersionUtils.compareVersions(stackId.getStackVersion(), "2.2") >= 0);