You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/11/27 10:28:18 UTC

[21/50] [abbrv] kylin git commit: KYLIN-2195 Rename spring/security related properties

KYLIN-2195 Rename spring/security related properties


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2cca348c
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2cca348c
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2cca348c

Branch: refs/heads/KYLIN-1875
Commit: 2cca348c608aa8674572ee6bee53fbf48e40e4df
Parents: 826f23f
Author: Li Yang <li...@apache.org>
Authored: Wed Nov 23 11:55:48 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Wed Nov 23 17:08:29 2016 +0800

----------------------------------------------------------------------
 build/conf/kylin.properties                     | 179 ++++++++-----------
 .../common/BackwardCompatibilityConfig.java     |  13 +-
 .../org/apache/kylin/common/KylinConfig.java    |   6 +-
 .../apache/kylin/common/KylinConfigBase.java    |  14 +-
 .../org/apache/kylin/common/KylinConfigExt.java |   4 +-
 .../kylin-backward-compatibility.properties     |  37 +++-
 .../apache/kylin/common/KylinConfigTest.java    |  18 +-
 .../test_case_data/localmeta/kylin.properties   |  34 ++--
 examples/test_case_data/sandbox/hive-site.xml   |   6 +-
 .../test_case_data/sandbox/kylin.properties     |  13 +-
 server/src/main/resources/kylinSecurity.xml     |  46 ++---
 webapp/app/js/controllers/cubes.js              |   2 +-
 webapp/app/js/services/kylinProperties.js       |   8 +-
 13 files changed, 193 insertions(+), 187 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/build/conf/kylin.properties
----------------------------------------------------------------------
diff --git a/build/conf/kylin.properties b/build/conf/kylin.properties
index 7cdc1c5..1409394 100644
--- a/build/conf/kylin.properties
+++ b/build/conf/kylin.properties
@@ -15,21 +15,32 @@
 # limitations under the License.
 #
 
-### SERVICE ###
+### METADATA | ENV ###
+
+# The metadata store in hbase
+kylin.metadata.url=kylin_metadata@hbase
+
+# Working folder in HDFS, make sure user has the right access to the hdfs directory
+kylin.env.hdfs-working-dir=/kylin
+
+# DEV|QA|PROD. DEV will turn on some dev features, QA and PROD has no difference in terms of functions.
+kylin.env=QA
+
+
+### SERVER | WEB ###
 
 # Kylin server mode, valid value [all, query, job]
 kyin.server.mode=all
 
-# Optional information for the owner of kylin platform, it can be your team's email
-# Currently it will be attached to each kylin's htable attribute
-kylin.storage.hbase.owner-tag=whoami@kylin.apache.org
-
 # List of web servers in use, this enables one web server instance to sync up with other servers.
 kylin.server.cluster-servers=localhost:7070
 
 # Display timezone on UI,format like[GMT+N or GMT-N]
 kylin.web.timezone=GMT+8
 
+kylin.web.cross-domain-enabled=true
+
+
 ### SOURCE ###
 
 # Hive client, valid value [cli, beeline]
@@ -40,16 +51,17 @@ kylin.source.hive.client=cli
 
 kylin.source.hive.keep-flat-table=false
 
-### STORAGE ###
+# Hive database name for putting the intermediate flat tables
+kylin.source.hive.database-for-flat-table=default
 
-# The metadata store in hbase
-kylin.metadata.url=kylin_metadata@hbase
+# Whether redistribute the intermediate flat table before building
+kylin.source.hive.redistribute-flat-table=true
 
-# The storage for final cube file in hbase
-kylin.storage.url=hbase
 
-# Working folder in HDFS, make sure user has the right access to the hdfs directory
-kylin.env.hdfs-working-dir=/kylin
+### STORAGE ###
+
+# The storage for cube is hbase
+kylin.storage.url=hbase
 
 # Compression codec for htable, valid value [none, snappy, lzo, gzip, lz4]
 kylin.storage.hbase.compression-codec=none
@@ -68,72 +80,67 @@ kylin.storage.hbase.hfile-size-gb=2
 kylin.storage.hbase.min-region-count=1
 kylin.storage.hbase.max-region-count=500
 
-### JOB ###
-
-# max job retry on error, default 0: no retry
-kylin.job.retry=0
+# Optional information for the owner of kylin platform, it can be your team's email
+# Currently it will be attached to each kylin's htable attribute
+kylin.storage.hbase.owner-tag=whoami@kylin.apache.org
 
-# If true, job engine will not assume that hadoop CLI reside on the same server as it self
-# you will have to specify kylin.job.remote-cli-hostname, kylin.job.remote-cli-username and kylin.job.remote-cli-password
-# It should not be set to "true" unless you're NOT running Kylin.sh on a hadoop client machine 
-# (Thus kylin instance has to ssh to another real hadoop client machine to execute hbase,hive,hadoop commands)
-kylin.job.use-remote-cli=false
+kylin.storage.hbase.coprocessor-mem-gb=3
 
-# Only necessary when kylin.job.use-remote-cli=true
-kylin.job.remote-cli-hostname=
-kylin.job.remote-cli-port=22
+# The default coprocessor timeout is (hbase.rpc.timeout * 0.9) / 1000 seconds,
+# You can set it to a smaller value. 0 means use default.
+# kylin.storage.hbase.coprocessor-timeout-seconds=0
 
-# Only necessary when kylin.job.use-remote-cli=true
-kylin.job.remote-cli-username=
 
-# Only necessary when kylin.job.use-remote-cli=true
-kylin.job.remote-cli-password=
+### JOB ###
 
-# Used by test cases to prepare synthetic data for sample cube
-kylin.job.remote-cli-working-dir=/tmp/kylin
+# Max job retry on error, default 0: no retry
+kylin.job.retry=0
 
 # Max count of concurrent jobs running
 kylin.job.max-concurrent-jobs=10
 
-# Time interval to check hadoop job status
-kylin.engine.mr.yarn-check-interval-seconds=10
-
-# Hive database name for putting the intermediate flat tables
-kylin.source.hive.database-for-flat-table=default
-
-# Whether redistribute the intermediate flat table before building
-kylin.source.hive.redistribute-flat-table=true
-
 # The percentage of the sampling, default 100%
 kylin.job.sampling-percentage=100
 
 # Whether get job status from resource manager with kerberos authentication
 kylin.job.status.with.kerberos=false
 
+# Timeout in seconds
+kylin.job.step.timeout=7200
+
+# If true, will send email notification on job complete
+kylin.job.notification-enabled=false
+kylin.job.notification-mail-host=
+kylin.job.notification-mail-username=
+kylin.job.notification-mail-password=
+kylin.job.notification-mail-sender=
+
+
+### ENGINE ###
+
+# Time interval to check hadoop job status
+kylin.engine.mr.yarn-check-interval-seconds=10
+
 kylin.engine.mr.reduce-input-mb=500
 
 kylin.engine.mr.max-reducer-number=500
 
 kylin.engine.mr.mapper-input-rows=1000000
 
-kylin.job.step.timeout=7200
-
 
-### CUBE ###
+### CUBE | DICTIONARY ###
 
 # 'auto', 'inmem', 'layer' or 'random' for testing
 kylin.cube.algorithm=auto
 
-kylin.cube.algorithm.layer-or-inmem-threshold=8
+# A smaller threshold prefers layer, a larger threshold prefers in-mem
+kylin.cube.algorithm.layer-or-inmem-threshold=7
 
 kylin.cube.aggrgroup.max-combination=4096
 
-kylin.dictionary.max.cardinality=5000000
-
 kylin.snapshot.max-mb=300
 
 
-
 ### QUERY ###
 
 kylin.query.scan-threshold=10000000
@@ -141,84 +148,42 @@ kylin.query.scan-threshold=10000000
 kylin.query.udf.version=org.apache.kylin.query.udf.VersionUDF
 
 # 3G
-kylin.query.memory-budget=3221225472
-
-kylin.storage.hbase.coprocessor-mem-gb=3
-
-# the default coprocessor timeout is (hbase.rpc.timeout * 0.9) / 1000 seconds,
-# you can set it to a smaller value. 0 means use default.
-# kylin.storage.hbase.coprocessor-timeout-seconds=0
-
-# Enable/disable ACL check for cube query
-kylin.query.security-enabled=true
+kylin.query.memory-budget-bytes=3221225472
 
 kylin.query.cache-enabled=true
 
+
 ### SECURITY ###
 
 # Spring security profile, options: testing, ldap, saml
 # with "testing" profile, user can use pre-defined name/pwd like KYLIN/ADMIN to login
 kylin.security.profile=testing
 
-### SECURITY ###
 # Default roles and admin roles in LDAP, for ldap and saml
-acl.defaultRole=ROLE_ANALYST,ROLE_MODELER
-acl.adminRole=ROLE_ADMIN
+kylin.security.acl.default-role=ROLE_ANALYST,ROLE_MODELER
+kylin.security.acl.admin-role=ROLE_ADMIN
 
 # LDAP authentication configuration
-ldap.server=ldap://ldap_server:389
-ldap.username=
-ldap.password=
+kylin.security.ldap.connection-server=ldap://ldap_server:389
+kylin.security.ldap.connection-username=
+kylin.security.ldap.connection-password=
 
 # LDAP user account directory;
-ldap.user.searchBase=
-ldap.user.searchPattern=
-ldap.user.groupSearchBase=
+kylin.security.ldap.user-search-base=
+kylin.security.ldap.user-search-pattern=
+kylin.security.ldap.user-group-search-base=
 
 # LDAP service account directory
-ldap.service.searchBase=
-ldap.service.searchPattern=
-ldap.service.groupSearchBase=
+kylin.security.ldap.service-search-base=
+kylin.security.ldap.service-search-pattern=
+kylin.security.ldap.service-group-search-base=
 
 ## SAML configurations for SSO
 # SAML IDP metadata file location
-saml.metadata.file=classpath:sso_metadata.xml
-saml.metadata.entityBaseURL=https://hostname/kylin
-saml.context.scheme=https
-saml.context.serverName=hostname
-saml.context.serverPort=443
-saml.context.contextPath=/kylin
-
-### MAIL ###
+kylin.security.saml.metadata-file=classpath:sso_metadata.xml
+kylin.security.saml.metadata-entity-base-url=https://hostname/kylin
+kylin.security.saml.context-scheme=https
+kylin.security.saml.context-server-name=hostname
+kylin.security.saml.context-server-port=443
+kylin.security.saml.context-path=/kylin
 
-# If true, will send email notification;
-kylin.job.notification-enabled=false
-kylin.job.notification-mail-host=
-kylin.job.notification-mail-username=
-kylin.job.notification-mail-password=
-kylin.job.notification-mail-sender=
-### WEB ###
-
-# Help info, format{name|displayName|link}, optional
-kylin.web.help.length=4
-kylin.web.help.0=start|Getting Started|
-kylin.web.help.1=odbc|ODBC Driver|
-kylin.web.help.2=tableau|Tableau Guide|
-kylin.web.help.3=onboard|Cube Design Tutorial|
-
-# Guide user how to build streaming cube
-kylin.web.streaming.guide=http://kylin.apache.org/
-
-# Hadoop url link, optional
-kylin.web.hadoop=
-#job diagnostic url link, optional
-kylin.web.diagnostic=
-#contact mail on web page, optional
-kylin.web.contact_mail=
-
-kylin.web.cross-domain-enabled=true
-
-### OTHER ###
-
-# Env DEV|QA|PROD
-kylin.env=QA

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java b/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java
index cbeb73a..664d9bb 100644
--- a/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java
+++ b/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java
@@ -72,6 +72,13 @@ public class BackwardCompatibilityConfig {
         for (Entry<Object, Object> kv : props.entrySet()) {
             String key = (String) kv.getKey();
             String value = (String) kv.getValue();
+            
+            if (key.equals(value))
+                continue; // no change
+            
+            if (value.contains(key))
+                throw new IllegalStateException("New key '" + value + "' contains old key '" + key + "' causes trouble to repeated find & replace");
+            
             if (value.endsWith("."))
                 old2newPrefix.put(key, value);
             else
@@ -89,7 +96,7 @@ public class BackwardCompatibilityConfig {
         for (String oldPrefix : old2newPrefix.keySet()) {
             if (key.startsWith(oldPrefix)) {
                 String newPrefix = old2newPrefix.get(oldPrefix);
-                newKey = newPrefix + key.substring(oldPrefix.length() + 1);
+                newKey = newPrefix + key.substring(oldPrefix.length());
                 logger.warn("Config '{}' is deprecated, use '{}' instead", key, newKey);
                 return newKey;
             }
@@ -188,6 +195,10 @@ public class BackwardCompatibilityConfig {
         String name = f.getName();
         if (name.startsWith(KYLIN_BACKWARD_COMPATIBILITY))
             return false;
+        else if (name.equals("KylinConfigTest.java"))
+            return false;
+        else if (name.endsWith("-site.xml"))
+            return false;
         else
             return name.endsWith(".java") || name.endsWith(".js") || name.endsWith(".sh") || name.endsWith(".properties") || name.endsWith(".xml");
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
index 9543fc7..73e5aeb 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
@@ -264,12 +264,10 @@ public class KylinConfig extends KylinConfigBase {
 
     private KylinConfig() {
         super();
-        logger.info("New KylinConfig " + System.identityHashCode(this));
-        KylinConfig.dumpStackTrace();
     }
 
-    protected KylinConfig(Properties props) {
-        super(props);
+    protected KylinConfig(Properties props, boolean force) {
+        super(props, force);
     }
 
     public void writeProperties(File file) throws IOException {

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index db4f365..6131013 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -66,7 +66,7 @@ abstract public class KylinConfigBase implements Serializable {
 
     // ============================================================================
 
-    private volatile Properties properties = new Properties();
+    volatile Properties properties = new Properties();
 
     public KylinConfigBase() {
         this(new Properties());
@@ -76,6 +76,10 @@ abstract public class KylinConfigBase implements Serializable {
         this.properties = BCC.check(props);
     }
 
+    protected KylinConfigBase(Properties props, boolean force) {
+        this.properties = force ? props : BCC.check(props);
+    }
+    
     final protected String getOptional(String prop) {
         return getOptional(prop, null);
     }
@@ -182,7 +186,7 @@ abstract public class KylinConfigBase implements Serializable {
      */
     @Deprecated
     public String getHiveUrl() {
-        return getOptional("kylin.source.hive.url", "");
+        return getOptional("kylin.source.hive.connection-url", "");
     }
 
     /**
@@ -190,7 +194,7 @@ abstract public class KylinConfigBase implements Serializable {
      */
     @Deprecated
     public String getHiveUser() {
-        return getOptional("kylin.source.hive.user", "");
+        return getOptional("kylin.source.hive.connection-user", "");
     }
 
     /**
@@ -198,7 +202,7 @@ abstract public class KylinConfigBase implements Serializable {
      */
     @Deprecated
     public String getHivePassword() {
-        return getOptional("kylin.source.hive.password", "");
+        return getOptional("kylin.source.hive.connection-password", "");
     }
 
     public String getHdfsWorkingDirectory() {
@@ -553,7 +557,7 @@ abstract public class KylinConfigBase implements Serializable {
     }
 
     public long getQueryMemBudget() {
-        return Long.parseLong(this.getOptional("kylin.query.memory-budget", String.valueOf(3L * 1024 * 1024 * 1024)));
+        return Long.parseLong(this.getOptional("kylin.query.memory-budget-bytes", String.valueOf(3L * 1024 * 1024 * 1024)));
     }
 
     public double getQueryCoprocessorMemGB() {

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
index 287b390..6062d91 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
@@ -39,7 +39,7 @@ public class KylinConfigExt extends KylinConfig {
     }
 
     private KylinConfigExt(KylinConfig base, Map<String, String> overrides) {
-        super(base.getAllProperties());
+        super(base.getAllProperties(), true);
         if (base.getClass() != KylinConfig.class) {
             throw new IllegalArgumentException();
         }
@@ -48,7 +48,7 @@ public class KylinConfigExt extends KylinConfig {
     }
 
     private KylinConfigExt(KylinConfigExt ext, Map<String, String> overrides) {
-        super(ext.base.getAllProperties());
+        super(ext.base.getAllProperties(), true);
         this.base = ext.base;
         this.overrides = BCC.check(overrides);
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/core-common/src/main/resources/kylin-backward-compatibility.properties
----------------------------------------------------------------------
diff --git a/core-common/src/main/resources/kylin-backward-compatibility.properties b/core-common/src/main/resources/kylin-backward-compatibility.properties
index 563ec26..2ad479d 100644
--- a/core-common/src/main/resources/kylin-backward-compatibility.properties
+++ b/core-common/src/main/resources/kylin-backward-compatibility.properties
@@ -102,9 +102,9 @@ kylin.hive.beeline.params=kylin.source.hive.beeline-params
 kylin.hive.create.flat.table.method=kylin.source.hive.create-flat-table-method
 
 #deprecated
-hive.url=kylin.source.hive.url
-hive.user=kylin.source.hive.user
-hive.password=kylin.source.hive.password
+hive.url=kylin.source.hive.connection-url
+hive.user=kylin.source.hive.connection-user
+hive.password=kylin.source.hive.connection-password
 hive.table.location.=kylin.source.hive.table-location.
 
 
@@ -154,7 +154,7 @@ kylin.query.transformers=kylin.query.transformers
 kylin.query.cache.enabled=kylin.query.cache-enabled
 kylin.query.cache.threshold.duration=kylin.query.cache-threshold-duration
 kylin.query.cache.threshold.scancount=kylin.query.cache-threshold-scan-count
-kylin.query.mem.budget=kylin.query.memory-budget
+kylin.query.mem.budget=kylin.query.memory-budget-bytes
 kylin.query.ignore_unknown_function=kylin.query.ignore-unknown-function
 kylin.query.dim.distinct.max=kylin.query.max-dimension-count-distinct
 kylin.query.security.enabled=kylin.query.security-enabled
@@ -174,11 +174,40 @@ kylin.query.metrics.enabled=kylin.server.query-metrics-enabled
 kylin.query.metrics.percentiles.intervals=kylin.server.query-metrics-percentiles-intervals
 
 
+### SECURITY ###
+
+kylin.security.profile=kylin.security.profile
+acl.defaultRole=kylin.security.acl.default-role
+acl.adminRole=kylin.security.acl.admin-role
+ldap.server=kylin.security.ldap.connection-server
+ldap.username=kylin.security.ldap.connection-username
+ldap.password=kylin.security.ldap.connection-password
+ldap.user.searchBase=kylin.security.ldap.user-search-base
+ldap.user.searchPattern=kylin.security.ldap.user-search-pattern
+ldap.user.groupSearchBase=kylin.security.ldap.user-group-search-base
+ldap.service.searchBase=kylin.security.ldap.service-search-base
+ldap.service.searchPattern=kylin.security.ldap.service-search-pattern
+ldap.service.groupSearchBase=kylin.security.ldap.service-group-search-base
+saml.metadata.file=kylin.security.saml.metadata-file
+saml.metadata.entityBaseURL=kylin.security.saml.metadata-entity-base-url
+saml.context.scheme=kylin.security.saml.context-scheme
+saml.context.serverName=kylin.security.saml.context-server-name
+saml.context.serverPort=kylin.security.saml.context-server-port
+saml.context.contextPath=kylin.security.saml.context-path
+
+
 ### WEB ###
 
 kylin.rest.timezone=kylin.web.timezone
 crossdomain.enable=kylin.web.cross-domain-enabled
+kylin.web.streaming.guide=kylin.web.link-streaming-guide
+kylin.web.hadoop=kylin.web.link-hadoop
+kylin.web.diagnostic=kylin.web.link-diagnostic
+kylin.web.contact_mail=kylin.web.contact-mail
+kylin.web.help.=kylin.web.help.
 
+#deprecated
+kylin.web.hive.limit=kylin.web.hive-limit
 
 ### TEST ###
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/core-common/src/test/java/org/apache/kylin/common/KylinConfigTest.java
----------------------------------------------------------------------
diff --git a/core-common/src/test/java/org/apache/kylin/common/KylinConfigTest.java b/core-common/src/test/java/org/apache/kylin/common/KylinConfigTest.java
index 886d8ee..d05f58b 100644
--- a/core-common/src/test/java/org/apache/kylin/common/KylinConfigTest.java
+++ b/core-common/src/test/java/org/apache/kylin/common/KylinConfigTest.java
@@ -18,10 +18,7 @@
 
 package org.apache.kylin.common;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.*;
 
 import java.util.Map;
 
@@ -56,7 +53,7 @@ public class KylinConfigTest extends LocalFileMetadataTestCase {
     @Test
     public void testBackwardCompatibility() {
         KylinConfig config = KylinConfig.getInstanceFromEnv();
-        final String oldk = "kylin.test.bcc.new.key";
+        final String oldk = "kylin.test.bcc.old.key";
         final String newk = "kylin.test.bcc.new.key";
         
         assertNull(config.getOptional(oldk));
@@ -72,4 +69,15 @@ public class KylinConfigTest extends LocalFileMetadataTestCase {
         config.setProperty(oldk, "2");
         assertEquals(config.getOptional(newk), "2");
     }
+    
+    @Test
+    public void testExtShareTheBase() {
+        KylinConfig config = KylinConfig.getInstanceFromEnv();
+        Map<String, String> override = Maps.newHashMap();
+        KylinConfig configExt = KylinConfigExt.createInstance(config, override);
+        
+        assertTrue(config.properties == configExt.properties);
+        config.setProperty("1234", "1234");
+        assertEquals("1234", configExt.getOptional("1234"));
+    }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/examples/test_case_data/localmeta/kylin.properties
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/kylin.properties b/examples/test_case_data/localmeta/kylin.properties
index 8854ac1..1dfac32 100644
--- a/examples/test_case_data/localmeta/kylin.properties
+++ b/examples/test_case_data/localmeta/kylin.properties
@@ -89,32 +89,32 @@ kylin.query.transformers=org.apache.kylin.rest.util.KeywordDefaultDirtyHack
 kylin.security.profile=testing
 
 # Default roles and admin roles in LDAP, for ldap and saml
-acl.defaultRole=ROLE_ANALYST,ROLE_MODELER
-acl.adminRole=ROLE_ADMIN
+kylin.security.acl.default-role=ROLE_ANALYST,ROLE_MODELER
+kylin.security.acl.admin-role=ROLE_ADMIN
 
 # LDAP authentication configuration
-ldap.server=ldap://ldap_server:389
-ldap.username=
-ldap.password=
+kylin.security.ldap.connection-server=ldap://ldap_server:389
+kylin.security.ldap.connection-username=
+kylin.security.ldap.connection-password=
 
 # LDAP user account directory;
-ldap.user.searchBase=
-ldap.user.searchPattern=
-ldap.user.groupSearchBase=
+kylin.security.ldap.user-search-base=
+kylin.security.ldap.user-search-pattern=
+kylin.security.ldap.user-group-search-base=
 
 # LDAP service account directory
-ldap.service.searchBase=
-ldap.service.searchPattern=
-ldap.service.groupSearchBase=
+kylin.security.ldap.service-search-base=
+kylin.security.ldap.service-search-pattern=
+kylin.security.ldap.service-group-search-base=
 
 # SAML configurations for SSO
 # SAML IDP metadata file location
-saml.metadata.file=classpath:sso_metadata.xml
-saml.metadata.entityBaseURL=https://hostname/kylin
-saml.context.scheme=https
-saml.context.serverName=hostname
-saml.context.serverPort=443
-saml.context.contextPath=/kylin
+kylin.security.saml.metadata-file=classpath:sso_metadata.xml
+kylin.security.saml.metadata-entity-base-url=https://hostname/kylin
+kylin.security.saml.context-scheme=https
+kylin.security.saml.context-server-name=hostname
+kylin.security.saml.context-server-port=443
+kylin.security.saml.context-path=/kylin
 
 ### MAIL ###
 # If true, will send email notification;

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/examples/test_case_data/sandbox/hive-site.xml
----------------------------------------------------------------------
diff --git a/examples/test_case_data/sandbox/hive-site.xml b/examples/test_case_data/sandbox/hive-site.xml
index d4b7745..1e78107 100644
--- a/examples/test_case_data/sandbox/hive-site.xml
+++ b/examples/test_case_data/sandbox/hive-site.xml
@@ -118,7 +118,7 @@
 
     <property>
         <name>hive.conf.restricted.list</name>
-        <value>hive.security.authenticator.manager,hive.security.authorization.manager,kylin.source.hive.users.in.admin.role</value>
+        <value>hive.security.authenticator.manager,hive.security.authorization.manager,hive.users.in.admin.role</value>
     </property>
 
     <property>
@@ -722,12 +722,12 @@
     </property>
 
     <property>
-        <name>kylin.source.hive.user.install.directory</name>
+        <name>hive.user.install.directory</name>
         <value>/user/</value>
     </property>
 
     <property>
-        <name>kylin.source.hive.users.in.admin.role</name>
+        <name>hive.users.in.admin.role</name>
         <value>hue,hive</value>
     </property>
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/examples/test_case_data/sandbox/kylin.properties
----------------------------------------------------------------------
diff --git a/examples/test_case_data/sandbox/kylin.properties b/examples/test_case_data/sandbox/kylin.properties
index 3c066a6..dc7132a 100644
--- a/examples/test_case_data/sandbox/kylin.properties
+++ b/examples/test_case_data/sandbox/kylin.properties
@@ -128,8 +128,8 @@ kylin.query.security-enabled=true
 kylin.security.profile=testing
 
 # Default roles and admin roles in LDAP, for ldap and saml
-acl.defaultRole=ROLE_ANALYST,ROLE_MODELER
-acl.adminRole=ROLE_ADMIN
+kylin.security.acl.default-role=ROLE_ANALYST,ROLE_MODELER
+kylin.security.acl.admin-role=ROLE_ADMIN
 
 
 ### MAIL ###
@@ -146,15 +146,6 @@ kylin.web.help.1=odbc|ODBC Driver|
 kylin.web.help.2=tableau|Tableau Guide|
 kylin.web.help.3=onboard|Cube Design Tutorial|
 
-# Guide user how to build streaming cube
-kylin.web.streaming.guide=http://kylin.apache.org/
-
-# Hadoop url link, optional
-kylin.web.hadoop=
-#job diagnostic url link, optional
-kylin.web.diagnostic=
-#contact mail on web page, optional
-kylin.web.contact_mail=
 
 ### OTHER ###
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/server/src/main/resources/kylinSecurity.xml
----------------------------------------------------------------------
diff --git a/server/src/main/resources/kylinSecurity.xml b/server/src/main/resources/kylinSecurity.xml
index 40481ce..3f4abdc 100644
--- a/server/src/main/resources/kylinSecurity.xml
+++ b/server/src/main/resources/kylinSecurity.xml
@@ -63,9 +63,9 @@
 
 	<beans profile="ldap,saml">
 		<bean id="ldapSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
-			<constructor-arg value="${ldap.server}" />
-			<property name="userDn" value="${ldap.username}" />
-			<property name="password" value="${ldap.password}" />
+			<constructor-arg value="${kylin.security.ldap.connection-server}" />
+			<property name="userDn" value="${kylin.security.ldap.connection-username}" />
+			<property name="password" value="${kylin.security.ldap.connection-password}" />
 		</bean>
 		
 		<bean id="kylinUserAuthProvider" class="org.apache.kylin.rest.security.KylinAuthenticationProvider">
@@ -76,8 +76,8 @@
 							<constructor-arg ref="ldapSource" />
 							<property name="userSearch">
 								<bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
-									<constructor-arg index="0" value="${ldap.user.searchBase}" />
-									<constructor-arg index="1" value="${ldap.user.searchPattern}" />
+									<constructor-arg index="0" value="${kylin.security.ldap.user-search-base}" />
+									<constructor-arg index="1" value="${kylin.security.ldap.user-search-pattern}" />
 									<constructor-arg index="2" ref="ldapSource" />
 								</bean>
 							</property>
@@ -86,9 +86,9 @@
 					<constructor-arg>
 						<bean class="org.apache.kylin.rest.security.AuthoritiesPopulator">
 							<constructor-arg index="0" ref="ldapSource" />
-							<constructor-arg index="1" value="${ldap.user.groupSearchBase}" />
-							<constructor-arg index="2" value="${acl.adminRole}" />
-							<constructor-arg index="3" value="${acl.defaultRole}" />
+							<constructor-arg index="1" value="${kylin.security.ldap.user-group-search-base}" />
+							<constructor-arg index="2" value="${kylin.security.acl.admin-role}" />
+							<constructor-arg index="3" value="${kylin.security.acl.default-role}" />
 						</bean>
 					</constructor-arg>
 				</bean>
@@ -103,8 +103,8 @@
 							<constructor-arg ref="ldapSource" />
 							<property name="userSearch">
 								<bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
-									<constructor-arg index="0" value="${ldap.service.searchBase}" />
-									<constructor-arg index="1" value="${ldap.service.searchPattern}" />
+									<constructor-arg index="0" value="${kylin.security.ldap.service-search-base}" />
+									<constructor-arg index="1" value="${kylin.security.ldap.service-search-pattern}" />
 									<constructor-arg index="2" ref="ldapSource" />
 								</bean>
 							</property>
@@ -113,9 +113,9 @@
 					<constructor-arg>
 						<bean class="org.apache.kylin.rest.security.AuthoritiesPopulator">
 							<constructor-arg index="0" ref="ldapSource" />
-							<constructor-arg index="1" value="${ldap.service.groupSearchBase}" />
-							<constructor-arg index="2" value="${acl.adminRole}" />
-							<constructor-arg index="3" value="${acl.defaultRole}" />
+							<constructor-arg index="1" value="${kylin.security.ldap.service-group-search-base}" />
+							<constructor-arg index="2" value="${kylin.security.acl.admin-role}" />
+							<constructor-arg index="3" value="${kylin.security.acl.default-role}" />
 						</bean>
 					</constructor-arg>
 				</bean>
@@ -288,7 +288,7 @@
 							<property name="idpDiscoveryEnabled" value="false"/>
 						</bean>
 					</property>
-					<property name="entityBaseURL" value = "${saml.metadata.entityBaseURL}"/>
+					<property name="entityBaseURL" value = "${kylin.security.saml.metadata-entity-base-url}"/>
 				</bean>
 			</constructor-arg>
 		</bean>
@@ -331,14 +331,14 @@
 
 		<bean id="ldapUserAuthoritiesPopulator" class="org.apache.kylin.rest.security.AuthoritiesPopulator">
 			<constructor-arg index="0" ref="ldapSource" />
-			<constructor-arg index="1" value="${ldap.user.groupSearchBase}" />
-			<constructor-arg index="2" value="${acl.adminRole}" />
-			<constructor-arg index="3" value="${acl.defaultRole}" />
+			<constructor-arg index="1" value="${kylin.security.ldap.user-group-search-base}" />
+			<constructor-arg index="2" value="${kylin.security.acl.admin-role}" />
+			<constructor-arg index="3" value="${kylin.security.acl.default-role}" />
 		</bean>
 
 		<bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
-			<constructor-arg index="0" value="${ldap.user.searchBase}" />
-			<constructor-arg index="1" value="${ldap.user.searchPattern}" />
+			<constructor-arg index="0" value="${kylin.security.ldap.user-search-base}" />
+			<constructor-arg index="1" value="${kylin.security.ldap.user-search-pattern}" />
 			<constructor-arg index="2" ref="ldapSource" />
 		</bean>
 
@@ -370,11 +370,11 @@
 		
 		<!-- Provider of a SAML Context behind a LoadBanlancer or reverse proxy -->
 		<bean id="contextProvider" class="org.springframework.security.saml.context.SAMLContextProviderLB">
-			<property name="scheme" value="${saml.context.scheme}"/>
-			<property name="serverName" value="${saml.context.serverName}"/>
-			<property name="serverPort" value="${saml.context.serverPort}"/>
+			<property name="scheme" value="${kylin.security.saml.context-scheme}"/>
+			<property name="serverName" value="${kylin.security.saml.context-server-name}"/>
+			<property name="serverPort" value="${kylin.security.saml.context-server-port}"/>
 			<property name="includeServerPortInRequestURL" value="false"/>
-			<property name="contextPath" value="${saml.context.contextPath}"/>
+			<property name="contextPath" value="${kylin.security.saml.context-path}"/>
 		</bean>
 		
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/webapp/app/js/controllers/cubes.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubes.js b/webapp/app/js/controllers/cubes.js
index f735fb8..b672d3f 100644
--- a/webapp/app/js/controllers/cubes.js
+++ b/webapp/app/js/controllers/cubes.js
@@ -683,7 +683,7 @@ var jobSubmitCtrl = function ($scope, $modalInstance, CubeService, MessageServic
 
 var streamingBuildCtrl = function ($scope, $modalInstance,kylinConfig) {
   $scope.kylinConfig = kylinConfig;
-  var streamingGuildeUrl = kylinConfig.getProperty("kylin.web.streaming.guide");
+  var streamingGuildeUrl = kylinConfig.getProperty("kylin.web.link-streaming-guide");
   $scope.streamingBuildUrl = streamingGuildeUrl?streamingGuildeUrl:"http://kylin.apache.org/";
 
   $scope.cancel = function () {

http://git-wip-us.apache.org/repos/asf/kylin/blob/2cca348c/webapp/app/js/services/kylinProperties.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/services/kylinProperties.js b/webapp/app/js/services/kylinProperties.js
index 1a12357..645ed2f 100644
--- a/webapp/app/js/services/kylinProperties.js
+++ b/webapp/app/js/services/kylinProperties.js
@@ -65,7 +65,7 @@ KylinApp.service('kylinConfig', function (AdminService, $log) {
   }
 
   this.getHiveLimit = function () {
-    this.hiveLimit = this.getProperty("kylin.web.hive.limit");
+    this.hiveLimit = this.getProperty("kylin.web.hive-limit");
     if (!this.hiveLimit) {
       return 20;
     }
@@ -91,9 +91,9 @@ KylinApp.service('kylinConfig', function (AdminService, $log) {
   this.initWebConfigInfo = function () {
 
     try {
-      Config.reference_links.hadoop.link = this.getProperty("kylin.web.hadoop").trim();
-      Config.reference_links.diagnostic.link = this.getProperty("kylin.web.diagnostic").trim();
-      Config.contact_mail = this.getProperty("kylin.web.contact_mail").trim();
+      Config.reference_links.hadoop.link = this.getProperty("kylin.web.link-hadoop").trim();
+      Config.reference_links.diagnostic.link = this.getProperty("kylin.web.link-diagnostic").trim();
+      Config.contact_mail = this.getProperty("kylin.web.contact-mail").trim();
       var doc_length = this.getProperty("kylin.web.help.length").trim();
       for (var i = 0; i < doc_length; i++) {
         var _doc = {};