Repository: ambari Updated Branches: refs/heads/branch-feature-AMBARI-14714 70077fe02 -> 6837c1964
AMBARI-22325 Save/Retrieve v2 blueprints (benyoka) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6837c196 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6837c196 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6837c196 Branch: refs/heads/branch-feature-AMBARI-14714 Commit: 6837c196434ee722bf666d6894fe4510858a0ea0 Parents: 70077fe Author: Balazs Bence Sari <beny...@apache.org> Authored: Tue Oct 31 11:39:01 2017 +0100 Committer: Balazs Bence Sari <beny...@apache.org> Committed: Tue Oct 31 11:39:45 2017 +0100 ---------------------------------------------------------------------- .../internal/BlueprintV2ResourceProvider.java | 7 +++++++ .../apache/ambari/server/orm/dao/BlueprintV2DAO.java | 11 ++++++++--- .../ambari/server/topology/BlueprintImplV2.java | 14 +++++++++++++- .../ambari/server/topology/BlueprintV2Factory.java | 7 +++++++ .../src/main/resources/Ambari-DDL-Derby-CREATE.sql | 4 +--- .../src/main/resources/Ambari-DDL-MySQL-CREATE.sql | 4 +--- .../src/main/resources/Ambari-DDL-Oracle-CREATE.sql | 4 +--- .../src/main/resources/Ambari-DDL-Postgres-CREATE.sql | 4 +--- .../main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 4 +--- .../main/resources/Ambari-DDL-SQLServer-CREATE.sql | 4 +--- .../src/main/resources/META-INF/persistence.xml | 1 + ambari-server/src/main/resources/properties.json | 5 +++-- .../src/test/resources/blueprintv2/blueprintv2.json | 2 +- 13 files changed, 46 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintV2ResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintV2ResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintV2ResourceProvider.java index ccc9836..6d2c4f0 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintV2ResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintV2ResourceProvider.java @@ -139,6 +139,7 @@ public class BlueprintV2ResourceProvider extends AbstractControllerResourceProvi AmbariManagementController controller) { super(propertyIds, keyPropertyIds, controller); + blueprintFactory = BlueprintV2Factory.create(controller); } /** @@ -286,6 +287,12 @@ public class BlueprintV2ResourceProvider extends AbstractControllerResourceProvi applySelectFilters(requestedIds, blueprintAsMap, filteredMap); blueprintAsMap = filteredMap; } + // flatten the Blueprint property category + Map<String, Object> blueprintPc = (Map<String, Object>)blueprintAsMap.remove(BLUEPRINTS_PROPERTY_ID); + for (Map.Entry<String, Object> entry: blueprintPc.entrySet()) { + blueprintAsMap.put(BLUEPRINTS_PROPERTY_ID + "/" + entry.getKey(), entry.getValue()); + } + // set resources blueprintAsMap.entrySet().forEach( entry -> resource.setProperty(entry.getKey(), entry.getValue()) ); return resource; } http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintV2DAO.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintV2DAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintV2DAO.java index 267ae05..6a054e8 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintV2DAO.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintV2DAO.java @@ -25,6 +25,8 @@ import javax.persistence.TypedQuery; import org.apache.ambari.server.orm.RequiresSession; import org.apache.ambari.server.orm.entities.BlueprintV2Entity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.inject.Inject; import com.google.inject.Provider; @@ -37,6 +39,8 @@ import com.google.inject.persist.Transactional; @Singleton public class BlueprintV2DAO { + protected final static Logger LOG = LoggerFactory.getLogger(BlueprintV2DAO.class); + /** * JPA entity manager */ @@ -114,11 +118,12 @@ public class BlueprintV2DAO { /** * Remove entity instance by primary key - * @param blueprint_name Primary key: blueprint name + * @param blueprintName Primary key: blueprint name */ @Transactional - public void removeByName(String blueprint_name) { - entityManagerProvider.get().remove(findByName(blueprint_name)); + public void removeByName(String blueprintName) { + LOG.debug("Removing blueprintv2: {}", blueprintName); + entityManagerProvider.get().remove(findByName(blueprintName)); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImplV2.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImplV2.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImplV2.java index f7ee730..d31e9d4 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImplV2.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintImplV2.java @@ -76,6 +76,15 @@ public class BlueprintImplV2 implements BlueprintV2 { this.securityConfiguration = blueprints.securityConfiguration; } + @JsonProperty("Blueprints") + public Blueprints getBlueprints() { + Blueprints blueprints = new Blueprints(); + blueprints.name = this.name; + blueprints.securityConfiguration = this.securityConfiguration; + return blueprints; + } + + public void setName(String name) { this.name = name; } @@ -102,12 +111,13 @@ public class BlueprintImplV2 implements BlueprintV2 { )); } - @JsonProperty("cluster-settings") + @JsonProperty("cluster_settings") public void setClusterSettings(Map<String, Set<HashMap<String, String>>> properties) { this.setting = new Setting(properties); } @Override + @JsonIgnore public String getName() { return name; } @@ -248,6 +258,7 @@ public class BlueprintImplV2 implements BlueprintV2 { } @Override + @JsonProperty("cluster_settings") public Setting getSetting() { return this.setting; } @@ -304,6 +315,7 @@ public class BlueprintImplV2 implements BlueprintV2 { } @Override + @JsonIgnore public SecurityConfiguration getSecurity() { return this.securityConfiguration; } http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Factory.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Factory.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Factory.java index 4f6e8e6..7b228e5 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Factory.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Factory.java @@ -27,6 +27,7 @@ import java.util.stream.Collectors; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.ObjectNotFoundException; +import org.apache.ambari.server.controller.AmbariManagementController; import org.apache.ambari.server.controller.StackV2; import org.apache.ambari.server.controller.StackV2Factory; import org.apache.ambari.server.controller.utilities.PropertyHelper; @@ -37,6 +38,7 @@ import org.apache.ambari.server.orm.entities.StackEntity; import org.apache.ambari.server.stack.NoSuchStackException; import org.apache.ambari.server.state.StackId; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.databind.ObjectMapper; @@ -83,6 +85,10 @@ public class BlueprintV2Factory { this.stackFactory = stackFactory; } + public static BlueprintV2Factory create(AmbariManagementController controller) { + return new BlueprintV2Factory(new StackV2Factory(controller)); + } + public BlueprintV2 getBlueprint(String blueprintName) throws NoSuchStackException, NoSuchBlueprintException, IOException { BlueprintV2Entity entity = Optional.ofNullable(blueprintDAO.findByName(blueprintName)).orElseThrow(() -> new NoSuchBlueprintException(blueprintName)); @@ -181,6 +187,7 @@ public class BlueprintV2Factory { resolver.addMapping(HostGroupV2.class, HostGroupV2Impl.class); module.setAbstractTypes(resolver); mapper.registerModule(module); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); return mapper; } http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/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 ba0a783..ce201e4 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql @@ -552,10 +552,8 @@ CREATE TABLE blueprintv2 ( blueprint_name VARCHAR(255) NOT NULL, security_type VARCHAR(32) NOT NULL DEFAULT 'NONE', security_descriptor_reference VARCHAR(255), - stack_id BIGINT NOT NULL, content VARCHAR(32000) NOT NULL, - CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name), - CONSTRAINT FK_blueprintv2_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id)); + CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name)); CREATE TABLE hostgroup ( blueprint_name VARCHAR(255) NOT NULL, http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/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 90a33c4..f4d9554 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql @@ -569,7 +569,6 @@ CREATE TABLE blueprintv2 ( blueprint_name VARCHAR(255) NOT NULL, security_type VARCHAR(32) NOT NULL DEFAULT 'NONE', security_descriptor_reference VARCHAR(255), - stack_id BIGINT NOT NULL, content LONGTEXT NOT NULL, CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name), CONSTRAINT FK_blueprintv2_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id)); @@ -578,8 +577,7 @@ CREATE TABLE hostgroup ( blueprint_name VARCHAR(100) NOT NULL, name VARCHAR(100) NOT NULL, cardinality VARCHAR(255) NOT NULL, - CONSTRAINT PK_hostgroup PRIMARY KEY (blueprint_name, name), - CONSTRAINT FK_hg_blueprint_name FOREIGN KEY (blueprint_name) REFERENCES blueprint(blueprint_name)); + CONSTRAINT PK_hostgroup PRIMARY KEY (blueprint_name, name)); CREATE TABLE hostgroup_component ( blueprint_name VARCHAR(100) NOT NULL, http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/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 4f59b92..6b69627 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql @@ -551,10 +551,8 @@ CREATE TABLE blueprintv2 ( blueprint_name VARCHAR2(255) NOT NULL, security_type VARCHAR2(32) NOT NULL DEFAULT 'NONE', security_descriptor_reference VARCHAR2(255), - stack_id NUMBER(19) NOT NULL, content CLOB NOT NULL, - CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name), - CONSTRAINT FK_blueprintv2_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id)); + CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name)); CREATE TABLE hostgroup ( http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/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 68c7e1c..1708671 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql @@ -551,10 +551,8 @@ CREATE TABLE blueprintv2 ( blueprint_name VARCHAR(255) NOT NULL, security_type VARCHAR(32) NOT NULL DEFAULT 'NONE', security_descriptor_reference VARCHAR(255), - stack_id BIGINT NOT NULL, content VARCHAR(32000) NOT NULL, - CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name), - CONSTRAINT FK_blueprintv2_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id)); + CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name)); CREATE TABLE hostgroup ( blueprint_name VARCHAR(255) NOT NULL, http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/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 c869286..87d9169 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql @@ -547,10 +547,8 @@ CREATE TABLE blueprintv2 ( blueprint_name VARCHAR(255) NOT NULL, security_type VARCHAR(32) NOT NULL DEFAULT 'NONE', security_descriptor_reference VARCHAR(255), - stack_id NUMERIC(19) NOT NULL, content TEXT NOT NULL, - CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name), - CONSTRAINT FK_blueprintv2_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id)); + CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name)); CREATE TABLE hostgroup ( http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/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 1fbc396..223fd76 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql @@ -556,7 +556,6 @@ CREATE TABLE blueprintv2 ( blueprint_name VARCHAR(255) NOT NULL, security_type VARCHAR(32) NOT NULL DEFAULT 'NONE', security_descriptor_reference VARCHAR(255), - stack_id BIGINT NOT NULL, content VARCHAR(MAX) NOT NULL, CONSTRAINT PK_blueprintv2 PRIMARY KEY (blueprint_name), CONSTRAINT FK_blueprintv2_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id)); @@ -565,8 +564,7 @@ CREATE TABLE hostgroup ( blueprint_name VARCHAR(255) NOT NULL, NAME VARCHAR(255) NOT NULL, cardinality VARCHAR(255) NOT NULL, - CONSTRAINT PK_hostgroup PRIMARY KEY CLUSTERED (blueprint_name, NAME), - CONSTRAINT FK_hg_blueprint_name FOREIGN KEY (blueprint_name) REFERENCES blueprint(blueprint_name)); + CONSTRAINT PK_hostgroup PRIMARY KEY CLUSTERED (blueprint_name, NAME)); CREATE TABLE hostgroup_component ( blueprint_name VARCHAR(255) NOT NULL, http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/ambari-server/src/main/resources/META-INF/persistence.xml ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/META-INF/persistence.xml b/ambari-server/src/main/resources/META-INF/persistence.xml index 698ab27..009ecd5 100644 --- a/ambari-server/src/main/resources/META-INF/persistence.xml +++ b/ambari-server/src/main/resources/META-INF/persistence.xml @@ -23,6 +23,7 @@ <class>org.apache.ambari.server.orm.entities.BlueprintConfigEntity</class> <class>org.apache.ambari.server.orm.entities.BlueprintSettingEntity</class> <class>org.apache.ambari.server.orm.entities.BlueprintEntity</class> + <class>org.apache.ambari.server.orm.entities.BlueprintV2Entity</class> <class>org.apache.ambari.server.orm.entities.ClusterConfigEntity</class> <class>org.apache.ambari.server.orm.entities.ClusterEntity</class> <class>org.apache.ambari.server.orm.entities.ServiceGroupEntity</class> http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/ambari-server/src/main/resources/properties.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/properties.json b/ambari-server/src/main/resources/properties.json index a995049..225bd9e 100644 --- a/ambari-server/src/main/resources/properties.json +++ b/ambari-server/src/main/resources/properties.json @@ -375,9 +375,10 @@ "host_groups", "host_groups/components", "host_groups/cardinality", - "configurations", + "service_groups", + "repository_versions", "validate_topology", - "settings" + "cluster_settings" ], "Recommendation":[ "Recommendation/id", http://git-wip-us.apache.org/repos/asf/ambari/blob/6837c196/ambari-server/src/test/resources/blueprintv2/blueprintv2.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/blueprintv2/blueprintv2.json b/ambari-server/src/test/resources/blueprintv2/blueprintv2.json index b6b4e8d..c5e2541 100644 --- a/ambari-server/src/test/resources/blueprintv2/blueprintv2.json +++ b/ambari-server/src/test/resources/blueprintv2/blueprintv2.json @@ -5,7 +5,7 @@ "type": "NONE" } }, - "cluster-settings": { + "cluster_settings": { "deployment_settings": [ {"skip_failure":"true"} ],