AMBARI-18711: Ambari-server: DB changes to enable/disable credential store support
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/edc74e6f Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/edc74e6f Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/edc74e6f Branch: refs/heads/branch-feature-AMBARI-18634 Commit: edc74e6f2a6375064c5a49bef709c24546f09932 Parents: 6c222a5 Author: Nahappan Somasundaram <[email protected]> Authored: Thu Oct 27 15:03:34 2016 -0700 Committer: Nahappan Somasundaram <[email protected]> Committed: Thu Oct 27 20:59:49 2016 -0700 ---------------------------------------------------------------------- .../orm/entities/ServiceDesiredStateEntity.java | 22 +++++ .../org/apache/ambari/server/state/Service.java | 31 +++++++ .../apache/ambari/server/state/ServiceImpl.java | 95 ++++++++++++++++++++ .../main/resources/Ambari-DDL-Derby-CREATE.sql | 2 + .../main/resources/Ambari-DDL-MySQL-CREATE.sql | 2 + .../main/resources/Ambari-DDL-Oracle-CREATE.sql | 2 + .../resources/Ambari-DDL-Postgres-CREATE.sql | 2 + .../resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 2 + .../resources/Ambari-DDL-SQLServer-CREATE.sql | 2 + 9 files changed, 160 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/edc74e6f/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java index 6cb3dde..f2ed50f 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceDesiredStateEntity.java @@ -67,6 +67,12 @@ public class ServiceDesiredStateEntity { @Enumerated(value = EnumType.STRING) private SecurityState securityState = SecurityState.UNSECURED; + @Column(name = "credential_store_supported", nullable = false, insertable = true, updatable = true) + private Short credentialStoreSupported = 0; + + @Column(name = "credential_store_enabled", nullable = false, insertable = true, updatable = true) + private Short credentialStoreEnabled = 0; + @OneToOne @javax.persistence.JoinColumns( { @@ -131,6 +137,22 @@ public class ServiceDesiredStateEntity { this.securityState = securityState; } + public boolean isCredentialStoreSupported() { + return credentialStoreSupported != 0; + } + + public void setCredentialStoreSupported(boolean credentialStoreSupported) { + this.credentialStoreSupported = (short)((credentialStoreSupported == false) ? 0 : 1); + } + + public boolean isCredentialStoreEnabled() { + return credentialStoreEnabled != 0; + } + + public void setCredentialStoreEnabled(boolean credentialStoreEnabled) { + this.credentialStoreEnabled = (short)((credentialStoreEnabled == false) ? 0 : 1); + } + @Override public boolean equals(Object o) { if (this == o) { http://git-wip-us.apache.org/repos/asf/ambari/blob/edc74e6f/ambari-server/src/main/java/org/apache/ambari/server/state/Service.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Service.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Service.java index df3cfd8..cf36a8b 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/Service.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Service.java @@ -102,6 +102,37 @@ public interface Service { */ MaintenanceState getMaintenanceState(); + /** + * Get a true or false value specifying + * whether credential store is supported by this service. + * @return true or false + */ + boolean isCredentialStoreSupported(); + + /** + * Set a true or false value specifying if this + * service supports credential store. + * + * @param credentialStoreSupported - true or false + */ + void setCredentialStoreSupported(boolean credentialStoreSupported); + + /** + * Get a true or false value specifying whether + * credential store use is enabled for this service. + * + * @return true or false + */ + boolean isCredentialStoreEnabled(); + + /** + * Set a true or false value specifying whether this + * service is to be enabled for credential store use. + * + * @param credentialStoreEnabled - true or false + */ + void setCredentialStoreEnabled(boolean credentialStoreEnabled); + enum Type { HDFS, GLUSTERFS, http://git-wip-us.apache.org/repos/asf/ambari/blob/edc74e6f/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java index 9b56059..6f8d306 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java @@ -318,6 +318,101 @@ public class ServiceImpl implements Service { return cluster; } + /** + * Get a true or false value specifying whether + * credential store is supported by this service. + * + * @return true or false + */ + @Override + public boolean isCredentialStoreSupported() { + ServiceDesiredStateEntity desiredStateEntity = getServiceDesiredStateEntity(); + + if (desiredStateEntity != null) { + return desiredStateEntity.isCredentialStoreSupported(); + } else { + LOG.warn("Trying to fetch a member from an entity object that may " + + "have been previously deleted, serviceName = " + getName()); + } + return false; + } + + + /** + * Set a true or false value specifying whether this + * service supports credential store. + * + * @param credentialStoreSupported - true or false + */ + @Override + public void setCredentialStoreSupported(boolean credentialStoreSupported) { + if (LOG.isDebugEnabled()) { + LOG.debug("Setting CredentialStoreEnabled of Service" + ", clusterName=" + + cluster.getClusterName() + ", clusterId=" + + cluster.getClusterId() + ", serviceName=" + getName() + + ", oldCredentialStoreSupported=" + isCredentialStoreSupported() + + ", newCredentialStoreSupported=" + credentialStoreSupported); + } + + ServiceDesiredStateEntity desiredStateEntity = getServiceDesiredStateEntity(); + + if (desiredStateEntity != null) { + desiredStateEntity.setCredentialStoreSupported(credentialStoreSupported); + serviceDesiredStateDAO.merge(desiredStateEntity); + + } else { + LOG.warn("Setting a member on an entity object that may have been " + + "previously deleted, serviceName = " + getName()); + } + } + + /** + * Get a true or false value specifying whether + * credential store use is enabled for this service. + * + * @return true or false + */ + @Override + public boolean isCredentialStoreEnabled() { + ServiceDesiredStateEntity desiredStateEntity = getServiceDesiredStateEntity(); + + if (desiredStateEntity != null) { + return desiredStateEntity.isCredentialStoreEnabled(); + } else { + LOG.warn("Trying to fetch a member from an entity object that may " + + "have been previously deleted, serviceName = " + getName()); + } + return false; + } + + + /** + * Set a true or false value specifying whether this + * service is to be enabled for credential store use. + * + * @param credentialStoreEnabled - true or false + */ + @Override + public void setCredentialStoreEnabled(boolean credentialStoreEnabled) { + if (LOG.isDebugEnabled()) { + LOG.debug("Setting CredentialStoreEnabled of Service" + ", clusterName=" + + cluster.getClusterName() + ", clusterId=" + + cluster.getClusterId() + ", serviceName=" + getName() + + ", oldCredentialStoreEnabled=" + isCredentialStoreEnabled() + + ", newCredentialStoreEnabled=" + credentialStoreEnabled); + } + + ServiceDesiredStateEntity desiredStateEntity = getServiceDesiredStateEntity(); + + if (desiredStateEntity != null) { + desiredStateEntity.setCredentialStoreEnabled(credentialStoreEnabled); + desiredStateEntity = serviceDesiredStateDAO.merge(desiredStateEntity); + } else { + LOG.warn("Setting a member on an entity object that may have been " + + "previously deleted, serviceName = " + getName()); + } + } + @Override public void debugDump(StringBuilder sb) { sb.append("Service={ serviceName=" + getName() + ", clusterName=" + cluster.getClusterName() http://git-wip-us.apache.org/repos/asf/ambari/blob/edc74e6f/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 a0a0afd..8cf2c0d 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql @@ -259,6 +259,8 @@ CREATE TABLE servicedesiredstate ( service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL, security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED', + credential_store_supported SMALLINT NOT NULL DEFAULT 0, + credential_store_enabled SMALLINT NOT NULL DEFAULT 0, CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), CONSTRAINT FK_sds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id), CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); http://git-wip-us.apache.org/repos/asf/ambari/blob/edc74e6f/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 7a02315..37a9757 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql @@ -259,6 +259,8 @@ CREATE TABLE servicedesiredstate ( service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED', + credential_store_supported SMALLINT NOT NULL DEFAULT 0, + credential_store_enabled SMALLINT NOT NULL DEFAULT 0, CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), CONSTRAINT FK_sds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id), CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); http://git-wip-us.apache.org/repos/asf/ambari/blob/edc74e6f/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 4ba371a..2507b45 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql @@ -250,6 +250,8 @@ CREATE TABLE servicedesiredstate ( service_name VARCHAR2(255) NOT NULL, maintenance_state VARCHAR2(32) NOT NULL, security_state VARCHAR2(32) DEFAULT 'UNSECURED' NOT NULL, + credential_store_supported SMALLINT DEFAULT 0 NOT NULL, + credential_store_enabled SMALLINT DEFAULT 0 NOT NULL, CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), CONSTRAINT FK_sds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id), CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); http://git-wip-us.apache.org/repos/asf/ambari/blob/edc74e6f/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 c5a9119..5a82a52 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql @@ -259,6 +259,8 @@ CREATE TABLE servicedesiredstate ( service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL, security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED', + credential_store_supported SMALLINT NOT NULL DEFAULT 0, + credential_store_enabled SMALLINT NOT NULL DEFAULT 0, CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), CONSTRAINT FK_sds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id), CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); http://git-wip-us.apache.org/repos/asf/ambari/blob/edc74e6f/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 2905eda..659e4dc 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql @@ -248,6 +248,8 @@ CREATE TABLE servicedesiredstate ( service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED', + credential_store_supported SMALLINT NOT NULL DEFAULT 0, + credential_store_enabled SMALLINT NOT NULL DEFAULT 0, CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), CONSTRAINT FK_sds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id), CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); http://git-wip-us.apache.org/repos/asf/ambari/blob/edc74e6f/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 6b19974..e9a258a 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql @@ -262,6 +262,8 @@ CREATE TABLE servicedesiredstate ( service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL, security_state VARCHAR(32) NOT NULL DEFAULT 'UNSECURED', + credential_store_supported SMALLINT NOT NULL DEFAULT 0, + credential_store_enabled SMALLINT NOT NULL DEFAULT 0, CONSTRAINT PK_servicedesiredstate PRIMARY KEY CLUSTERED (cluster_id,service_name), CONSTRAINT FK_sds_desired_stack_id FOREIGN KEY (desired_stack_id) REFERENCES stack(stack_id), CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id));
