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 <beny...@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