You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2016/12/02 20:26:03 UTC
[05/50] [abbrv] ambari git commit: AMBARI-18949 Extend current quick
link JSON with properties
AMBARI-18949 Extend current quick link JSON with properties
Change-Id: I209e594e74964b2bab71a454c2b77f785bb02a82
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9559a162
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9559a162
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9559a162
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 9559a1626ac5e6dd3f6ddf65b1fd450171bc4f26
Parents: e3b9a9f
Author: Balazs Bence Sari <bs...@hortonworks.com>
Authored: Wed Nov 30 16:24:04 2016 +0100
Committer: Miklos Gergely <mg...@hortonworks.com>
Committed: Wed Nov 30 16:24:04 2016 +0100
----------------------------------------------------------------------
.../ambari/server/state/quicklinks/Link.java | 21 +++++++
.../QuickLinksConfigurationModuleTest.java | 36 +++++++++++
.../child_quicklinks_with_properties.json | 64 +++++++++++++++++++
.../parent_quicklinks_with_properties.json | 65 ++++++++++++++++++++
4 files changed, 186 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/9559a162/ambari-server/src/main/java/org/apache/ambari/server/state/quicklinks/Link.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/quicklinks/Link.java b/ambari-server/src/main/java/org/apache/ambari/server/state/quicklinks/Link.java
index 091926f..f7c14f3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/quicklinks/Link.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/quicklinks/Link.java
@@ -18,6 +18,11 @@
package org.apache.ambari.server.state.quicklinks;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.Nullable;
+
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -46,6 +51,9 @@ public class Link{
@JsonProperty("protocol")
private Protocol protocol;
+ @JsonProperty("properties")
+ private List<String> properties;
+
public String getName() {
return name;
}
@@ -102,6 +110,14 @@ public class Link{
this.protocol = protocol;
}
+ @Nullable
+ public List<String> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(List<String> properties) {
+ this.properties = properties;
+ }
public boolean isRemoved(){
//treat a link as removed if the section only contains a name
@@ -132,5 +148,10 @@ public class Link{
} else {
port.mergetWithParent(parentLink.getPort());
}
+
+ if (null == properties && null != parentLink.properties) {
+ properties = parentLink.properties;
+ }
}
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/9559a162/ambari-server/src/test/java/org/apache/ambari/server/stack/QuickLinksConfigurationModuleTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/stack/QuickLinksConfigurationModuleTest.java b/ambari-server/src/test/java/org/apache/ambari/server/stack/QuickLinksConfigurationModuleTest.java
index 38176aa..f44f741 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/stack/QuickLinksConfigurationModuleTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/stack/QuickLinksConfigurationModuleTest.java
@@ -18,6 +18,7 @@
package org.apache.ambari.server.stack;
+import com.google.common.collect.Lists;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.state.quicklinks.Check;
import org.apache.ambari.server.state.quicklinks.Link;
@@ -28,7 +29,10 @@ import org.apache.ambari.server.state.quicklinks.QuickLinksConfiguration;
import org.junit.Test;
import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import static org.junit.Assert.*;
@@ -111,6 +115,38 @@ public class QuickLinksConfigurationModuleTest {
}
}
+ @Test
+ public void testResolveOverrideProperties() throws Exception{
+ QuickLinks[] results = resolveQuickLinks("parent_quicklinks_with_properties.json",
+ "child_quicklinks_with_properties.json");
+ QuickLinks parentQuickLinks = results[0];
+ QuickLinks childQuickLinks = results[1];
+
+ //resolved quicklinks configuration
+ QuickLinksConfiguration childQuickLinksConfig = childQuickLinks.getQuickLinksConfiguration();
+ assertNotNull(childQuickLinksConfig);
+
+ //links
+ List<Link> links = childQuickLinksConfig.getLinks();
+ assertNotNull(links);
+ assertEquals(3, links.size());
+ Map<String, Link> linksByName = new HashMap<>();
+ for (Link link: links) {
+ linksByName.put(link.getName(), link);
+ }
+ assertEquals("Links are not properly overridden for foo_ui",
+ Lists.newArrayList("authenticated", "sso"),
+ linksByName.get("foo_ui").getProperties());
+ assertEquals("Parent links for foo_jmx are not inherited.",
+ Lists.newArrayList("authenticated"),
+ linksByName.get("foo_jmx").getProperties());
+ assertEquals("Links are not properly overridden for foo_logs",
+ new ArrayList<>(),
+ linksByName.get("foo_logs").getProperties());
+
+ }
+
+
private QuickLinks[] resolveQuickLinks(String parentJson, String childJson) throws AmbariException{
File parentQuiclinksFile = new File(this.getClass().getClassLoader().getResource(parentJson).getFile());
File childQuickLinksFile = new File(this.getClass().getClassLoader().getResource(childJson).getFile());
http://git-wip-us.apache.org/repos/asf/ambari/blob/9559a162/ambari-server/src/test/resources/child_quicklinks_with_properties.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/child_quicklinks_with_properties.json b/ambari-server/src/test/resources/child_quicklinks_with_properties.json
new file mode 100644
index 0000000..36cd4f3
--- /dev/null
+++ b/ambari-server/src/test/resources/child_quicklinks_with_properties.json
@@ -0,0 +1,64 @@
+{
+ "name": "default",
+ "description": "default quick links configuration",
+ "configuration": {
+ "protocol":
+ {
+ "type":"http",
+ "checks":[
+ {
+ "property":"foo.http.policy",
+ "desired":"HTTP_ONLY",
+ "site":"foo-site"
+ }
+ ]
+ },
+
+ "links": [
+ {
+ "name": "foo_ui",
+ "label": "Foo UI",
+ "requires_user_name": "false",
+ "url": "%@://%@:%@",
+ "properties": ["authenticated", "sso"],
+ "port":{
+ "http_property": "foo.ui.webapp.address",
+ "http_default_port": "19888",
+ "https_property": "foo.ui.webapp.https.address",
+ "https_default_port": "8090",
+ "regex": "\\w*:(\\d+)",
+ "site": "foo-site"
+ }
+ },
+ {
+ "name":"foo_jmx",
+ "label":"Foo JMX",
+ "requires_user_name":"false",
+ "url":"%@://%@:%@/jmx",
+ "port":{
+ "http_property": "foo.jmx.webapp.address",
+ "http_default_port": "19888",
+ "https_property": "foo.jmx.webapp.https.address",
+ "https_default_port": "8090",
+ "regex": "\\w*:(\\d+)",
+ "site": "foo-site"
+ }
+ },
+ {
+ "name": "foo_logs",
+ "label": "Foo logs",
+ "requires_user_name": "false",
+ "url": "%@://%@:%@/logs",
+ "properties": [],
+ "port":{
+ "http_property": "foo.logs.webapp.address",
+ "http_default_port": "19888",
+ "https_property": "foo.webapp.https.address",
+ "https_default_port": "8090",
+ "regex": "\\w*:(\\d+)",
+ "site": "foo-site"
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/9559a162/ambari-server/src/test/resources/parent_quicklinks_with_properties.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/parent_quicklinks_with_properties.json b/ambari-server/src/test/resources/parent_quicklinks_with_properties.json
new file mode 100644
index 0000000..a315f3f
--- /dev/null
+++ b/ambari-server/src/test/resources/parent_quicklinks_with_properties.json
@@ -0,0 +1,65 @@
+{
+ "name": "default",
+ "description": "default quick links configuration",
+ "configuration": {
+ "protocol":
+ {
+ "type":"http",
+ "checks":[
+ {
+ "property":"foo.http.policy",
+ "desired":"HTTP_ONLY",
+ "site":"foo-site"
+ }
+ ]
+ },
+
+ "links": [
+ {
+ "name": "foo_ui",
+ "label": "Foo UI",
+ "requires_user_name": "false",
+ "url": "%@://%@:%@",
+ "properties": ["authenticated"],
+ "port":{
+ "http_property": "foo.ui.webapp.address",
+ "http_default_port": "19888",
+ "https_property": "foo.ui.webapp.https.address",
+ "https_default_port": "8090",
+ "regex": "\\w*:(\\d+)",
+ "site": "foo-site"
+ }
+ },
+ {
+ "name":"foo_jmx",
+ "label":"Foo JMX",
+ "requires_user_name":"false",
+ "url":"%@://%@:%@/jmx",
+ "properties": ["authenticated"],
+ "port":{
+ "http_property": "foo.jmx.webapp.address",
+ "http_default_port": "19888",
+ "https_property": "foo.jmx.webapp.https.address",
+ "https_default_port": "8090",
+ "regex": "\\w*:(\\d+)",
+ "site": "foo-site"
+ }
+ },
+ {
+ "name": "foo_logs",
+ "label": "Foo logs",
+ "requires_user_name": "false",
+ "url": "%@://%@:%@/logs",
+ "properties": ["authenticated"],
+ "port":{
+ "http_property": "foo.logs.webapp.address",
+ "http_default_port": "19888",
+ "https_property": "foo.webapp.https.address",
+ "https_default_port": "8090",
+ "regex": "\\w*:(\\d+)",
+ "site": "foo-site"
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file