You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2014/12/03 23:02:28 UTC
ambari git commit: AMBARI-8532. Rolling Upgrade Bootstrap - Populate
repo_version table during cluster creation (alejandro)
Repository: ambari
Updated Branches:
refs/heads/trunk 2160d544a -> b87c52aeb
AMBARI-8532. Rolling Upgrade Bootstrap - Populate repo_version table during cluster creation (alejandro)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b87c52ae
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b87c52ae
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b87c52ae
Branch: refs/heads/trunk
Commit: b87c52aeb9ae3791eb53dfe009d7184a7f76e945
Parents: 2160d54
Author: Alejandro Fernandez <af...@hortonworks.com>
Authored: Tue Dec 2 19:13:49 2014 -0800
Committer: Alejandro Fernandez <af...@hortonworks.com>
Committed: Wed Dec 3 14:02:20 2014 -0800
----------------------------------------------------------------------
.../services/ClusterStackVersionService.java | 2 +-
.../api/services/HostStackVersionService.java | 2 +-
.../server/api/services/StacksService.java | 2 +-
.../AmbariManagementControllerImpl.java | 15 +++++++--
.../server/orm/dao/RepositoryVersionDAO.java | 33 ++++++++++++++++++++
.../orm/entities/RepositoryVersionEntity.java | 12 +++++++
ambari-web/app/mappers/stack_mapper.js | 6 ++--
7 files changed, 63 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/b87c52ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/ClusterStackVersionService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/ClusterStackVersionService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/ClusterStackVersionService.java
index f9ae235..97d3bde 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/ClusterStackVersionService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/ClusterStackVersionService.java
@@ -91,7 +91,7 @@ public class ClusterStackVersionService extends BaseService {
* @return repository version service
*/
@Path("{stackVersionId}/repository_versions")
- public RepositoryVersionService getRepositoryVersionHanlder(@PathParam("stackVersionId") String stackVersionId) {
+ public RepositoryVersionService getRepositoryVersionHandler(@PathParam("stackVersionId") String stackVersionId) {
final Map<Resource.Type, String> stackVersionProperties = new HashMap<Resource.Type, String>();
stackVersionProperties.put(Resource.Type.Cluster, clusterName);
stackVersionProperties.put(Resource.Type.ClusterStackVersion, stackVersionId);
http://git-wip-us.apache.org/repos/asf/ambari/blob/b87c52ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/HostStackVersionService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/HostStackVersionService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/HostStackVersionService.java
index d0f872d..f449052 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/HostStackVersionService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/HostStackVersionService.java
@@ -112,7 +112,7 @@ public class HostStackVersionService extends BaseService {
* @return repository version service
*/
@Path("{stackVersionId}/repository_versions")
- public RepositoryVersionService getRepositoryVersionHanlder(@PathParam("stackVersionId") String stackVersionId) {
+ public RepositoryVersionService getRepositoryVersionHandler(@PathParam("stackVersionId") String stackVersionId) {
final Map<Resource.Type, String> stackVersionProperties = new HashMap<Resource.Type, String>();
stackVersionProperties.put(Resource.Type.Host, hostName);
stackVersionProperties.put(Resource.Type.HostStackVersion, stackVersionId);
http://git-wip-us.apache.org/repos/asf/ambari/blob/b87c52ae/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java
index c34ee3d..4d0fb31 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java
@@ -243,7 +243,7 @@ public class StacksService extends BaseService {
* @return repository version service
*/
@Path("{stackName}/versions/{stackVersion}/repository_versions")
- public RepositoryVersionService getRepositoryVersionHanlder(@PathParam("stackName") String stackName, @PathParam("stackVersion") String stackVersion) {
+ public RepositoryVersionService getRepositoryVersionHandler(@PathParam("stackName") String stackName, @PathParam("stackVersion") String stackVersion) {
final Map<Resource.Type, String> stackProperties = new HashMap<Resource.Type, String>();
stackProperties.put(Resource.Type.Stack, stackName);
stackProperties.put(Resource.Type.StackVersion, stackVersion);
http://git-wip-us.apache.org/repos/asf/ambari/blob/b87c52ae/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 7c533d0..abd83fc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -356,9 +356,18 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
StackId newStackId = new StackId(request.getStackVersion());
c.setDesiredStackVersion(newStackId);
clusters.setCurrentStackVersion(request.getClusterName(), newStackId);
- // TODO Alejandro, this needs to use the repo version, e.g., 2.2.0.0.-994
- // For the sake of having the end-to-end workflow work, use as is.
- c.createClusterVersion(stackId.getStackName(), stackId.getStackVersion(), getAuthName(), RepositoryVersionState.CURRENT);
+
+ try {
+ // Because Ambari may eventually support multiple clusters, it may be possible that a previously installed cluster
+ // already inserted the Repository Version for this stack and version.
+ RepositoryVersionEntity existingRepositoryVersion = repositoryVersionDAO.findByStackAndVersion(newStackId.getStackId(), newStackId.getStackVersion());
+ if (existingRepositoryVersion == null) {
+ repositoryVersionDAO.create(newStackId.getStackId(), newStackId.getStackVersion(), newStackId.getStackId(), "", "");
+ }
+ c.createClusterVersion(stackId.getStackId(), stackId.getStackVersion(), getAuthName(), RepositoryVersionState.CURRENT);
+ } catch (Exception e) {
+ throw new AmbariException("Unable to create Repository Version and/or Cluster Version for Stack " + stackId.toString() + ". Error: " + e.getMessage());
+ }
}
if (request.getHostNames() != null) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/b87c52ae/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 7ac0df9..7099c5c 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
@@ -21,6 +21,7 @@ import java.util.List;
import javax.persistence.TypedQuery;
+import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.orm.RequiresSession;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
@@ -79,4 +80,36 @@ public class RepositoryVersionDAO extends CrudDAO<RepositoryVersionEntity, Long>
query.setParameter("stack", stack);
return daoUtils.selectList(query);
}
+
+ /**
+ * Validates and creates an object.
+ * @param stack Stack name, e.g., HDP or HDP-2.2
+ * @param version Stack version, e.g., 2.2 or 2.2.0.1-885
+ * @param displayName Unique display name
+ * @param upgradePack Optional upgrade pack, e.g, upgrade-2.2
+ * @param operatingSystems JSON structure of repository URLs for each OS
+ * @return Returns the object created if successful, and throws an exception otherwise.
+ * @throws AmbariException
+ */
+ public RepositoryVersionEntity create(String stack, String version, String displayName, String upgradePack, String operatingSystems) throws AmbariException {
+ if (stack == null || stack.isEmpty() || version == null || version.isEmpty() || displayName == null || displayName.isEmpty()) {
+ throw new AmbariException("At least one of the required properties is null or empty");
+ }
+
+ RepositoryVersionEntity existingByDisplayName = this.findByDisplayName(displayName);
+
+ if (existingByDisplayName != null) {
+ throw new AmbariException("Repository version with display name '" + displayName + "' already exists");
+ }
+
+ RepositoryVersionEntity existingByStackAndVersion = this.findByStackAndVersion(stack, version);
+ if (existingByStackAndVersion != null) {
+ throw new AmbariException("Repository version for stack " + stack + " and version " + version + " already exists");
+ }
+
+ RepositoryVersionEntity newEntity = new RepositoryVersionEntity(stack, version, displayName, upgradePack, operatingSystems);
+ this.create(newEntity);
+ return newEntity;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b87c52ae/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 df0a04f..4b5486a 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
@@ -80,6 +80,18 @@ public class RepositoryVersionEntity {
// ----- RepositoryVersionEntity -------------------------------------------------------
+ public RepositoryVersionEntity() {
+
+ }
+
+ public RepositoryVersionEntity(String stack, String version, String displayName, String upgradePackage, String operatingSystems) {
+ this.stack = stack;
+ this.version = version;
+ this.displayName = displayName;
+ this.upgradePackage = upgradePackage;
+ this.operatingSystems = operatingSystems;
+ }
+
public Long getId() {
return id;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b87c52ae/ambari-web/app/mappers/stack_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/stack_mapper.js b/ambari-web/app/mappers/stack_mapper.js
index 4bfea03..d641a55 100644
--- a/ambari-web/app/mappers/stack_mapper.js
+++ b/ambari-web/app/mappers/stack_mapper.js
@@ -70,7 +70,7 @@ App.stackMapper = App.QuickDataMapper.create({
var modelOS = this.get('modelOS');
var modelRepo = this.get('modelRepo');
var resultStack = [];
- var resulOS = [];
+ var resultOS = [];
var resultRepo = [];
var stackVersions = json.items.filterProperty('Versions.active');
@@ -95,7 +95,7 @@ App.stackMapper = App.QuickDataMapper.create({
operatingSystems.id = operatingSystems.stack_name + "-" + operatingSystems.stack_version + "-" + operatingSystems.os_type;
operatingSystems.stack_id = operatingSystems.stack_name + "-" + operatingSystems.stack_version;
operatingSystems.repositories = repositoriesArray;
- resulOS.push(this.parseIt(operatingSystems, this.get('configOS')));
+ resultOS.push(this.parseIt(operatingSystems, this.get('configOS')));
operatingSystemsArray.pushObject(operatingSystems);
}, this);
@@ -108,7 +108,7 @@ App.stackMapper = App.QuickDataMapper.create({
App.store.commit();
App.store.loadMany(modelRepo, resultRepo);
- App.store.loadMany(modelOS, resulOS);
+ App.store.loadMany(modelOS, resultOS);
App.store.loadMany(modelStack, resultStack);
}
});
\ No newline at end of file