You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2014/08/14 15:19:45 UTC
[5/6] git commit: AMBARI-6848 Service config version should always
clone and rev up (not simply point to an older version) (dsen)
AMBARI-6848 Service config version should always clone and rev up (not simply point to an older version) (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6eb753d8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6eb753d8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6eb753d8
Branch: refs/heads/branch-alerts-dev
Commit: 6eb753d8cbc8fb89d0efb15234c543121a1f83ad
Parents: 16d8093
Author: Dmytro Sen <ds...@hortonworks.com>
Authored: Thu Aug 14 14:30:56 2014 +0300
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Thu Aug 14 09:19:16 2014 -0400
----------------------------------------------------------------------
.../ServiceConfigVersionResponse.java | 11 -
.../ServiceConfigVersionResourceProvider.java | 2 -
.../ambari/server/orm/dao/ServiceConfigDAO.java | 37 +--
.../ServiceConfigApplicationEntity.java | 114 --------
.../orm/entities/ServiceConfigEntity.java | 34 ++-
.../server/state/cluster/ClusterImpl.java | 76 +++--
.../server/upgrade/UpgradeCatalog170.java | 9 +-
.../main/resources/Ambari-DDL-MySQL-CREATE.sql | 12 +-
.../main/resources/Ambari-DDL-Oracle-CREATE.sql | 8 +-
.../resources/Ambari-DDL-Postgres-CREATE.sql | 9 +-
.../Ambari-DDL-Postgres-EMBEDDED-CREATE.sql | 11 +-
.../src/main/resources/properties.json | 1 -
.../server/orm/dao/ServiceConfigDAOTest.java | 282 +++++++++++++++++++
.../orm/entities/ServiceConfigEntityTest.java | 49 ++++
.../server/state/cluster/ClusterTest.java | 57 +++-
.../server/upgrade/UpgradeCatalog170Test.java | 11 +
16 files changed, 486 insertions(+), 237 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceConfigVersionResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceConfigVersionResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceConfigVersionResponse.java
index 491f112..f463a4b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceConfigVersionResponse.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceConfigVersionResponse.java
@@ -30,7 +30,6 @@ public class ServiceConfigVersionResponse {
private String serviceName;
private Long version;
private Long createTime;
- private Long applyTime;
private String userName;
private String note;
private List<ConfigurationResponse> configurations;
@@ -63,16 +62,6 @@ public class ServiceConfigVersionResponse {
this.createTime = createTime;
}
- @JsonProperty("appliedtime")
- @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
- public Long getApplyTime() {
- return applyTime;
- }
-
- public void setApplyTime(Long applyTime) {
- this.applyTime = applyTime;
- }
-
@JsonProperty("user")
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public String getUserName() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceConfigVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceConfigVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceConfigVersionResourceProvider.java
index 581ed54..1713d01 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceConfigVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceConfigVersionResourceProvider.java
@@ -36,7 +36,6 @@ public class ServiceConfigVersionResourceProvider extends
public static final String SERVICE_CONFIG_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId(null, "serviceconfigversion");
public static final String SERVICE_CONFIG_VERSION_SERVICE_NAME_PROPERTY_ID = PropertyHelper.getPropertyId(null, "service_name");
public static final String SERVICE_CONFIG_VERSION_CREATE_TIME_PROPERTY_ID = PropertyHelper.getPropertyId(null, "createtime");
- public static final String SERVICE_CONFIG_VERSION_APPLY_TIME_PROPERTY_ID = PropertyHelper.getPropertyId(null, "appliedtime");
public static final String SERVICE_CONFIG_VERSION_USER_PROPERTY_ID = PropertyHelper.getPropertyId(null, "user");
public static final String SERVICE_CONFIG_VERSION_NOTE_PROPERTY_ID = PropertyHelper.getPropertyId(null, "service_config_version_note");
public static final String SERVICE_CONFIG_VERSION_CONFIGURATIONS_PROPERTY_ID = PropertyHelper.getPropertyId(null, "configurations");
@@ -98,7 +97,6 @@ public class ServiceConfigVersionResourceProvider extends
resource.setProperty(SERVICE_CONFIG_VERSION_SERVICE_NAME_PROPERTY_ID, response.getServiceName());
resource.setProperty(SERVICE_CONFIG_VERSION_USER_PROPERTY_ID, response.getUserName());
resource.setProperty(SERVICE_CONFIG_VERSION_PROPERTY_ID, response.getVersion());
- resource.setProperty(SERVICE_CONFIG_VERSION_APPLY_TIME_PROPERTY_ID, response.getApplyTime());
resource.setProperty(SERVICE_CONFIG_VERSION_CREATE_TIME_PROPERTY_ID, response.getCreateTime());
resource.setProperty(SERVICE_CONFIG_VERSION_CONFIGURATIONS_PROPERTY_ID,
convertToSubResources(response.getClusterName(), response.getConfigurations()));
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java
index 698e655..add58fc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ServiceConfigDAO.java
@@ -23,7 +23,6 @@ import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.google.inject.persist.Transactional;
import org.apache.ambari.server.orm.RequiresSession;
-import org.apache.ambari.server.orm.entities.ServiceConfigApplicationEntity;
import org.apache.ambari.server.orm.entities.ServiceConfigEntity;
import javax.persistence.EntityManager;
@@ -72,21 +71,24 @@ public class ServiceConfigDAO {
return daoUtils.selectList(query, clusterId, configType, configVersion);
}
- public List<ServiceConfigApplicationEntity> getLastApplications(Long clusterId) {
- TypedQuery<ServiceConfigApplicationEntity> query = entityManagerProvider.get().
- createQuery("SELECT sca FROM ServiceConfigEntity scv JOIN scv.serviceConfigApplicationEntities sca " +
- "WHERE scv.clusterId = ?1 AND sca.applyTimestamp = (" +
- "SELECT max(sca2.applyTimestamp) FROM ServiceConfigApplicationEntity sca2 JOIN sca2.serviceConfigEntity scv2 WHERE scv2.serviceName = scv.serviceName " +
- "AND scv2.clusterId = ?1)",
- ServiceConfigApplicationEntity.class);
+ public List<ServiceConfigEntity> getLastServiceConfigs(Long clusterId) {
+ TypedQuery<ServiceConfigEntity> query = entityManagerProvider.get().
+ createQuery("SELECT scv FROM ServiceConfigEntity scv " +
+ "WHERE scv.clusterId = ?1 AND scv.createTimestamp = (" +
+ "SELECT MAX(scv2.createTimestamp) FROM ServiceConfigEntity scv2 " +
+ "WHERE scv2.serviceName = scv.serviceName AND scv2.clusterId = ?1)",
+ ServiceConfigEntity.class);
+
return daoUtils.selectList(query, clusterId);
}
- public ServiceConfigApplicationEntity getLastApplication(Long clusterId, String serviceName) {
- TypedQuery<ServiceConfigApplicationEntity> query = entityManagerProvider.get().
- createQuery("SELECT sca FROM ServiceConfigEntity scv JOIN scv.serviceConfigApplicationEntities sca " +
- "WHERE scv.clusterId = ?1 AND scv.serviceName = ?2 ORDER BY sca.applyTimestamp DESC",
- ServiceConfigApplicationEntity.class);
+ public ServiceConfigEntity getLastServiceConfig(Long clusterId, String serviceName) {
+ TypedQuery<ServiceConfigEntity> query = entityManagerProvider.get().
+ createQuery("SELECT scv FROM ServiceConfigEntity scv " +
+ "WHERE scv.clusterId = ?1 AND scv.serviceName = ?2 " +
+ "ORDER BY scv.createTimestamp DESC",
+ ServiceConfigEntity.class);
+
return daoUtils.selectOne(query, clusterId, serviceName);
}
@@ -99,10 +101,11 @@ public class ServiceConfigDAO {
return daoUtils.selectSingle(query, clusterId, serviceName);
}
- public List<ServiceConfigApplicationEntity> getServiceConfigApplications(Long clusterId) {
- TypedQuery<ServiceConfigApplicationEntity> query = entityManagerProvider.get().createQuery(
- "SELECT apply FROM ServiceConfigApplicationEntity apply JOIN apply.serviceConfigEntity scv " +
- "WHERE scv.clusterId=?1 ORDER BY apply.applyTimestamp DESC", ServiceConfigApplicationEntity.class);
+ public List<ServiceConfigEntity> getServiceConfigs(Long clusterId) {
+ TypedQuery<ServiceConfigEntity> query = entityManagerProvider.get()
+ .createQuery("SELECT scv FROM ServiceConfigEntity scv " +
+ "WHERE scv.clusterId=?1 " +
+ "ORDER BY scv.createTimestamp DESC", ServiceConfigEntity.class);
return daoUtils.selectList(query, clusterId);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigApplicationEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigApplicationEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigApplicationEntity.java
deleted file mode 100644
index 6f2f441..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigApplicationEntity.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.orm.entities;
-
-import javax.persistence.Basic;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-import javax.persistence.TableGenerator;
-
-@Entity
-@Table(name = "serviceconfigapplication")
-@TableGenerator(name = "service_config_application_id_generator",
- table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "value"
- , pkColumnValue = "service_config_application_id_seq"
- , initialValue = 1
- , allocationSize = 1
-)
-public class ServiceConfigApplicationEntity {
- @Id
- @Column(name = "apply_id")
- @GeneratedValue(strategy = GenerationType.TABLE, generator = "service_config_application_id_generator")
- private Long applyId;
-
- @Basic
- @Column(name = "service_config_id", updatable = false, insertable = false, nullable = false)
- private Long serviceConfigId;
-
- @Basic
- @Column(name = "apply_timestamp")
- private Long applyTimestamp;
-
- @Basic
- @Column(name = "user_name")
- private String user = "_db";
-
- @Basic
- @Column(name = "note")
- private String note;
-
- @ManyToOne
- @JoinColumn(name = "service_config_id", referencedColumnName = "service_config_id")
- private ServiceConfigEntity serviceConfigEntity;
-
-
- public Long getApplyId() {
- return applyId;
- }
-
- public void setApplyId(Long applyId) {
- this.applyId = applyId;
- }
-
- public Long getServiceConfigId() {
- return serviceConfigId;
- }
-
- public void setServiceConfigId(Long serviceConfigId) {
- this.serviceConfigId = serviceConfigId;
- }
-
- public Long getApplyTimestamp() {
- return applyTimestamp;
- }
-
- public void setApplyTimestamp(Long applyTimestamp) {
- this.applyTimestamp = applyTimestamp;
- }
-
- public ServiceConfigEntity getServiceConfigEntity() {
- return serviceConfigEntity;
- }
-
- public void setServiceConfigEntity(ServiceConfigEntity serviceConfigEntity) {
- this.serviceConfigEntity = serviceConfigEntity;
- }
-
- public String getUser() {
- return user;
- }
-
- public void setUser(String user) {
- this.user = user;
- }
-
- public String getNote() {
- return note;
- }
-
- public void setNote(String note) {
- this.note = note;
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java
index 2727388..ce47e28 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceConfigEntity.java
@@ -64,8 +64,13 @@ public class ServiceConfigEntity {
@Column(name = "create_timestamp", nullable = false)
private Long createTimestamp = System.currentTimeMillis();
- @OneToMany(mappedBy = "serviceConfigEntity", cascade = CascadeType.ALL)
- private List<ServiceConfigApplicationEntity> serviceConfigApplicationEntities;
+ @Basic
+ @Column(name = "user_name")
+ private String user = "_db";
+
+ @Basic
+ @Column(name = "note")
+ private String note;
@ManyToMany
@JoinTable(
@@ -111,15 +116,6 @@ public class ServiceConfigEntity {
this.createTimestamp = create_timestamp;
}
-
- public List<ServiceConfigApplicationEntity> getServiceConfigApplicationEntities() {
- return serviceConfigApplicationEntities;
- }
-
- public void setServiceConfigApplicationEntities(List<ServiceConfigApplicationEntity> serviceConfigApplicationEntities) {
- this.serviceConfigApplicationEntities = serviceConfigApplicationEntities;
- }
-
public List<ClusterConfigEntity> getClusterConfigEntities() {
return clusterConfigEntities;
}
@@ -143,4 +139,20 @@ public class ServiceConfigEntity {
public void setClusterEntity(ClusterEntity clusterEntity) {
this.clusterEntity = clusterEntity;
}
+
+ public String getUser() {
+ return user;
+ }
+
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ public String getNote() {
+ return note;
+ }
+
+ public void setNote(String note) {
+ this.note = note;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index eb5d36d..00316ce 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -65,7 +65,6 @@ import org.apache.ambari.server.orm.entities.PermissionEntity;
import org.apache.ambari.server.orm.entities.PrivilegeEntity;
import org.apache.ambari.server.orm.entities.RequestScheduleEntity;
import org.apache.ambari.server.orm.entities.ResourceEntity;
-import org.apache.ambari.server.orm.entities.ServiceConfigApplicationEntity;
import org.apache.ambari.server.orm.entities.ServiceConfigEntity;
import org.apache.ambari.server.state.*;
import org.apache.ambari.server.state.configgroup.ConfigGroup;
@@ -1423,7 +1422,7 @@ public class ClusterImpl implements Cluster {
readWriteLock.writeLock().lock();
try {
applyServiceConfigVersion(serviceName, version, user, note);
-
+ configHelper.invalidateStaleConfigsCache();
return true;
} finally {
readWriteLock.writeLock().unlock();
@@ -1462,14 +1461,17 @@ public class ClusterImpl implements Cluster {
readWriteLock.readLock().lock();
try {
List<ServiceConfigVersionResponse> serviceConfigVersionResponses = new ArrayList<ServiceConfigVersionResponse>();
- for (ServiceConfigApplicationEntity applicationEntity : serviceConfigDAO.getServiceConfigApplications(getClusterId())) {
- ServiceConfigVersionResponse serviceConfigVersionResponse =
- convertToServiceConfigVersionResponse(applicationEntity);
-
+ for (ServiceConfigEntity serviceConfigEntity : serviceConfigDAO.getServiceConfigs(getClusterId())) {
+ ServiceConfigVersionResponse serviceConfigVersionResponse = new ServiceConfigVersionResponse();
+
+ serviceConfigVersionResponse.setClusterName(getClusterName());
+ serviceConfigVersionResponse.setServiceName(serviceConfigEntity.getServiceName());
+ serviceConfigVersionResponse.setVersion(serviceConfigEntity.getVersion());
+ serviceConfigVersionResponse.setCreateTime(serviceConfigEntity.getCreateTimestamp());
+ serviceConfigVersionResponse.setUserName(serviceConfigEntity.getUser());
+ serviceConfigVersionResponse.setNote(serviceConfigEntity.getNote());
serviceConfigVersionResponse.setConfigurations(new ArrayList<ConfigurationResponse>());
- ServiceConfigEntity serviceConfigEntity = applicationEntity.getServiceConfigEntity();
-
List<ClusterConfigEntity> clusterConfigEntities = serviceConfigEntity.getClusterConfigEntities();
for (ClusterConfigEntity clusterConfigEntity : clusterConfigEntities) {
Config config = allConfigs.get(clusterConfigEntity.getType()).get(clusterConfigEntity.getTag());
@@ -1493,36 +1495,33 @@ public class ClusterImpl implements Cluster {
@RequiresSession
Set<ServiceConfigVersionResponse> getActiveServiceConfigVersionSet() {
Set<ServiceConfigVersionResponse> responses = new HashSet<ServiceConfigVersionResponse>();
- List<ServiceConfigApplicationEntity> lastApplications = serviceConfigDAO.getLastApplications(getClusterId());
- for (ServiceConfigApplicationEntity lastApplication : lastApplications) {
- responses.add(convertToServiceConfigVersionResponse(lastApplication));
+ List<ServiceConfigEntity> lastServiceConfigs = serviceConfigDAO.getLastServiceConfigs(getClusterId());
+ for (ServiceConfigEntity lastServiceConfig : lastServiceConfigs) {
+ responses.add(convertToServiceConfigVersionResponse(lastServiceConfig));
}
return responses;
}
@RequiresSession
ServiceConfigVersionResponse getActiveServiceConfigVersion(String serviceName) {
- ServiceConfigApplicationEntity lastApplication = serviceConfigDAO.getLastApplication(getClusterId(), serviceName);
- if (lastApplication == null) {
- LOG.debug("No active service config version found for service {}", serviceName);
+ ServiceConfigEntity lastServiceConfig = serviceConfigDAO.getLastServiceConfig(getClusterId(), serviceName);
+ if (lastServiceConfig == null) {
+ LOG.debug("No service config version found for service {}", serviceName);
return null;
}
- return convertToServiceConfigVersionResponse(lastApplication);
+ return convertToServiceConfigVersionResponse(lastServiceConfig);
}
@RequiresSession
- ServiceConfigVersionResponse convertToServiceConfigVersionResponse(ServiceConfigApplicationEntity applicationEntity) {
+ ServiceConfigVersionResponse convertToServiceConfigVersionResponse(ServiceConfigEntity serviceConfigEntity) {
ServiceConfigVersionResponse serviceConfigVersionResponse = new ServiceConfigVersionResponse();
- ServiceConfigEntity serviceConfigEntity = applicationEntity.getServiceConfigEntity();
-
serviceConfigVersionResponse.setClusterName(getClusterName());
serviceConfigVersionResponse.setServiceName(serviceConfigEntity.getServiceName());
serviceConfigVersionResponse.setVersion(serviceConfigEntity.getVersion());
- serviceConfigVersionResponse.setCreateTime(serviceConfigEntity.getCreateTimestamp());
- serviceConfigVersionResponse.setApplyTime(applicationEntity.getApplyTimestamp());
- serviceConfigVersionResponse.setUserName(applicationEntity.getUser());
- serviceConfigVersionResponse.setNote(applicationEntity.getNote());
+ serviceConfigVersionResponse.setCreateTime(serviceConfigEntity.getCreateTimestamp());
+ serviceConfigVersionResponse.setUserName(serviceConfigEntity.getUser());
+ serviceConfigVersionResponse.setNote(serviceConfigEntity.getNote());
return serviceConfigVersionResponse;
}
@@ -1547,15 +1546,17 @@ public class ClusterImpl implements Cluster {
selectConfig(configEntity.getType(), configEntity.getTag(), user);
}
- ServiceConfigApplicationEntity applicationEntity = new ServiceConfigApplicationEntity();
- applicationEntity.setApplyTimestamp(System.currentTimeMillis());
- applicationEntity.setServiceConfigEntity(serviceConfigEntity);
- applicationEntity.setUser(user);
- applicationEntity.setNote(serviceConfigVersionNote);
-
- serviceConfigEntity.getServiceConfigApplicationEntities().add(applicationEntity);
+ ServiceConfigEntity serviceConfigEntityClone = new ServiceConfigEntity();
+ serviceConfigEntityClone.setCreateTimestamp(System.currentTimeMillis());
+ serviceConfigEntityClone.setUser(user);
+ serviceConfigEntityClone.setServiceName(serviceName);
+ serviceConfigEntityClone.setClusterEntity(clusterEntity);
+ serviceConfigEntityClone.setClusterConfigEntities(serviceConfigEntity.getClusterConfigEntities());
+ serviceConfigEntityClone.setClusterId(serviceConfigEntity.getClusterId());
+ serviceConfigEntityClone.setNote(serviceConfigVersionNote);
+ serviceConfigEntityClone.setVersion(configVersionHelper.getNextVersion(serviceName));
- serviceConfigDAO.merge(serviceConfigEntity);
+ serviceConfigDAO.create(serviceConfigEntityClone);
}
@Transactional
@@ -1613,15 +1614,8 @@ public class ClusterImpl implements Cluster {
serviceConfigEntity.setServiceName(serviceName);
serviceConfigEntity.setClusterEntity(clusterEntity);
serviceConfigEntity.setVersion(configVersionHelper.getNextVersion(serviceName));
-
- //set first default application
- serviceConfigEntity.setServiceConfigApplicationEntities(new ArrayList<ServiceConfigApplicationEntity>());
- ServiceConfigApplicationEntity serviceConfigApplicationEntity = new ServiceConfigApplicationEntity();
- serviceConfigApplicationEntity.setApplyTimestamp(serviceConfigEntity.getCreateTimestamp());
- serviceConfigApplicationEntity.setServiceConfigEntity(serviceConfigEntity);
- serviceConfigApplicationEntity.setUser(user);
- serviceConfigApplicationEntity.setNote(serviceConfigVersionNote);
- serviceConfigEntity.getServiceConfigApplicationEntities().add(serviceConfigApplicationEntity);
+ serviceConfigEntity.setUser(user);
+ serviceConfigEntity.setNote(serviceConfigVersionNote);
List<ClusterConfigEntity> configEntities = new ArrayList<ClusterConfigEntity>();
serviceConfigEntity.setClusterConfigEntities(configEntities);
@@ -1649,8 +1643,8 @@ public class ClusterImpl implements Cluster {
response.setVersion(serviceConfigEntity.getVersion());
response.setServiceName(serviceConfigEntity.getServiceName());
response.setCreateTime(serviceConfigEntity.getCreateTimestamp());
- response.setApplyTime(serviceConfigApplicationEntity.getApplyTimestamp());
- response.setNote(serviceConfigApplicationEntity.getNote());
+ response.setUserName(serviceConfigEntity.getUser());
+ response.setNote(serviceConfigEntity.getNote());
return response;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
index bb248ba..0601d2c 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
@@ -273,6 +273,8 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
columns.add(new DBColumnInfo("service_name", String.class, null, null, false));
columns.add(new DBColumnInfo("version", Long.class, null, null, false));
columns.add(new DBColumnInfo("create_timestamp", Long.class, null, null, false));
+ columns.add(new DBColumnInfo("user_name", String.class, null, "_db", false));
+ columns.add(new DBColumnInfo("note", char[].class, null, null, true));
dbAccessor.createTable("serviceconfig", columns, "service_config_id");
columns.clear();
@@ -280,13 +282,6 @@ public class UpgradeCatalog170 extends AbstractUpgradeCatalog {
columns.add(new DBColumnInfo("config_id", Long.class, null, null, false));
dbAccessor.createTable("serviceconfigmapping", columns, "service_config_id", "config_id");
- columns.clear();
- columns.add(new DBColumnInfo("apply_id", Long.class, null, null, false));
- columns.add(new DBColumnInfo("service_config_id", Long.class, null, null, false));
- columns.add(new DBColumnInfo("apply_timestamp", Long.class, null, null, false));
- columns.add(new DBColumnInfo("user_name", String.class, null, "_db", false));
- dbAccessor.createTable("serviceconfigapplication", columns, "apply_id");
-
dbAccessor.addFKConstraint("confgroupclusterconfigmapping", "FK_confg",
new String[]{"cluster_id", "config_type", "version_tag"}, "clusterconfig",
new String[]{"cluster_id", "type_name", "version_tag"}, true);
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/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 5fc03b1..00f0e7c 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@ -28,9 +28,8 @@ delimiter ;
CREATE TABLE clusters (cluster_id BIGINT NOT NULL, resource_id BIGINT NOT NULL, cluster_info VARCHAR(255) NOT NULL, cluster_name VARCHAR(100) NOT NULL UNIQUE, provisioning_state VARCHAR(255) NOT NULL DEFAULT 'INIT', desired_cluster_state VARCHAR(255) NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id));
CREATE TABLE clusterconfig (config_id BIGINT NOT NULL, version_tag VARCHAR(255) NOT NULL, version BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, config_data LONGTEXT NOT NULL, config_attributes LONGTEXT, create_timestamp BIGINT NOT NULL, PRIMARY KEY (config_id));
-CREATE TABLE serviceconfig (service_config_id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, version BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, PRIMARY KEY (service_config_id));
+CREATE TABLE serviceconfig (service_config_id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, version BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, user_name VARCHAR(255) NOT NULL DEFAULT '_db', note LONGTEXT, PRIMARY KEY (service_config_id));
CREATE TABLE serviceconfigmapping (service_config_id BIGINT NOT NULL, config_id BIGINT NOT NULL, PRIMARY KEY(service_config_id, config_id));
-CREATE TABLE serviceconfigapplication (apply_id BIGINT NOT NULL, service_config_id BIGINT NOT NULL, apply_timestamp BIGINT NOT NULL, user_name VARCHAR(255) NOT NULL DEFAULT '_db', note LONGTEXT, PRIMARY KEY(apply_id));
CREATE TABLE clusterservices (service_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, service_enabled INTEGER NOT NULL, PRIMARY KEY (service_name, cluster_id));
CREATE TABLE clusterstate (cluster_id BIGINT NOT NULL, current_cluster_state VARCHAR(255) NOT NULL, current_stack_version VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id));
CREATE TABLE hostcomponentdesiredstate (cluster_id BIGINT NOT NULL, component_name VARCHAR(255) NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, host_name VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, admin_state VARCHAR(32), maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', restart_required TINYINT(1) NOT NULL DEFAULT 0, PRIMARY KEY (cluster_id, component_name, host_name, service_name));
@@ -81,7 +80,7 @@ CREATE TABLE adminprincipal (principal_id BIGINT NOT NULL, principal_type_id INT
CREATE TABLE adminpermission (permission_id BIGINT NOT NULL, permission_name VARCHAR(255) NOT NULL, resource_type_id INTEGER NOT NULL, PRIMARY KEY(permission_id));
CREATE TABLE adminprivilege (privilege_id BIGINT, permission_id BIGINT NOT NULL, resource_id BIGINT NOT NULL, principal_id BIGINT NOT NULL, PRIMARY KEY(privilege_id));
---------altering tables by creating unique constraints----------
+-- altering tables by creating unique constraints----------
ALTER TABLE users ADD CONSTRAINT UNQ_users_0 UNIQUE (user_name, ldap_user);
ALTER TABLE groups ADD CONSTRAINT UNQ_groups_0 UNIQUE (group_name, ldap_group);
ALTER TABLE members ADD CONSTRAINT UNQ_members_0 UNIQUE (group_id, user_id);
@@ -92,7 +91,7 @@ ALTER TABLE viewinstance ADD CONSTRAINT UQ_viewinstance_name_id UNIQUE (view_ins
ALTER TABLE serviceconfig ADD CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version);
ALTER TABLE adminpermission ADD CONSTRAINT UQ_perm_name_resource_type_id UNIQUE (permission_name, resource_type_id);
---------altering tables by creating foreign keys----------
+-- altering tables by creating foreign keys----------
ALTER TABLE members ADD CONSTRAINT FK_members_group_id FOREIGN KEY (group_id) REFERENCES groups (group_id);
ALTER TABLE members ADD CONSTRAINT FK_members_user_id FOREIGN KEY (user_id) REFERENCES users (user_id);
ALTER TABLE clusterconfig ADD CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id);
@@ -118,12 +117,8 @@ ALTER TABLE user_roles ADD CONSTRAINT FK_user_roles_user_id FOREIGN KEY (user_id
ALTER TABLE user_roles ADD CONSTRAINT FK_user_roles_role_name FOREIGN KEY (role_name) REFERENCES roles (role_name);
ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id);
ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name);
-ALTER TABLE clusterconfig ADD CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, type_name, version_tag);
-ALTER TABLE clusterconfig ADD CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version);
-ALTER TABLE serviceconfig ADD CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version);
ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id);
ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id);
-ALTER TABLE serviceconfigapplication ADD CONSTRAINT FK_scva_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id);
ALTER TABLE configgroup ADD CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id);
ALTER TABLE confgroupclusterconfigmapping ADD CONSTRAINT FK_confg FOREIGN KEY (cluster_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, type_name, version_tag);
ALTER TABLE confgroupclusterconfigmapping ADD CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id);
@@ -272,7 +267,6 @@ INSERT INTO ambari_sequences(sequence_name, value) values ('permission_id_seq',
INSERT INTO ambari_sequences(sequence_name, value) values ('privilege_id_seq', 1);
INSERT INTO ambari_sequences(sequence_name, value) values ('config_id_seq', 1);
INSERT INTO ambari_sequences(sequence_name, value) values ('service_config_id_seq', 1);
-INSERT INTO ambari_sequences(sequence_name, value) values ('service_config_application_id_seq', 1);
INSERT INTO ambari_sequences(sequence_name, value) values ('alert_definition_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, value) values ('alert_group_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, value) values ('alert_target_id_seq', 0);
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/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 c8897f7..ccf99af 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
@@ -19,9 +19,8 @@
------create tables---------
CREATE TABLE clusters (cluster_id NUMBER(19) NOT NULL, resource_id NUMBER(19) NOT NULL, cluster_info VARCHAR2(255) NULL, cluster_name VARCHAR2(100) NOT NULL UNIQUE, provisioning_state VARCHAR2(255) DEFAULT 'INIT' NOT NULL, desired_cluster_state VARCHAR2(255) NULL, desired_stack_version VARCHAR2(255) NULL, PRIMARY KEY (cluster_id));
CREATE TABLE clusterconfig (config_id NUMBER(19) NOT NULL, version_tag VARCHAR2(255) NOT NULL, version NUMBER(19) NOT NULL, type_name VARCHAR2(255) NOT NULL, cluster_id NUMBER(19) NOT NULL, config_data CLOB NOT NULL, config_attributes CLOB, create_timestamp NUMBER(19) NOT NULL, PRIMARY KEY (config_id));
-CREATE TABLE serviceconfig (service_config_id NUMBER(19) NOT NULL, cluster_id NUMBER(19) NOT NULL, service_name VARCHAR(255) NOT NULL, version NUMBER(19) NOT NULL, create_timestamp NUMBER(19) NOT NULL, PRIMARY KEY (service_config_id));
+CREATE TABLE serviceconfig (service_config_id NUMBER(19) NOT NULL, cluster_id NUMBER(19) NOT NULL, service_name VARCHAR(255) NOT NULL, version NUMBER(19) NOT NULL, create_timestamp NUMBER(19) NOT NULL, user_name VARCHAR(255) DEFAULT '_db' NOT NULL, note CLOB, PRIMARY KEY (service_config_id));
CREATE TABLE serviceconfigmapping (service_config_id NUMBER(19) NOT NULL, config_id NUMBER(19) NOT NULL, PRIMARY KEY(service_config_id, config_id));
-CREATE TABLE serviceconfigapplication (apply_id NUMBER(19) NOT NULL, service_config_id NUMBER(19) NOT NULL, apply_timestamp NUMBER(19) NOT NULL, user_name VARCHAR(255) DEFAULT '_db' NOT NULL, note CLOB, PRIMARY KEY(apply_id));
CREATE TABLE clusterservices (service_name VARCHAR2(255) NOT NULL, cluster_id NUMBER(19) NOT NULL, service_enabled NUMBER(10) NOT NULL, PRIMARY KEY (service_name, cluster_id));
CREATE TABLE clusterstate (cluster_id NUMBER(19) NOT NULL, current_cluster_state VARCHAR2(255) NULL, current_stack_version VARCHAR2(255) NULL, PRIMARY KEY (cluster_id));
CREATE TABLE hostcomponentdesiredstate (cluster_id NUMBER(19) NOT NULL, component_name VARCHAR2(255) NOT NULL, desired_stack_version VARCHAR2(255) NULL, desired_state VARCHAR2(255) NOT NULL, host_name VARCHAR2(255) NOT NULL, service_name VARCHAR2(255) NOT NULL, admin_state VARCHAR2(32) NULL, maintenance_state VARCHAR2(32) NOT NULL, restart_required NUMBER(1) DEFAULT 0 NOT NULL, PRIMARY KEY (cluster_id, component_name, host_name, service_name));
@@ -109,12 +108,8 @@ ALTER TABLE user_roles ADD CONSTRAINT FK_user_roles_user_id FOREIGN KEY (user_id
ALTER TABLE user_roles ADD CONSTRAINT FK_user_roles_role_name FOREIGN KEY (role_name) REFERENCES roles (role_name);
ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id);
ALTER TABLE hostconfigmapping ADD CONSTRAINT FK_hostconfmapping_host_name FOREIGN KEY (host_name) REFERENCES hosts (host_name);
-ALTER TABLE clusterconfig ADD CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, type_name, version_tag);
-ALTER TABLE clusterconfig ADD CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version);
-ALTER TABLE serviceconfig ADD CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version);
ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id);
ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id);
-ALTER TABLE serviceconfigapplication ADD CONSTRAINT FK_scva_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id);
ALTER TABLE configgroup ADD CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id);
ALTER TABLE confgroupclusterconfigmapping ADD CONSTRAINT FK_confg FOREIGN KEY (version_tag, config_type, cluster_id) REFERENCES clusterconfig (version_tag, type_name, cluster_id);
ALTER TABLE confgroupclusterconfigmapping ADD CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id);
@@ -264,7 +259,6 @@ INSERT INTO ambari_sequences(sequence_name, value) values ('permission_id_seq',
INSERT INTO ambari_sequences(sequence_name, value) values ('privilege_id_seq', 1);
INSERT INTO ambari_sequences(sequence_name, value) values ('config_id_seq', 1);
INSERT INTO ambari_sequences(sequence_name, value) values ('service_config_id_seq', 1);
-INSERT INTO ambari_sequences(sequence_name, value) values ('service_config_application_id_seq', 1);
INSERT INTO ambari_sequences(sequence_name, value) values ('alert_definition_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, value) values ('alert_group_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, value) values ('alert_target_id_seq', 0);
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/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 eb4d073..9178336 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -23,12 +23,10 @@ CREATE TABLE clusterconfig (config_id BIGINT NOT NULL, version_tag VARCHAR(255)
CREATE TABLE clusterconfigmapping (cluster_id BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', PRIMARY KEY (cluster_id, type_name, create_timestamp));
-CREATE TABLE serviceconfig (service_config_id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, version BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, PRIMARY KEY (service_config_id));
+CREATE TABLE serviceconfig (service_config_id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, version BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, user_name VARCHAR(255) NOT NULL DEFAULT '_db', note TEXT, PRIMARY KEY (service_config_id));
CREATE TABLE serviceconfigmapping (service_config_id BIGINT NOT NULL, config_id BIGINT NOT NULL, PRIMARY KEY(service_config_id, config_id));
-CREATE TABLE serviceconfigapplication (apply_id BIGINT NOT NULL, service_config_id BIGINT NOT NULL, apply_timestamp BIGINT NOT NULL, user_name VARCHAR(255) NOT NULL DEFAULT '_db', note TEXT, PRIMARY KEY(apply_id));
-
CREATE TABLE clusterservices (service_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, service_enabled INTEGER NOT NULL, PRIMARY KEY (service_name, cluster_id));
CREATE TABLE clusterstate (cluster_id BIGINT NOT NULL, current_cluster_state VARCHAR(255) NOT NULL, current_stack_version VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id));
@@ -173,7 +171,6 @@ ALTER TABLE users ADD CONSTRAINT FK_users_principal_id FOREIGN KEY (principal_id
ALTER TABLE groups ADD CONSTRAINT FK_groups_principal_id FOREIGN KEY (principal_id) REFERENCES adminprincipal(principal_id);
ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id);
ALTER TABLE serviceconfigmapping ADD CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id);
-ALTER TABLE serviceconfigapplication ADD CONSTRAINT FK_scva_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id);
ALTER TABLE clusters ADD CONSTRAINT FK_clusters_resource_id FOREIGN KEY (resource_id) REFERENCES adminresource(resource_id);
-- Alerting Framework
@@ -326,9 +323,7 @@ BEGIN;
union all
select 'config_id_seq', 1
union all
- select 'service_config_id_seq', 1
- union all
- select 'service_config_application_id_seq', 1;
+ select 'service_config_id_seq', 1;
INSERT INTO adminresourcetype (resource_type_id, resource_type_name)
SELECT 1, 'AMBARI'
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/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 d775eea..2dfea87 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
@@ -37,15 +37,12 @@ GRANT ALL PRIVILEGES ON TABLE ambari.clusterconfig TO :username;
CREATE TABLE ambari.clusterconfigmapping (cluster_id BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', PRIMARY KEY (cluster_id, type_name, create_timestamp));
GRANT ALL PRIVILEGES ON TABLE ambari.clusterconfigmapping TO :username;
-CREATE TABLE ambari.serviceconfig (service_config_id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, version BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, PRIMARY KEY (service_config_id));
+CREATE TABLE ambari.serviceconfig (service_config_id BIGINT NOT NULL, cluster_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, version BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, user_name VARCHAR(255) NOT NULL DEFAULT '_db', note TEXT, PRIMARY KEY (service_config_id));
GRANT ALL PRIVILEGES ON TABLE ambari.serviceconfig TO :username;
CREATE TABLE ambari.serviceconfigmapping (service_config_id BIGINT NOT NULL, config_id BIGINT NOT NULL, PRIMARY KEY(service_config_id, config_id));
GRANT ALL PRIVILEGES ON TABLE ambari.serviceconfigmapping TO :username;
-CREATE TABLE ambari.serviceconfigapplication (apply_id BIGINT NOT NULL, service_config_id BIGINT NOT NULL, apply_timestamp BIGINT NOT NULL, user_name VARCHAR(255) NOT NULL DEFAULT '_db', note TEXT, PRIMARY KEY(apply_id));
-GRANT ALL PRIVILEGES ON TABLE ambari.serviceconfigapplication TO :username;
-
CREATE TABLE ambari.clusterservices (service_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, service_enabled INTEGER NOT NULL, PRIMARY KEY (service_name, cluster_id));
GRANT ALL PRIVILEGES ON TABLE ambari.clusterservices TO :username;
@@ -229,7 +226,6 @@ ALTER TABLE ambari.confgroupclusterconfigmapping ADD CONSTRAINT FK_confg FOREIGN
ALTER TABLE ambari.confgroupclusterconfigmapping ADD CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES ambari.configgroup (group_id);
ALTER TABLE ambari.serviceconfigmapping ADD CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES ambari.serviceconfig(service_config_id);
ALTER TABLE ambari.serviceconfigmapping ADD CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES ambari.clusterconfig(config_id);
-ALTER TABLE ambari.serviceconfigapplication ADD CONSTRAINT FK_scva_scv FOREIGN KEY (service_config_id) REFERENCES ambari.serviceconfig(service_config_id);
ALTER TABLE ambari.adminresource ADD CONSTRAINT FK_resource_resource_type_id FOREIGN KEY (resource_type_id) REFERENCES ambari.adminresourcetype(resource_type_id);
ALTER TABLE ambari.adminprincipal ADD CONSTRAINT FK_principal_principal_type_id FOREIGN KEY (principal_type_id) REFERENCES ambari.adminprincipaltype(principal_type_id);
ALTER TABLE ambari.adminpermission ADD CONSTRAINT FK_permission_resource_type_id FOREIGN KEY (resource_type_id) REFERENCES ambari.adminresourcetype(resource_type_id);
@@ -401,10 +397,7 @@ INSERT INTO ambari.ambari_sequences (sequence_name, "value")
union all
select 'config_id_seq', 1
union all
- select 'service_config_id_seq', 1
- union all
- select 'service_config_application_id_seq', 1;
-
+ select 'service_config_id_seq', 1;
INSERT INTO ambari.adminresourcetype (resource_type_id, resource_type_name)
SELECT 1, 'AMBARI'
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/main/resources/properties.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/properties.json b/ambari-server/src/main/resources/properties.json
index 753efeb..b12a531 100644
--- a/ambari-server/src/main/resources/properties.json
+++ b/ambari-server/src/main/resources/properties.json
@@ -90,7 +90,6 @@
"ServiceConfigVersion/service_name",
"ServiceConfigVersion/serviceconfigversion",
"ServiceConfigVersion/createtime",
- "ServiceConfigVersion/appliedtime",
"ServiceConfigVersion/user",
"ServiceConfigVersion/service_config_version_note"
],
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
new file mode 100644
index 0000000..5118156
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/ServiceConfigDAOTest.java
@@ -0,0 +1,282 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.orm.dao;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
+import junit.framework.Assert;
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.orm.GuiceJpaInitializer;
+import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.orm.cache.ConfigGroupHostMapping;
+import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
+import org.apache.ambari.server.orm.entities.ClusterEntity;
+import org.apache.ambari.server.orm.entities.ConfigGroupConfigMappingEntity;
+import org.apache.ambari.server.orm.entities.ConfigGroupEntity;
+import org.apache.ambari.server.orm.entities.ConfigGroupHostMappingEntity;
+import org.apache.ambari.server.orm.entities.HostEntity;
+import org.apache.ambari.server.orm.entities.ResourceEntity;
+import org.apache.ambari.server.orm.entities.ResourceTypeEntity;
+import org.apache.ambari.server.orm.entities.ServiceConfigEntity;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class ServiceConfigDAOTest {
+ private Injector injector;
+ private ServiceConfigDAO serviceConfigDAO;
+ private ClusterDAO clusterDAO;
+ private ResourceTypeDAO resourceTypeDAO;
+
+
+ @Before
+ public void setup() throws Exception {
+ injector = Guice.createInjector(new InMemoryDefaultTestModule());
+ injector.getInstance(GuiceJpaInitializer.class);
+
+ clusterDAO = injector.getInstance(ClusterDAO.class);
+ serviceConfigDAO = injector.getInstance(ServiceConfigDAO.class);
+ resourceTypeDAO = injector.getInstance(ResourceTypeDAO.class);
+ }
+
+ @After
+ public void teardown() throws AmbariException {
+ injector.getInstance(PersistService.class).stop();
+ }
+
+ private ServiceConfigEntity createServiceConfig(String serviceName,
+ String userName, Long version, Long serviceConfigId,
+ Long createTimestamp, List<ClusterConfigEntity> clusterConfigEntities)
+ throws Exception {
+
+ // create an admin resource to represent this cluster
+ ResourceTypeEntity resourceTypeEntity = resourceTypeDAO.findById(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE);
+ if (resourceTypeEntity == null) {
+ resourceTypeEntity = new ResourceTypeEntity();
+ resourceTypeEntity.setId(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE);
+ resourceTypeEntity.setName(ResourceTypeEntity.CLUSTER_RESOURCE_TYPE_NAME);
+ resourceTypeEntity = resourceTypeDAO.merge(resourceTypeEntity);
+ }
+ ResourceEntity resourceEntity = new ResourceEntity();
+ resourceEntity.setResourceType(resourceTypeEntity);
+
+ ClusterEntity clusterEntity = clusterDAO.findByName("c1");
+ if (clusterEntity == null) {
+ clusterEntity = new ClusterEntity();
+ clusterEntity.setClusterName("c1");
+ clusterEntity.setResource(resourceEntity);
+ clusterDAO.create(clusterEntity);
+ }
+
+ ServiceConfigEntity serviceConfigEntity = new ServiceConfigEntity();
+ serviceConfigEntity.setServiceName(serviceName);
+ serviceConfigEntity.setUser(userName);
+ serviceConfigEntity.setVersion(version);
+ serviceConfigEntity.setServiceConfigId(serviceConfigId);
+ serviceConfigEntity.setClusterId(clusterEntity.getClusterId());
+ serviceConfigEntity.setCreateTimestamp(createTimestamp);
+ serviceConfigEntity.setClusterConfigEntities(clusterConfigEntities);
+ serviceConfigEntity.setClusterEntity(clusterEntity);
+
+ serviceConfigDAO.create(serviceConfigEntity);
+
+ return serviceConfigEntity;
+ }
+
+ @Test
+ public void testCreateServiceConfigVersion() throws Exception {
+
+ ServiceConfigEntity serviceConfigEntity =
+ createServiceConfig("HDFS", "admin", 1L, 1L, 1111L, null);
+
+ Assert.assertNotNull(serviceConfigEntity);
+ Assert.assertEquals("c1", serviceConfigEntity.getClusterEntity().getClusterName());
+ Assert.assertEquals(Long.valueOf(1), serviceConfigEntity.getClusterEntity()
+ .getClusterId());
+ Assert.assertEquals("HDFS", serviceConfigEntity.getServiceName());
+ Assert.assertEquals(Long.valueOf(1111L), serviceConfigEntity.getCreateTimestamp());
+ Assert.assertEquals("admin", serviceConfigEntity.getUser());
+ Assert.assertEquals(Long.valueOf(1), serviceConfigEntity.getVersion());
+ Assert.assertTrue(serviceConfigEntity.getClusterConfigEntities().isEmpty());
+ Assert.assertNotNull(serviceConfigEntity.getServiceConfigId());
+ }
+
+ @Test
+ public void testFindServiceConfigEntity() throws Exception {
+ ServiceConfigEntity sce =
+ createServiceConfig("HDFS", "admin", 1L, 1L, 1111L, null);
+
+ ServiceConfigEntity serviceConfigEntity = serviceConfigDAO.find(sce.getServiceConfigId());
+
+ Assert.assertNotNull(serviceConfigEntity);
+ Assert.assertEquals("c1", serviceConfigEntity.getClusterEntity().getClusterName());
+ Assert.assertEquals(Long.valueOf(1), serviceConfigEntity.getClusterEntity()
+ .getClusterId());
+ Assert.assertEquals("HDFS", serviceConfigEntity.getServiceName());
+ Assert.assertEquals(Long.valueOf(1111L), serviceConfigEntity.getCreateTimestamp());
+ Assert.assertEquals("admin", serviceConfigEntity.getUser());
+ Assert.assertEquals(Long.valueOf(1), serviceConfigEntity.getVersion());
+ Assert.assertTrue(serviceConfigEntity.getClusterConfigEntities().isEmpty());
+ Assert.assertNotNull(serviceConfigEntity.getServiceConfigId());
+ }
+
+ @Test
+ public void testFindByServiceAndVersion() throws Exception {
+
+ createServiceConfig("HDFS", "admin", 1L, 1L, 1111L, null);
+
+ ServiceConfigEntity serviceConfigEntity =
+ serviceConfigDAO.findByServiceAndVersion("HDFS", 1L);
+
+ Assert.assertNotNull(serviceConfigEntity);
+ Assert.assertEquals("c1", serviceConfigEntity.getClusterEntity().getClusterName());
+ Assert.assertEquals(Long.valueOf(1), serviceConfigEntity.getClusterEntity()
+ .getClusterId());
+ Assert.assertEquals("HDFS", serviceConfigEntity.getServiceName());
+ Assert.assertEquals(Long.valueOf(1111L), serviceConfigEntity.getCreateTimestamp());
+ Assert.assertEquals("admin", serviceConfigEntity.getUser());
+ Assert.assertEquals(Long.valueOf(1), serviceConfigEntity.getVersion());
+ Assert.assertTrue(serviceConfigEntity.getClusterConfigEntities().isEmpty());
+ Assert.assertNotNull(serviceConfigEntity.getServiceConfigId());
+ }
+
+ @Test
+ public void testFindMaxVersions() throws Exception {
+ createServiceConfig("HDFS", "admin", 1L, 1L, 1111L, null);
+ createServiceConfig("HDFS", "admin", 2L, 2L, 2222L, null);
+ createServiceConfig("YARN", "admin", 1L, 3L, 3333L, null);
+
+
+ Map<String,Long> maxVersions = serviceConfigDAO.findMaxVersions(
+ clusterDAO.findByName("c1").getClusterId());
+
+ Assert.assertNotNull(maxVersions);
+
+ Assert.assertEquals(2, maxVersions.size());
+
+ Assert.assertEquals(Long.valueOf(2), maxVersions.get("HDFS"));
+ Assert.assertEquals(Long.valueOf(1), maxVersions.get("YARN"));
+ }
+
+ @Test
+ public void testGetLastServiceConfigs() throws Exception {
+ createServiceConfig("HDFS", "admin", 1L, 1L, 1111L, null);
+ createServiceConfig("HDFS", "admin", 2L, 2L, 2222L, null);
+ createServiceConfig("YARN", "admin", 1L, 3L, 3333L, null);
+
+ List<ServiceConfigEntity> serviceConfigEntities =
+ serviceConfigDAO.getLastServiceConfigs(clusterDAO.findByName("c1").getClusterId());
+
+ Assert.assertNotNull(serviceConfigEntities);
+ Assert.assertEquals(2, serviceConfigEntities.size());
+
+ for (ServiceConfigEntity sce: serviceConfigEntities) {
+ if ("HDFS".equals(sce.getServiceName())) {
+ Assert.assertEquals("c1", sce.getClusterEntity().getClusterName());
+ Assert.assertEquals(Long.valueOf(1), sce.getClusterEntity()
+ .getClusterId());
+ Assert.assertEquals(Long.valueOf(2222L), sce.getCreateTimestamp());
+ Assert.assertEquals(Long.valueOf(2), sce.getVersion());
+ Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
+ Assert.assertNotNull(sce.getServiceConfigId());
+ }
+ if ("YARN".equals(sce.getServiceName())) {
+ Assert.assertEquals("c1", sce.getClusterEntity().getClusterName());
+ Assert.assertEquals(Long.valueOf(1), sce.getClusterEntity()
+ .getClusterId());
+ Assert.assertEquals(Long.valueOf(3333L), sce.getCreateTimestamp());
+ Assert.assertEquals(Long.valueOf(1), sce.getVersion());
+ Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
+ Assert.assertNotNull(sce.getServiceConfigId());
+ }
+
+ Assert.assertEquals("admin", sce.getUser());
+ }
+ }
+
+ @Test
+ public void testGetLastServiceConfig() throws Exception {
+ createServiceConfig("HDFS", "admin", 1L, 1L, 1111L, null);
+ createServiceConfig("HDFS", "admin", 2L, 2L, 2222L, null);
+ createServiceConfig("YARN", "admin", 1L, 3L, 3333L, null);
+
+ ServiceConfigEntity serviceConfigEntity =
+ serviceConfigDAO.getLastServiceConfig(1L, "HDFS");
+
+ Assert.assertNotNull(serviceConfigEntity);
+ Assert.assertEquals("c1", serviceConfigEntity.getClusterEntity().getClusterName());
+ Assert.assertEquals(Long.valueOf(1), serviceConfigEntity.getClusterEntity()
+ .getClusterId());
+ Assert.assertEquals("HDFS", serviceConfigEntity.getServiceName());
+ Assert.assertEquals(Long.valueOf(2222L), serviceConfigEntity.getCreateTimestamp());
+ Assert.assertEquals("admin", serviceConfigEntity.getUser());
+ Assert.assertEquals(Long.valueOf(2), serviceConfigEntity.getVersion());
+ Assert.assertTrue(serviceConfigEntity.getClusterConfigEntities().isEmpty());
+ Assert.assertNotNull(serviceConfigEntity.getServiceConfigId());
+ }
+
+ @Test
+ public void testGetServiceConfigs() throws Exception {
+ createServiceConfig("HDFS", "admin", 1L, 1L, 1111L, null);
+ createServiceConfig("HDFS", "admin", 2L, 2L, 2222L, null);
+ createServiceConfig("YARN", "admin", 1L, 3L, 3333L, null);
+
+ List<ServiceConfigEntity> serviceConfigEntities =
+ serviceConfigDAO.getServiceConfigs(clusterDAO.findByName("c1").getClusterId());
+
+ Assert.assertNotNull(serviceConfigEntities);
+ Assert.assertEquals(3, serviceConfigEntities.size());
+
+ for (ServiceConfigEntity sce: serviceConfigEntities) {
+ if ("HDFS".equals(sce.getServiceName()) && (sce.getVersion() == 1)) {
+ Assert.assertEquals("c1", sce.getClusterEntity().getClusterName());
+ Assert.assertEquals(Long.valueOf(1), sce.getClusterEntity()
+ .getClusterId());
+ Assert.assertEquals(Long.valueOf(1111L), sce.getCreateTimestamp());
+ Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
+ Assert.assertNotNull(sce.getServiceConfigId());
+ } else if ("HDFS".equals(sce.getServiceName()) && (sce.getVersion() == 2)) {
+ Assert.assertEquals("c1", sce.getClusterEntity().getClusterName());
+ Assert.assertEquals(Long.valueOf(1), sce.getClusterEntity()
+ .getClusterId());
+ Assert.assertEquals(Long.valueOf(2222L), sce.getCreateTimestamp());
+ Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
+ Assert.assertNotNull(sce.getServiceConfigId());
+ } else if ("YARN".equals(sce.getServiceName())) {
+ Assert.assertEquals("c1", sce.getClusterEntity().getClusterName());
+ Assert.assertEquals(Long.valueOf(1), sce.getClusterEntity()
+ .getClusterId());
+ Assert.assertEquals(Long.valueOf(3333L), sce.getCreateTimestamp());
+ Assert.assertEquals(Long.valueOf(1), sce.getVersion());
+ Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
+ Assert.assertNotNull(sce.getServiceConfigId());
+
+ } else {
+ Assert.fail();
+ }
+ Assert.assertEquals("admin", sce.getUser());
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ServiceConfigEntityTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ServiceConfigEntityTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ServiceConfigEntityTest.java
new file mode 100644
index 0000000..e12e7ae
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ServiceConfigEntityTest.java
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.orm.entities;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+/**
+ * ServiceConfigEntity unit tests.
+ */
+public class ServiceConfigEntityTest {
+ @Test
+ public void testSettersGetters() {
+ ServiceConfigEntity entity = new ServiceConfigEntity();
+ entity.setServiceName("foo");
+ entity.setUser("bar");
+ entity.setNote("note");
+ entity.setVersion(1L);
+ entity.setServiceConfigId(1L);
+ entity.setClusterId(1L);
+ entity.setCreateTimestamp(1111L);
+ assertEquals("foo", entity.getServiceName());
+ assertEquals("bar", entity.getUser());
+ assertEquals("note", entity.getNote());
+ assertEquals(Long.valueOf(1), entity.getVersion());
+ assertEquals(Long.valueOf(1), entity.getServiceConfigId());
+ assertEquals(Long.valueOf(1), entity.getClusterId());
+ assertEquals(Long.valueOf(1111), entity.getCreateTimestamp());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
index 453c26b..222924b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
@@ -47,6 +47,7 @@ import org.apache.ambari.server.agent.DiskInfo;
import org.apache.ambari.server.agent.HostInfo;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.ClusterResponse;
+import org.apache.ambari.server.controller.ServiceConfigVersionResponse;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.entities.ClusterEntity;
@@ -633,4 +634,58 @@ public class ClusterTest {
assertEquals(2, result.size());
}
-}
+ @Test
+ public void testAddServiceConfigVersions() {
+ Config config1 = configFactory.createNew(c1, "hdfs-site",
+ new HashMap<String, String>() {{ put("a", "b"); }}, new HashMap<String, Map<String,String>>());
+ config1.setTag("version1");
+
+ Config config2 = configFactory.createNew(c1, "hdfs-site",
+ new HashMap<String, String>() {{ put("x", "y"); }}, new HashMap<String, Map<String,String>>());
+ config2.setTag("version2");
+
+ c1.addConfig(config1);
+ c1.addConfig(config2);
+
+ c1.addDesiredConfig("admin", config1);
+ List<ServiceConfigVersionResponse> serviceConfigVersions =
+ c1.getServiceConfigVersions();
+ Assert.assertNotNull(serviceConfigVersions);
+ Assert.assertEquals(1, serviceConfigVersions.size());
+ Map<String, ServiceConfigVersionResponse> activeServiceConfigVersions =
+ c1.getActiveServiceConfigVersions();
+ Assert.assertEquals(1, activeServiceConfigVersions.size());
+ ServiceConfigVersionResponse mapredResponse =
+ activeServiceConfigVersions.get("MAPREDUCE");
+
+ Assert.assertEquals("MAPREDUCE", mapredResponse.getServiceName());
+ Assert.assertEquals("c1", mapredResponse.getClusterName());
+ Assert.assertEquals("admin", mapredResponse.getUserName());
+ Assert.assertEquals(Long.valueOf(1), mapredResponse.getVersion());
+
+ c1.addDesiredConfig("admin", config2);
+ serviceConfigVersions = c1.getServiceConfigVersions();
+ Assert.assertNotNull(serviceConfigVersions);
+ // created new ServiceConfigVersion
+ Assert.assertEquals(2, serviceConfigVersions.size());
+ // active version still 1
+ Assert.assertEquals(1, activeServiceConfigVersions.size());
+ mapredResponse = activeServiceConfigVersions.get("MAPREDUCE");
+ Assert.assertEquals("MAPREDUCE", mapredResponse.getServiceName());
+ Assert.assertEquals("c1", mapredResponse.getClusterName());
+ Assert.assertEquals("admin", mapredResponse.getUserName());
+
+ // Rollback , clonning version1 config, created new ServiceConfigVersion
+ c1.addDesiredConfig("admin", config1);
+ serviceConfigVersions = c1.getServiceConfigVersions();
+ Assert.assertNotNull(serviceConfigVersions);
+ // created new ServiceConfigVersion
+ Assert.assertEquals(3, serviceConfigVersions.size());
+ // active version still 1
+ Assert.assertEquals(1, activeServiceConfigVersions.size());
+ mapredResponse = activeServiceConfigVersions.get("MAPREDUCE");
+ Assert.assertEquals("MAPREDUCE", mapredResponse.getServiceName());
+ Assert.assertEquals("c1", mapredResponse.getClusterName());
+ Assert.assertEquals("admin", mapredResponse.getUserName());
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/6eb753d8/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
index 63b64e4..19f37ad 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog170Test.java
@@ -85,6 +85,8 @@ public class UpgradeCatalog170Test {
Capture<List<DBAccessor.DBColumnInfo>> alertGroupTargetCapture = new Capture<List<DBAccessor.DBColumnInfo>>();
Capture<List<DBAccessor.DBColumnInfo>> alertGroupingCapture = new Capture<List<DBAccessor.DBColumnInfo>>();
Capture<List<DBAccessor.DBColumnInfo>> alertNoticeCapture = new Capture<List<DBAccessor.DBColumnInfo>>();
+ Capture<List<DBAccessor.DBColumnInfo>> serviceConfigCapture = new Capture<List<DBAccessor.DBColumnInfo>>();
+ Capture<List<DBAccessor.DBColumnInfo>> serviceConfigMappingCapture = new Capture<List<DBAccessor.DBColumnInfo>>();
setViewExpectations(dbAccessor, maskColumnCapture);
setViewParameterExpectations(dbAccessor, maskedColumnCapture);
@@ -114,6 +116,13 @@ public class UpgradeCatalog170Test {
dbAccessor.createTable(eq("alert_notice"), capture(alertNoticeCapture),
eq("notification_id"));
+ dbAccessor.createTable(eq("serviceconfig"), capture(serviceConfigCapture),
+ eq("service_config_id"));
+
+ dbAccessor.createTable(eq("serviceconfigmapping"),
+ capture(serviceConfigMappingCapture), eq("service_config_id"),
+ eq("config_id"));
+
dbAccessor.executeSelect(anyObject(String.class));
expectLastCall().andReturn(resultSet).anyTimes();
resultSet.next();
@@ -143,6 +152,8 @@ public class UpgradeCatalog170Test {
assertEquals(2, alertGroupTargetCapture.getValue().size());
assertEquals(2, alertGroupingCapture.getValue().size());
assertEquals(4, alertNoticeCapture.getValue().size());
+ assertEquals(2, serviceConfigCapture.getValue().size());
+ assertEquals(2, serviceConfigMappingCapture.getValue().size());
}
@Test