You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by be...@apache.org on 2018/09/26 17:59:21 UTC
[ambari] branch branch-feature-AMBARI-14714 updated: [AMBARI 24678]
Config group mapping should allow multiple service instances (benyoka)
This is an automated email from the ASF dual-hosted git repository.
benyoka pushed a commit to branch branch-feature-AMBARI-14714
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-feature-AMBARI-14714 by this push:
new 2e6ddbb [AMBARI 24678] Config group mapping should allow multiple service instances (benyoka)
2e6ddbb is described below
commit 2e6ddbbc8a9114dd955725ec634c8aec2f8faea4
Author: benyoka <be...@users.noreply.github.com>
AuthorDate: Wed Sep 26 19:59:15 2018 +0200
[AMBARI 24678] Config group mapping should allow multiple service instances (benyoka)
* AMBARI-24678 wip (benyoka)
* AMBARI-24678 fix remaining DDLs (benyoka)
* AMBARI-24678 add javadoc (benyoka)
* AMBARI-24678 review comments (benyoka)
* AMBARI-24678 review comments #2 (benyoka)
---
.../orm/dao/ConfigGroupConfigMappingDAO.java | 21 +++---
.../server/orm/entities/ClusterConfigEntity.java | 6 +-
.../ambari/server/orm/entities/ClusterEntity.java | 1 -
.../entities/ConfigGroupConfigMappingEntity.java | 61 ++++++++++++++--
.../entities/ConfigGroupConfigMappingEntityPK.java | 81 ----------------------
.../server/state/configgroup/ConfigGroupImpl.java | 1 +
.../src/main/resources/Ambari-DDL-Derby-CREATE.sql | 17 +++--
.../src/main/resources/Ambari-DDL-MySQL-CREATE.sql | 15 ++--
.../main/resources/Ambari-DDL-Oracle-CREATE.sql | 13 ++--
.../main/resources/Ambari-DDL-Postgres-CREATE.sql | 15 ++--
.../resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 13 ++--
.../main/resources/Ambari-DDL-SQLServer-CREATE.sql | 15 ++--
12 files changed, 132 insertions(+), 127 deletions(-)
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ConfigGroupConfigMappingDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ConfigGroupConfigMappingDAO.java
index bfaf82d..1c17ab4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ConfigGroupConfigMappingDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ConfigGroupConfigMappingDAO.java
@@ -24,7 +24,6 @@ import javax.persistence.TypedQuery;
import org.apache.ambari.server.orm.RequiresSession;
import org.apache.ambari.server.orm.entities.ConfigGroupConfigMappingEntity;
-import org.apache.ambari.server.orm.entities.ConfigGroupConfigMappingEntityPK;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -38,11 +37,13 @@ public class ConfigGroupConfigMappingDAO {
@Inject
DaoUtils daoUtils;
+ /**
+ * @param pk the primary key
+ * @return the config group for the given pk
+ */
@RequiresSession
- public ConfigGroupConfigMappingEntity findByPK
- (ConfigGroupConfigMappingEntityPK configGroupConfigMappingEntityPK) {
- return entityManagerProvider.get().find(ConfigGroupConfigMappingEntity.class,
- configGroupConfigMappingEntityPK);
+ public ConfigGroupConfigMappingEntity findByPK(Long pk) {
+ return entityManagerProvider.get().find(ConfigGroupConfigMappingEntity.class, pk);
}
@RequiresSession
@@ -83,11 +84,13 @@ public class ConfigGroupConfigMappingDAO {
entityManagerProvider.get().remove(merge(configGroupConfigMappingEntity));
}
+ /**
+ * Removes an entity by its primary key
+ * @param pk the primary key
+ */
@Transactional
- public void removeByPK(ConfigGroupConfigMappingEntityPK
- configGroupConfigMappingEntityPK) {
- entityManagerProvider.get().remove(findByPK
- (configGroupConfigMappingEntityPK));
+ public void removeByPK(Long pk) {
+ entityManagerProvider.get().remove(findByPK(pk));
}
@Transactional
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
index 13837b7..d3ecf9a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java
@@ -44,8 +44,10 @@ import org.apache.commons.lang.builder.EqualsBuilder;
@Entity
@Table(name = "clusterconfig",
- uniqueConstraints = {@UniqueConstraint(name = "UQ_config_type_tag", columnNames = {"cluster_id", "type_name", "version_tag"}),
- @UniqueConstraint(name = "UQ_config_type_version", columnNames = {"cluster_id", "type_name", "version"})})
+ uniqueConstraints = {
+ @UniqueConstraint(name = "UQ_config_type_tag", columnNames = {"cluster_id", "service_id", "type_name", "version_tag"}),
+ @UniqueConstraint(name = "UQ_config_type_version", columnNames = {"cluster_id", "service_id", "type_name", "version"})
+ })
@TableGenerator(name = "config_id_generator",
table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "sequence_value"
, pkColumnValue = "config_id_seq"
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
index 793f1a1..e1e7fc1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterEntity.java
@@ -66,7 +66,6 @@ import org.apache.ambari.server.state.State;
, initialValue = 1
)
public class ClusterEntity {
-
@Id
@Column(name = "cluster_id", nullable = false, insertable = true, updatable = true)
@GeneratedValue(strategy = GenerationType.TABLE, generator = "cluster_id_generator")
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ConfigGroupConfigMappingEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ConfigGroupConfigMappingEntity.java
index 76897c9..a94cbb4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ConfigGroupConfigMappingEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ConfigGroupConfigMappingEntity.java
@@ -19,36 +19,59 @@ package org.apache.ambari.server.orm.entities;
import javax.persistence.Column;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
import javax.persistence.Id;
-import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.persistence.TableGenerator;
+import javax.persistence.UniqueConstraint;
@Entity
-@Table(name = "confgroupclusterconfigmapping")
-@IdClass(ConfigGroupConfigMappingEntityPK.class)
+@Table(
+ name = "confgroupclusterconfigmapping",
+ uniqueConstraints = {
+ @UniqueConstraint(name = "UQ_cgccm_cgid_cid_ctype_sid",
+ columnNames = {"config_group_id", "cluster_id", "service_id", "config_type"})
+ }
+)
+@TableGenerator(name = "confgroupclusterconfigmapping_id_generator",
+ table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "sequence_value",
+ pkColumnValue = "cnfgrpclstrcnfigmpg_id_seq", initialValue = 1
+)
@NamedQueries({
@NamedQuery(name = "configsByGroup", query =
"SELECT configs FROM ConfigGroupConfigMappingEntity configs " +
"WHERE configs.configGroupId=:groupId")
})
public class ConfigGroupConfigMappingEntity {
+ /**
+ * the primary key
+ */
@Id
+ @Column(name = "id", nullable = false, insertable = true, updatable = false)
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "confgroupclusterconfigmapping_id_generator")
+ private Long id;
+
@Column(name = "config_group_id", nullable = false, insertable = true, updatable = true)
private Long configGroupId;
- @Id
@Column(name = "cluster_id", nullable = false, insertable = true, updatable = false)
private Long clusterId;
- @Id
@Column(name = "config_type", nullable = false, insertable = true, updatable = false)
private String configType;
+ /**
+ * the optional service id
+ */
+ @Column(name = "service_id", nullable = true, insertable = true, updatable = false)
+ private Long serviceId;
+
@Column(name = "version_tag", nullable = false, insertable = true, updatable = false)
private String versionTag;
@@ -68,6 +91,20 @@ public class ConfigGroupConfigMappingEntity {
@JoinColumn(name = "config_group_id", referencedColumnName = "group_id", nullable = false, insertable = false, updatable = false)})
private ConfigGroupEntity configGroupEntity;
+ /**
+ * @return the primary key
+ */
+ public Long getId() {
+ return id;
+ }
+
+ /**
+ * @param id the primary key
+ */
+ public void setId(Long id) {
+ this.id = id;
+ }
+
public Long getConfigGroupId() {
return configGroupId;
}
@@ -92,6 +129,20 @@ public class ConfigGroupConfigMappingEntity {
this.configType = configType;
}
+ /**
+ * @return the service id if the mapping is associated with a service instance or {@code null} if not.
+ */
+ public Long getServiceId() {
+ return serviceId;
+ }
+
+ /**
+ * @param serviceId the id of the service instance associated with this mapping
+ */
+ public void setServiceId(Long serviceId) {
+ this.serviceId = serviceId;
+ }
+
public String getVersionTag() {
return versionTag;
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ConfigGroupConfigMappingEntityPK.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ConfigGroupConfigMappingEntityPK.java
deleted file mode 100644
index 828cd24..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ConfigGroupConfigMappingEntityPK.java
+++ /dev/null
@@ -1,81 +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 java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-
-public class ConfigGroupConfigMappingEntityPK implements Serializable {
- private Long configGroupId;
- private Long clusterId;
- private String configType;
-
- @Id
- @Column(name = "config_group_id", nullable = false, insertable = true, updatable = true)
- public Long getConfigGroupId() {
- return configGroupId;
- }
-
- public void setConfigGroupId(Long configGroupId) {
- this.configGroupId = configGroupId;
- }
-
- @Id
- @Column(name = "cluster_id", nullable = false, insertable = true, updatable = true, length = 10)
- public Long getClusterId() {
- return clusterId;
- }
-
- public void setClusterId(Long clusterId) {
- this.clusterId = clusterId;
- }
-
- @Id
- @Column(name = "config_type", nullable = false, insertable = true, updatable = true)
- public String getConfigType() {
- return configType;
- }
-
- public void setConfigType(String configType) {
- this.configType = configType;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- ConfigGroupConfigMappingEntityPK that = (ConfigGroupConfigMappingEntityPK) o;
-
- if (!clusterId.equals(that.clusterId)) return false;
- if (!configGroupId.equals(that.configGroupId)) return false;
- if (!configType.equals(that.configType)) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result = configGroupId.hashCode();
- result = 31 * result + clusterId.hashCode();
- result = 31 * result + configType.hashCode();
- return result;
- }
-}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
index c6c3fed..5ec4d9d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
@@ -466,6 +466,7 @@ public class ConfigGroupImpl implements ConfigGroup {
configMappingEntity.setConfigGroupId(configGroupEntity.getGroupId());
configMappingEntity.setConfigType(clusterConfigEntity.getType());
configMappingEntity.setVersionTag(clusterConfigEntity.getTag());
+ configMappingEntity.setServiceId(clusterConfigEntity.getServiceId());
configGroupConfigMappingDAO.create(configMappingEntity);
configGroupEntity.getConfigGroupConfigMappingEntities().add
(configMappingEntity);
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
index 733a4ff..16917aa 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
@@ -179,9 +179,8 @@ CREATE TABLE clusterconfig (
CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id),
CONSTRAINT FK_clusterconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id),
CONSTRAINT FK_clusterconfig_service_id FOREIGN KEY (service_id) REFERENCES clusterservices(id),
- CONSTRAINT UQ_config_type_tag UNIQUE (version_tag, type_name, cluster_id),
- CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version));
-
+ CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, service_id, type_name, version_tag),
+ CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, service_id, type_name, version));
CREATE TABLE servicedependencies (
id BIGINT NOT NULL,
@@ -574,15 +573,19 @@ CREATE TABLE configgroup (
CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id));
CREATE TABLE confgroupclusterconfigmapping (
+ id BIGINT NOT NULL,
config_group_id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
config_type VARCHAR(255) NOT NULL,
+ service_id BIGINT,
version_tag VARCHAR(255) NOT NULL,
user_name VARCHAR(255) DEFAULT '_db',
create_timestamp BIGINT NOT NULL,
- CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (config_group_id, cluster_id, config_type),
+ CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (id),
+ CONSTRAINT UQ_cgccm_cgid_cid_ctype_sid UNIQUE (config_group_id, cluster_id, service_id, config_type),
+ CONSTRAINT FK_cgccm_service FOREIGN KEY (service_id) REFERENCES clusterservices (id),
CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id),
- CONSTRAINT FK_confg FOREIGN KEY (version_tag, config_type, cluster_id) REFERENCES clusterconfig (version_tag, type_name, cluster_id));
+ CONSTRAINT FK_confg FOREIGN KEY (cluster_id, service_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, service_id, type_name, version_tag));
CREATE TABLE configgrouphostmapping (
config_group_id BIGINT NOT NULL,
@@ -1386,7 +1389,9 @@ INSERT INTO ambari_sequences (sequence_name, sequence_value)
union all
select 'mpack_instance_id_seq', 0 FROM SYSIBM.SYSDUMMY1
union all
- select 'hostgroup_component_id_seq', 0 FROM SYSIBM.SYSDUMMY1;
+ select 'hostgroup_component_id_seq', 0 FROM SYSIBM.SYSDUMMY1
+ union all
+ select 'cnfgrpclstrcnfigmpg_id_seq', 0 FROM SYSIBM.SYSDUMMY1
INSERT INTO adminresourcetype (resource_type_id, resource_type_name)
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 999665e..45684c0 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@ -199,8 +199,8 @@ CREATE TABLE clusterconfig (
CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id),
CONSTRAINT FK_clusterconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id),
CONSTRAINT FK_clusterconfig_service_id FOREIGN KEY (service_id) REFERENCES clusterservices(id),
- CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, type_name, version_tag),
- CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version));
+ CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, service_id, type_name, version_tag),
+ CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, service_id, type_name, version));
CREATE TABLE servicedependencies (
id BIGINT NOT NULL,
@@ -592,15 +592,19 @@ CREATE TABLE configgroup (
CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id));
CREATE TABLE confgroupclusterconfigmapping (
+ id BIGINT NOT NULL,
config_group_id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
config_type VARCHAR(100) NOT NULL,
+ service_id BIGINT,
version_tag VARCHAR(100) NOT NULL,
user_name VARCHAR(100) DEFAULT '_db',
create_timestamp BIGINT NOT NULL,
- CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (config_group_id, cluster_id, config_type),
+ CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (id),
+ CONSTRAINT UQ_cgccm_cgid_cid_ctype_sid UNIQUE (config_group_id, cluster_id, service_id, config_type),
+ CONSTRAINT FK_cgccm_service FOREIGN KEY (service_id) REFERENCES clusterservices (id),
CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id),
- CONSTRAINT FK_confg FOREIGN KEY (cluster_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, type_name, version_tag));
+ CONSTRAINT FK_confg FOREIGN KEY (cluster_id, service_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, service_id, type_name, version_tag));
CREATE TABLE configgrouphostmapping (
config_group_id BIGINT NOT NULL,
@@ -1333,7 +1337,8 @@ INSERT INTO ambari_sequences(sequence_name, sequence_value) VALUES
('hostcomponentdesiredstate_id_seq', 0),
('mpack_inst_svc_id_seq', 0),
('mpack_instance_id_seq', 0),
- ('hostgroup_component_id_seq', 0);
+ ('hostgroup_component_id_seq', 0),
+ ('cnfgrpclstrcnfigmpg_id_seq', 0);
INSERT INTO adminresourcetype (resource_type_id, resource_type_name) VALUES
(1, 'AMBARI'),
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 6d6f6c2..7c473c8 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
@@ -179,8 +179,8 @@ CREATE TABLE clusterconfig (
CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id),
CONSTRAINT FK_clusterconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id),
CONSTRAINT FK_clusterconfig_service_id FOREIGN KEY (service_id) REFERENCES clusterservices(id),
- CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, type_name, version_tag),
- CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version));
+ CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, service_id, type_name, version_tag),
+ CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, service_id, type_name, version));
CREATE TABLE servicedependencies (
id NUMBER(19) NOT NULL,
@@ -572,15 +572,19 @@ CREATE TABLE configgroup (
CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id));
CREATE TABLE confgroupclusterconfigmapping (
+ id NUMBER(19) NOT NULL,
config_group_id NUMBER(19) NOT NULL,
cluster_id NUMBER(19) NOT NULL,
config_type VARCHAR2(255) NOT NULL,
+ service_id NUMBER(19),
version_tag VARCHAR2(255) NOT NULL,
user_name VARCHAR2(255) DEFAULT '_db',
create_timestamp NUMBER(19) NOT NULL,
- CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (config_group_id, cluster_id, config_type),
+ CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (id),
+ CONSTRAINT UQ_cgccm_cgid_cid_ctype_sid UNIQUE (config_group_id, cluster_id, service_id, config_type),
+ CONSTRAINT FK_cgccm_service FOREIGN KEY (service_id) REFERENCES clusterservices (id),
CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id),
- CONSTRAINT FK_confg FOREIGN KEY (version_tag, config_type, cluster_id) REFERENCES clusterconfig (version_tag, type_name, cluster_id));
+ CONSTRAINT FK_confg FOREIGN KEY (cluster_id, service_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, service_id, type_name, version_tag));
CREATE TABLE configgrouphostmapping (
config_group_id NUMBER(19) NOT NULL,
@@ -1312,6 +1316,7 @@ INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('hostcompone
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('mpack_inst_svc_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('mpack_instance_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('hostgroup_component_id_seq', 0);
+INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('cnfgrpclstrcnfigmpg_id_seq', 0);
INSERT INTO metainfo("metainfo_key", "metainfo_value") values ('version', '${ambariSchemaVersion}');
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 02bd611..84e5297 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -182,8 +182,8 @@ CREATE TABLE clusterconfig (
CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id),
CONSTRAINT FK_clusterconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id),
CONSTRAINT FK_clusterconfig_service_id FOREIGN KEY (service_id) REFERENCES clusterservices(id),
- CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, type_name, version_tag),
- CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version));
+ CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, service_id, type_name, version_tag),
+ CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, service_id, type_name, version));
CREATE TABLE servicedependencies (
id BIGINT NOT NULL,
@@ -575,15 +575,19 @@ CREATE TABLE configgroup (
CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id));
CREATE TABLE confgroupclusterconfigmapping (
+ id BIGINT NOT NULL,
config_group_id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
config_type VARCHAR(255) NOT NULL,
+ service_id BIGINT,
version_tag VARCHAR(255) NOT NULL,
user_name VARCHAR(255) DEFAULT '_db',
create_timestamp BIGINT NOT NULL,
- CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (config_group_id, cluster_id, config_type),
+ CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (id),
+ CONSTRAINT UQ_cgccm_cgid_cid_ctype_sid UNIQUE (config_group_id, cluster_id, service_id, config_type),
+ CONSTRAINT FK_cgccm_service FOREIGN KEY (service_id) REFERENCES clusterservices (id),
CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id),
- CONSTRAINT FK_confg FOREIGN KEY (version_tag, config_type, cluster_id) REFERENCES clusterconfig (version_tag, type_name, cluster_id));
+ CONSTRAINT FK_confg FOREIGN KEY (cluster_id, service_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, service_id, type_name, version_tag));
CREATE TABLE configgrouphostmapping (
config_group_id BIGINT NOT NULL,
@@ -1318,7 +1322,8 @@ INSERT INTO ambari_sequences (sequence_name, sequence_value) VALUES
('servicecomponent_version_id_seq', 0),
('repo_os_id_seq', 0),
('repo_definition_id_seq', 0),
- ('hostcomponentdesiredstate_id_seq', 0);
+ ('hostcomponentdesiredstate_id_seq', 0),
+ ('cnfgrpclstrcnfigmpg_id_seq', 0);
INSERT INTO adminresourcetype (resource_type_id, resource_type_name) VALUES
(1, 'AMBARI'),
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 bc30a73..135d468 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
@@ -178,8 +178,8 @@ CREATE TABLE clusterconfig (
CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id),
CONSTRAINT FK_clusterconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id),
CONSTRAINT FK_clusterconfig_service_id FOREIGN KEY (service_id) REFERENCES clusterservices(id),
- CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, type_name, version_tag),
- CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version));
+ CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, service_id, type_name, version_tag),
+ CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, service_id, type_name, version));
CREATE TABLE servicedependencies (
id NUMBER(19) NOT NULL,
@@ -570,15 +570,19 @@ CREATE TABLE configgroup (
CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id));
CREATE TABLE confgroupclusterconfigmapping (
+ id NUMERIC(19) NOT NULL,
config_group_id NUMERIC(19) NOT NULL,
cluster_id NUMERIC(19) NOT NULL,
config_type VARCHAR(255) NOT NULL,
+ service_id NUMERIC(19),
version_tag VARCHAR(255) NOT NULL,
user_name VARCHAR(255) DEFAULT '_db',
create_timestamp NUMERIC(19) NOT NULL,
- CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (config_group_id, cluster_id, config_type),
+ CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (id),
+ CONSTRAINT UQ_cgccm_cgid_cid_ctype_sid UNIQUE (config_group_id, cluster_id, service_id, config_type),
+ CONSTRAINT FK_cgccm_service FOREIGN KEY (service_id) REFERENCES clusterservices (id),
CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id),
- CONSTRAINT FK_confg FOREIGN KEY (cluster_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, type_name, version_tag));
+ CONSTRAINT FK_confg FOREIGN KEY (cluster_id, service_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, service_id, type_name, version_tag));
CREATE TABLE configgrouphostmapping (
config_group_id NUMERIC(19) NOT NULL,
@@ -1314,6 +1318,7 @@ INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('hostcompone
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('mpack_inst_svc_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('mpack_instance_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('hostgroup_component_id_seq', 0);
+INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('cnfgrpclstrcnfigmpg_id_seq', 0);
insert into adminresourcetype (resource_type_id, resource_type_name)
select 1, 'AMBARI'
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 bcc2297..2e87bf8 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
@@ -193,8 +193,8 @@ CREATE TABLE clusterconfig (
CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id),
CONSTRAINT FK_clusterconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id),
CONSTRAINT FK_clusterconfig_service_id FOREIGN KEY (service_id) REFERENCES clusterservices(id),
- CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, type_name, version_tag),
- CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version));
+ CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, service_id, type_name, version_tag),
+ CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, service_id, type_name, version));
CREATE TABLE servicedependencies (
id BIGINT NOT NULL,
@@ -589,15 +589,19 @@ CREATE TABLE configgroup (
CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id));
CREATE TABLE confgroupclusterconfigmapping (
+ id BIGINT NOT NULL,
config_group_id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
config_type VARCHAR(255) NOT NULL,
+ service_id BIGINT,
version_tag VARCHAR(255) NOT NULL,
user_name VARCHAR(255) DEFAULT '_db',
create_timestamp BIGINT NOT NULL,
- CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY CLUSTERED (config_group_id, cluster_id, config_type),
+ CONSTRAINT PK_confgroupclustercfgmapping PRIMARY KEY (id),
+ CONSTRAINT UQ_cgccm_cgid_cid_ctype_sid UNIQUE (config_group_id, cluster_id, service_id, config_type),
+ CONSTRAINT FK_cgccm_service FOREIGN KEY (service_id) REFERENCES clusterservices (id),
CONSTRAINT FK_cgccm_gid FOREIGN KEY (config_group_id) REFERENCES configgroup (group_id),
- CONSTRAINT FK_confg FOREIGN KEY (cluster_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, type_name, version_tag));
+ CONSTRAINT FK_confg FOREIGN KEY (cluster_id, service_id, config_type, version_tag) REFERENCES clusterconfig (cluster_id, service_id, type_name, version_tag));
CREATE TABLE configgrouphostmapping (
config_group_id BIGINT NOT NULL,
@@ -1340,7 +1344,8 @@ BEGIN TRANSACTION
('hostcomponentdesiredstate_id_seq', 0),
('mpack_inst_svc_id_seq', 0),
('mpack_instance_id_seq', 0),
- ('hostgroup_component_id_seq', 0);
+ ('hostgroup_component_id_seq', 0),
+ ('cnfgrpclstrcnfigmpg_id_seq', 0);
insert into adminresourcetype (resource_type_id, resource_type_name)
values