You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by st...@apache.org on 2016/12/15 16:06:01 UTC
ambari git commit: AMBARI-19164. Add PK to hostcomponentdesiredstate
Table To Support FK Relationships. (stoader)
Repository: ambari
Updated Branches:
refs/heads/trunk 65fe71a1b -> f7399125e
AMBARI-19164. Add PK to hostcomponentdesiredstate Table To Support FK Relationships. (stoader)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f7399125
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f7399125
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f7399125
Branch: refs/heads/trunk
Commit: f7399125edb9615ad7cb7842b084314307495a83
Parents: 65fe71a
Author: Toader, Sebastian <st...@hortonworks.com>
Authored: Thu Dec 15 17:04:22 2016 +0100
Committer: Toader, Sebastian <st...@hortonworks.com>
Committed: Thu Dec 15 17:04:22 2016 +0100
----------------------------------------------------------------------
.../apache/ambari/server/orm/DBAccessor.java | 11 +
.../ambari/server/orm/DBAccessorImpl.java | 20 +-
.../orm/dao/HostComponentDesiredStateDAO.java | 32 ++-
.../HostComponentDesiredStateEntity.java | 59 ++++--
.../HostComponentDesiredStateEntityPK.java | 96 ---------
.../server/orm/helpers/dbms/DbmsHelper.java | 3 +
.../orm/helpers/dbms/GenericDbmsHelper.java | 16 +-
.../server/state/ServiceComponentImpl.java | 14 +-
.../svccomphost/ServiceComponentHostImpl.java | 23 +--
.../server/upgrade/UpgradeCatalog250.java | 113 +++++++++-
.../main/resources/Ambari-DDL-Derby-CREATE.sql | 9 +-
.../main/resources/Ambari-DDL-MySQL-CREATE.sql | 8 +-
.../main/resources/Ambari-DDL-Oracle-CREATE.sql | 5 +-
.../resources/Ambari-DDL-Postgres-CREATE.sql | 7 +-
.../resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 5 +-
.../resources/Ambari-DDL-SQLServer-CREATE.sql | 8 +-
.../server/state/ServiceComponentTest.java | 15 +-
.../server/state/cluster/ClustersTest.java | 20 +-
.../svccomphost/ServiceComponentHostTest.java | 34 +--
.../server/upgrade/UpgradeCatalog200Test.java | 13 +-
.../server/upgrade/UpgradeCatalog250Test.java | 205 ++++++++++---------
21 files changed, 416 insertions(+), 300 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
index 488c01e..b8a760f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessor.java
@@ -71,6 +71,17 @@ public interface DBAccessor {
String... columnNames) throws SQLException;
/**
+ * Create new index
+ * @param indexName The name of the index to be created
+ * @param tableName The database table the index to be created on
+ * @param columnNames The columns included into the index
+ * @param isUnique Specifies whether unique index is to be created.
+ * @throws SQLException Exception in case the index creation fails.
+ */
+ void createIndex(String indexName, String tableName, boolean isUnique,
+ String... columnNames) throws SQLException;
+
+ /**
* Add foreign key for a relation
* @param tableName
* @param constraintName
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
index 39e8488..c645d6d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/DBAccessorImpl.java
@@ -427,12 +427,18 @@ public class DBAccessorImpl implements DBAccessor {
@Override
public void createIndex(String indexName, String tableName,
String... columnNames) throws SQLException {
- if (!tableHasIndex(tableName, false, indexName)) {
- String query = dbmsHelper.getCreateIndexStatement(indexName, tableName, columnNames);
- executeQuery(query);
- } else {
- LOG.info("Index {} already exist, skipping creation, table = {}", indexName, tableName);
- }
+ createIndex(indexName, tableName, false, columnNames);
+ }
+
+ @Override
+ public void createIndex(String indexName, String tableName, boolean isUnique,
+ String... columnNames) throws SQLException {
+ if (!tableHasIndex(tableName, false, indexName)) {
+ String query = dbmsHelper.getCreateIndexStatement(indexName, tableName, isUnique, columnNames);
+ executeQuery(query);
+ } else {
+ LOG.info("Index {} already exist, skipping creation, table = {}", indexName, tableName);
+ }
}
@Override
@@ -1177,6 +1183,7 @@ public class DBAccessorImpl implements DBAccessor {
break;
}
+ case MYSQL:
case POSTGRES: {
String lookupPrimaryKeyNameSql = String.format(
"SELECT constraint_name FROM information_schema.table_constraints AS tc WHERE tc.constraint_type = 'PRIMARY KEY' AND table_name = '%s'",
@@ -1195,6 +1202,7 @@ public class DBAccessorImpl implements DBAccessor {
break;
}
+
default:
break;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java
index 876b1cf..5540294 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostComponentDesiredStateDAO.java
@@ -26,7 +26,6 @@ import javax.persistence.TypedQuery;
import org.apache.ambari.server.orm.RequiresSession;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
-import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostEntity;
import com.google.inject.Inject;
@@ -46,8 +45,8 @@ public class HostComponentDesiredStateDAO {
DaoUtils daoUtils;
@RequiresSession
- public HostComponentDesiredStateEntity findByPK(HostComponentDesiredStateEntityPK primaryKey) {
- return entityManagerProvider.get().find(HostComponentDesiredStateEntity.class, primaryKey);
+ public HostComponentDesiredStateEntity findById(long id) {
+ return entityManagerProvider.get().find(HostComponentDesiredStateEntity.class, id);
}
@RequiresSession
@@ -78,6 +77,29 @@ public class HostComponentDesiredStateDAO {
return daoUtils.selectSingle(query);
}
+ /**
+ * Retrieve the single Host Component Desired State for the given unique cluster, service, component, and host.
+ *
+ * @param clusterId Cluster ID
+ * @param serviceName Service Name
+ * @param componentName Component Name
+ * @param hostId Host ID
+ * @return Return the Host Component Desired State entity that match the criteria.
+ */
+ @RequiresSession
+ public HostComponentDesiredStateEntity findByIndex(Long clusterId, String serviceName,
+ String componentName, Long hostId) {
+ final TypedQuery<HostComponentDesiredStateEntity> query = entityManagerProvider.get()
+ .createNamedQuery("HostComponentDesiredStateEntity.findByIndex", HostComponentDesiredStateEntity.class);
+
+ query.setParameter("clusterId", clusterId);
+ query.setParameter("serviceName", serviceName);
+ query.setParameter("componentName", componentName);
+ query.setParameter("hostId", hostId);
+
+ return daoUtils.selectSingle(query);
+ }
+
@Transactional
public void refresh(HostComponentDesiredStateEntity hostComponentDesiredStateEntity) {
entityManagerProvider.get().refresh(hostComponentDesiredStateEntity);
@@ -109,8 +131,8 @@ public class HostComponentDesiredStateDAO {
}
@Transactional
- public void removeByPK(HostComponentDesiredStateEntityPK primaryKey) {
- remove(findByPK(primaryKey));
+ public void removeId(long id) {
+ remove(findById(id));
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
index 274a1e0..ea2938b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntity.java
@@ -24,6 +24,8 @@ import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
@@ -31,6 +33,9 @@ import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import javax.persistence.TableGenerator;
+import javax.persistence.UniqueConstraint;
import org.apache.ambari.server.state.HostComponentAdminState;
import org.apache.ambari.server.state.MaintenanceState;
@@ -39,39 +44,49 @@ import org.apache.ambari.server.state.State;
import com.google.common.base.Objects;
-@javax.persistence.IdClass(HostComponentDesiredStateEntityPK.class)
-@javax.persistence.Table(name = "hostcomponentdesiredstate")
+
@Entity
+@Table(
+ name = "hostcomponentdesiredstate",
+ uniqueConstraints = @UniqueConstraint(
+ name = "UQ_hcdesiredstate_name",
+ columnNames = { "component_name", "service_name", "host_id", "cluster_id" }) )
+@TableGenerator(
+ name = "hostcomponentdesiredstate_id_generator",
+ table = "ambari_sequences",
+ pkColumnName = "sequence_name",
+ valueColumnName = "sequence_value",
+ pkColumnValue = "hostcomponentdesiredstate_id_seq",
+ initialValue = 0)
@NamedQueries({
@NamedQuery(name = "HostComponentDesiredStateEntity.findAll", query = "SELECT hcds from HostComponentDesiredStateEntity hcds"),
- @NamedQuery(name = "HostComponentDesiredStateEntity.findByHost", query =
- "SELECT hcds from HostComponentDesiredStateEntity hcds WHERE hcds.hostEntity.hostName=:hostName"),
-
- @NamedQuery(name = "HostComponentDesiredStateEntity.findByService", query =
- "SELECT hcds from HostComponentDesiredStateEntity hcds WHERE hcds.serviceName=:serviceName"),
-
@NamedQuery(name = "HostComponentDesiredStateEntity.findByServiceAndComponent", query =
"SELECT hcds from HostComponentDesiredStateEntity hcds WHERE hcds.serviceName=:serviceName AND hcds.componentName=:componentName"),
@NamedQuery(name = "HostComponentDesiredStateEntity.findByServiceComponentAndHost", query =
"SELECT hcds from HostComponentDesiredStateEntity hcds WHERE hcds.serviceName=:serviceName AND hcds.componentName=:componentName AND hcds.hostEntity.hostName=:hostName"),
+
+ @NamedQuery(name = "HostComponentDesiredStateEntity.findByIndex", query =
+ "SELECT hcds from HostComponentDesiredStateEntity hcds WHERE hcds.clusterId=:clusterId AND hcds.serviceName=:serviceName AND hcds.componentName=:componentName AND hcds.hostId=:hostId"),
})
public class HostComponentDesiredStateEntity {
@Id
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "hostcomponentdesiredstate_id_generator")
+ @Column(name = "id", nullable = false, insertable = true, updatable = false)
+ private Long id;
+
+
@Column(name = "cluster_id", nullable = false, insertable = false, updatable = false, length = 10)
private Long clusterId;
- @Id
@Column(name = "service_name", nullable = false, insertable = false, updatable = false)
private String serviceName;
- @Id
@Column(name = "host_id", nullable = false, insertable = false, updatable = false)
private Long hostId;
- @Id
@Column(name = "component_name", insertable = false, updatable = false)
private String componentName = "";
@@ -115,6 +130,8 @@ public class HostComponentDesiredStateEntity {
@Column(name = "restart_required", insertable = true, updatable = true, nullable = false)
private Integer restartRequired = 0;
+ public Long getId() { return id; }
+
public Long getClusterId() {
return clusterId;
}
@@ -194,28 +211,31 @@ public class HostComponentDesiredStateEntity {
HostComponentDesiredStateEntity that = (HostComponentDesiredStateEntity) o;
- if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) {
+ if (!Objects.equal(id, that.id)) {
+ return false;
+ }
+
+ if (!Objects.equal(clusterId, that.clusterId)) {
return false;
}
- if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) {
+ if (!Objects.equal(componentName, that.componentName)) {
return false;
}
- if (desiredStack != null ? !desiredStack.equals(that.desiredStack)
- : that.desiredStack != null) {
+ if (!Objects.equal(desiredStack, that.desiredStack)) {
return false;
}
- if (desiredState != null ? !desiredState.equals(that.desiredState) : that.desiredState != null) {
+ if (!Objects.equal(desiredState, that.desiredState)) {
return false;
}
- if (hostEntity != null ? !hostEntity.equals(that.hostEntity) : that.hostEntity != null) {
+ if (!Objects.equal(hostEntity, that.hostEntity)) {
return false;
}
- if (serviceName != null ? !serviceName.equals(that.serviceName) : that.serviceName != null) {
+ if (!Objects.equal(serviceName, that.serviceName)) {
return false;
}
@@ -224,7 +244,8 @@ public class HostComponentDesiredStateEntity {
@Override
public int hashCode() {
- int result = clusterId != null ? clusterId.intValue() : 0;
+ int result = id != null ? id.hashCode() : 0;
+ result = 31 * result + (clusterId != null ? clusterId.hashCode() : 0);
result = 31 * result + (hostEntity != null ? hostEntity.hashCode() : 0);
result = 31 * result + (componentName != null ? componentName.hashCode() : 0);
result = 31 * result + (desiredState != null ? desiredState.hashCode() : 0);
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntityPK.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntityPK.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntityPK.java
deleted file mode 100644
index b16d582..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostComponentDesiredStateEntityPK.java
+++ /dev/null
@@ -1,96 +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;
-
-@SuppressWarnings("serial")
-public class HostComponentDesiredStateEntityPK implements Serializable {
- private Long clusterId;
-
- @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;
- }
-
- private String serviceName;
-
- @Id
- @Column(name = "service_name", nullable = false, insertable = true, updatable = true)
- public String getServiceName() {
- return serviceName;
- }
-
- public void setServiceName(String serviceName) {
- this.serviceName = serviceName;
- }
-
- private Long hostId;
-
- @Id
- @Column(name = "host_id", nullable = false, insertable = true, updatable = true)
- public Long getHostId() {
- return hostId;
- }
-
- public void setHostId(Long hostId) {
- this.hostId = hostId;
- }
-
- private String componentName;
-
- @Id
- @Column(name = "component_name", nullable = false, insertable = true, updatable = true)
- public String getComponentName() {
- return componentName;
- }
-
- public void setComponentName(String componentName) {
- this.componentName = componentName;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- HostComponentDesiredStateEntityPK that = (HostComponentDesiredStateEntityPK) o;
-
- if (clusterId != null ? !clusterId.equals(that.clusterId) : that.clusterId != null) return false;
- if (componentName != null ? !componentName.equals(that.componentName) : that.componentName != null) return false;
- if (hostId != null ? !hostId.equals(that.hostId) : that.hostId != null) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result = clusterId !=null ? clusterId.intValue() : 0;
- result = 31 * result + (hostId != null ? hostId.hashCode() : 0);
- result = 31 * result + (componentName != null ? componentName.hashCode() : 0);
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java
index 1fe65db..c2778d3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/DbmsHelper.java
@@ -58,6 +58,9 @@ public interface DbmsHelper {
String getCreateIndexStatement(String indexName, String tableName,
String... columnNames);
+ String getCreateIndexStatement(String indexName, String tableName, boolean isUnique,
+ String... columnNames);
+
/**
* Gets DROP INDEX statement
*
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java
index 042b4d2..36fab83 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/helpers/dbms/GenericDbmsHelper.java
@@ -243,8 +243,22 @@ public class GenericDbmsHelper implements DbmsHelper {
@Override
public String getCreateIndexStatement(String indexName, String tableName,
String... columnNames) {
+ return getCreateIndexStatement(indexName, tableName, false, columnNames);
+ }
+
+ /**
+ * get create index statement
+ * @param indexName The name of the index to be created
+ * @param tableName The database table the index to be created on
+ * @param columnNames The columns included into the index
+ * @param isUnique Specifies whether unique index is to be created.
+ * @return The sql statement for creating the index
+ */
+ @Override
+ public String getCreateIndexStatement(String indexName, String tableName, boolean isUnique,
+ String... columnNames) {
//TODO validateColumnNames()
- String createIndex = databasePlatform.buildCreateIndex(tableName, indexName, columnNames);
+ String createIndex = databasePlatform.buildCreateIndex(tableName, indexName, "", isUnique, columnNames);
return createIndex;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
index f9c0eb7..236091b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
@@ -40,7 +40,6 @@ import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterServiceEntity;
import org.apache.ambari.server.orm.entities.ClusterServiceEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
-import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
import org.apache.ambari.server.orm.entities.StackEntity;
@@ -165,13 +164,14 @@ public class ServiceComponentImpl implements ServiceComponent {
updateComponentInfo();
for (HostComponentStateEntity hostComponentStateEntity : serviceComponentDesiredStateEntity.getHostComponentStateEntities()) {
- HostComponentDesiredStateEntityPK pk = new HostComponentDesiredStateEntityPK();
- pk.setClusterId(hostComponentStateEntity.getClusterId());
- pk.setServiceName(hostComponentStateEntity.getServiceName());
- pk.setComponentName(hostComponentStateEntity.getComponentName());
- pk.setHostId(hostComponentStateEntity.getHostId());
- HostComponentDesiredStateEntity hostComponentDesiredStateEntity = hostComponentDesiredStateDAO.findByPK(pk);
+ HostComponentDesiredStateEntity hostComponentDesiredStateEntity = hostComponentDesiredStateDAO.findByIndex(
+ hostComponentStateEntity.getClusterId(),
+ hostComponentStateEntity.getServiceName(),
+ hostComponentStateEntity.getComponentName(),
+ hostComponentStateEntity.getHostId()
+ );
+
try {
hostComponents.put(hostComponentStateEntity.getHostName(),
serviceComponentHostFactory.createExisting(this,
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
index 5225598..1bcffe4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java
@@ -46,7 +46,6 @@ import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
-import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
@@ -140,9 +139,9 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
private final StackDAO stackDAO;
/**
- * The desired component state entity PK.
+ * The desired component state entity id.
*/
- private final HostComponentDesiredStateEntityPK desiredStateEntityPK;
+ private final Long desiredStateEntityId;
/**
* Cache the generated id for host component state for fast lookups.
@@ -799,8 +798,6 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
desiredStateEntity.setAdminState(null);
}
- desiredStateEntityPK = getHostComponentDesiredStateEntityPK(desiredStateEntity);
-
persistEntities(hostEntity, stateEntity, desiredStateEntity);
// publish the service component installed event
@@ -810,6 +807,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
eventPublisher.publish(event);
+ desiredStateEntityId = desiredStateEntity.getId();
hostComponentStateId = stateEntity.getId();
resetLastOpInfo();
@@ -836,7 +834,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
this.hostComponentDesiredStateDAO = hostComponentDesiredStateDAO;
this.eventPublisher = eventPublisher;
- desiredStateEntityPK = getHostComponentDesiredStateEntityPK(desiredStateEntity);
+ desiredStateEntityId = desiredStateEntity.getId();
hostComponentStateId = stateEntity.getId();
//TODO implement State Machine init as now type choosing is hardcoded in above code
@@ -1580,7 +1578,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
* @return
*/
private HostComponentDesiredStateEntity getDesiredStateEntity() {
- return hostComponentDesiredStateDAO.findByPK(desiredStateEntityPK);
+ return hostComponentDesiredStateDAO.findById(desiredStateEntityId);
}
/**
@@ -1593,15 +1591,4 @@ public class ServiceComponentHostImpl implements ServiceComponentHost {
return hostComponentStateDAO.findById(hostComponentStateId);
}
- // create a PK object from the given desired component state entity.
- private static HostComponentDesiredStateEntityPK getHostComponentDesiredStateEntityPK(
- HostComponentDesiredStateEntity desiredStateEntity) {
-
- HostComponentDesiredStateEntityPK dpk = new HostComponentDesiredStateEntityPK();
- dpk.setClusterId(desiredStateEntity.getClusterId());
- dpk.setComponentName(desiredStateEntity.getComponentName());
- dpk.setServiceName(desiredStateEntity.getServiceName());
- dpk.setHostId(desiredStateEntity.getHostId());
- return dpk;
- }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
index 823fb27..a7e73fe 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog250.java
@@ -17,16 +17,20 @@
*/
package org.apache.ambari.server.upgrade;
+import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.actionmanager.CommandExecutionType;
+import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo;
@@ -37,6 +41,7 @@ import org.apache.ambari.server.state.Config;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.support.JdbcUtils;
import com.google.inject.Inject;
import com.google.inject.Injector;
@@ -63,6 +68,10 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
protected static final String CREDENTIAL_STORE_SUPPORTED_COL = "credential_store_supported";
protected static final String CREDENTIAL_STORE_ENABLED_COL = "credential_store_enabled";
+ protected static final String HOST_COMPONENT_DESIREDSTATE_TABLE = "hostcomponentdesiredstate";
+ protected static final String HOST_COMPONENT_DESIREDSTATE_ID_COL = "id";
+ protected static final String HOST_COMPONENT_DESIREDSTATE_INDEX = "UQ_hcdesiredstate_name";
+
/**
* Logger.
*/
@@ -117,6 +126,7 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
new DBAccessor.DBColumnInfo("command_execution_type", String.class, 32, CommandExecutionType.STAGE.toString(),
false));
updateServiceDesiredStateTable();
+ updateHostComponentDesiredStateTable();
}
/**
@@ -307,10 +317,10 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
dbAccessor.addPKConstraint(COMPONENT_VERSION_TABLE, COMPONENT_VERSION_PK, "id");
dbAccessor.addFKConstraint(COMPONENT_VERSION_TABLE, COMPONENT_VERSION_FK_COMPONENT, "component_id",
- COMPONENT_TABLE, "id", false);
+ COMPONENT_TABLE, "id", false);
dbAccessor.addFKConstraint(COMPONENT_VERSION_TABLE, COMPONENT_VERSION_FK_REPO_VERSION, "repo_version_id",
- "repo_version", "repo_version_id", false);
+ "repo_version", "repo_version_id", false);
addSequence("servicecomponent_version_id_seq", 0L, false);
}
@@ -324,10 +334,105 @@ public class UpgradeCatalog250 extends AbstractUpgradeCatalog {
// credential_store_supported SMALLINT DEFAULT 0 NOT NULL
// credential_store_enabled SMALLINT DEFAULT 0 NOT NULL
dbAccessor.addColumn(SERVICE_DESIRED_STATE_TABLE,
- new DBColumnInfo(CREDENTIAL_STORE_SUPPORTED_COL, Short.class, null, 0, false));
+ new DBColumnInfo(CREDENTIAL_STORE_SUPPORTED_COL, Short.class, null, 0, false));
dbAccessor.addColumn(SERVICE_DESIRED_STATE_TABLE,
- new DBColumnInfo(CREDENTIAL_STORE_ENABLED_COL, Short.class, null, 0, false));
+ new DBColumnInfo(CREDENTIAL_STORE_ENABLED_COL, Short.class, null, 0, false));
+ }
+
+
+ /**
+ * Removes the compound PK from hostcomponentdesiredstate table
+ * and replaces it with a surrogate PK, but only if the table doesn't have it's new PK set.
+ * Create index and unqiue constraint on the columns that originally formed the compound PK.
+ *
+ * @throws SQLException
+ */
+ private void updateHostComponentDesiredStateTable() throws SQLException {
+ if (dbAccessor.tableHasPrimaryKey(HOST_COMPONENT_DESIREDSTATE_TABLE, HOST_COMPONENT_DESIREDSTATE_ID_COL)) {
+ LOG.info("Skipping {} table Primary Key modifications since the new {} column already exists",
+ HOST_COMPONENT_DESIREDSTATE_TABLE, HOST_COMPONENT_DESIREDSTATE_ID_COL);
+
+ return;
+ }
+ // add the new ID column as nullable until we populate
+ dbAccessor.addColumn(HOST_COMPONENT_DESIREDSTATE_TABLE,
+ new DBColumnInfo(HOST_COMPONENT_DESIREDSTATE_ID_COL, Long.class, null, null, true));
+
+ // insert sequence values
+ AtomicLong id = new AtomicLong(1);
+ Statement statement = null;
+ ResultSet resultSet = null;
+
+ try {
+ statement = dbAccessor.getConnection().createStatement();
+
+ if (statement != null) {
+ // Select records by old PK
+ String selectSQL = String.format(
+ "SELECT cluster_id, component_name, host_id, service_name FROM %s", HOST_COMPONENT_DESIREDSTATE_TABLE);
+
+ resultSet = statement.executeQuery(selectSQL);
+
+ while (resultSet.next()) {
+ final Long clusterId = resultSet.getLong("cluster_id");
+ final String componentName = resultSet.getString("component_name");
+ final Long hostId = resultSet.getLong("host_id");
+ final String serviceName = resultSet.getString("service_name");
+
+ String updateSQL = String.format(
+ "UPDATE %s SET %s = %s WHERE cluster_id = %d AND component_name = '%s' AND service_name = '%s' AND host_id = %d",
+ HOST_COMPONENT_DESIREDSTATE_TABLE, HOST_COMPONENT_DESIREDSTATE_ID_COL, id.getAndIncrement(),
+ clusterId, componentName, serviceName, hostId);
+
+ dbAccessor.executeQuery(updateSQL);
+ }
+
+ // Add sequence for hostcomponentdesiredstate table ids
+ addSequence("hostcomponentdesiredstate_id_seq", id.get(), false);
+ }
+
+ }
+ finally {
+ JdbcUtils.closeResultSet(resultSet);
+ JdbcUtils.closeStatement(statement);
+ }
+
+ // make the ID column NON NULL now
+ dbAccessor.alterColumn(HOST_COMPONENT_DESIREDSTATE_TABLE,
+ new DBColumnInfo(HOST_COMPONENT_DESIREDSTATE_ID_COL, Long.class, null, null, false));
+
+ // drop existing PK and create new one on ID column
+ String primaryKeyConstraintName = null;
+ Configuration.DatabaseType databaseType = configuration.getDatabaseType();
+
+ switch (databaseType) {
+ case POSTGRES:
+ case MYSQL:
+ case ORACLE:
+ case SQL_SERVER:
+ primaryKeyConstraintName = dbAccessor.getPrimaryKeyConstraintName(HOST_COMPONENT_DESIREDSTATE_TABLE);
+ break;
+
+ default:
+ throw new UnsupportedOperationException(String.format("Invalid database type '%s'", databaseType));
+
+ }
+
+ // warn if we can't find it
+ if (null == primaryKeyConstraintName) {
+ LOG.warn("Unable to determine the primary key constraint name for {}", HOST_COMPONENT_DESIREDSTATE_TABLE);
+ }
+ else {
+ dbAccessor.dropPKConstraint(HOST_COMPONENT_DESIREDSTATE_TABLE, primaryKeyConstraintName, true);
+ }
+
+ // create a new PK, matching the name of the constraint found in the SQL files
+ dbAccessor.addPKConstraint(HOST_COMPONENT_DESIREDSTATE_TABLE, "PK_hostcomponentdesiredstate", "id");
+
+ // create index, ensuring column order matches that of the SQL files
+ dbAccessor.addUniqueConstraint(HOST_COMPONENT_DESIREDSTATE_TABLE, HOST_COMPONENT_DESIREDSTATE_INDEX,
+ "component_name", "service_name", "host_id", "cluster_id");
}
protected void updateAtlasConfigs() throws AmbariException {
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
----------------------------------------------------------------------
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 8cf2c0d..6d79cd4 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
@@ -197,6 +197,7 @@ CREATE TABLE servicecomponentdesiredstate (
CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id));
CREATE TABLE hostcomponentdesiredstate (
+ id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
desired_stack_id BIGINT NOT NULL,
@@ -207,11 +208,13 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR(32) NOT NULL,
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
restart_required SMALLINT NOT NULL DEFAULT 0,
- CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id),
+ CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id),
CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id),
CONSTRAINT FK_hcds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id),
CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id));
+
CREATE TABLE hostcomponentstate (
id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
@@ -1158,7 +1161,9 @@ INSERT INTO ambari_sequences (sequence_name, sequence_value)
union all
select 'remote_cluster_service_id_seq', 0 FROM SYSIBM.SYSDUMMY1
union all
- select 'servicecomponent_version_id_seq', 0 FROM SYSIBM.SYSDUMMY1;
+ select 'servicecomponent_version_id_seq', 0 FROM SYSIBM.SYSDUMMY1
+ union all
+ select 'hostcomponentdesiredstate_id_seq', 0 FROM SYSIBM.SYSDUMMY1;
INSERT INTO adminresourcetype (resource_type_id, resource_type_name)
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/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 82ce31e..b493d0a 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@ -207,6 +207,7 @@ CREATE TABLE servicecomponentdesiredstate (
CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id));
CREATE TABLE hostcomponentdesiredstate (
+ id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
component_name VARCHAR(100) NOT NULL,
desired_stack_id BIGINT NOT NULL,
@@ -217,11 +218,13 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE',
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
restart_required TINYINT(1) NOT NULL DEFAULT 0,
- CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id),
+ CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id),
CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id),
CONSTRAINT FK_hcds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id),
CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id));
+
CREATE TABLE hostcomponentstate (
id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
@@ -1123,7 +1126,8 @@ INSERT INTO ambari_sequences(sequence_name, sequence_value) VALUES
('ambari_operation_history_id_seq', 0),
('remote_cluster_id_seq', 0),
('remote_cluster_service_id_seq', 0),
- ('servicecomponent_version_id_seq', 0);
+ ('servicecomponent_version_id_seq', 0),
+ ('hostcomponentdesiredstate_id_seq', 0);
INSERT INTO adminresourcetype (resource_type_id, resource_type_name) VALUES
(1, 'AMBARI'),
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/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 e2c2dd5..3e40103 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
@@ -188,6 +188,7 @@ CREATE TABLE servicecomponentdesiredstate (
CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id));
CREATE TABLE hostcomponentdesiredstate (
+ id NUMBER(19) NOT NULL,
cluster_id NUMBER(19) NOT NULL,
component_name VARCHAR2(255) NOT NULL,
desired_stack_id NUMBER(19) NULL,
@@ -198,7 +199,8 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR2(32) NOT NULL,
security_state VARCHAR2(32) DEFAULT 'UNSECURED' NOT NULL,
restart_required NUMBER(1) DEFAULT 0 NOT NULL,
- CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id),
+ CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id),
CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id),
CONSTRAINT FK_hcds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id),
CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id));
@@ -1104,6 +1106,7 @@ INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('ambari_oper
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('remote_cluster_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('remote_cluster_service_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('servicecomponent_version_id_seq', 0);
+INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('hostcomponentdesiredstate_id_seq', 0);
INSERT INTO metainfo("metainfo_key", "metainfo_value") values ('version', '${ambariSchemaVersion}');
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/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 4e9a535..e072805 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -197,6 +197,7 @@ CREATE TABLE servicecomponentdesiredstate (
CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id));
CREATE TABLE hostcomponentdesiredstate (
+ id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
desired_stack_id BIGINT NOT NULL,
@@ -207,7 +208,8 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR(32) NOT NULL,
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
restart_required SMALLINT NOT NULL DEFAULT 0,
- CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id),
+ CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id),
CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id),
CONSTRAINT FK_hcds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id),
CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id));
@@ -1104,7 +1106,8 @@ INSERT INTO ambari_sequences (sequence_name, sequence_value) VALUES
('ambari_operation_history_id_seq', 0),
('remote_cluster_id_seq', 0),
('remote_cluster_service_id_seq', 0),
- ('servicecomponent_version_id_seq', 0);
+ ('servicecomponent_version_id_seq', 0),
+ ('hostcomponentdesiredstate_id_seq', 0);
INSERT INTO adminresourcetype (resource_type_id, resource_type_name) VALUES
(1, 'AMBARI'),
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
index 0ba7df6..01d9be5 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
@@ -186,6 +186,7 @@ CREATE TABLE servicecomponentdesiredstate (
CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id));
CREATE TABLE hostcomponentdesiredstate (
+ id NUMERIC(19) NOT NULL,
cluster_id NUMERIC(19) NOT NULL,
component_name VARCHAR(255) NOT NULL,
desired_stack_id NUMERIC(19) NOT NULL,
@@ -196,7 +197,8 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE',
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
restart_required BIT NOT NULL DEFAULT 0,
- CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (cluster_id, component_name, host_id, service_name),
+ CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id),
+ CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id),
CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id),
CONSTRAINT FK_hcds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id),
CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id));
@@ -1103,6 +1105,7 @@ INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('ambari_oper
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('remote_cluster_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('remote_cluster_service_id_seq', 0);
INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('servicecomponent_version_id_seq', 0);
+INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('hostcomponentdesiredstate_id_seq', 0);
insert into adminresourcetype (resource_type_id, resource_type_name)
select 1, 'AMBARI'
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
index d8cad6f..dc03827 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
@@ -210,6 +210,7 @@ CREATE TABLE servicecomponentdesiredstate (
CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id));
CREATE TABLE hostcomponentdesiredstate (
+ id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
component_name VARCHAR(255) NOT NULL,
desired_stack_id BIGINT NOT NULL,
@@ -220,11 +221,13 @@ CREATE TABLE hostcomponentdesiredstate (
maintenance_state VARCHAR(32) NOT NULL,
security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED',
restart_required BIT NOT NULL DEFAULT 0,
- CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY CLUSTERED (cluster_id, component_name, host_id, service_name),
+ CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY CLUSTERED (id),
+ CONSTRAINT UQ_hcdesiredstate_name UNIQUE NONCLUSTERED (component_name, service_name, host_id, cluster_id),
CONSTRAINT FK_hcds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id),
CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id),
CONSTRAINT hstcmponentdesiredstatehstid FOREIGN KEY (host_id) REFERENCES hosts (host_id));
+
CREATE TABLE hostcomponentstate (
id BIGINT NOT NULL,
cluster_id BIGINT NOT NULL,
@@ -1128,7 +1131,8 @@ BEGIN TRANSACTION
('ambari_operation_history_id_seq', 0),
('remote_cluster_id_seq', 0),
('remote_cluster_service_id_seq', 0),
- ('servicecomponent_version_id_seq', 0);
+ ('servicecomponent_version_id_seq', 0),
+ ('hostcomponentdesiredstate_id_seq', 0);
insert into adminresourcetype (resource_type_id, resource_type_name)
values
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
index 0cf7f09..0f615ee 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
@@ -39,7 +39,6 @@ import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.dao.ServiceComponentDesiredStateDAO;
import org.apache.ambari.server.orm.dao.UpgradeDAO;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
-import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
@@ -245,16 +244,14 @@ public class ServiceComponentTest {
HostComponentStateDAO liveStateDAO = injector.getInstance(
HostComponentStateDAO.class);
- HostComponentDesiredStateEntityPK dPK =
- new HostComponentDesiredStateEntityPK();
-
- dPK.setClusterId(cluster.getClusterId());
- dPK.setComponentName(componentName);
- dPK.setHostId(hostEntity1.getHostId());
- dPK.setServiceName(serviceName);
HostComponentDesiredStateEntity desiredStateEntity =
- desiredStateDAO.findByPK(dPK);
+ desiredStateDAO.findByIndex(
+ cluster.getClusterId(),
+ serviceName,
+ componentName,
+ hostEntity1.getHostId()
+ );
HostComponentStateEntity stateEntity = liveStateDAO.findByIndex(cluster.getClusterId(),
serviceName, componentName, hostEntity1.getHostId());
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java
index d75d9d0..b190704 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClustersTest.java
@@ -54,7 +54,6 @@ import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.dao.TopologyRequestDAO;
import org.apache.ambari.server.orm.entities.ClusterStateEntity;
-import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.state.AgentVersion;
import org.apache.ambari.server.state.Cluster;
@@ -453,18 +452,16 @@ public class ClustersTest {
ServiceComponentHost serviceCheckNodeHost = serviceCheckNode.addServiceComponentHost(h2);
serviceCheckNodeHost.setState(State.UNKNOWN);
- HostComponentDesiredStateEntityPK hkdspk = new HostComponentDesiredStateEntityPK();
-
- hkdspk.setClusterId(nameNodeHost.getClusterId());
- hkdspk.setHostId(nameNodeHostEntity.getHostId());
- hkdspk.setServiceName(nameNodeHost.getServiceName());
- hkdspk.setComponentName(nameNodeHost.getServiceComponentName());
-
Assert.assertNotNull(injector.getInstance(HostComponentStateDAO.class).findByIndex(
nameNodeHost.getClusterId(), nameNodeHost.getServiceName(),
nameNodeHost.getServiceComponentName(), nameNodeHostEntity.getHostId()));
- Assert.assertNotNull(injector.getInstance(HostComponentDesiredStateDAO.class).findByPK(hkdspk));
+ Assert.assertNotNull(injector.getInstance(HostComponentDesiredStateDAO.class).findByIndex(
+ nameNodeHost.getClusterId(),
+ nameNodeHost.getServiceName(),
+ nameNodeHost.getServiceComponentName(),
+ nameNodeHostEntity.getHostId()
+ ));
Assert.assertEquals(2, injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigEntity config").getResultList().size());
Assert.assertEquals(1, injector.getProvider(EntityManager.class).get().createQuery("SELECT state FROM ClusterStateEntity state").getResultList().size());
Assert.assertEquals(1, injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigMappingEntity config").getResultList().size());
@@ -502,7 +499,10 @@ public class ClustersTest {
nameNodeHost.getClusterId(), nameNodeHost.getServiceName(),
nameNodeHost.getServiceComponentName(), nameNodeHostEntity.getHostId()));
- Assert.assertNull(injector.getInstance(HostComponentDesiredStateDAO.class).findByPK(hkdspk));
+ Assert.assertNull(injector.getInstance(HostComponentDesiredStateDAO.class).findByIndex(
+ nameNodeHost.getClusterId(), nameNodeHost.getServiceName(),
+ nameNodeHost.getServiceComponentName(), nameNodeHostEntity.getHostId()
+ ));
Assert.assertEquals(0, injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigEntity config").getResultList().size());
Assert.assertEquals(0, injector.getProvider(EntityManager.class).get().createQuery("SELECT state FROM ClusterStateEntity state").getResultList().size());
Assert.assertEquals(0, injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigMappingEntity config").getResultList().size());
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java
index 5987af3..de2b59d 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostTest.java
@@ -39,7 +39,6 @@ import org.apache.ambari.server.orm.dao.HostComponentStateDAO;
import org.apache.ambari.server.orm.dao.HostDAO;
import org.apache.ambari.server.orm.entities.ClusterEntity;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
-import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.state.Cluster;
@@ -1057,20 +1056,24 @@ public class ServiceComponentHostTest {
//ServiceComponentHost sch2 = createNewServiceComponentHost(cluster, "HDFS", "DATANODE", hostName);
//ServiceComponentHost sch3 = createNewServiceComponentHost(cluster, "MAPREDUCE2", "HISTORYSERVER", hostName);
- HostComponentDesiredStateEntityPK pk = new HostComponentDesiredStateEntityPK();
- pk.setClusterId(Long.valueOf(cluster.getClusterId()));
- pk.setComponentName(sch1.getServiceComponentName());
- pk.setServiceName(sch1.getServiceName());
- pk.setHostId(hostEntity.getHostId());
-
- HostComponentDesiredStateEntity entity = hostComponentDesiredStateDAO.findByPK(pk);
+ HostComponentDesiredStateEntity entity = hostComponentDesiredStateDAO.findByIndex(
+ cluster.getClusterId(),
+ sch1.getServiceName(),
+ sch1.getServiceComponentName(),
+ hostEntity.getHostId()
+ );
Assert.assertEquals(MaintenanceState.OFF, entity.getMaintenanceState());
Assert.assertEquals(MaintenanceState.OFF, sch1.getMaintenanceState());
sch1.setMaintenanceState(MaintenanceState.ON);
Assert.assertEquals(MaintenanceState.ON, sch1.getMaintenanceState());
- entity = hostComponentDesiredStateDAO.findByPK(pk);
+ entity = hostComponentDesiredStateDAO.findByIndex(
+ cluster.getClusterId(),
+ sch1.getServiceName(),
+ sch1.getServiceComponentName(),
+ hostEntity.getHostId()
+ );
Assert.assertEquals(MaintenanceState.ON, entity.getMaintenanceState());
}
@@ -1097,12 +1100,6 @@ public class ServiceComponentHostTest {
ServiceComponentHost sch1 = createNewServiceComponentHost(cluster, "HDFS", "NAMENODE", hostName);
HostComponentDesiredStateEntity entityHostComponentDesiredState;
- HostComponentDesiredStateEntityPK pkHostComponentDesiredState = new HostComponentDesiredStateEntityPK();
- pkHostComponentDesiredState.setClusterId(cluster.getClusterId());
- pkHostComponentDesiredState.setComponentName(sch1.getServiceComponentName());
- pkHostComponentDesiredState.setServiceName(sch1.getServiceName());
- pkHostComponentDesiredState.setHostId(hostEntity.getHostId());
-
HostComponentStateEntity entityHostComponentState;
for(SecurityState state: SecurityState.values()) {
@@ -1116,7 +1113,12 @@ public class ServiceComponentHostTest {
try {
sch1.setDesiredSecurityState(state);
Assert.assertTrue(state.isEndpoint());
- entityHostComponentDesiredState = hostComponentDesiredStateDAO.findByPK(pkHostComponentDesiredState);
+ entityHostComponentDesiredState = hostComponentDesiredStateDAO.findByIndex(
+ cluster.getClusterId(),
+ sch1.getServiceName(),
+ sch1.getServiceComponentName(),
+ hostEntity.getHostId()
+ );
Assert.assertNotNull(entityHostComponentDesiredState);
Assert.assertEquals(state, entityHostComponentDesiredState.getSecurityState());
} catch (AmbariException e) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
index 1513209..b00f9f0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog200Test.java
@@ -67,7 +67,6 @@ import org.apache.ambari.server.orm.dao.StackDAO;
import org.apache.ambari.server.orm.entities.ClusterEntity;
import org.apache.ambari.server.orm.entities.ClusterServiceEntity;
import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntity;
-import org.apache.ambari.server.orm.entities.HostComponentDesiredStateEntityPK;
import org.apache.ambari.server.orm.entities.HostComponentStateEntity;
import org.apache.ambari.server.orm.entities.HostEntity;
import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity;
@@ -643,12 +642,12 @@ public class UpgradeCatalog200Test {
assertNotNull(serviceComponentDesiredStateEntity);
- HostComponentDesiredStateEntityPK hcDesiredStateEntityPk = new HostComponentDesiredStateEntityPK();
- hcDesiredStateEntityPk.setServiceName("NAGIOS");
- hcDesiredStateEntityPk.setClusterId(clusterEntity.getClusterId());
- hcDesiredStateEntityPk.setComponentName("NAGIOS_SERVER");
- hcDesiredStateEntityPk.setHostId(hostEntity.getHostId());
- HostComponentDesiredStateEntity hcDesiredStateEntity = hostComponentDesiredStateDAO.findByPK(hcDesiredStateEntityPk);
+ HostComponentDesiredStateEntity hcDesiredStateEntity = hostComponentDesiredStateDAO.findByIndex(
+ clusterEntity.getClusterId(),
+ "NAGIOS",
+ "NAGIOS_SERVER",
+ hostEntity.getHostId()
+ );
assertNotNull(hcDesiredStateEntity);
HostComponentStateEntity hcStateEntity = hostComponentStateDAO.findByIndex(
http://git-wip-us.apache.org/repos/asf/ambari/blob/f7399125/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
index 89dd567..1f3858f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog250Test.java
@@ -18,31 +18,14 @@
package org.apache.ambari.server.upgrade;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.anyString;
-import static org.easymock.EasyMock.capture;
-import static org.easymock.EasyMock.createMockBuilder;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.createStrictMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.newCapture;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.reset;
-import static org.easymock.EasyMock.verify;
-import static org.junit.Assert.assertTrue;
-
-import java.lang.reflect.Method;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.EntityManager;
-
+import com.google.common.collect.Maps;
+import com.google.gson.Gson;
+import com.google.inject.Binder;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+import com.google.inject.Provider;
+import junit.framework.Assert;
import org.apache.ambari.server.actionmanager.ActionManager;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.AmbariManagementController;
@@ -57,35 +40,100 @@ import org.apache.ambari.server.state.Service;
import org.apache.ambari.server.state.stack.OsFamily;
import org.easymock.Capture;
import org.easymock.EasyMock;
+import org.easymock.EasyMockRunner;
import org.easymock.EasyMockSupport;
+import org.easymock.Mock;
+import org.easymock.MockType;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
-import com.google.common.collect.Maps;
-import com.google.gson.Gson;
-import com.google.inject.Binder;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import com.google.inject.Provider;
+import javax.persistence.EntityManager;
+import java.lang.reflect.Method;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
-import junit.framework.Assert;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
+import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.createMockBuilder;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.newCapture;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertTrue;
/**
* {@link UpgradeCatalog250} unit tests.
*/
+@RunWith(EasyMockRunner.class)
public class UpgradeCatalog250Test {
-// private Injector injector;
- private Provider<EntityManager> entityManagerProvider = createStrictMock(Provider.class);
- private EntityManager entityManager = createNiceMock(EntityManager.class);
+ // private Injector injector;
+ @Mock(type = MockType.STRICT)
+ private Provider<EntityManager> entityManagerProvider;
+
+ @Mock(type = MockType.NICE)
+ private EntityManager entityManager;
+
+ @Mock(type = MockType.NICE)
+ private DBAccessor dbAccessor;
+
+ @Mock(type = MockType.NICE)
+ private Configuration configuration;
+
+ @Mock(type = MockType.NICE)
+ private Connection connection;
+
+ @Mock(type = MockType.NICE)
+ private Statement statement;
+
+ @Mock(type = MockType.NICE)
+ private ResultSet resultSet;
+
+ @Mock(type = MockType.NICE)
+ private OsFamily osFamily;
+
+ @Mock(type = MockType.NICE)
+ private KerberosHelper kerberosHelper;
+
+ @Mock(type = MockType.NICE)
+ private ActionManager actionManager;
+
+ @Mock(type = MockType.NICE)
+ private Config config;
+
+ @Mock(type = MockType.STRICT)
+ private Service service;
+
+ @Mock(type = MockType.NICE)
+ private Clusters clusters;
+
+ @Mock(type = MockType.NICE)
+ private Cluster cluster;
+
+ @Mock(type = MockType.NICE)
+ private Injector injector;
@Before
public void init() {
- reset(entityManagerProvider);
+ reset(entityManagerProvider, injector);
+
expect(entityManagerProvider.get()).andReturn(entityManager).anyTimes();
- replay(entityManagerProvider);
+
+ expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
+ expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
+ expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelper).anyTimes();
+
+ replay(entityManagerProvider, injector);
}
@After
@@ -94,14 +142,6 @@ public class UpgradeCatalog250Test {
@Test
public void testExecuteDDLUpdates() throws Exception {
- final DBAccessor dbAccessor = createNiceMock(DBAccessor.class);
-
- Configuration configuration = createNiceMock(Configuration.class);
- Connection connection = createNiceMock(Connection.class);
- Statement statement = createNiceMock(Statement.class);
- ResultSet resultSet = createNiceMock(ResultSet.class);
-
-
// !!! setup capture for host_version
dbAccessor.addUniqueConstraint("host_version", "UQ_host_repo", "repo_version_id", "host_id");
@@ -115,16 +155,16 @@ public class UpgradeCatalog250Test {
Capture<List<DBAccessor.DBColumnInfo>> capturedComponentVersionColumns = newCapture();
dbAccessor.createTable(eq(UpgradeCatalog250.COMPONENT_VERSION_TABLE), capture(capturedComponentVersionColumns),
- eq((String[]) null));
+ eq((String[]) null));
dbAccessor.addPKConstraint(eq(UpgradeCatalog250.COMPONENT_VERSION_TABLE),
- eq(UpgradeCatalog250.COMPONENT_VERSION_PK), eq("id"));
+ eq(UpgradeCatalog250.COMPONENT_VERSION_PK), eq("id"));
dbAccessor.addFKConstraint(eq(UpgradeCatalog250.COMPONENT_VERSION_TABLE),
- eq(UpgradeCatalog250.COMPONENT_VERSION_FK_COMPONENT), eq("component_id"),
- eq(UpgradeCatalog250.COMPONENT_TABLE), eq("id"), eq(false));
+ eq(UpgradeCatalog250.COMPONENT_VERSION_FK_COMPONENT), eq("component_id"),
+ eq(UpgradeCatalog250.COMPONENT_TABLE), eq("id"), eq(false));
dbAccessor.addFKConstraint(eq(UpgradeCatalog250.COMPONENT_VERSION_TABLE),
- eq(UpgradeCatalog250.COMPONENT_VERSION_FK_REPO_VERSION), eq("repo_version_id"),
- eq("repo_version"), eq("repo_version_id"), eq(false));
+ eq(UpgradeCatalog250.COMPONENT_VERSION_FK_REPO_VERSION), eq("repo_version_id"),
+ eq("repo_version"), eq("repo_version_id"), eq(false));
// servicedesiredstate table
Capture<DBAccessor.DBColumnInfo> capturedCredentialStoreSupportedCol = newCapture();
@@ -132,9 +172,10 @@ public class UpgradeCatalog250Test {
dbAccessor.addColumn(eq(UpgradeCatalog250.SERVICE_DESIRED_STATE_TABLE), capture(capturedCredentialStoreSupportedCol));
dbAccessor.addColumn(eq(UpgradeCatalog250.SERVICE_DESIRED_STATE_TABLE), capture(capturedCredentialStoreEnabledCol));
- expect(dbAccessor.getConnection()).andReturn(connection);
- expect(connection.createStatement()).andReturn(statement);
- expect(statement.executeQuery(anyObject(String.class))).andReturn(resultSet);
+ expect(dbAccessor.getConnection()).andReturn(connection).anyTimes();
+ expect(connection.createStatement()).andReturn(statement).anyTimes();
+ expect(statement.executeQuery(anyObject(String.class))).andReturn(resultSet).anyTimes();
+ expect(configuration.getDatabaseType()).andReturn(Configuration.DatabaseType.POSTGRES).anyTimes();
replay(dbAccessor, configuration, connection, statement, resultSet);
@@ -142,8 +183,9 @@ public class UpgradeCatalog250Test {
@Override
public void configure(Binder binder) {
binder.bind(DBAccessor.class).toInstance(dbAccessor);
- binder.bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
+ binder.bind(OsFamily.class).toInstance(osFamily);
binder.bind(EntityManager.class).toInstance(entityManager);
+ binder.bind(Configuration.class).toInstance(configuration);
}
};
@@ -294,28 +336,22 @@ public class UpgradeCatalog250Test {
};
EasyMockSupport easyMockSupport = new EasyMockSupport();
- Clusters clusters = easyMockSupport.createNiceMock(Clusters.class);
- final Cluster cluster = easyMockSupport.createNiceMock(Cluster.class);
Config mockAmsEnv = easyMockSupport.createNiceMock(Config.class);
+ reset(clusters, cluster);
expect(clusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
put("normal", cluster);
}}).once();
expect(cluster.getDesiredConfigByType("ams-env")).andReturn(mockAmsEnv).atLeastOnce();
expect(mockAmsEnv.getProperties()).andReturn(oldPropertiesAmsEnv).anyTimes();
- Injector injector = easyMockSupport.createNiceMock(Injector.class);
- expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
- expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
- expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class)).anyTimes();
-
- replay(injector, clusters, mockAmsEnv, cluster);
+ replay(clusters, mockAmsEnv, cluster);
- AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
+ AmbariManagementControllerImpl controller = (AmbariManagementControllerImpl)createMockBuilder(AmbariManagementControllerImpl.class)
.addMockedMethod("createConfiguration")
.addMockedMethod("getClusters", new Class[] { })
.addMockedMethod("createConfig")
- .withConstructor(createNiceMock(ActionManager.class), clusters, injector)
+ .withConstructor(actionManager, clusters, injector)
.createNiceMock();
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
@@ -324,7 +360,7 @@ public class UpgradeCatalog250Test {
expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(propertiesCapture), anyString(),
- anyObject(Map.class))).andReturn(createNiceMock(Config.class)).once();
+ anyObject(Map.class))).andReturn(config).once();
replay(controller, injector2);
new UpgradeCatalog250(injector2).updateAMSConfigs();
@@ -350,29 +386,22 @@ public class UpgradeCatalog250Test {
}
};
EasyMockSupport easyMockSupport = new EasyMockSupport();
-
- Clusters clusters = easyMockSupport.createNiceMock(Clusters.class);
- final Cluster cluster = easyMockSupport.createNiceMock(Cluster.class);
Config mockKafkaBroker = easyMockSupport.createNiceMock(Config.class);
+ reset(clusters, cluster);
expect(clusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
put("normal", cluster);
}}).once();
expect(cluster.getDesiredConfigByType("kafka-broker")).andReturn(mockKafkaBroker).atLeastOnce();
expect(mockKafkaBroker.getProperties()).andReturn(oldProperties).anyTimes();
- Injector injector = easyMockSupport.createNiceMock(Injector.class);
- expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
- expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
- expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class)).anyTimes();
+ replay(clusters, mockKafkaBroker, cluster);
- replay(injector, clusters, mockKafkaBroker, cluster);
-
- AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
+ AmbariManagementControllerImpl controller = (AmbariManagementControllerImpl)createMockBuilder(AmbariManagementControllerImpl.class)
.addMockedMethod("createConfiguration")
.addMockedMethod("getClusters", new Class[] { })
.addMockedMethod("createConfig")
- .withConstructor(createNiceMock(ActionManager.class), clusters, injector)
+ .withConstructor(actionManager, clusters, injector)
.createNiceMock();
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
@@ -381,7 +410,7 @@ public class UpgradeCatalog250Test {
expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(propertiesCapture), anyString(),
- anyObject(Map.class))).andReturn(createNiceMock(Config.class)).once();
+ anyObject(Map.class))).andReturn(config).once();
replay(controller, injector2);
new UpgradeCatalog250(injector2).updateKafkaConfigs();
@@ -434,10 +463,7 @@ public class UpgradeCatalog250Test {
EasyMockSupport easyMockSupport = new EasyMockSupport();
- Clusters clusters = easyMockSupport.createNiceMock(Clusters.class);
- final Cluster cluster = easyMockSupport.createNiceMock(Cluster.class);
- final Service service = createStrictMock(Service.class);
-
+ reset(clusters, cluster);
expect(clusters.getClusters()).andReturn(new HashMap<String, Cluster>() {{
put("normal", cluster);
}}).once();
@@ -448,18 +474,13 @@ public class UpgradeCatalog250Test {
expect(cluster.getDesiredConfigByType(configType)).andReturn(mockAtlasConfig).atLeastOnce();
expect(mockAtlasConfig.getProperties()).andReturn(oldProperties).anyTimes();
- Injector injector = easyMockSupport.createNiceMock(Injector.class);
- expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
- expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
- expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class)).anyTimes();
-
- replay(injector, clusters, mockAtlasConfig, cluster);
+ replay(clusters, mockAtlasConfig, cluster);
- AmbariManagementControllerImpl controller = createMockBuilder(AmbariManagementControllerImpl.class)
+ AmbariManagementControllerImpl controller = (AmbariManagementControllerImpl)createMockBuilder(AmbariManagementControllerImpl.class)
.addMockedMethod("createConfiguration")
.addMockedMethod("getClusters", new Class[] { })
.addMockedMethod("createConfig")
- .withConstructor(createNiceMock(ActionManager.class), clusters, injector)
+ .withConstructor(actionManager, clusters, injector)
.createNiceMock();
Injector injector2 = easyMockSupport.createNiceMock(Injector.class);
@@ -468,7 +489,7 @@ public class UpgradeCatalog250Test {
expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(controller.createConfig(anyObject(Cluster.class), anyString(), capture(propertiesCapture), anyString(),
- anyObject(Map.class))).andReturn(createNiceMock(Config.class)).once();
+ anyObject(Map.class))).andReturn(config).once();
replay(controller, injector2);
new UpgradeCatalog250(injector2).updateAtlasConfigs();