You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ao...@apache.org on 2015/09/09 15:54:59 UTC
[4/4] ambari git commit: AMBARI-12538. Attempting to access the
Ambari Dashboard results in an HTTP 500 Error after changing cluster name and
restarting the Ambari server (aonishuk)
AMBARI-12538. Attempting to access the Ambari Dashboard results in an HTTP 500 Error after changing cluster name and restarting the Ambari server (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a922a53d
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a922a53d
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a922a53d
Branch: refs/heads/branch-2.1
Commit: a922a53d368b9cadb1d13143c756fdd3271bc005
Parents: 5ea86ce
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Wed Sep 9 16:54:46 2015 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Wed Sep 9 16:54:46 2015 +0300
----------------------------------------------------------------------
.../controller/internal/BaseClusterRequest.java | 17 ++---
.../internal/ClusterResourceProvider.java | 2 +-
.../internal/ExportBlueprintRequest.java | 9 ++-
.../internal/HostResourceProvider.java | 2 +-
.../internal/ProvisionClusterRequest.java | 22 ++++++
.../internal/ScaleClusterRequest.java | 22 ++++++
.../server/orm/dao/TopologyRequestDAO.java | 6 +-
.../orm/entities/TopologyRequestEntity.java | 14 ++--
.../ambari/server/topology/AmbariContext.java | 58 ++++++++++------
.../topology/ClusterConfigurationRequest.java | 13 +++-
.../ambari/server/topology/ClusterTopology.java | 14 ++--
.../server/topology/ClusterTopologyImpl.java | 35 +++++++---
.../ambari/server/topology/HostRequest.java | 17 ++---
.../ambari/server/topology/LogicalRequest.java | 10 ++-
.../server/topology/PersistedStateImpl.java | 16 ++---
.../ambari/server/topology/TopologyManager.java | 42 +++++++-----
.../ambari/server/topology/TopologyRequest.java | 6 +-
.../server/topology/TopologyRequestFactory.java | 4 +-
.../topology/TopologyRequestFactoryImpl.java | 2 +-
.../server/upgrade/UpgradeCatalog212.java | 71 ++++++++++++++++++++
.../main/resources/Ambari-DDL-MySQL-CREATE.sql | 3 +-
.../main/resources/Ambari-DDL-Oracle-CREATE.sql | 3 +-
.../resources/Ambari-DDL-Postgres-CREATE.sql | 3 +-
.../Ambari-DDL-Postgres-EMBEDDED-CREATE.sql | 3 +-
.../resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 3 +-
.../resources/Ambari-DDL-SQLServer-CREATE.sql | 3 +-
.../BlueprintConfigurationProcessorTest.java | 2 +-
.../internal/ClusterResourceProviderTest.java | 2 +-
.../internal/ExportBlueprintRequestTest.java | 2 +
.../internal/ProvisionClusterRequestTest.java | 6 +-
.../internal/ScaleClusterRequestTest.java | 12 ++--
.../orm/dao/TopologyLogicalRequestDAOTest.java | 4 +-
.../server/orm/dao/TopologyRequestDAOTest.java | 8 +--
.../server/topology/AmbariContextTest.java | 17 +++--
.../topology/ClusterTopologyImplTest.java | 7 +-
.../server/topology/TopologyManagerTest.java | 12 ++--
.../server/upgrade/UpgradeCatalog212Test.java | 47 +++++++++++++
37 files changed, 374 insertions(+), 145 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseClusterRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseClusterRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseClusterRequest.java
index 7f6a634..22bffe6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseClusterRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BaseClusterRequest.java
@@ -46,9 +46,9 @@ public abstract class BaseClusterRequest implements TopologyRequest {
protected final Map<String, HostGroupInfo> hostGroupInfoMap = new HashMap<String, HostGroupInfo>();
/**
- * cluster name
+ * cluster id
*/
- protected String clusterName;
+ protected Long clusterId;
/**
* blueprint
@@ -86,8 +86,8 @@ public abstract class BaseClusterRequest implements TopologyRequest {
}
@Override
- public String getClusterName() {
- return clusterName;
+ public Long getClusterId() {
+ return clusterId;
}
@Override
@@ -138,15 +138,6 @@ public abstract class BaseClusterRequest implements TopologyRequest {
}
/**
- * Set the request cluster name.
- *
- * @param clusterName cluster name
- */
- protected void setClusterName(String clusterName) {
- this.clusterName = clusterName;
- }
-
- /**
* Set the request blueprint.
*
* @param blueprint blueprint
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
index 812aa5d..7e75a75 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterResourceProvider.java
@@ -463,7 +463,7 @@ public class ClusterResourceProvider extends AbstractControllerResourceProvider
LOG.info("Creating Cluster '" + properties.get(CLUSTER_NAME_PROPERTY_ID) +
"' based on blueprint '" + String.valueOf(properties.get(BLUEPRINT_PROPERTY_ID)) + "'.");
- TopologyRequest createClusterRequest;
+ ProvisionClusterRequest createClusterRequest;
try {
createClusterRequest = topologyRequestFactory.createProvisionClusterRequest(properties);
} catch (InvalidTopologyTemplateException e) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequest.java
index 8b13826..c80ae2c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequest.java
@@ -59,6 +59,7 @@ public class ExportBlueprintRequest implements TopologyRequest {
private static AmbariManagementController controller = AmbariServer.getController();
private String clusterName;
+ private Long clusterId;
private Blueprint blueprint;
private Configuration configuration;
//todo: Should this map be represented by a new class?
@@ -69,6 +70,8 @@ public class ExportBlueprintRequest implements TopologyRequest {
Resource clusterResource = clusterNode.getObject();
clusterName = String.valueOf(clusterResource.getPropertyValue(
ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID));
+ clusterId = Long.valueOf(String.valueOf(clusterResource.getPropertyValue(
+ ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID)));
createConfiguration(clusterNode);
@@ -80,12 +83,16 @@ public class ExportBlueprintRequest implements TopologyRequest {
createBlueprint(exportedHostGroups, parseStack(clusterResource));
}
- @Override
public String getClusterName() {
return clusterName;
}
@Override
+ public Long getClusterId() {
+ return clusterId;
+ }
+
+ @Override
public Type getType() {
return Type.EXPORT;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java
index c7f0e9b..39d4040 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostResourceProvider.java
@@ -854,7 +854,7 @@ public class HostResourceProvider extends AbstractControllerResourceProvider {
//todo: for api/v1/hosts we also end up here so we need to ensure proper 400 response
//todo: since a user shouldn't be posing to that endpoint
private RequestStatusResponse submitHostRequests(Request request) throws SystemException {
- TopologyRequest requestRequest;
+ ScaleClusterRequest requestRequest;
try {
requestRequest = new ScaleClusterRequest(request.getProperties());
} catch (InvalidTopologyTemplateException e) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java
index 0150141..4a906b1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequest.java
@@ -85,6 +85,11 @@ public class ProvisionClusterRequest extends BaseClusterRequest {
private static ConfigurationFactory configurationFactory = new ConfigurationFactory();
/**
+ * cluster name
+ */
+ private String clusterName;
+
+ /**
* default password
*/
private String defaultPassword;
@@ -120,6 +125,23 @@ public class ProvisionClusterRequest extends BaseClusterRequest {
parseHostGroupInfo(properties);
}
+ public String getClusterName() {
+ return clusterName;
+ }
+
+ public void setClusterName(String clusterName) {
+ this.clusterName = clusterName;
+ }
+
+ @Override
+ public Long getClusterId() {
+ return clusterId;
+ }
+
+ public void setClusterId(Long clusterId) {
+ this.clusterId = clusterId;
+ }
+
@Override
public Type getType() {
return Type.PROVISION;
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java
index a6995ed..d784f1d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ScaleClusterRequest.java
@@ -38,6 +38,11 @@ import java.util.Set;
public class ScaleClusterRequest extends BaseClusterRequest {
/**
+ * cluster name
+ */
+ private String clusterName;
+
+ /**
* Constructor.
*
* @param propertySet set of request properties
@@ -58,6 +63,23 @@ public class ScaleClusterRequest extends BaseClusterRequest {
}
}
+ public String getClusterName() {
+ return clusterName;
+ }
+
+ public void setClusterName(String clusterName) {
+ this.clusterName = clusterName;
+ }
+
+ @Override
+ public Long getClusterId() {
+ return clusterId;
+ }
+
+ public void setClusterId(Long clusterId) {
+ this.clusterId = clusterId;
+ }
+
@Override
public Type getType() {
return Type.SCALE;
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java
index b58129d..65cd59f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/TopologyRequestDAO.java
@@ -41,11 +41,11 @@ public class TopologyRequestDAO {
}
@RequiresSession
- public List<TopologyRequestEntity> findByCluster(String clusterName) {
+ public List<TopologyRequestEntity> findByClusterId(long clusterId) {
TypedQuery<TopologyRequestEntity> query = entityManagerProvider.get()
- .createNamedQuery("TopologyRequestEntity.findByCluster", TopologyRequestEntity.class);
+ .createNamedQuery("TopologyRequestEntity.findByClusterId", TopologyRequestEntity.class);
- query.setParameter("clusterName", clusterName);
+ query.setParameter("clusterId", clusterId);
return daoUtils.selectList(query);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/TopologyRequestEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/TopologyRequestEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/TopologyRequestEntity.java
index 8535ed8..923ff9c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/TopologyRequestEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/TopologyRequestEntity.java
@@ -40,7 +40,7 @@ import java.util.Collection;
pkColumnName = "sequence_name", valueColumnName = "sequence_value",
pkColumnValue = "topology_request_id_seq", initialValue = 0)
@NamedQueries({
- @NamedQuery(name = "TopologyRequestEntity.findByCluster", query = "SELECT req FROM TopologyRequestEntity req WHERE req.clusterName = :clusterName")
+ @NamedQuery(name = "TopologyRequestEntity.findByClusterId", query = "SELECT req FROM TopologyRequestEntity req WHERE req.clusterId = :clusterId")
})
public class TopologyRequestEntity {
@Id
@@ -51,8 +51,8 @@ public class TopologyRequestEntity {
@Column(name = "action", length = 255, nullable = false)
private String action;
- @Column(name = "cluster_name", length = 100, nullable = false)
- private String clusterName;
+ @Column(name = "cluster_id", nullable = true)
+ private Long clusterId;
@Column(name = "bp_name", length = 100, nullable = false)
private String blueprintName;
@@ -92,12 +92,12 @@ public class TopologyRequestEntity {
this.action = action;
}
- public String getClusterName() {
- return clusterName;
+ public Long getClusterId() {
+ return clusterId;
}
- public void setClusterName(String clusterName) {
- this.clusterName = clusterName;
+ public void setClusterId(Long clusterId) {
+ this.clusterId = clusterId;
}
public String getBlueprintName() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
index 40717cc..0cf3bf2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
@@ -89,12 +89,12 @@ public class AmbariContext {
private final static Logger LOG = LoggerFactory.getLogger(AmbariContext.class);
- public boolean isClusterKerberosEnabled(String clusterName) {
+ public boolean isClusterKerberosEnabled(long clusterId) {
Cluster cluster;
try {
- cluster = getController().getClusters().getCluster(clusterName);
+ cluster = getController().getClusters().getClusterById(clusterId);
} catch (AmbariException e) {
- throw new RuntimeException("Parent Cluster resource doesn't exist. clusterName= " + clusterName);
+ throw new RuntimeException("Parent Cluster resource doesn't exist. clusterId= " + clusterId);
}
return cluster.getSecurityType() == SecurityType.KERBEROS;
}
@@ -136,11 +136,10 @@ public class AmbariContext {
return getController().getActionManager().getTaskById(id);
}
- public void createAmbariResources(ClusterTopology topology) {
- String clusterName = topology.getClusterName();
+ public void createAmbariResources(ClusterTopology topology, String clusterName) {
Stack stack = topology.getBlueprint().getStack();
createAmbariClusterResource(clusterName, stack.getName(), stack.getVersion());
- createAmbariServiceAndComponentResources(topology);
+ createAmbariServiceAndComponentResources(topology, clusterName);
}
public void createAmbariClusterResource(String clusterName, String stackName, String stackVersion) {
@@ -154,8 +153,7 @@ public class AmbariContext {
}
}
- public void createAmbariServiceAndComponentResources(ClusterTopology topology) {
- String clusterName = topology.getClusterName();
+ public void createAmbariServiceAndComponentResources(ClusterTopology topology, String clusterName) {
Collection<String> services = topology.getBlueprint().getServices();
try {
@@ -200,7 +198,7 @@ public class AmbariContext {
}
}
- public void createAmbariHostResources(String clusterName, String hostName, Map<String, Collection<String>> components) {
+ public void createAmbariHostResources(long clusterId, String hostName, Map<String, Collection<String>> components) {
Host host;
try {
host = getController().getClusters().getHost(hostName);
@@ -210,6 +208,14 @@ public class AmbariContext {
"Unable to obtain host instance '%s' when persisting host resources", hostName));
}
+ String clusterName = null;
+ try {
+ clusterName = getClusterName(clusterId);
+ } catch (AmbariException e) {
+ LOG.error("Cannot get cluster name for clusterId = " + clusterId, e);
+ throw new RuntimeException(e);
+ }
+
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID, clusterName);
properties.put(HostResourceProvider.HOST_NAME_PROPERTY_ID, hostName);
@@ -250,12 +256,12 @@ public class AmbariContext {
*/
//todo: do once for all configs
public void convertGlobalProperties(ClusterTopology topology,
- Map<String, Map<String, String>> blueprintConfigurations) {
+ Map<String, Map<String, String>> blueprintConfigurations) throws AmbariException {
Stack stack = topology.getBlueprint().getStack();
StackId stackId = new StackId(stack.getName(), stack.getVersion());
getController().getConfigHelper().moveDeprecatedGlobals(
- stackId, blueprintConfigurations, topology.getClusterName());
+ stackId, blueprintConfigurations, getClusterName(topology.getClusterId()));
}
public Long getNextRequestId() {
@@ -387,10 +393,10 @@ public class AmbariContext {
}
}
- public boolean doesConfigurationWithTagExist(String clusterName, String tag) {
+ public boolean doesConfigurationWithTagExist(long clusterId, String tag) {
boolean isTopologyResolved = false;
try {
- Cluster cluster = getController().getClusters().getCluster(clusterName);
+ Cluster cluster = getController().getClusters().getClusterById(clusterId);
Collection<DesiredConfig> desiredConfigs = cluster.getDesiredConfigs().values();
for (DesiredConfig config : desiredConfigs) {
if (config.getTag().equals(tag)) {
@@ -400,10 +406,10 @@ public class AmbariContext {
}
} catch (ClusterNotFoundException e) {
LOG.info("Attempted to determine if configuration is topology resolved for a non-existent cluster: {}",
- clusterName);
+ clusterId);
} catch (AmbariException e) {
throw new RuntimeException(
- "Unable to determine if cluster config is topology resolved due to unknown error: " + e, e);
+ "Unable to determine if cluster config is topology resolved due to unknown error: " + e, e);
}
return isTopologyResolved;
@@ -413,10 +419,10 @@ public class AmbariContext {
return persistedState;
}
- public boolean isHostRegisteredWithCluster(String cluster, String host) {
+ public boolean isHostRegisteredWithCluster(long clusterId, String host) {
boolean found = false;
try {
- Collection<Host> hosts = getController().getClusters().getCluster(cluster).getHosts();
+ Collection<Host> hosts = getController().getClusters().getClusterById(clusterId).getHosts();
for (Host h : hosts) {
if (h.getHostName().equals(host)) {
found = true;
@@ -424,11 +430,19 @@ public class AmbariContext {
}
}
} catch (AmbariException e) {
- throw new RuntimeException(String.format("Unable to get hosts for cluster '%s': %s", cluster, e), e);
+ throw new RuntimeException(String.format("Unable to get hosts for cluster ID = %s: %s", clusterId, e), e);
}
return found;
}
+ public long getClusterId(String clusterName) throws AmbariException {
+ return getController().getClusters().getCluster(clusterName).getClusterId();
+ }
+
+ public String getClusterName(long clusterId) throws AmbariException {
+ return getController().getClusters().getClusterById(clusterId).getClusterName();
+ }
+
/**
* Add the new host to an existing config group.
*/
@@ -438,10 +452,10 @@ public class AmbariContext {
Cluster cluster;
try {
clusters = getController().getClusters();
- cluster = clusters.getCluster(topology.getClusterName());
+ cluster = clusters.getClusterById(topology.getClusterId());
} catch (AmbariException e) {
throw new RuntimeException(String.format(
- "Attempt to add hosts to a non-existent cluster: '%s'", topology.getClusterName()));
+ "Attempt to add hosts to a non-existent cluster: '%s'", topology.getClusterId()));
}
// I don't know of a method to get config group by name
//todo: add a method to get config group by name
@@ -472,7 +486,7 @@ public class AmbariContext {
* For each host group with configuration specified in the blueprint, a config group is created
* and the hosts associated with the host group are assigned to the config group.
*/
- private void createConfigGroupsAndRegisterHost(ClusterTopology topology, String groupName) {
+ private void createConfigGroupsAndRegisterHost(ClusterTopology topology, String groupName) throws AmbariException {
Map<String, Map<String, Config>> groupConfigs = new HashMap<String, Map<String, Config>>();
Stack stack = topology.getBlueprint().getStack();
@@ -515,7 +529,7 @@ public class AmbariContext {
get(groupName).getHostNames();
ConfigGroupRequest request = new ConfigGroupRequest(
- null, topology.getClusterName(), absoluteGroupName, service, "Host Group Configuration",
+ null, getClusterName(topology.getClusterId()), absoluteGroupName, service, "Host Group Configuration",
new HashSet<String>(groupHosts), serviceConfigs);
// get the config group provider and create config group resource
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterConfigurationRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterConfigurationRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterConfigurationRequest.java
index b9f2eb8..1ebde17 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterConfigurationRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterConfigurationRequest.java
@@ -137,7 +137,14 @@ public class ClusterConfigurationRequest {
* @param configurationRequests a list of requests to send to the AmbariManagementController.
*/
private void setConfigurationsOnCluster(List<BlueprintServiceConfigRequest> configurationRequests,
- String tag, Set<String> updatedConfigTypes) {
+ String tag, Set<String> updatedConfigTypes) {
+ String clusterName = null;
+ try {
+ clusterName = ambariContext.getClusterName(clusterTopology.getClusterId());
+ } catch (AmbariException e) {
+ LOG.error("Cannot get cluster name for clusterId = " + clusterTopology.getClusterId(), e);
+ throw new RuntimeException(e);
+ }
// iterate over services to deploy
for (BlueprintServiceConfigRequest blueprintConfigRequest : configurationRequests) {
ClusterRequest clusterRequest = null;
@@ -145,7 +152,7 @@ public class ClusterConfigurationRequest {
List<ConfigurationRequest> requestsPerService = new LinkedList<ConfigurationRequest>();
for (BlueprintServiceConfigElement blueprintElement : blueprintConfigRequest.getConfigElements()) {
Map<String, Object> clusterProperties = new HashMap<String, Object>();
- clusterProperties.put(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID, clusterTopology.getClusterName());
+ clusterProperties.put(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID, clusterName);
clusterProperties.put(ClusterResourceProvider.CLUSTER_DESIRED_CONFIGS_PROPERTY_ID + "/type", blueprintElement.getTypeName());
clusterProperties.put(ClusterResourceProvider.CLUSTER_DESIRED_CONFIGS_PROPERTY_ID + "/tag", tag);
for (Map.Entry<String, String> entry : blueprintElement.getConfiguration().entrySet()) {
@@ -206,7 +213,7 @@ public class ClusterConfigurationRequest {
// if this is a request to resolve config, then wait until resolution is completed
try {
// wait until the cluster topology configuration is set/resolved
- ambariContext.waitForConfigurationResolution(clusterTopology.getClusterName(), updatedConfigTypes);
+ ambariContext.waitForConfigurationResolution(clusterName, updatedConfigTypes);
} catch (AmbariException e) {
LOG.error("Error while attempting to wait for the cluster configuration to reach TOPOLOGY_RESOLVED state.", e);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopology.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopology.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopology.java
index 9a9929b..284a913 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopology.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopology.java
@@ -19,7 +19,6 @@
package org.apache.ambari.server.topology;
import org.apache.ambari.server.controller.RequestStatusResponse;
-import org.apache.ambari.server.state.SecurityType;
import java.util.Collection;
import java.util.Map;
@@ -31,11 +30,18 @@ import java.util.Map;
public interface ClusterTopology {
/**
- * Get the name of the cluster.
+ * Get the id of the cluster.
*
- * @return cluster name
+ * @return cluster id
*/
- public String getClusterName();
+ public Long getClusterId();
+
+ /**
+ * Set the id of the cluster.
+ *
+ * @param clusterId cluster id
+ */
+ public void setClusterId(Long clusterId);
/**
* Get the blueprint associated with the cluster.
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java
index 9dbd197..5b716ae 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java
@@ -19,6 +19,7 @@
package org.apache.ambari.server.topology;
+import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.controller.RequestStatusResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,7 +38,8 @@ import java.util.Set;
*/
public class ClusterTopologyImpl implements ClusterTopology {
- private String clusterName;
+ private Long clusterId;
+
//todo: currently topology is only associated with a single bp
//todo: this will need to change to allow usage of multiple bp's for the same cluster
//todo: for example: provision using bp1 and scale using bp2
@@ -52,7 +54,7 @@ public class ClusterTopologyImpl implements ClusterTopology {
//todo: will need to convert all usages of hostgroup name to use fully qualified name (BP/HG)
//todo: for now, restrict scaling to the same BP
public ClusterTopologyImpl(AmbariContext ambariContext, TopologyRequest topologyRequest) throws InvalidTopologyException {
- this.clusterName = topologyRequest.getClusterName();
+ this.clusterId = topologyRequest.getClusterId();
// provision cluster currently requires that all hostgroups have same BP so it is ok to use root level BP here
this.blueprint = topologyRequest.getBlueprint();
this.configuration = topologyRequest.getConfiguration();
@@ -65,13 +67,13 @@ public class ClusterTopologyImpl implements ClusterTopology {
//todo: only used in tests, remove. Validators not invoked when this constructor is used.
public ClusterTopologyImpl(AmbariContext ambariContext,
- String clusterName,
+ Long clusterId,
Blueprint blueprint,
Configuration configuration,
Map<String, HostGroupInfo> hostGroupInfo)
throws InvalidTopologyException {
- this.clusterName = clusterName;
+ this.clusterId = clusterId;
this.blueprint = blueprint;
this.configuration = configuration;
@@ -85,8 +87,13 @@ public class ClusterTopologyImpl implements ClusterTopology {
}
@Override
- public String getClusterName() {
- return clusterName;
+ public Long getClusterId() {
+ return clusterId;
+ }
+
+ @Override
+ public void setClusterId(Long clusterId) {
+ this.clusterId = clusterId;
}
@Override
@@ -203,17 +210,27 @@ public class ClusterTopologyImpl implements ClusterTopology {
@Override
public boolean isClusterKerberosEnabled() {
- return ambariContext.isClusterKerberosEnabled(getClusterName());
+ return ambariContext.isClusterKerberosEnabled(getClusterId());
}
@Override
public RequestStatusResponse installHost(String hostName) {
- return ambariContext.installHost(hostName, getClusterName());
+ try {
+ return ambariContext.installHost(hostName, ambariContext.getClusterName(getClusterId()));
+ } catch (AmbariException e) {
+ LOG.error("Cannot get cluster name for clusterId = " + getClusterId(), e);
+ throw new RuntimeException(e);
+ }
}
@Override
public RequestStatusResponse startHost(String hostName) {
- return ambariContext.startHost(hostName, getClusterName());
+ try {
+ return ambariContext.startHost(hostName, ambariContext.getClusterName(getClusterId()));
+ } catch (AmbariException e) {
+ LOG.error("Cannot get cluster name for clusterId = " + getClusterId(), e);
+ throw new RuntimeException(e);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/HostRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/HostRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/HostRequest.java
index cc82a63..518cbaf 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/HostRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/HostRequest.java
@@ -25,6 +25,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.api.predicate.InvalidQueryException;
import org.apache.ambari.server.api.predicate.PredicateCompiler;
@@ -56,7 +57,7 @@ public class HostRequest implements Comparable<HostRequest> {
private String hostgroupName;
private Predicate predicate;
private String hostname = null;
- private String cluster;
+ private long clusterId;
private boolean containsMaster;
private final long id;
private boolean isOutstanding = true;
@@ -74,11 +75,11 @@ public class HostRequest implements Comparable<HostRequest> {
private static PredicateCompiler predicateCompiler = new PredicateCompiler();
- public HostRequest(long requestId, long id, String cluster, String hostname, String blueprintName,
+ public HostRequest(long requestId, long id, long clusterId, String hostname, String blueprintName,
HostGroup hostGroup, Predicate predicate, ClusterTopology topology) {
this.requestId = requestId;
this.id = id;
- this.cluster = cluster;
+ this.clusterId = clusterId;
blueprint = blueprintName;
this.hostGroup = hostGroup;
hostgroupName = hostGroup.getName();
@@ -105,7 +106,7 @@ public class HostRequest implements Comparable<HostRequest> {
this.requestId = requestId;
this.id = id;
- cluster = topology.getClusterName();
+ clusterId = topology.getClusterId();
blueprint = topology.getBlueprint().getName();
hostgroupName = entity.getTopologyHostGroupEntity().getName();
hostGroup = topology.getBlueprint().getHostGroup(hostgroupName);
@@ -118,7 +119,7 @@ public class HostRequest implements Comparable<HostRequest> {
//todo: we may be able to simplify by just checking hostname
isOutstanding = hostname == null || !topology.getAmbariContext().
- isHostRegisteredWithCluster(cluster, hostname);
+ isHostRegisteredWithCluster(clusterId, hostname);
LOG.info("HostRequest: Successfully recovered host request for host: " +
(hostname == null ? "Host Assignment Pending" : hostname));
@@ -147,8 +148,8 @@ public class HostRequest implements Comparable<HostRequest> {
return requestId;
}
- public String getClusterName() {
- return cluster;
+ public long getClusterId() {
+ return clusterId;
}
public String getBlueprint() {
return blueprint;
@@ -428,7 +429,7 @@ public class HostRequest implements Comparable<HostRequest> {
for (String service : group.getServices()) {
serviceComponents.put(service, new HashSet<String> (group.getComponents(service)));
}
- ambariContext.createAmbariHostResources(getClusterName(), getHostName(), serviceComponents);
+ ambariContext.createAmbariHostResources(getClusterId(), getHostName(), serviceComponents);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java
index 34f8262..f29e0f4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/LogicalRequest.java
@@ -69,8 +69,7 @@ public class LogicalRequest extends Request {
throws AmbariException {
//todo: abstract usage of controller, etc ...
- super(id, getController().getClusters().getCluster(
- request.getClusterName()).getClusterId(), getController().getClusters());
+ super(id, topology.getClusterId(), getController().getClusters());
setRequestContext(String.format("Logical Request: %s", request.getDescription()));
@@ -82,8 +81,7 @@ public class LogicalRequest extends Request {
TopologyLogicalRequestEntity requestEntity) throws AmbariException {
//todo: abstract usage of controller, etc ...
- super(id, getController().getClusters().getCluster(
- request.getClusterName()).getClusterId(), getController().getClusters());
+ super(id, topology.getClusterId(), getController().getClusters());
setRequestContext(String.format("Logical Request: %s", request.getDescription()));
@@ -313,14 +311,14 @@ public class LogicalRequest extends Request {
if (! hostnames.isEmpty()) {
// host names are specified
String hostname = hostnames.get(i);
- HostRequest hostRequest = new HostRequest(getRequestId(), hostIdCounter.getAndIncrement(), getClusterName(),
+ HostRequest hostRequest = new HostRequest(getRequestId(), hostIdCounter.getAndIncrement(), getClusterId(),
hostname, blueprint.getName(), blueprint.getHostGroup(groupName), null, topology);
synchronized (requestsWithReservedHosts) {
requestsWithReservedHosts.put(hostname, hostRequest);
}
} else {
// host count is specified
- HostRequest hostRequest = new HostRequest(getRequestId(), hostIdCounter.getAndIncrement(), getClusterName(),
+ HostRequest hostRequest = new HostRequest(getRequestId(), hostIdCounter.getAndIncrement(), getClusterId(),
null, blueprint.getName(), blueprint.getHostGroup(groupName), hostGroupInfo.getPredicate(), topology);
outstandingHostRequests.add(hostRequest);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/PersistedStateImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/PersistedStateImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/PersistedStateImpl.java
index 894bc6d..e0caa18 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/PersistedStateImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/PersistedStateImpl.java
@@ -131,14 +131,14 @@ public class PersistedStateImpl implements PersistedState {
Map<ClusterTopology, List<LogicalRequest>> allRequests = new HashMap<ClusterTopology, List<LogicalRequest>>();
Collection<TopologyRequestEntity> entities = topologyRequestDAO.findAll();
- Map<String, ClusterTopology> topologyRequests = new HashMap<String, ClusterTopology>();
+ Map<Long, ClusterTopology> topologyRequests = new HashMap<Long, ClusterTopology>();
for (TopologyRequestEntity entity : entities) {
TopologyRequest replayedRequest = new ReplayedTopologyRequest(entity);
- ClusterTopology clusterTopology = topologyRequests.get(replayedRequest.getClusterName());
+ ClusterTopology clusterTopology = topologyRequests.get(replayedRequest.getClusterId());
if (clusterTopology == null) {
try {
clusterTopology = new ClusterTopologyImpl(ambariContext, replayedRequest);
- topologyRequests.put(replayedRequest.getClusterName(), clusterTopology);
+ topologyRequests.put(replayedRequest.getClusterId(), clusterTopology);
allRequests.put(clusterTopology, new ArrayList<LogicalRequest>());
} catch (InvalidTopologyException e) {
throw new RuntimeException("Failed to construct cluster topology while replaying request: " + e, e);
@@ -183,7 +183,7 @@ public class PersistedStateImpl implements PersistedState {
}
entity.setClusterAttributes(attributesAsString(request.getConfiguration().getAttributes()));
- entity.setClusterName(request.getClusterName());
+ entity.setClusterId(request.getClusterId());
entity.setClusterProperties(propertiesAsString(request.getConfiguration().getProperties()));
entity.setDescription(request.getDescription());
@@ -299,7 +299,7 @@ public class PersistedStateImpl implements PersistedState {
}
private static class ReplayedTopologyRequest implements TopologyRequest {
- private final String clusterName;
+ private final Long clusterId;
private final Type type;
private final String description;
private final Blueprint blueprint;
@@ -307,7 +307,7 @@ public class PersistedStateImpl implements PersistedState {
private final Map<String, HostGroupInfo> hostGroupInfoMap = new HashMap<String, HostGroupInfo>();
public ReplayedTopologyRequest(TopologyRequestEntity entity) {
- clusterName = entity.getClusterName();
+ clusterId = entity.getClusterId();
type = Type.valueOf(entity.getAction());
description = entity.getDescription();
@@ -323,8 +323,8 @@ public class PersistedStateImpl implements PersistedState {
}
@Override
- public String getClusterName() {
- return clusterName;
+ public Long getClusterId() {
+ return clusterId;
}
@Override
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
index 5f3bb9d..64be609 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
@@ -34,6 +34,8 @@ import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.actionmanager.Request;
import org.apache.ambari.server.controller.RequestStatusResponse;
+import org.apache.ambari.server.controller.internal.ProvisionClusterRequest;
+import org.apache.ambari.server.controller.internal.ScaleClusterRequest;
import org.apache.ambari.server.controller.internal.Stack;
import org.apache.ambari.server.orm.dao.HostRoleCommandStatusSummaryDTO;
import org.apache.ambari.server.orm.entities.StageEntity;
@@ -62,7 +64,7 @@ public class TopologyManager {
// priority is given to oldest outstanding requests
private final Collection<LogicalRequest> outstandingRequests = new ArrayList<LogicalRequest>();
//todo: currently only support a single cluster
- private Map<String, ClusterTopology> clusterTopologyMap = new HashMap<String, ClusterTopology>();
+ private Map<Long, ClusterTopology> clusterTopologyMap = new HashMap<Long, ClusterTopology>();
//todo: inject
private static LogicalRequestFactory logicalRequestFactory = new LogicalRequestFactory();
@@ -95,18 +97,23 @@ public class TopologyManager {
}
}
- public RequestStatusResponse provisionCluster(TopologyRequest request) throws InvalidTopologyException, AmbariException {
+ public RequestStatusResponse provisionCluster(ProvisionClusterRequest request) throws InvalidTopologyException, AmbariException {
ensureInitialized();
ClusterTopology topology = new ClusterTopologyImpl(ambariContext, request);
- // persist request after it has successfully validated
- PersistedTopologyRequest persistedRequest = persistedState.persistTopologyRequest(request);
+ String clusterName = request.getClusterName();
// get the id prior to creating ambari resources which increments the counter
Long provisionId = ambariContext.getNextRequestId();
- ambariContext.createAmbariResources(topology);
+ ambariContext.createAmbariResources(topology, clusterName);
+
+ long clusterId = ambariContext.getClusterId(clusterName);
+ topology.setClusterId(clusterId);
+ request.setClusterId(clusterId);
+ // persist request after it has successfully validated
+ PersistedTopologyRequest persistedRequest = persistedState.persistTopologyRequest(request);
- String clusterName = topology.getClusterName();
- clusterTopologyMap.put(clusterName, topology);
+
+ clusterTopologyMap.put(clusterId, topology);
addClusterConfigRequest(topology, new ClusterConfigurationRequest(ambariContext, topology, true));
LogicalRequest logicalRequest = processRequest(persistedRequest, topology, provisionId);
@@ -118,13 +125,14 @@ public class TopologyManager {
return getRequestStatus(logicalRequest.getRequestId());
}
- public RequestStatusResponse scaleHosts(TopologyRequest request)
+ public RequestStatusResponse scaleHosts(ScaleClusterRequest request)
throws InvalidTopologyException, AmbariException {
ensureInitialized();
LOG.info("TopologyManager.scaleHosts: Entering");
String clusterName = request.getClusterName();
- ClusterTopology topology = clusterTopologyMap.get(clusterName);
+ long clusterId = ambariContext.getClusterId(clusterName);
+ ClusterTopology topology = clusterTopologyMap.get(clusterId);
if (topology == null) {
throw new InvalidTopologyException("Unable to retrieve cluster topology for cluster. This is most likely a " +
"result of trying to scale a cluster via the API which was created using " +
@@ -132,7 +140,7 @@ public class TopologyManager {
"blueprint can be scaled with this API. If the cluster was originally created " +
"via the API as described above, please file a Jira for this matter.");
}
-
+ request.setClusterId(clusterId);
PersistedTopologyRequest persistedRequest = persistedState.persistTopologyRequest(request);
// this registers/updates all request host groups
topology.update(request);
@@ -162,7 +170,7 @@ public class TopologyManager {
}
LOG.info("TopologyManager.onHostRegistered: processing accepted host offer for reserved host = {}", hostName);
- processAcceptedHostOffer(getClusterTopology(request.getClusterName()), response, host);
+ processAcceptedHostOffer(getClusterTopology(request.getClusterId()), response, host);
matchedToRequest = true;
}
}
@@ -178,7 +186,7 @@ public class TopologyManager {
case ACCEPTED:
matchedToRequest = true;
LOG.info("TopologyManager.onHostRegistered: processing accepted host offer for matched host = {}", hostName);
- processAcceptedHostOffer(getClusterTopology(request.getClusterName()), hostOfferResponse, host);
+ processAcceptedHostOffer(getClusterTopology(request.getClusterId()), hostOfferResponse, host);
break;
case DECLINED_DONE:
LOG.info("TopologyManager.onHostRegistered: DECLINED_DONE received for host = {}", hostName);
@@ -284,9 +292,9 @@ public class TopologyManager {
return requestStatusResponses;
}
- public ClusterTopology getClusterTopology(String clusterName) {
+ public ClusterTopology getClusterTopology(Long clusterId) {
ensureInitialized();
- return clusterTopologyMap.get(clusterName);
+ return clusterTopologyMap.get(clusterId);
}
public Map<String, Collection<String>> getProjectedTopology() {
@@ -355,7 +363,7 @@ public class TopologyManager {
hostIterator.remove();
LOG.info("TopologyManager.processRequest: host name = {} was ACCEPTED by LogicalRequest ID = {} , host has been removed from available hosts.",
host.getHostName(), logicalRequest.getRequestId());
- processAcceptedHostOffer(getClusterTopology(logicalRequest.getClusterName()), response, host);
+ processAcceptedHostOffer(getClusterTopology(logicalRequest.getClusterId()), response, host);
break;
case DECLINED_DONE:
requestHostComplete = true;
@@ -432,7 +440,7 @@ public class TopologyManager {
boolean configChecked = false;
for (Map.Entry<ClusterTopology, List<LogicalRequest>> requestEntry : persistedRequests.entrySet()) {
ClusterTopology topology = requestEntry.getKey();
- clusterTopologyMap.put(topology.getClusterName(), topology);
+ clusterTopologyMap.put(topology.getClusterId(), topology);
for (LogicalRequest logicalRequest : requestEntry.getValue()) {
allRequests.put(logicalRequest.getRequestId(), logicalRequest);
@@ -460,7 +468,7 @@ public class TopologyManager {
if (! configChecked) {
configChecked = true;
- if (! ambariContext.doesConfigurationWithTagExist(topology.getClusterName(), TOPOLOGY_RESOLVED_TAG)) {
+ if (! ambariContext.doesConfigurationWithTagExist(topology.getClusterId(), TOPOLOGY_RESOLVED_TAG)) {
LOG.info("TopologyManager.replayRequests: no config with TOPOLOGY_RESOLVED found, adding cluster config request");
addClusterConfigRequest(topology, new ClusterConfigurationRequest(ambariContext, topology, false));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequest.java
index d102c21..516ea14 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequest.java
@@ -31,11 +31,11 @@ public interface TopologyRequest {
public enum Type { PROVISION, SCALE, EXPORT }
/**
- * Get the cluster name associated with the request.
+ * Get the cluster id associated with the request. Can be <code>null</code>.
*
- * @return associated cluster name
+ * @return associated cluster id
*/
- public String getClusterName();
+ public Long getClusterId();
/**
* Get the request type.
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactory.java
index 284fbba..da0c9e1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactory.java
@@ -19,12 +19,14 @@
package org.apache.ambari.server.topology;
+import org.apache.ambari.server.controller.internal.ProvisionClusterRequest;
+
import java.util.Map;
/**
* Factory for creating topology requests.
*/
public interface TopologyRequestFactory {
- public TopologyRequest createProvisionClusterRequest(Map<String, Object> properties) throws InvalidTopologyTemplateException;
+ public ProvisionClusterRequest createProvisionClusterRequest(Map<String, Object> properties) throws InvalidTopologyTemplateException;
// todo: use to create other request types
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactoryImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactoryImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactoryImpl.java
index 7c6a8ce..8b23b44 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactoryImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyRequestFactoryImpl.java
@@ -28,7 +28,7 @@ import java.util.Map;
*/
public class TopologyRequestFactoryImpl implements TopologyRequestFactory {
@Override
- public TopologyRequest createProvisionClusterRequest(Map<String, Object> properties) throws InvalidTopologyTemplateException {
+ public ProvisionClusterRequest createProvisionClusterRequest(Map<String, Object> properties) throws InvalidTopologyTemplateException {
return new ProvisionClusterRequest(properties);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/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 0b3d75c..b97a7f4 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
@@ -37,6 +37,10 @@ import org.apache.ambari.server.utils.VersionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.Statement;
+
import com.google.inject.Inject;
import com.google.inject.Injector;
@@ -51,6 +55,13 @@ public class UpgradeCatalog212 extends AbstractUpgradeCatalog {
private static final String HBASE_SITE = "hbase-site";
private static final String CLUSTER_ENV = "cluster-env";
+ private static final String TOPOLOGY_REQUEST_TABLE = "topology_request";
+ private static final String CLUSTERS_TABLE = "clusters";
+ private static final String CLUSTERS_TABLE_CLUSTER_ID_COLUMN = "cluster_id";
+ private static final String TOPOLOGY_REQUEST_CLUSTER_NAME_COLUMN = "cluster_name";
+ private static final String TOPOLOGY_REQUEST_CLUSTER_ID_COLUMN = "cluster_id";
+ private static final String TOPOLOGY_REQUEST_CLUSTER_ID_FK_CONSTRAINT_NAME = "FK_topology_request_cluster_id";
+
private static final String HOST_ROLE_COMMAND_TABLE = "host_role_command";
private static final String HOST_ROLE_COMMAND_SKIP_COLUMN = "auto_skip_on_failure";
@@ -101,14 +112,34 @@ public class UpgradeCatalog212 extends AbstractUpgradeCatalog {
*/
@Override
protected void executeDDLUpdates() throws AmbariException, SQLException {
+ executeTopologyDDLUpdates();
executeHostRoleCommandDDLUpdates();
}
+ private void executeTopologyDDLUpdates() throws AmbariException, SQLException {
+ dbAccessor.addColumn(TOPOLOGY_REQUEST_TABLE, new DBColumnInfo(TOPOLOGY_REQUEST_CLUSTER_ID_COLUMN,
+ Long.class, null, null, true));
+ // TOPOLOGY_REQUEST_CLUSTER_NAME_COLUMN will be deleted in PreDML. We need a cluster name to set cluster id.
+ // dbAccessor.dropColumn(TOPOLOGY_REQUEST_TABLE, TOPOLOGY_REQUEST_CLUSTER_NAME_COLUMN);
+ // dbAccessor.setColumnNullable(TOPOLOGY_REQUEST_TABLE, TOPOLOGY_REQUEST_CLUSTER_ID_COLUMN, false);
+ // dbAccessor.addFKConstraint(TOPOLOGY_REQUEST_TABLE, TOPOLOGY_REQUEST_CLUSTER_ID_FK_CONSTRAINT_NAME,
+ // TOPOLOGY_REQUEST_CLUSTER_ID_COLUMN, CLUSTERS_TABLE, CLUSTERS_TABLE_CLUSTER_ID_COLUMN, false);
+ }
+
/**
* {@inheritDoc}
*/
@Override
protected void executePreDMLUpdates() throws AmbariException, SQLException {
+ addClusterIdToTopology();
+ finilizeTopologyDDL();
+ }
+
+ protected void finilizeTopologyDDL() throws AmbariException, SQLException {
+ dbAccessor.dropColumn(TOPOLOGY_REQUEST_TABLE, TOPOLOGY_REQUEST_CLUSTER_NAME_COLUMN);
+ dbAccessor.setColumnNullable(TOPOLOGY_REQUEST_TABLE, TOPOLOGY_REQUEST_CLUSTER_ID_COLUMN, false);
+ dbAccessor.addFKConstraint(TOPOLOGY_REQUEST_TABLE, TOPOLOGY_REQUEST_CLUSTER_ID_FK_CONSTRAINT_NAME,
+ TOPOLOGY_REQUEST_CLUSTER_ID_COLUMN, CLUSTERS_TABLE, CLUSTERS_TABLE_CLUSTER_ID_COLUMN, false);
}
/**
@@ -120,6 +151,46 @@ public class UpgradeCatalog212 extends AbstractUpgradeCatalog {
addMissingConfigs();
}
+ protected void addClusterIdToTopology() throws AmbariException, SQLException {
+ Map<String, Long> clusterNameIdMap = new HashMap<String, Long>();
+ try (Statement statement = dbAccessor.getConnection().createStatement();
+ ResultSet rs = statement.executeQuery("SELECT DISTINCT cluster_name, cluster_id FROM clusters");
+ ) {
+ while (rs.next()) {
+ long clusterId = rs.getLong("cluster_id");
+ String clusterName = rs.getString("cluster_name");
+ clusterNameIdMap.put(clusterName, clusterId);
+ }
+ }
+
+ for (String clusterName : clusterNameIdMap.keySet()) {
+ try (PreparedStatement preparedStatement = dbAccessor.getConnection().prepareStatement("UPDATE topology_request " +
+ "SET cluster_id=? WHERE cluster_name=?");
+ ) {
+ preparedStatement.setLong(1, clusterNameIdMap.get(clusterName));
+ preparedStatement.setString(2, clusterName);
+ preparedStatement.executeUpdate();
+ }
+ }
+
+ // Set cluster id for all null values.
+ // Useful if cluster was renamed and cluster name does not match.
+ if (clusterNameIdMap.entrySet().size() >= 1) {
+ try (PreparedStatement preparedStatement = dbAccessor.getConnection().prepareStatement("UPDATE topology_request " +
+ "SET cluster_id=? WHERE cluster_id IS NULL");
+ ) {
+ preparedStatement.setLong(1, clusterNameIdMap.entrySet().iterator().next().getValue());
+ preparedStatement.executeUpdate();
+ }
+ }
+ if (clusterNameIdMap.entrySet().size() == 0) {
+ LOG.warn("Cluster not found. topology_request.cluster_id is not set");
+ }
+ if (clusterNameIdMap.entrySet().size() > 1) {
+ LOG.warn("Found more than one cluster. topology_request.cluster_id can be incorrect if you have renamed the cluster.");
+ }
+ }
+
protected void addMissingConfigs() throws AmbariException {
updateHiveConfigs();
updateHbaseAndClusterConfigurations();
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
index 8e023a4..b803c37 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@ -589,7 +589,7 @@ CREATE TABLE artifact (
CREATE TABLE topology_request (
id BIGINT NOT NULL,
action VARCHAR(255) NOT NULL,
- cluster_name VARCHAR(100) NOT NULL,
+ cluster_id BIGINT NOT NULL,
bp_name VARCHAR(100) NOT NULL,
cluster_properties LONGTEXT,
cluster_attributes LONGTEXT,
@@ -725,6 +725,7 @@ ALTER TABLE groups ADD CONSTRAINT FK_groups_principal_id FOREIGN KEY (principal_
ALTER TABLE clusters ADD CONSTRAINT FK_clusters_resource_id FOREIGN KEY (resource_id) REFERENCES adminresource(resource_id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_layout_id FOREIGN KEY (widget_layout_id) REFERENCES widget_layout(id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_id FOREIGN KEY (widget_id) REFERENCES widget(id);
+ALTER TABLE topology_request ADD CONSTRAINT FK_topology_request_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id);
ALTER TABLE topology_hostgroup ADD CONSTRAINT FK_hostgroup_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
ALTER TABLE topology_host_info ADD CONSTRAINT FK_hostinfo_group_id FOREIGN KEY (group_id) REFERENCES topology_hostgroup(id);
ALTER TABLE topology_logical_request ADD CONSTRAINT FK_logicalreq_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
index 8d4e084..c3195e5 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
@@ -578,7 +578,7 @@ CREATE TABLE artifact (
CREATE TABLE topology_request (
id NUMBER(19) NOT NULL,
action VARCHAR(255) NOT NULL,
- cluster_name VARCHAR(100) NOT NULL,
+ cluster_id NUMBER(19) NOT NULL,
bp_name VARCHAR(100) NOT NULL,
cluster_properties CLOB,
cluster_attributes CLOB,
@@ -714,6 +714,7 @@ ALTER TABLE groups ADD CONSTRAINT FK_groups_principal_id FOREIGN KEY (principal_
ALTER TABLE clusters ADD CONSTRAINT FK_clusters_resource_id FOREIGN KEY (resource_id) REFERENCES adminresource(resource_id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_layout_id FOREIGN KEY (widget_layout_id) REFERENCES widget_layout(id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_id FOREIGN KEY (widget_id) REFERENCES widget(id);
+ALTER TABLE topology_request ADD CONSTRAINT FK_topology_request_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id);
ALTER TABLE topology_hostgroup ADD CONSTRAINT FK_hostgroup_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
ALTER TABLE topology_host_info ADD CONSTRAINT FK_hostinfo_group_id FOREIGN KEY (group_id) REFERENCES topology_hostgroup(id);
ALTER TABLE topology_logical_request ADD CONSTRAINT FK_logicalreq_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
index 1a6be2d..b7bc440 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -583,7 +583,7 @@ CREATE TABLE artifact (
CREATE TABLE topology_request (
id BIGINT NOT NULL,
action VARCHAR(255) NOT NULL,
- cluster_name VARCHAR(100) NOT NULL,
+ cluster_id BIGINT NOT NULL,
bp_name VARCHAR(100) NOT NULL,
cluster_properties TEXT,
cluster_attributes TEXT,
@@ -716,6 +716,7 @@ ALTER TABLE serviceconfighosts ADD CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (h
ALTER TABLE clusters ADD CONSTRAINT FK_clusters_resource_id FOREIGN KEY (resource_id) REFERENCES adminresource(resource_id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_layout_id FOREIGN KEY (widget_layout_id) REFERENCES widget_layout(id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_id FOREIGN KEY (widget_id) REFERENCES widget(id);
+ALTER TABLE topology_request ADD CONSTRAINT FK_topology_request_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id);
ALTER TABLE topology_hostgroup ADD CONSTRAINT FK_hostgroup_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
ALTER TABLE topology_host_info ADD CONSTRAINT FK_hostinfo_group_id FOREIGN KEY (group_id) REFERENCES topology_hostgroup(id);
ALTER TABLE topology_logical_request ADD CONSTRAINT FK_logicalreq_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
index a6078ed..cd16120 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql
@@ -655,7 +655,7 @@ GRANT ALL PRIVILEGES ON TABLE ambari.widget_layout_user_widget TO :username;
CREATE TABLE ambari.topology_request (
id BIGINT NOT NULL,
action VARCHAR(255) NOT NULL,
- cluster_name VARCHAR(100) NOT NULL,
+ cluster_id BIGINT NOT NULL,
bp_name VARCHAR(100) NOT NULL,
cluster_properties TEXT,
cluster_attributes TEXT,
@@ -795,6 +795,7 @@ ALTER TABLE ambari.groups ADD CONSTRAINT FK_groups_principal_id FOREIGN KEY (pri
ALTER TABLE ambari.clusters ADD CONSTRAINT FK_clusters_resource_id FOREIGN KEY (resource_id) REFERENCES ambari.adminresource(resource_id);
ALTER TABLE ambari.widget_layout_user_widget ADD CONSTRAINT FK_widget_layout_id FOREIGN KEY (widget_layout_id) REFERENCES ambari.widget_layout(id);
ALTER TABLE ambari.widget_layout_user_widget ADD CONSTRAINT FK_widget_id FOREIGN KEY (widget_id) REFERENCES ambari.widget(id);
+ALTER TABLE ambari.topology_request ADD CONSTRAINT FK_topology_request_cluster_id FOREIGN KEY (cluster_id) REFERENCES ambari.clusters(cluster_id);
ALTER TABLE ambari.topology_hostgroup ADD CONSTRAINT FK_hostgroup_req_id FOREIGN KEY (request_id) REFERENCES ambari.topology_request(id);
ALTER TABLE ambari.topology_host_info ADD CONSTRAINT FK_hostinfo_group_id FOREIGN KEY (group_id) REFERENCES ambari.topology_hostgroup(id);
ALTER TABLE ambari.topology_logical_request ADD CONSTRAINT FK_logicalreq_req_id FOREIGN KEY (request_id) REFERENCES ambari.topology_request(id);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
index 7b1b3a4..aac4b59 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
@@ -578,7 +578,7 @@ CREATE TABLE artifact (
CREATE TABLE topology_request (
id NUMERIC(19) NOT NULL,
action VARCHAR(255) NOT NULL,
- cluster_name VARCHAR(100) NOT NULL,
+ cluster_id NUMERIC(19) NOT NULL,
bp_name VARCHAR(100) NOT NULL,
cluster_properties TEXT,
cluster_attributes TEXT,
@@ -714,6 +714,7 @@ ALTER TABLE groups ADD CONSTRAINT FK_groups_principal_id FOREIGN KEY (principal_
ALTER TABLE clusters ADD CONSTRAINT FK_clusters_resource_id FOREIGN KEY (resource_id) REFERENCES adminresource(resource_id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_layout_id FOREIGN KEY (widget_layout_id) REFERENCES widget_layout(id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_id FOREIGN KEY (widget_id) REFERENCES widget(id);
+ALTER TABLE topology_request ADD CONSTRAINT FK_topology_request_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id);
ALTER TABLE topology_hostgroup ADD CONSTRAINT FK_hostgroup_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
ALTER TABLE topology_host_info ADD CONSTRAINT FK_hostinfo_group_id FOREIGN KEY (group_id) REFERENCES topology_hostgroup(id);
ALTER TABLE topology_logical_request ADD CONSTRAINT FK_logicalreq_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
index 651211e..5f98d47 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
@@ -693,7 +693,7 @@ CREATE TABLE widget_layout_user_widget (
CREATE TABLE topology_request (
id BIGINT NOT NULL,
action VARCHAR(255) NOT NULL,
- cluster_name VARCHAR(100) NOT NULL,
+ cluster_id BIGINT NOT NULL,
bp_name VARCHAR(100) NOT NULL,
cluster_properties TEXT,
cluster_attributes TEXT,
@@ -831,6 +831,7 @@ ALTER TABLE serviceconfighosts ADD CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (h
ALTER TABLE clusters ADD CONSTRAINT FK_clusters_resource_id FOREIGN KEY (resource_id) REFERENCES adminresource(resource_id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_layout_id FOREIGN KEY (widget_layout_id) REFERENCES widget_layout(id);
ALTER TABLE widget_layout_user_widget ADD CONSTRAINT FK_widget_id FOREIGN KEY (widget_id) REFERENCES widget(id);
+ALTER TABLE topology_request ADD CONSTRAINT FK_topology_request_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters(cluster_id);
ALTER TABLE topology_hostgroup ADD CONSTRAINT FK_hostgroup_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
ALTER TABLE topology_host_info ADD CONSTRAINT FK_hostinfo_group_id FOREIGN KEY (group_id) REFERENCES topology_hostgroup(id);
ALTER TABLE topology_logical_request ADD CONSTRAINT FK_logicalreq_req_id FOREIGN KEY (request_id) REFERENCES topology_request(id);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
index a881472..a97ca74 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintConfigurationProcessorTest.java
@@ -5156,7 +5156,7 @@ public class BlueprintConfigurationProcessorTest {
replay(bp);
- return new ClusterTopologyImpl(ambariConext, CLUSTER_NAME, blueprint, configuration, hostGroupInfo);
+ return new ClusterTopologyImpl(ambariConext, 1L, blueprint, configuration, hostGroupInfo);
}
private class TestHostGroup {
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
index 4c0a564..0b2e905 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
@@ -80,7 +80,7 @@ public class ClusterResourceProviderTest {
private static final Request request = createNiceMock(Request.class);
private static final TopologyManager topologyManager = createStrictMock(TopologyManager.class);
private static final TopologyRequestFactory topologyFactory = createStrictMock(TopologyRequestFactory.class);
- private static final TopologyRequest topologyRequest = createNiceMock(TopologyRequest.class);
+ private static final ProvisionClusterRequest topologyRequest = createNiceMock(ProvisionClusterRequest.class);
private static final BlueprintFactory blueprintFactory = createStrictMock(BlueprintFactory.class);
private static final Blueprint blueprint = createNiceMock(Blueprint.class);
private static final RequestStatusResponse requestStatusResponse = createNiceMock(RequestStatusResponse.class);
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequestTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequestTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequestTest.java
index 1c3310d..94ba90f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequestTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ExportBlueprintRequestTest.java
@@ -58,6 +58,7 @@ import static org.junit.Assert.fail;
@SuppressWarnings("unchecked")
public class ExportBlueprintRequestTest {
private static final String CLUSTER_NAME = "c1";
+ private static final String CLUSTER_ID = "2";
private AmbariManagementController controller = createNiceMock(AmbariManagementController.class);
@@ -86,6 +87,7 @@ public class ExportBlueprintRequestTest {
public void testExport_noConfigs() throws Exception {
Resource clusterResource = new ResourceImpl(Resource.Type.Cluster);
clusterResource.setProperty(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID, CLUSTER_NAME);
+ clusterResource.setProperty(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID, CLUSTER_ID);
clusterResource.setProperty(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID, "TEST-1.0");
TreeNode<Resource> clusterNode = new TreeNodeImpl<Resource>(null, clusterResource, "cluster");
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequestTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequestTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequestTest.java
index 6864519..21aafc5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequestTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ProvisionClusterRequestTest.java
@@ -99,7 +99,7 @@ public class ProvisionClusterRequestTest {
replay(hostResourceProvider);
Map<String, Object> properties = createBlueprintRequestPropertiesNameOnly(CLUSTER_NAME, BLUEPRINT_NAME);
- TopologyRequest provisionClusterRequest = new ProvisionClusterRequest(properties);
+ ProvisionClusterRequest provisionClusterRequest = new ProvisionClusterRequest(properties);
assertEquals(CLUSTER_NAME, provisionClusterRequest.getClusterName());
assertEquals(TopologyRequest.Type.PROVISION, provisionClusterRequest.getType());
@@ -151,7 +151,7 @@ public class ProvisionClusterRequestTest {
replay(hostResourceProvider);
Map<String, Object> properties = createBlueprintRequestPropertiesCountOnly(CLUSTER_NAME, BLUEPRINT_NAME);
- TopologyRequest provisionClusterRequest = new ProvisionClusterRequest(properties);
+ ProvisionClusterRequest provisionClusterRequest = new ProvisionClusterRequest(properties);
assertEquals(CLUSTER_NAME, provisionClusterRequest.getClusterName());
assertEquals(TopologyRequest.Type.PROVISION, provisionClusterRequest.getType());
@@ -203,7 +203,7 @@ public class ProvisionClusterRequestTest {
@Test
public void testMultipleGroups() throws Exception {
Map<String, Object> properties = createBlueprintRequestProperties(CLUSTER_NAME, BLUEPRINT_NAME);
- TopologyRequest provisionClusterRequest = new ProvisionClusterRequest(properties);
+ ProvisionClusterRequest provisionClusterRequest = new ProvisionClusterRequest(properties);
assertEquals(CLUSTER_NAME, provisionClusterRequest.getClusterName());
assertEquals(TopologyRequest.Type.PROVISION, provisionClusterRequest.getType());
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java
index 42938a4..7f70ee0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java
@@ -106,7 +106,7 @@ public class ScaleClusterRequestTest {
reset(hostResourceProvider);
replay(hostResourceProvider);
- TopologyRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton(
+ ScaleClusterRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton(
createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME, BLUEPRINT_NAME)));
assertEquals(TopologyRequest.Type.SCALE, scaleClusterRequest.getType());
@@ -138,7 +138,7 @@ public class ScaleClusterRequestTest {
propertySet.add(createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME, BLUEPRINT_NAME));
propertySet.add(createScaleClusterPropertiesGroup1_HostName2(CLUSTER_NAME, BLUEPRINT_NAME));
- TopologyRequest scaleClusterRequest = new ScaleClusterRequest(propertySet);
+ ScaleClusterRequest scaleClusterRequest = new ScaleClusterRequest(propertySet);
assertEquals(TopologyRequest.Type.SCALE, scaleClusterRequest.getType());
assertEquals(String.format("Scale Cluster '%s' (+%s hosts)", CLUSTER_NAME, "2"),
@@ -166,7 +166,7 @@ public class ScaleClusterRequestTest {
reset(hostResourceProvider);
replay(hostResourceProvider);
- TopologyRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton(
+ ScaleClusterRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton(
createScaleClusterPropertiesGroup1_HostCount(CLUSTER_NAME, BLUEPRINT_NAME)));
assertEquals(TopologyRequest.Type.SCALE, scaleClusterRequest.getType());
@@ -193,7 +193,7 @@ public class ScaleClusterRequestTest {
reset(hostResourceProvider);
replay(hostResourceProvider);
- TopologyRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton(
+ ScaleClusterRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton(
createScaleClusterPropertiesGroup1_HostCount2(CLUSTER_NAME, BLUEPRINT_NAME)));
assertEquals(TopologyRequest.Type.SCALE, scaleClusterRequest.getType());
@@ -216,7 +216,7 @@ public class ScaleClusterRequestTest {
@Test
public void test_basic_hostCountAndPredicate() throws Exception {
- TopologyRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton(
+ ScaleClusterRequest scaleClusterRequest = new ScaleClusterRequest(Collections.singleton(
createScaleClusterPropertiesGroup1_HostCountAndPredicate(CLUSTER_NAME, BLUEPRINT_NAME)));
assertEquals(TopologyRequest.Type.SCALE, scaleClusterRequest.getType());
@@ -244,7 +244,7 @@ public class ScaleClusterRequestTest {
propertySet.add(createScaleClusterPropertiesGroup1_HostCount(CLUSTER_NAME, BLUEPRINT_NAME));
propertySet.add(createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME, BLUEPRINT_NAME));
- TopologyRequest scaleClusterRequest = new ScaleClusterRequest(propertySet);
+ ScaleClusterRequest scaleClusterRequest = new ScaleClusterRequest(propertySet);
assertEquals(TopologyRequest.Type.SCALE, scaleClusterRequest.getType());
assertEquals(String.format("Scale Cluster '%s' (+%s hosts)", CLUSTER_NAME, "3"),
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyLogicalRequestDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyLogicalRequestDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyLogicalRequestDAOTest.java
index fcffe95..c878a62 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyLogicalRequestDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyLogicalRequestDAOTest.java
@@ -41,8 +41,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import static org.apache.ambari.server.orm.OrmTestHelper.CLUSTER_NAME;
-
public class TopologyLogicalRequestDAOTest {
private Injector injector;
private TopologyRequestDAO requestDAO;
@@ -73,7 +71,7 @@ public class TopologyLogicalRequestDAOTest {
requestEntity.setBlueprintName("bp1");
requestEntity.setClusterAttributes("attributes");
requestEntity.setClusterProperties("properties");
- requestEntity.setClusterName(CLUSTER_NAME);
+ requestEntity.setClusterId(clusterId);
requestEntity.setDescription("description");
requestDAO.create(requestEntity);
List<TopologyRequestEntity> requestEntities = requestDAO.findAll();
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java
index 2dd16c7..f5ece39 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/TopologyRequestDAOTest.java
@@ -35,8 +35,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import static org.apache.ambari.server.orm.OrmTestHelper.CLUSTER_NAME;
-
public class TopologyRequestDAOTest {
private Injector injector;
private TopologyRequestDAO requestDAO;
@@ -63,7 +61,7 @@ public class TopologyRequestDAOTest {
requestEntity.setBlueprintName("bp1");
requestEntity.setClusterAttributes("attributes");
requestEntity.setClusterProperties("properties");
- requestEntity.setClusterName(CLUSTER_NAME);
+ requestEntity.setClusterId(clusterId);
requestEntity.setDescription("description");
TopologyHostGroupEntity hostGroupEntity = new TopologyHostGroupEntity();
hostGroupEntity.setName("hg1");
@@ -113,8 +111,8 @@ public class TopologyRequestDAOTest {
}
@Test
- public void testFindByClusterName() throws Exception {
+ public void testFindByClusterId() throws Exception {
create();
- testRequestEntity(requestDAO.findByCluster(CLUSTER_NAME));
+ testRequestEntity(requestDAO.findByClusterId(clusterId));
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java
index 8c94f1e..1038b60 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/AmbariContextTest.java
@@ -79,6 +79,7 @@ public class AmbariContextTest {
private static final String BP_NAME = "testBP";
private static final String CLUSTER_NAME = "testCluster";
+ private static final long CLUSTER_ID = 1L;
private static final String STACK_NAME = "testStack";
private static final String STACK_VERSION = "testVersion";
private static final String HOST_GROUP_1 = "group1";
@@ -88,7 +89,7 @@ public class AmbariContextTest {
StackId stackId = new StackId(STACK_NAME, STACK_VERSION);
private static final AmbariContext context = new AmbariContext();
- private static final AmbariManagementController controller = createStrictMock(AmbariManagementController.class);
+ private static final AmbariManagementController controller = createNiceMock(AmbariManagementController.class);
private static final ClusterController clusterController = createStrictMock(ClusterController.class);
private static final HostResourceProvider hostResourceProvider = createStrictMock(HostResourceProvider.class);
private static final ServiceResourceProvider serviceResourceProvider = createStrictMock(ServiceResourceProvider.class);
@@ -98,8 +99,8 @@ public class AmbariContextTest {
private static final ClusterTopology topology = createNiceMock(ClusterTopology.class);
private static final Blueprint blueprint = createNiceMock(Blueprint.class);
private static final Stack stack = createNiceMock(Stack.class);
- private static final Clusters clusters = createStrictMock(Clusters.class);
- private static final Cluster cluster = createStrictMock(Cluster.class);
+ private static final Clusters clusters = createNiceMock(Clusters.class);
+ private static final Cluster cluster = createNiceMock(Cluster.class);
private static final HostGroupInfo group1Info = createNiceMock(HostGroupInfo.class);
private static final ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
private static final ConfigGroup configGroup1 = createMock(ConfigGroup.class);
@@ -171,7 +172,7 @@ public class AmbariContextTest {
blueprintServices.add("service1");
blueprintServices.add("service2");
- expect(topology.getClusterName()).andReturn(CLUSTER_NAME).anyTimes();
+ expect(topology.getClusterId()).andReturn(CLUSTER_ID).anyTimes();
expect(topology.getBlueprint()).andReturn(blueprint).anyTimes();
expect(topology.getHostGroupInfo()).andReturn(Collections.singletonMap(HOST_GROUP_1, group1Info)).anyTimes();
@@ -193,9 +194,13 @@ public class AmbariContextTest {
expect(controller.getConfigHelper()).andReturn(configHelper).anyTimes();
expect(clusters.getCluster(CLUSTER_NAME)).andReturn(cluster).anyTimes();
+ expect(clusters.getClusterById(CLUSTER_ID)).andReturn(cluster).anyTimes();
expect(clusters.getHost(HOST1)).andReturn(host1).anyTimes();
expect(clusters.getHost(HOST2)).andReturn(host2).anyTimes();
+ expect(cluster.getClusterId()).andReturn(CLUSTER_ID).anyTimes();
+ expect(cluster.getClusterName()).andReturn(CLUSTER_NAME).anyTimes();
+
expect(host1.getHostId()).andReturn(1L).anyTimes();
expect(host2.getHostId()).andReturn(2L).anyTimes();
@@ -229,8 +234,6 @@ public class AmbariContextTest {
Capture<ClusterRequest> clusterRequestCapture = new Capture<ClusterRequest>();
controller.createCluster(capture(clusterRequestCapture));
expectLastCall().once();
- expect(controller.getClusters()).andReturn(clusters).anyTimes();
- expect(clusters.getCluster(CLUSTER_NAME)).andReturn(cluster).anyTimes();
expect(cluster.getServices()).andReturn(clusterServices).anyTimes();
Capture<Set<ServiceRequest>> serviceRequestCapture = new Capture<Set<ServiceRequest>>();
@@ -254,7 +257,7 @@ public class AmbariContextTest {
replayAll();
// test
- context.createAmbariResources(topology);
+ context.createAmbariResources(topology, CLUSTER_NAME);
// assertions
ClusterRequest clusterRequest = clusterRequestCapture.getValue();
http://git-wip-us.apache.org/repos/asf/ambari/blob/a922a53d/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterTopologyImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterTopologyImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterTopologyImplTest.java
index bbea96c..08aa3d3 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterTopologyImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterTopologyImplTest.java
@@ -46,6 +46,7 @@ import static org.powermock.api.easymock.PowerMock.verify;
public class ClusterTopologyImplTest {
private static final String CLUSTER_NAME = "cluster_name";
+ private static final long CLUSTER_ID = 1L;
private static final String predicate = "Hosts/host_name=foo";
private static final Blueprint blueprint = createNiceMock(Blueprint.class);
private static final HostGroup group1 = createNiceMock(HostGroup.class);
@@ -188,12 +189,16 @@ public class ClusterTopologyImplTest {
this.type = type;
}
- @Override
public String getClusterName() {
return CLUSTER_NAME;
}
@Override
+ public Long getClusterId() {
+ return CLUSTER_ID;
+ }
+
+ @Override
public Type getType() {
return type;
}