mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
[ZEPPELIN-2278] Env variable to configure Npm registry
This commit is contained in:
parent
641863d563
commit
56fab25ff9
8 changed files with 41 additions and 7 deletions
|
|
@ -39,6 +39,7 @@ REM set ZEPPELIN_IDENT_STRING REM A string representing this instance of zep
|
|||
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_HELIUM_NPM_REGISTRY REM Remote Npm registry for Helium dependency loader
|
||||
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?
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@
|
|||
# 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_HELIUM_NPM_REGISTRY # Remote Npm registry for Helium dependency loader
|
||||
# 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
|
||||
|
|
|
|||
|
|
@ -251,6 +251,12 @@
|
|||
<description>Local repository for dependency loader</description>
|
||||
</property>
|
||||
|
||||
<property>
|
||||
<name>zeppelin.helium.npm.registry</name>
|
||||
<value>http://registry.npmjs.org/</value>
|
||||
<description>Remote Npm registry for Helium dependency loader</description>
|
||||
</property>
|
||||
|
||||
<property>
|
||||
<name>zeppelin.interpreters</name>
|
||||
<value>org.apache.zeppelin.spark.SparkInterpreter,org.apache.zeppelin.spark.PySparkInterpreter,org.apache.zeppelin.rinterpreter.RRepl,org.apache.zeppelin.rinterpreter.KnitR,org.apache.zeppelin.spark.SparkRInterpreter,org.apache.zeppelin.spark.SparkSqlInterpreter,org.apache.zeppelin.spark.DepInterpreter,org.apache.zeppelin.markdown.Markdown,org.apache.zeppelin.angular.AngularInterpreter,org.apache.zeppelin.shell.ShellInterpreter,org.apache.zeppelin.file.HDFSFileInterpreter,org.apache.zeppelin.flink.FlinkInterpreter,,org.apache.zeppelin.python.PythonInterpreter,org.apache.zeppelin.python.PythonInterpreterPandasSql,org.apache.zeppelin.python.PythonCondaInterpreter,org.apache.zeppelin.python.PythonDockerInterpreter,org.apache.zeppelin.lens.LensInterpreter,org.apache.zeppelin.ignite.IgniteInterpreter,org.apache.zeppelin.ignite.IgniteSqlInterpreter,org.apache.zeppelin.cassandra.CassandraInterpreter,org.apache.zeppelin.geode.GeodeOqlInterpreter,org.apache.zeppelin.jdbc.JDBCInterpreter,org.apache.zeppelin.kylin.KylinInterpreter,org.apache.zeppelin.elasticsearch.ElasticsearchInterpreter,org.apache.zeppelin.scalding.ScaldingInterpreter,org.apache.zeppelin.alluxio.AlluxioInterpreter,org.apache.zeppelin.hbase.HbaseInterpreter,org.apache.zeppelin.livy.LivySparkInterpreter,org.apache.zeppelin.livy.LivyPySparkInterpreter,org.apache.zeppelin.livy.LivyPySpark3Interpreter,org.apache.zeppelin.livy.LivySparkRInterpreter,org.apache.zeppelin.livy.LivySparkSQLInterpreter,org.apache.zeppelin.bigquery.BigQueryInterpreter,org.apache.zeppelin.beam.BeamInterpreter,org.apache.zeppelin.pig.PigInterpreter,org.apache.zeppelin.pig.PigQueryInterpreter,org.apache.zeppelin.scio.ScioInterpreter</value>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ If both are defined, then the **environment variables** will take priority.
|
|||
<td><h6 class="properties">zeppelin.server.port</h6></td>
|
||||
<td>8080</td>
|
||||
<td>Zeppelin server port </br>
|
||||
<span style="font-style:italic; color: gray"> Note: Please make sure you're not using the same port with
|
||||
<span style="font-style:italic; color: gray"> Note: Please make sure you're not using the same port with
|
||||
<a href="https://zeppelin.apache.org/contribution/webapplication.html#dev-mode" target="_blank">Zeppelin web application development port</a> (default: 9000).</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -281,6 +281,12 @@ If both are defined, then the **environment variables** will take priority.
|
|||
<td>local-repo</td>
|
||||
<td>Local repository for dependency loader.<br>ex)visualiztion modules of npm.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h6 class="properties">ZEPPELIN_HELIUM_NPM_REGISTRY</h6></td>
|
||||
<td><h6 class="properties">zeppelin.helium.npm.registry</h6></td>
|
||||
<td>http://registry.npmjs.org/</td>
|
||||
<td>Remote Npm registry for Helium dependency loader</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><h6 class="properties">ZEPPELIN_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE</h6></td>
|
||||
<td><h6 class="properties">zeppelin.websocket.max.text.message.size</h6></td>
|
||||
|
|
|
|||
|
|
@ -114,12 +114,14 @@ public class ZeppelinServer extends Application {
|
|||
* packaged into binary package.
|
||||
*/
|
||||
heliumBundleFactory = new HeliumBundleFactory(
|
||||
conf,
|
||||
new File(conf.getRelativeDir(ConfVars.ZEPPELIN_DEP_LOCALREPO)),
|
||||
new File(conf.getRelativeDir("lib/node_modules/zeppelin-tabledata")),
|
||||
new File(conf.getRelativeDir("lib/node_modules/zeppelin-vis")),
|
||||
new File(conf.getRelativeDir("lib/node_modules/zeppelin-spell")));
|
||||
} else {
|
||||
heliumBundleFactory = new HeliumBundleFactory(
|
||||
conf,
|
||||
new File(conf.getRelativeDir(ConfVars.ZEPPELIN_DEP_LOCALREPO)),
|
||||
new File(conf.getRelativeDir("zeppelin-web/src/app/tabledata")),
|
||||
new File(conf.getRelativeDir("zeppelin-web/src/app/visualization")),
|
||||
|
|
@ -410,4 +412,3 @@ public class ZeppelinServer extends Application {
|
|||
return !new File(conf.getRelativeDir("zeppelin-web")).isDirectory();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -424,6 +424,10 @@ public class ZeppelinConfiguration extends XMLConfiguration {
|
|||
return getRelativeDir(ConfVars.ZEPPELIN_HELIUM_REGISTRY);
|
||||
}
|
||||
|
||||
public String getHeliumNpmRegistry() {
|
||||
return getString(ConfVars.ZEPPELIN_HELIUM_NPM_REGISTRY);
|
||||
}
|
||||
|
||||
public String getNotebookAuthorizationPath() {
|
||||
return getRelativeDir(String.format("%s/notebook-authorization.json", getConfDir()));
|
||||
}
|
||||
|
|
@ -633,6 +637,7 @@ public class ZeppelinConfiguration extends XMLConfiguration {
|
|||
ZEPPELIN_CONF_DIR("zeppelin.conf.dir", "conf"),
|
||||
ZEPPELIN_DEP_LOCALREPO("zeppelin.dep.localrepo", "local-repo"),
|
||||
ZEPPELIN_HELIUM_REGISTRY("zeppelin.helium.registry", "helium," + HELIUM_PACKAGE_DEFAULT_URL),
|
||||
ZEPPELIN_HELIUM_NPM_REGISTRY("zeppelin.helium.npm.registry", "http://registry.npmjs.org/"),
|
||||
// Allows a way to specify a ',' separated list of allowed origins for rest and websockets
|
||||
// i.e. http://localhost:8080
|
||||
ZEPPELIN_ALLOWED_ORIGINS("zeppelin.server.allowed.origins", "*"),
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ import java.io.*;
|
|||
import java.net.URL;
|
||||
import java.util.*;
|
||||
|
||||
import org.apache.zeppelin.conf.ZeppelinConfiguration;
|
||||
|
||||
/**
|
||||
* Load helium visualization & spell
|
||||
*/
|
||||
|
|
@ -40,7 +42,6 @@ public class HeliumBundleFactory {
|
|||
Logger logger = LoggerFactory.getLogger(HeliumBundleFactory.class);
|
||||
private final String NODE_VERSION = "v6.9.1";
|
||||
private final String NPM_VERSION = "3.10.8";
|
||||
private final String DEFAULT_NPM_REGISTRY_URL = "http://registry.npmjs.org/";
|
||||
public static final String HELIUM_LOCAL_REPO = "helium-bundle";
|
||||
public static final String HELIUM_BUNDLE_CACHE = "helium.bundle.cache.js";
|
||||
public static final String HELIUM_BUNDLE = "helium.bundle.js";
|
||||
|
|
@ -52,9 +53,11 @@ public class HeliumBundleFactory {
|
|||
|
||||
private final FrontendPluginFactory frontEndPluginFactory;
|
||||
private final File workingDirectory;
|
||||
private ZeppelinConfiguration conf;
|
||||
private File tabledataModulePath;
|
||||
private File visualizationModulePath;
|
||||
private File spellModulePath;
|
||||
private String defaultNpmRegistryUrl;
|
||||
private Gson gson;
|
||||
private boolean nodeAndNpmInstalled = false;
|
||||
|
||||
|
|
@ -64,18 +67,23 @@ public class HeliumBundleFactory {
|
|||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
|
||||
public HeliumBundleFactory(
|
||||
ZeppelinConfiguration conf,
|
||||
File moduleDownloadPath,
|
||||
File tabledataModulePath,
|
||||
File visualizationModulePath,
|
||||
File spellModulePath) throws TaskRunnerException {
|
||||
this(moduleDownloadPath);
|
||||
this(conf, moduleDownloadPath);
|
||||
this.tabledataModulePath = tabledataModulePath;
|
||||
this.visualizationModulePath = visualizationModulePath;
|
||||
this.spellModulePath = spellModulePath;
|
||||
}
|
||||
|
||||
public HeliumBundleFactory(File moduleDownloadPath) throws TaskRunnerException {
|
||||
public HeliumBundleFactory(
|
||||
ZeppelinConfiguration conf,
|
||||
File moduleDownloadPath) throws TaskRunnerException {
|
||||
this.workingDirectory = new File(moduleDownloadPath, HELIUM_LOCAL_REPO);
|
||||
this.conf = conf;
|
||||
this.defaultNpmRegistryUrl = conf.getHeliumNpmRegistry();
|
||||
File installDirectory = workingDirectory;
|
||||
|
||||
frontEndPluginFactory = new FrontendPluginFactory(
|
||||
|
|
@ -412,7 +420,7 @@ public class HeliumBundleFactory {
|
|||
|
||||
private void npmCommand(String args, Map<String, String> env) throws TaskRunnerException {
|
||||
installNodeAndNpm();
|
||||
NpmRunner npm = frontEndPluginFactory.getNpmRunner(getProxyConfig(), DEFAULT_NPM_REGISTRY_URL);
|
||||
NpmRunner npm = frontEndPluginFactory.getNpmRunner(getProxyConfig(), defaultNpmRegistryUrl);
|
||||
npm.execute(args, env);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,10 +30,13 @@ import java.net.URL;
|
|||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.zeppelin.conf.ZeppelinConfiguration;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class HeliumBundleFactoryTest {
|
||||
private File tmpDir;
|
||||
private ZeppelinConfiguration conf;
|
||||
private HeliumBundleFactory hbf;
|
||||
|
||||
@Before
|
||||
|
|
@ -46,7 +49,10 @@ public class HeliumBundleFactoryTest {
|
|||
String resDir = new File(res.getFile()).getParent();
|
||||
File moduleDir = new File(resDir + "/../../../../zeppelin-web/src/app/");
|
||||
|
||||
hbf = new HeliumBundleFactory(tmpDir,
|
||||
conf = new ZeppelinConfiguration();
|
||||
|
||||
hbf = new HeliumBundleFactory(conf,
|
||||
tmpDir,
|
||||
new File(moduleDir, "tabledata"),
|
||||
new File(moduleDir, "visualization"),
|
||||
new File(moduleDir, "spell"));
|
||||
|
|
|
|||
Loading…
Reference in a new issue