Repository: zeppelin
Updated Branches:
  refs/heads/master e669895d9 -> cceeaef2a


[ZEPPELIN-2277] Env variable to configure maven central repo

### What is this PR for?
When deploying Zeppelin in private Cloud or within closed networks, it happens 
that Maven Central isn't directly reachable, so we want to configure our own 
proxy and do not have to wait for minutes long timeouts when importing external 
libraries. It is anyhow worth to let user configure maven central repo instead 
of hardcoding the URL.

### What type of PR is it?
Improvement

### How should this be tested?
Outline the steps to test the PR here.

### Questions:
* Does the licenses files need update?
* Is there breaking changes for older versions?
* Does this needs documentation?

Author: Andrea Peruffo <[email protected]>

Closes #2093 from andreaTP/mavenRepo and squashes the following commits:

af9accc [Andrea Peruffo] [ZEPPELIN-2277] Env variable to configure maven 
central repo


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

Branch: refs/heads/master
Commit: cceeaef2a4994ee5b40e8c2606ec7c81e7553d37
Parents: e669895
Author: Andrea Peruffo <[email protected]>
Authored: Fri Mar 3 11:44:15 2017 +0100
Committer: Lee moon soo <[email protected]>
Committed: Fri Mar 17 08:57:53 2017 -0700

----------------------------------------------------------------------
 conf/zeppelin-env.cmd.template                    |  1 +
 conf/zeppelin-env.sh.template                     |  1 +
 conf/zeppelin-site.xml.template                   |  6 ++++++
 docs/install/configuration.md                     | 10 ++++++++--
 .../main/java/org/apache/zeppelin/dep/Booter.java | 10 +++++++++-
 .../zeppelin/conf/ZeppelinConfiguration.java      | 18 ++++++++++++------
 6 files changed, 37 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/cceeaef2/conf/zeppelin-env.cmd.template
----------------------------------------------------------------------
diff --git a/conf/zeppelin-env.cmd.template b/conf/zeppelin-env.cmd.template
index 1bbde86..548a798 100644
--- a/conf/zeppelin-env.cmd.template
+++ b/conf/zeppelin-env.cmd.template
@@ -38,6 +38,7 @@ REM set ZEPPELIN_NOTEBOOK_S3_SSE               REM 
Server-side encryption enable
 REM set ZEPPELIN_IDENT_STRING                  REM A string representing this 
instance of zeppelin. $USER by default.
 REM set ZEPPELIN_NICENESS                      REM The scheduling priority for 
daemons. Defaults to 0.
 REM set ZEPPELIN_INTERPRETER_LOCALREPO         REM Local repository for 
interpreter's additional dependency loading
+REM set ZEPPELIN_INTERPRETER_DEP_MVNREPO       REM Maven principal repository 
for interpreter's additional dependency loading
 REM set ZEPPELIN_NOTEBOOK_STORAGE              REM Refers to pluggable 
notebook storage class, can have two classes simultaneously with a sync between 
them (e.g. local and remote).
 REM set ZEPPELIN_NOTEBOOK_ONE_WAY_SYNC         REM If there are multiple 
notebook storages, should we treat the first one as the only source of truth?
 

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/cceeaef2/conf/zeppelin-env.sh.template
----------------------------------------------------------------------
diff --git a/conf/zeppelin-env.sh.template b/conf/zeppelin-env.sh.template
index 3dccca6..5e32b15 100644
--- a/conf/zeppelin-env.sh.template
+++ b/conf/zeppelin-env.sh.template
@@ -43,6 +43,7 @@
 # export ZEPPELIN_IDENT_STRING                 # A string representing this 
instance of zeppelin. $USER by default.
 # export ZEPPELIN_NICENESS                     # The scheduling priority for 
daemons. Defaults to 0.
 # export ZEPPELIN_INTERPRETER_LOCALREPO         # Local repository for 
interpreter's additional dependency loading
+# export ZEPPELIN_INTERPRETER_DEP_MVNREPO       # Remote principal repository 
for interpreter's additional dependency loading
 # export ZEPPELIN_NOTEBOOK_STORAGE             # Refers to pluggable notebook 
storage class, can have two classes simultaneously with a sync between them 
(e.g. local and remote).
 # export ZEPPELIN_NOTEBOOK_ONE_WAY_SYNC        # If there are multiple 
notebook storages, should we treat the first one as the only source of truth?
 # export ZEPPELIN_NOTEBOOK_PUBLIC   # Make notebook public by default when 
created, private otherwise

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/cceeaef2/conf/zeppelin-site.xml.template
----------------------------------------------------------------------
diff --git a/conf/zeppelin-site.xml.template b/conf/zeppelin-site.xml.template
index f4625c4..d172942 100755
--- a/conf/zeppelin-site.xml.template
+++ b/conf/zeppelin-site.xml.template
@@ -240,6 +240,12 @@
 </property>
 
 <property>
+  <name>zeppelin.interpreter.dep.mvnRepo</name>
+  <value>http://repo1.maven.org/maven2/</value>
+  <description>Remote principal repository for interpreter's additional 
dependency loading</description>
+</property>
+
+<property>
   <name>zeppelin.dep.localrepo</name>
   <value>local-repo</value>
   <description>Local repository for dependency loader</description>

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/cceeaef2/docs/install/configuration.md
----------------------------------------------------------------------
diff --git a/docs/install/configuration.md b/docs/install/configuration.md
index 52018d1..ac41e6f 100644
--- a/docs/install/configuration.md
+++ b/docs/install/configuration.md
@@ -26,7 +26,7 @@ limitations under the License.
 ## Zeppelin Properties
 There are two locations you can configure Apache Zeppelin.
 
-* **Environment variables** can be defined 
`conf/zeppelin-env.sh`(`conf\zeppelin-env.cmd` for Windows). 
+* **Environment variables** can be defined 
`conf/zeppelin-env.sh`(`conf\zeppelin-env.cmd` for Windows).
 * **Java properties** can ba defined in `conf/zeppelin-site.xml`.
 
 If both are defined, then the **environment variables** will take priority.
@@ -258,6 +258,12 @@ If both are defined, then the **environment variables** 
will take priority.
     <td>Interpreter directory</td>
   </tr>
   <tr>
+    <td><h6 class="properties">ZEPPELIN_INTERPRETER_DEP_MVNREPO</h6></td>
+    <td><h6 class="properties">zeppelin.interpreter.dep.mvnRepo</h6></td>
+    <td>http://repo1.maven.org/maven2/</td>
+    <td>Remote principal repository for interpreter's additional dependency 
loading</td>
+  </tr>
+  <tr>
     <td><h6 class="properties">ZEPPELIN_INTERPRETER_OUTPUT_LIMIT</h6></td>
     <td><h6 class="properties">zeppelin.interpreter.output.limit</h6></td>
     <td>102400</td>
@@ -391,7 +397,7 @@ The following properties needs to be updated in the 
`zeppelin-site.xml` in order
 ### Obfuscating Passwords using the Jetty Password Tool
 
 Security best practices advise to not use plain text passwords and Jetty 
provides a password tool to help obfuscating the passwords used to access the 
KeyStore and TrustStore.
- 
+
 The Password tool documentation can be found 
[here](http://www.eclipse.org/jetty/documentation/current/configuring-security-secure-passwords.html).
 
 After using the tool:

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/cceeaef2/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Booter.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Booter.java 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Booter.java
index 0fd0ea2..5bc58ed 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Booter.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Booter.java
@@ -67,7 +67,15 @@ public class Booter {
   }
 
   public static RemoteRepository newCentralRepository() {
-    return new RemoteRepository("central", "default", 
"http://repo1.maven.org/maven2/";);
+    String mvnRepo = System.getenv("ZEPPELIN_INTERPRETER_DEP_MVNREPO");
+    if (mvnRepo == null) {
+      mvnRepo = System.getProperty("zeppelin.interpreter.dep.mvnRepo");
+    }
+    if (mvnRepo == null) {
+      mvnRepo = "http://repo1.maven.org/maven2/";;
+    }
+
+    return new RemoteRepository("central", "default", mvnRepo);
   }
 
   public static RemoteRepository newLocalRepository() {

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/cceeaef2/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
index 81507ba..facf89a 100644
--- 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
+++ 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/conf/ZeppelinConfiguration.java
@@ -108,7 +108,7 @@ public class ZeppelinConfiguration extends XMLConfiguration 
{
         conf = new ZeppelinConfiguration();
       }
     }
-    
+
     LOG.info("Server Host: " + conf.getServerAddress());
     if (conf.useSsl() == false) {
       LOG.info("Server Port: " + conf.getServerPort());
@@ -355,7 +355,7 @@ public class ZeppelinConfiguration extends XMLConfiguration 
{
   public String getNotebookDir() {
     return getString(ConfVars.ZEPPELIN_NOTEBOOK_DIR);
   }
-  
+
   public String getUser() {
     return getString(ConfVars.ZEPPELIN_NOTEBOOK_S3_USER);
   }
@@ -363,7 +363,7 @@ public class ZeppelinConfiguration extends XMLConfiguration 
{
   public String getBucketName() {
     return getString(ConfVars.ZEPPELIN_NOTEBOOK_S3_BUCKET);
   }
-  
+
   public String getEndpoint() {
     return getString(ConfVars.ZEPPELIN_NOTEBOOK_S3_ENDPOINT);
   }
@@ -375,7 +375,7 @@ public class ZeppelinConfiguration extends XMLConfiguration 
{
   public String getS3KMSKeyRegion() {
     return getString(ConfVars.ZEPPELIN_NOTEBOOK_S3_KMS_KEY_REGION);
   }
-  
+
   public String getS3EncryptionMaterialsProviderClass() {
     return getString(ConfVars.ZEPPELIN_NOTEBOOK_S3_EMP);
   }
@@ -449,6 +449,10 @@ public class ZeppelinConfiguration extends 
XMLConfiguration {
     return getRelativeDir(ConfVars.ZEPPELIN_INTERPRETER_LOCALREPO);
   }
 
+  public String getInterpreterMvnRepoPath() {
+    return getString(ConfVars.ZEPPELIN_INTERPRETER_DEP_MVNREPO);
+  }
+
   public String getRelativeDir(ConfVars c) {
     return getRelativeDir(getString(c));
   }
@@ -464,7 +468,7 @@ public class ZeppelinConfiguration extends XMLConfiguration 
{
   public boolean isWindowsPath(String path){
     return path.matches("^[A-Za-z]:\\\\.*");
   }
-  
+
   public boolean isAnonymousAllowed() {
     return getBoolean(ConfVars.ZEPPELIN_ANONYMOUS_ALLOWED);
   }
@@ -472,7 +476,7 @@ public class ZeppelinConfiguration extends XMLConfiguration 
{
   public boolean isNotebokPublic() {
     return getBoolean(ConfVars.ZEPPELIN_NOTEBOOK_PUBLIC);
   }
-  
+
   public String getConfDir() {
     return getString(ConfVars.ZEPPELIN_CONF_DIR);
   }
@@ -589,6 +593,8 @@ public class ZeppelinConfiguration extends XMLConfiguration 
{
     ZEPPELIN_INTERPRETER_JSON("zeppelin.interpreter.setting", 
"interpreter-setting.json"),
     ZEPPELIN_INTERPRETER_DIR("zeppelin.interpreter.dir", "interpreter"),
     ZEPPELIN_INTERPRETER_LOCALREPO("zeppelin.interpreter.localRepo", 
"local-repo"),
+    ZEPPELIN_INTERPRETER_DEP_MVNREPO("zeppelin.interpreter.dep.mvnRepo",
+        "http://repo1.maven.org/maven2/";),
     
ZEPPELIN_INTERPRETER_CONNECT_TIMEOUT("zeppelin.interpreter.connect.timeout", 
30000),
     ZEPPELIN_INTERPRETER_MAX_POOL_SIZE("zeppelin.interpreter.max.poolsize", 
10),
     ZEPPELIN_INTERPRETER_GROUP_ORDER("zeppelin.interpreter.group.order", 
"spark,md,angular,sh,"

Reply via email to