You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ad...@apache.org on 2017/11/20 10:17:35 UTC
[1/2] ambari git commit: AMBARI-22297. Fix configurations
import/export issues (adoroszlai)
Repository: ambari
Updated Branches:
refs/heads/branch-feature-AMBARI-14714-blueprintv2 76dbc760a -> 94a93a6bb
AMBARI-22297. Fix configurations import/export issues (adoroszlai)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/365980b5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/365980b5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/365980b5
Branch: refs/heads/branch-feature-AMBARI-14714-blueprintv2
Commit: 365980b5a4bc233de09c3563450ce6826ac06231
Parents: 76dbc76
Author: Attila Doroszlai <ad...@hortonworks.com>
Authored: Mon Nov 20 08:43:46 2017 +0100
Committer: Attila Doroszlai <ad...@hortonworks.com>
Committed: Mon Nov 20 08:43:52 2017 +0100
----------------------------------------------------------------------
.../ambari/server/topology/Configurable.java | 24 +++++++-----
.../ambari/server/topology/Configuration.java | 4 ++
.../server/topology/BlueprintV2FactoryTest.java | 40 ++++++++++++--------
.../test/resources/blueprintv2/blueprintv2.json | 24 ++++++++----
4 files changed, 58 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/365980b5/ambari-server/src/main/java/org/apache/ambari/server/topology/Configurable.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configurable.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configurable.java
index bab7da6..af91e40 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configurable.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configurable.java
@@ -18,13 +18,16 @@
package org.apache.ambari.server.topology;
+import static java.util.Collections.singletonMap;
+import static java.util.stream.Collectors.toList;
+import static java.util.stream.Collectors.toMap;
+
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import java.util.stream.Collectors;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.collect.Lists;
public interface Configurable {
void setConfiguration(Configuration configuration);
@@ -34,10 +37,10 @@ public interface Configurable {
default void setConfigs(Collection<Map<String, Map<String, Map<String, String>>>> configs) {
if (null != configs) {
Map<String, Map<String, String>> allProps = configs.stream().
- filter( map -> map != null && !map.isEmpty() && map.values().iterator().next().get("properties ") != null).
- collect(Collectors.toMap(
+ filter(map -> map != null && !map.isEmpty() && map.values().iterator().next().get(Configuration.PROPERTIES_KEY) != null).
+ collect(toMap(
config -> config.keySet().iterator().next(),
- config -> config.values().iterator().next().get("properties")
+ config -> config.values().iterator().next().get(Configuration.PROPERTIES_KEY)
));
setConfiguration(new Configuration(allProps, new HashMap<>()));
}
@@ -45,11 +48,12 @@ public interface Configurable {
@JsonProperty("configurations")
default Collection<Map<String, Map<String, Map<String, String>>>> getConfigs() {
- Map<String, Map<String, Map<String, String>>> configAsMap = new HashMap<>();
- if (null != getConfiguration()) {
- configAsMap.put("properties", getConfiguration().getProperties());
- }
- return Lists.newArrayList(configAsMap); // TODO replace with Collections.singletonList?
+ Configuration config = getConfiguration();
+ return config != null
+ ? config.getProperties().entrySet().stream()
+ .map(e -> singletonMap(e.getKey(), singletonMap(Configuration.PROPERTIES_KEY, e.getValue())))
+ .collect(toList())
+ : Collections.emptyList();
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/365980b5/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
index 6adcf18..123237f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
@@ -30,6 +30,10 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
* Configuration for a topology entity such as a blueprint, hostgroup or cluster.
*/
public class Configuration {
+
+ public static final String PROPERTIES_KEY = "properties";
+ public static final String ATTRIBUTES_KEY = "properties_attributes";
+
/**
* properties for this configuration instance
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/365980b5/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintV2FactoryTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintV2FactoryTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintV2FactoryTest.java
index 6ae8039..78aa98c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintV2FactoryTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintV2FactoryTest.java
@@ -17,7 +17,6 @@
*/
package org.apache.ambari.server.topology;
-import static org.easymock.EasyMock.anyString;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
@@ -56,7 +55,7 @@ public class BlueprintV2FactoryTest {
@Before
public void setUp() throws Exception {
StackV2Factory stackFactory = mock(StackV2Factory.class);
- when(stackFactory.create(any(StackId.class), anyString())).thenAnswer(invocation -> {
+ when(stackFactory.create(any(StackId.class), any(String.class))).thenAnswer(invocation -> {
StackId stackId = invocation.getArgumentAt(0, StackId.class);
return new StackV2(stackId.getStackName(), stackId.getStackVersion(), invocation.getArgumentAt(1, String.class),
new HashMap<>(), new HashMap<>(), new HashMap<>(),
@@ -69,12 +68,26 @@ public class BlueprintV2FactoryTest {
@Test
public void testSerialization_parseJsonAsBlueprint() throws Exception {
- BlueprintV2 bp = blueprintFactory.convertFromJson(BLUEPRINTV2_JSON);
+ verifyBlueprintStructure1(blueprintFactory.convertFromJson(BLUEPRINTV2_JSON));
+ }
+
+ private void verifyBlueprintStructure1(BlueprintV2 bp) { // for "blueprintv2.json"
assertEquals(new StackId("HDPCORE", "3.0.0"),
bp.getServiceGroups().iterator().next().getServices().iterator().next().getStack().getStackId());
assertEquals(2, bp.getStackIds().size());
assertEquals(7, bp.getAllServiceIds().size());
assertEquals(2, bp.getServiceGroups().size());
+
+ Service zk1 = bp.getServiceGroup("CoreSG").getServiceByName("ZK1");
+ Map<String, Map<String, String>> expectedProperties = new HashMap<>();
+ Map<String, String> zooCfg = new HashMap<>();
+ zooCfg.put("dataDir", "/zookeeper1");
+ expectedProperties.put("zoo.cfg", zooCfg);
+ Map<String, String> zookeeperEnv = new HashMap<>();
+ zookeeperEnv.put("zk_user", "zkuser1");
+ zookeeperEnv.put("zk_server_heapsize", "256MB");
+ expectedProperties.put("zookeeper-env", zookeeperEnv);
+ assertEquals(expectedProperties, zk1.getConfiguration().getProperties());
}
@Test
@@ -92,23 +105,22 @@ public class BlueprintV2FactoryTest {
assertEquals(1, getAsList(blueprintAsMap, "host_groups").size());
assertEquals("host_group_1", getByPath(blueprintAsMap,
ImmutableList.of("host_groups", 0, "name")));
- System.out.println(blueprintAsMap);
}
@Test
public void testSerialization_serializeBlueprint() throws Exception {
- BlueprintV2 bp = blueprintFactory.convertFromJson(BLUEPRINTV2_JSON);
- String serialized = blueprintFactory.convertToJson(bp);
+ BlueprintV2 bp1 = blueprintFactory.convertFromJson(BLUEPRINTV2_JSON);
+ String serialized = blueprintFactory.convertToJson(bp1);
// Test that serialized blueprint can be read again
- bp = blueprintFactory.convertFromJson(serialized);
- assertEquals(2, bp.getStackIds().size());
- assertEquals(7, bp.getAllServiceIds().size());
- assertEquals(2, bp.getServiceGroups().size());
+ verifyBlueprintStructure1(blueprintFactory.convertFromJson(serialized));
}
@Test
public void testSerialization2_parseJsonAsBlueprint() throws Exception {
- BlueprintV2 bp = blueprintFactory.convertFromJson(BLUEPRINTV2_2_JSON);
+ verifyBlueprintStructure2(blueprintFactory.convertFromJson(BLUEPRINTV2_2_JSON));
+ }
+
+ private void verifyBlueprintStructure2(BlueprintV2 bp) {
assertEquals(new StackId("HDP", "3.0.0"),
bp.getServiceGroups().iterator().next().getServices().iterator().next().getStack().getStackId());
assertEquals(1, bp.getStackIds().size());
@@ -131,7 +143,6 @@ public class BlueprintV2FactoryTest {
assertEquals(1, getAsList(blueprintAsMap, "host_groups").size());
assertEquals("host_group_1", getByPath(blueprintAsMap,
ImmutableList.of("host_groups", 0, "name")));
- System.out.println(blueprintAsMap);
}
@Test
@@ -139,10 +150,7 @@ public class BlueprintV2FactoryTest {
BlueprintV2 bp = blueprintFactory.convertFromJson(BLUEPRINTV2_2_JSON);
String serialized = blueprintFactory.convertToJson(bp);
// Test that serialized blueprint can be read again
- bp = blueprintFactory.convertFromJson(serialized);
- assertEquals(1, bp.getStackIds().size());
- assertEquals(4, bp.getAllServiceIds().size());
- assertEquals(1, bp.getServiceGroups().size());
+ verifyBlueprintStructure2(blueprintFactory.convertFromJson(serialized));
}
private static Map<String, Object> getAsMap(Map<String, Object> parentMap, String key) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/365980b5/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 c5e2541..013b8d7 100644
--- a/ambari-server/src/test/resources/blueprintv2/blueprintv2.json
+++ b/ambari-server/src/test/resources/blueprintv2/blueprintv2.json
@@ -34,9 +34,17 @@
"stack_id": "HDPCORE-3.0.0",
"configurations": [
{
- "zoo.cfg" : {
- "properties" : {
- "dataDir" : "/zookeeper1"
+ "zoo.cfg": {
+ "properties": {
+ "dataDir": "/zookeeper1"
+ }
+ }
+ },
+ {
+ "zookeeper-env": {
+ "properties": {
+ "zk_user": "zkuser1",
+ "zk_server_heapsize": "256MB"
}
}
}
@@ -48,9 +56,9 @@
"stack_id": "HDPCORE-3.0.0",
"configurations": [
{
- "zoo.cfg" : {
- "properties" : {
- "dataDir" : "/zookeeper2"
+ "zoo.cfg": {
+ "properties": {
+ "dataDir": "/zookeeper2"
}
}
}
@@ -78,8 +86,8 @@
"stack_id": "HDPCORE-3.0.0",
"dependencies": [
{
- "service_group" : "CoreSG",
- "service_name" : "ZK2"
+ "service_group": "CoreSG",
+ "service_name": "ZK2"
}
]
},
[2/2] ambari git commit: AMBARI-22297. Initialize blueprint with
default values to avoid NPE (adoroszlai)
Posted by ad...@apache.org.
AMBARI-22297. Initialize blueprint with default values to avoid NPE (adoroszlai)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/94a93a6b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/94a93a6b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/94a93a6b
Branch: refs/heads/branch-feature-AMBARI-14714-blueprintv2
Commit: 94a93a6bbe7495f7ed133fbd8df597609ac34fa7
Parents: 365980b
Author: Attila Doroszlai <ad...@hortonworks.com>
Authored: Mon Nov 20 08:55:08 2017 +0100
Committer: Attila Doroszlai <ad...@hortonworks.com>
Committed: Mon Nov 20 10:19:15 2017 +0100
----------------------------------------------------------------------
.../ambari/server/topology/BlueprintV2Impl.java | 14 +++++++-------
.../apache/ambari/server/topology/Configuration.java | 4 ++++
.../ambari/server/topology/SecurityConfiguration.java | 2 ++
.../org/apache/ambari/server/topology/Service.java | 2 +-
4 files changed, 14 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/94a93a6b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java
index 26bdfe2..66ca85d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java
@@ -23,8 +23,8 @@ import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
import static java.util.stream.Collectors.toSet;
-import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -48,11 +48,11 @@ import com.fasterxml.jackson.annotation.JsonProperty;
public class BlueprintV2Impl implements BlueprintV2 {
private String name;
- private SecurityConfiguration securityConfiguration;
- private Collection<RepositoryVersion> repositoryVersions = new ArrayList<>(0);
- private Map<String, ServiceGroup> serviceGroups;
- private Setting setting;
- private final Configuration configuration = new Configuration(new HashMap<>(), new HashMap<>());
+ private SecurityConfiguration securityConfiguration = SecurityConfiguration.NONE;
+ private Collection<RepositoryVersion> repositoryVersions = Collections.emptyList();
+ private Map<String, ServiceGroup> serviceGroups = Collections.emptyMap();
+ private Setting setting = new Setting(Collections.emptyMap());
+ private final Configuration configuration = Configuration.createEmpty();
// Transient fields
@JsonIgnore
@@ -410,7 +410,7 @@ public class BlueprintV2Impl implements BlueprintV2 {
@JsonProperty("blueprint_name")
public String name;
@JsonProperty("security")
- public SecurityConfiguration securityConfiguration;
+ public SecurityConfiguration securityConfiguration = SecurityConfiguration.NONE;
public Blueprints() { }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/94a93a6b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
index 123237f..27b9247 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Configuration.java
@@ -49,6 +49,10 @@ public class Configuration {
*/
private Configuration parentConfiguration;
+ public static Configuration createEmpty() {
+ return new Configuration(new HashMap<>(0), new HashMap<>(0));
+ }
+
public Configuration(Configuration config, Configuration parent) {
this(config.getProperties(), config.getAttributes(), parent);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/94a93a6b/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java
index 7955169..7a8b8a9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java
@@ -31,6 +31,8 @@ import com.fasterxml.jackson.annotation.JsonProperty;
*/
public class SecurityConfiguration {
+ public static final SecurityConfiguration NONE = new SecurityConfiguration(SecurityType.NONE);
+
/**
* Security Type
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/94a93a6b/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java
index e80396f..4a93ecd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java
@@ -41,7 +41,7 @@ public class Service implements Configurable {
private String stackId;
@JsonIgnore
- private Configuration configuration;
+ private Configuration configuration = Configuration.createEmpty();
private Set<ServiceId> dependencies = ImmutableSet.of();