[ZEPPELIN-2403] merge widget and type

This commit is contained in:
Tinkoff DWH 2017-05-22 16:32:13 +05:00
parent ca1e2bf760
commit 10ce996a10
41 changed files with 138 additions and 475 deletions

View file

@ -9,7 +9,6 @@
"propertyName": "alluxio.master.hostname",
"defaultValue": "localhost",
"description": "Alluxio master hostname",
"widget": "input",
"type": "string"
},
"alluxio.master.port": {
@ -17,7 +16,6 @@
"propertyName": "alluxio.master.port",
"defaultValue": "19998",
"description": "Alluxio master port",
"widget": "input",
"type": "number"
}
},

View file

@ -20,15 +20,13 @@
"propertyName": "zeppelin.scio.argz",
"defaultValue": "--runner=InProcessPipelineRunner",
"description": "Scio interpreter wide arguments",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"zeppelin.scio.maxResult": {
"envName": "ZEPPELIN_SCIO_MAXRESULT",
"propertyName": "zeppelin.scio.maxResult",
"defaultValue": "1000",
"description": "Max number of SCollection results to display.",
"widget": "input",
"type": "number"
}
},

View file

@ -9,7 +9,6 @@
"propertyName": "zeppelin.bigquery.project_id",
"defaultValue": " ",
"description": "Google Project ID",
"widget": "input",
"type": "string"
},
"zeppelin.bigquery.wait_time": {
@ -17,7 +16,6 @@
"propertyName": "zeppelin.bigquery.wait_time",
"defaultValue": "5000",
"description": "Query timeout in Milliseconds",
"widget": "input",
"type": "number"
},
"zeppelin.bigquery.max_no_of_rows": {
@ -25,7 +23,6 @@
"propertyName": "zeppelin.bigquery.max_no_of_rows",
"defaultValue": "100000",
"description": "Maximum number of rows to fetch from BigQuery",
"widget": "input",
"type": "number"
}
},

View file

@ -9,15 +9,13 @@
"propertyName": "cassandra.hosts",
"defaultValue": "localhost",
"description": "Comma separated Cassandra hosts (DNS name or IP address). Default = localhost. Ex: '192.168.0.12,node2,node3'",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"cassandra.native.port": {
"envName": null,
"propertyName": "cassandra.native.port",
"defaultValue": "9042",
"description": "Cassandra native port. Default = 9042",
"widget": "input",
"type": "number"
},
"cassandra.protocol.version": {
@ -25,7 +23,6 @@
"propertyName": "cassandra.protocol.version",
"defaultValue": "4",
"description": "Cassandra protocol version. Default = 4",
"widget": "input",
"type": "string"
},
"cassandra.cluster": {
@ -33,7 +30,6 @@
"propertyName": "cassandra.cluster",
"defaultValue": "Test Cluster",
"description": "Cassandra cluster name. Default = 'Test Cluster'",
"widget": "input",
"type": "string"
},
"cassandra.keyspace": {
@ -41,7 +37,6 @@
"propertyName": "cassandra.keyspace",
"defaultValue": "system",
"description": "Cassandra keyspace name. Default = 'system'",
"widget": "input",
"type": "string"
},
"cassandra.compression.protocol": {
@ -49,7 +44,6 @@
"propertyName": "cassandra.compression.protocol",
"defaultValue": "NONE",
"description": "Cassandra compression protocol. Available values: NONE, SNAPPY, LZ4. Default = NONE",
"widget": "input",
"type": "string"
},
"cassandra.credentials.username": {
@ -57,7 +51,6 @@
"propertyName": "cassandra.credentials.username",
"defaultValue": "none",
"description": "Cassandra credentials username. Default = 'none'",
"widget": "input",
"type": "string"
},
"cassandra.credentials.password": {
@ -65,7 +58,6 @@
"propertyName": "cassandra.credentials.password",
"defaultValue": "none",
"description": "Cassandra credentials password. Default = 'none'",
"widget": "password",
"type": "password"
},
"cassandra.load.balancing.policy": {
@ -73,7 +65,6 @@
"propertyName": "cassandra.load.balancing.policy",
"defaultValue": "DEFAULT",
"description": "Cassandra Load Balancing Policy. Default = new TokenAwarePolicy(new DCAwareRoundRobinPolicy())",
"widget": "input",
"type": "string"
},
"cassandra.retry.policy": {
@ -81,7 +72,6 @@
"propertyName": "cassandra.retry.policy",
"defaultValue": "DEFAULT",
"description": "Cassandra Retry Policy. Default = DefaultRetryPolicy.INSTANCE",
"widget": "input",
"type": "string"
},
"cassandra.reconnection.policy": {
@ -89,7 +79,6 @@
"propertyName": "cassandra.reconnection.policy",
"defaultValue": "DEFAULT",
"description": "Cassandra Reconnection Policy. Default = new ExponentialReconnectionPolicy(1000, 10 * 60 * 1000)",
"widget": "input",
"type": "string"
},
"cassandra.speculative.execution.policy": {
@ -97,7 +86,6 @@
"propertyName": "cassandra.speculative.execution.policy",
"defaultValue": "DEFAULT",
"description": "Cassandra Speculative Execution Policy. Default = NoSpeculativeExecutionPolicy.INSTANCE",
"widget": "input",
"type": "string"
},
"cassandra.interpreter.parallelism": {
@ -105,7 +93,6 @@
"propertyName": "cassandra.interpreter.parallelism",
"defaultValue": "10",
"description": "Cassandra interpreter parallelism.Default = 10",
"widget": "input",
"type": "number"
},
"cassandra.max.schema.agreement.wait.second": {
@ -113,7 +100,6 @@
"propertyName": "cassandra.max.schema.agreement.wait.second",
"defaultValue": "10",
"description": "Cassandra max schema agreement wait in second.Default = ProtocolOptions.DEFAULT_MAX_SCHEMA_AGREEMENT_WAIT_SECONDS",
"widget": "input",
"type": "number"
},
"cassandra.pooling.new.connection.threshold.local": {
@ -121,7 +107,6 @@
"propertyName": "cassandra.pooling.new.connection.threshold.local",
"defaultValue": "100",
"description": "Cassandra new connection threshold local. Protocol V2 and below default = 100 Protocol V3 and above default = 800",
"widget": "input",
"type": "number"
},
"cassandra.pooling.new.connection.threshold.remote": {
@ -129,7 +114,6 @@
"propertyName": "cassandra.pooling.new.connection.threshold.remote",
"defaultValue": "100",
"description": "Cassandra new connection threshold remove. Protocol V2 and below default = 100 Protocol V3 and above default = 200",
"widget": "input",
"type": "number"
},
"cassandra.pooling.core.connection.per.host.local": {
@ -137,7 +121,6 @@
"propertyName": "cassandra.pooling.core.connection.per.host.local",
"defaultValue": "2",
"description": "Cassandra core connection per host local. Protocol V2 and below default = 2 Protocol V3 and above default = 1",
"widget": "input",
"type": "number"
},
"cassandra.pooling.core.connection.per.host.remote": {
@ -145,7 +128,6 @@
"propertyName": "cassandra.pooling.core.connection.per.host.remote",
"defaultValue": "1",
"description": "Cassandra core connection per host remove. Protocol V2 and below default = 1 Protocol V3 and above default = 1",
"widget": "input",
"type": "number"
},
"cassandra.pooling.max.connection.per.host.local": {
@ -153,7 +135,6 @@
"propertyName": "cassandra.pooling.max.connection.per.host.local",
"defaultValue": "8",
"description": "Cassandra max connection per host local. Protocol V2 and below default = 8 Protocol V3 and above default = 1",
"widget": "input",
"type": "number"
},
"cassandra.pooling.max.connection.per.host.remote": {
@ -161,7 +142,6 @@
"propertyName": "cassandra.pooling.max.connection.per.host.remote",
"defaultValue": "2",
"description": "Cassandra max connection per host remote. Protocol V2 and below default = 2 Protocol V3 and above default = 1",
"widget": "input",
"type": "number"
},
"cassandra.pooling.max.request.per.connection.local": {
@ -169,7 +149,6 @@
"propertyName": "cassandra.pooling.max.request.per.connection.local",
"defaultValue": "1024",
"description": "Cassandra max request per connection local. Protocol V2 and below default = 128 Protocol V3 and above default = 1024",
"widget": "input",
"type": "number"
},
"cassandra.pooling.max.request.per.connection.remote": {
@ -177,7 +156,6 @@
"propertyName": "cassandra.pooling.max.request.per.connection.remote",
"defaultValue": "256",
"description": "Cassandra max request per connection remote. Protocol V2 and below default = 128 Protocol V3 and above default = 256",
"widget": "input",
"type": "number"
},
"cassandra.pooling.idle.timeout.seconds": {
@ -185,7 +163,6 @@
"propertyName": "cassandra.pooling.idle.timeout.seconds",
"defaultValue": "120",
"description": "Cassandra idle time out in seconds. Default = 120",
"widget": "input",
"type": "number"
},
"cassandra.pooling.pool.timeout.millisecs": {
@ -193,7 +170,6 @@
"propertyName": "cassandra.pooling.pool.timeout.millisecs",
"defaultValue": "5000",
"description": "Cassandra pool time out in millisecs. Default = 5000",
"widget": "input",
"type": "number"
},
"cassandra.pooling.heartbeat.interval.seconds": {
@ -201,7 +177,6 @@
"propertyName": "cassandra.pooling.heartbeat.interval.seconds",
"defaultValue": "30",
"description": "Cassandra pool heartbeat interval in secs. Default = 30",
"widget": "input",
"type": "number"
},
"cassandra.query.default.consistency": {
@ -209,7 +184,6 @@
"propertyName": "cassandra.query.default.consistency",
"defaultValue": "ONE",
"description": "Cassandra query default consistency level. Default = ONE",
"widget": "input",
"type": "string"
},
"cassandra.query.default.serial.consistency": {
@ -217,7 +191,6 @@
"propertyName": "cassandra.query.default.serial.consistency",
"defaultValue": "SERIAL",
"description": "Cassandra query default serial consistency level. Default = SERIAL",
"widget": "input",
"type": "string"
},
"cassandra.query.default.fetchSize": {
@ -225,7 +198,6 @@
"propertyName": "cassandra.query.default.fetchSize",
"defaultValue": "5000",
"description": "Cassandra query default fetch size. Default = 5000",
"widget": "input",
"type": "number"
},
"cassandra.socket.connection.timeout.millisecs": {
@ -233,7 +205,6 @@
"propertyName": "cassandra.socket.connection.timeout.millisecs",
"defaultValue": "5000",
"description": "Cassandra socket default connection timeout in millisecs. Default = 5000",
"widget": "input",
"type": "number"
},
"cassandra.socket.read.timeout.millisecs": {
@ -241,7 +212,6 @@
"propertyName": "cassandra.socket.read.timeout.millisecs",
"defaultValue": "12000",
"description": "Cassandra socket read timeout in millisecs. Default = 12000",
"widget": "input",
"type": "number"
},
"cassandra.socket.tcp.no_delay": {
@ -249,8 +219,7 @@
"propertyName": "cassandra.socket.tcp.no_delay",
"defaultValue": true,
"description": "Cassandra socket TCP no delay. Default = true",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"editor": {

View file

@ -62,16 +62,14 @@ Here is an example of `interpreter-setting.json` on your own interpreter.
"propertyName": "property.1.name",
"defaultValue": "propertyDefaultValue",
"description": "Property description",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"properties2": {
"envName": PROPERTIES_2,
"propertyName": null,
"defaultValue": "property2DefaultValue",
"description": "Property 2 description",
"widget": "textarea",
"type": "string"
"type": "textarea"
}, ...
},
"editor": {

View file

@ -87,14 +87,12 @@ So, copying `notebook` and `conf` directory should be enough.
"spark.executor.memory": {
"name": "spark.executor.memory",
"value": "",
"widget": "input",
"type": "string"
},
"zeppelin.spark.concurrentSQL": {
"name": "zeppelin.spark.concurrentSQL",
"value": false,
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
...
}
```

View file

@ -77,13 +77,11 @@ The role of registered interpreters, settings and interpreters group are describ
"spark.executor.memory": {
"defaultValue": "1g",
"description": "Executor memory per worker instance. ex) 512m, 32g",
"widget": "input",
"type": "string"
},
"spark.cores.max": {
"defaultValue": "",
"description": "Total number of cores to use. Empty value uses all available core.",
"widget": "inmput",
"type": "number"
},
},
@ -97,7 +95,6 @@ The role of registered interpreters, settings and interpreters group are describ
"zeppelin.spark.maxResult": {
"defaultValue": "1000",
"description": "Max number of Spark SQL result to display.",
"widget": "input",
"type": "number"
}
},
@ -162,13 +159,11 @@ The role of registered interpreters, settings and interpreters group are describ
"spark.cores.max": {
"name": "",
"value": "spark.cores.max",
"widget": "input",
"type": "number"
},
"spark.executor.memory": {
"name": "",
"value": "1g",
"widget": "input",
"type": "string"
}
},
@ -234,8 +229,7 @@ The role of registered interpreters, settings and interpreters group are describ
"propname": {
"name": "propname",
"value": "propvalue",
"widget": "textarea",
"type": "string"
"type": "textarea"
}
},
"interpreterGroup": [
@ -294,8 +288,7 @@ The role of registered interpreters, settings and interpreters group are describ
"propname": {
"name": "propname",
"value": "propvalue",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"interpreterGroup": [
{
@ -330,8 +323,7 @@ The role of registered interpreters, settings and interpreters group are describ
"propname": {
"name": "propname",
"value": "propvalue",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"interpreterGroup": [
{
@ -385,8 +377,7 @@ The role of registered interpreters, settings and interpreters group are describ
"propname": {
"name": "propname",
"value": "Otherpropvalue",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"interpreterGroup": [
{
@ -421,8 +412,7 @@ The role of registered interpreters, settings and interpreters group are describ
"propname": {
"name": "propname",
"value": "Otherpropvalue",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"interpreterGroup": [
{
@ -579,16 +569,16 @@ The role of registered interpreters, settings and interpreters group are describ
</table>
<br/>
### Get available widgets for property
### Get available types for property
<table class="table-configuration">
<col width="200">
<tr>
<td>Description</td>
<td>This ```GET``` method returns available widgets for interpreter property.</td>
<td>This ```GET``` method returns available types for interpreter property.</td>
</tr>
<tr>
<td>URL</td>
<td>```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/property/widgets```</td>
<td>```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/property/types```</td>
</tr>
<tr>
<td>Success code</td>
@ -604,18 +594,7 @@ The role of registered interpreters, settings and interpreters group are describ
<pre>
{
"status": "OK",
"body": [
{
"id": "textarea",
"widget": "textarea",
"type": "string"
},
{
"id": "string",
"widget": "input",
"type": "string"
},
...
"body": [ "textarea", "string", ...
]
}
</pre>

View file

@ -9,7 +9,6 @@
"propertyName": "elasticsearch.host",
"defaultValue": "localhost",
"description": "The host for Elasticsearch",
"widget": "input",
"type": "string"
},
"elasticsearch.port": {
@ -17,7 +16,6 @@
"propertyName": "elasticsearch.port",
"defaultValue": "9300",
"description": "The port for Elasticsearch",
"widget": "input",
"type": "number"
},
"elasticsearch.client.type": {
@ -25,7 +23,6 @@
"propertyName": "elasticsearch.client.type",
"defaultValue": "transport",
"description": "The type of client for Elasticsearch (transport or http)",
"widget": "input",
"type": "string"
},
"elasticsearch.cluster.name": {
@ -33,7 +30,6 @@
"propertyName": "elasticsearch.cluster.name",
"defaultValue": "elasticsearch",
"description": "The cluster name for Elasticsearch",
"widget": "input",
"type": "string"
},
"elasticsearch.result.size": {
@ -41,7 +37,6 @@
"propertyName": "elasticsearch.result.size",
"defaultValue": "10",
"description": "The size of the result set of a search query",
"widget": "input",
"type": "number"
},
"elasticsearch.basicauth.username": {
@ -49,7 +44,6 @@
"propertyName": "elasticsearch.basicauth.username",
"defaultValue": "",
"description": "Username for a basic authentication",
"widget": "input",
"type": "string"
},
"elasticsearch.basicauth.password": {
@ -57,7 +51,6 @@
"propertyName": "elasticsearch.basicauth.password",
"defaultValue": "",
"description": "Password for a basic authentication",
"widget": "password",
"type": "password"
}
},

View file

@ -9,7 +9,6 @@
"propertyName": "hdfs.url",
"defaultValue": "http://localhost:50070/webhdfs/v1/",
"description": "The URL for WebHDFS",
"widget": "input",
"type": "url"
},
"hdfs.user": {
@ -17,7 +16,6 @@
"propertyName": "hdfs.user",
"defaultValue": "hdfs",
"description": "The WebHDFS user",
"widget": "input",
"type": "string"
},
"hdfs.maxlength": {
@ -25,7 +23,6 @@
"propertyName": "hdfs.maxlength",
"defaultValue": "1000",
"description": "Maximum number of lines of results fetched",
"widget": "input",
"type": "number"
}
},

View file

@ -9,7 +9,6 @@
"propertyName": null,
"defaultValue": "local",
"description": "host name of running JobManager. 'local' runs flink in local mode.",
"widget": "input",
"type": "string"
},
"port": {
@ -17,7 +16,6 @@
"propertyName": null,
"defaultValue": "6123",
"description": "port of running JobManager.",
"widget": "input",
"type": "number"
}
},

View file

@ -9,7 +9,6 @@
"propertyName": "geode.locator.host",
"defaultValue": "localhost",
"description": "The Geode Locator Host.",
"widget": "input",
"type": "string"
},
"geode.locator.port": {
@ -17,7 +16,6 @@
"propertyName": "geode.locator.port",
"defaultValue": "10334",
"description": "The Geode Locator Port.",
"widget": "input",
"type": "number"
},
"geode.max.result": {
@ -25,7 +23,6 @@
"propertyName": "geode.max.result",
"defaultValue": "1000",
"description": "Max number of OQL result to display.",
"widget": "input",
"type": "number"
}
},

View file

@ -9,8 +9,7 @@
"propertyName": "GROOVY_CLASSES",
"defaultValue": "",
"description": "The path for custom groovy classes location. If empty `./interpreter/groovy/classes`",
"widget": "textarea",
"type": "string"
"type": "textarea"
}
}
}

View file

@ -9,22 +9,19 @@
"propertyName": "hbase.home",
"defaultValue": "/usr/lib/hbase/",
"description": "Installation directory of HBase",
"widget": "input",
"type": "string"
},
"hbase.ruby.sources": {
"propertyName": "hbase.ruby.sources",
"defaultValue": "lib/ruby",
"description": "Path to Ruby scripts relative to 'hbase.home'",
"widget": "input",
"type": "string"
},
"zeppelin.hbase.test.mode": {
"propertyName": "zeppelin.hbase.test.mode",
"defaultValue": false,
"description": "Disable checks for unit and manual tests",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"editor": {

View file

@ -9,7 +9,6 @@
"propertyName": "port",
"defaultValue": "jdbc:postgresql://localhost:5432/",
"description": "The URL for JDBC.",
"widget": "input",
"type": "string"
}
},

View file

@ -9,23 +9,20 @@
"propertyName": "ignite.addresses",
"defaultValue": "127.0.0.1:47500..47509",
"description": "Comma separated list of addresses (e.g. 127.0.0.1:47500 or 127.0.0.1:47500..47509)",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"ignite.clientMode": {
"envName": null,
"propertyName": "ignite.clientMode",
"defaultValue": true,
"description": "Client mode. true or false",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"ignite.config.url": {
"envName": null,
"propertyName": "ignite.config.url",
"defaultValue": "",
"description": "Configuration URL. Overrides all other settings.",
"widget": "input",
"type": "url"
},
"ignite.peerClassLoadingEnabled": {
@ -33,8 +30,7 @@
"propertyName": "ignite.peerClassLoadingEnabled",
"defaultValue": true,
"description": "Peer class loading enabled. True or false",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
}
},
@ -48,7 +44,6 @@
"propertyName": "ignite.jdbc.url",
"defaultValue": "jdbc:ignite:cfg://default-ignite-jdbc.xml",
"description": "Ignite JDBC connection URL.",
"widget": "input",
"type": "string"
}
}

View file

@ -9,7 +9,6 @@
"propertyName": "default.url",
"defaultValue": "jdbc:postgresql://localhost:5432/",
"description": "The URL for JDBC.",
"widget": "input",
"type": "string"
},
"default.user": {
@ -17,7 +16,6 @@
"propertyName": "default.user",
"defaultValue": "gpadmin",
"description": "The JDBC user name",
"widget": "input",
"type": "string"
},
"default.password": {
@ -25,7 +23,6 @@
"propertyName": "default.password",
"defaultValue": "",
"description": "The JDBC user password",
"widget": "password",
"type": "password"
},
"default.driver": {
@ -33,7 +30,6 @@
"propertyName": "default.driver",
"defaultValue": "org.postgresql.Driver",
"description": "JDBC Driver Name",
"widget": "input",
"type": "string"
},
"default.completer.schemaFilters": {
@ -41,23 +37,20 @@
"propertyName": "default.completer.schemaFilters",
"defaultValue": "",
"description": "Сomma separated schema (schema = catalog = database) filters to get metadata for completions. Supports '%' symbol is equivalent to any set of characters. (ex. prod_v_%,public%,info)",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"default.precode": {
"envName": null,
"propertyName": "zeppelin.jdbc.precode",
"defaultValue": "",
"description": "SQL which executes while opening connection",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"common.max_count": {
"envName": null,
"propertyName": "common.max_count",
"defaultValue": "1000",
"description": "Max number of SQL result to display.",
"widget": "input",
"type": "number"
},
"zeppelin.jdbc.auth.type": {
@ -65,7 +58,6 @@
"propertyName": "zeppelin.jdbc.auth.type",
"defaultValue": "",
"description": "If auth type is needed, Example: KERBEROS",
"widget": "input",
"type": "string"
},
"zeppelin.jdbc.concurrent.use": {
@ -73,15 +65,13 @@
"propertyName": "zeppelin.jdbc.concurrent.use",
"defaultValue": true,
"description": "Use parallel scheduler",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"zeppelin.jdbc.concurrent.max_connection": {
"envName": null,
"propertyName": "zeppelin.jdbc.concurrent.max_connection",
"defaultValue": "10",
"description": "Number of concurrent execution",
"widget": "input",
"type": "number"
},
"zeppelin.jdbc.keytab.location": {
@ -89,7 +79,6 @@
"propertyName": "zeppelin.jdbc.keytab.location",
"defaultValue": "",
"description": "Kerberos keytab location",
"widget": "input",
"type": "string"
},
"zeppelin.jdbc.principal": {
@ -97,7 +86,6 @@
"propertyName": "zeppelin.jdbc.principal",
"defaultValue": "",
"description": "Kerberos principal",
"widget": "input",
"type": "string"
}
},

View file

@ -9,7 +9,6 @@
"propertyName": "kylin.api.url",
"defaultValue": "http://localhost:7070/kylin/api/query",
"description": "Kylin API",
"widget": "input",
"type": "url"
},
"kylin.api.user": {
@ -17,7 +16,6 @@
"propertyName": "kylin.api.user",
"defaultValue": "ADMIN",
"description": "Kylin username",
"widget": "input",
"type": "string"
},
"kylin.api.password": {
@ -25,7 +23,6 @@
"propertyName": "kylin.api.password",
"defaultValue": "KYLIN",
"description": "Kylin password",
"widget": "password",
"type": "password"
},
"kylin.query.project": {
@ -33,15 +30,13 @@
"propertyName": "kylin.query.project",
"defaultValue": "learn_kylin",
"description": "Default Kylin project name",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"kylin.query.offset": {
"envName": null,
"propertyName": "kylin.query.offset",
"defaultValue": "0",
"description": "Kylin query offset",
"widget": "input",
"type": "number"
},
"kylin.query.limit": {
@ -49,7 +44,6 @@
"propertyName": "kylin.query.limit",
"defaultValue": "5000",
"description": "Kylin query limit",
"widget": "input",
"type": "number"
},
"kylin.query.ispartial": {
@ -57,8 +51,7 @@
"propertyName": "kylin.query.ispartial",
"defaultValue": true,
"description": "Kylin query partial flag, deprecated",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"editor": {

View file

@ -9,15 +9,13 @@
"propertyName": "zeppelin.lens.run.concurrent",
"defaultValue": true,
"description": "Run concurrent Lens Sessions",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"zeppelin.lens.maxThreads": {
"envName": null,
"propertyName": "zeppelin.lens.maxThreads",
"defaultValue": "10",
"description": "If concurrency is true then how many threads?",
"widget": "input",
"type": "number"
},
"zeppelin.lens.maxResults": {
@ -25,7 +23,6 @@
"propertyName": "zeppelin.lens.maxResults",
"defaultValue": "1000",
"description": "max number of rows to display",
"widget": "input",
"type": "number"
},
"lens.server.base.url": {
@ -33,7 +30,6 @@
"propertyName": "lens.server.base.url",
"defaultValue": "http://<hostname>:<port>/lensapi",
"description": "The URL for Lens Server",
"widget": "input",
"type": "url"
},
"lens.client.dbname": {
@ -41,7 +37,6 @@
"propertyName": "lens.client.dbname",
"defaultValue": "default",
"description": "The database schema name",
"widget": "input",
"type": "string"
},
"lens.query.enable.persistent.resultset": {
@ -49,15 +44,13 @@
"propertyName": "lens.query.enable.persistent.resultset",
"defaultValue": false,
"description": "Apache Lens to persist result in HDFS?",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"lens.session.cluster.user": {
"envName": null,
"propertyName": "lens.session.cluster.user",
"defaultValue": "default",
"description": "Hadoop cluster username",
"widget": "input",
"type": "string"
}
}

View file

@ -10,7 +10,6 @@
"propertyName": "zeppelin.livy.url",
"defaultValue": "http://localhost:8998",
"description": "The URL for Livy Server.",
"widget": "input",
"type": "url"
},
"zeppelin.livy.session.create_timeout": {
@ -18,113 +17,97 @@
"propertyName": "zeppelin.livy.session.create_timeout",
"defaultValue": "120",
"description": "Livy Server create session timeout (seconds).",
"widget": "input",
"type": "number"
},
"livy.spark.driver.cores": {
"propertyName": "livy.spark.driver.cores",
"defaultValue": "",
"description": "Driver cores. ex) 1, 2",
"widget": "input",
"type": "number"
},
"livy.spark.driver.memory": {
"propertyName": "livy.spark.driver.memory",
"defaultValue": "",
"description": "Driver memory. ex) 512m, 32g",
"widget": "input",
"type": "string"
},
"livy.spark.executor.instances": {
"propertyName": "livy.spark.executor.instances",
"defaultValue": "",
"description": "Executor instances. ex) 1, 4",
"widget": "input",
"type": "number"
},
"livy.spark.executor.cores": {
"propertyName": "livy.spark.executor.cores",
"defaultValue": "",
"description": "Num cores per executor. ex) 1, 4",
"widget": "input",
"type": "number"
},
"livy.spark.executor.memory": {
"propertyName": "livy.spark.executor.memory",
"defaultValue": "",
"description": "Executor memory per worker instance. ex) 512m, 32g",
"widget": "input",
"type": "string"
},
"livy.spark.dynamicAllocation.enabled": {
"propertyName": "livy.spark.dynamicAllocation.enabled",
"defaultValue": false,
"description": "Use dynamic resource allocation",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"livy.spark.dynamicAllocation.cachedExecutorIdleTimeout": {
"propertyName": "livy.spark.dynamicAllocation.cachedExecutorIdleTimeout",
"defaultValue": "",
"description": "Remove an executor which has cached data blocks",
"widget": "input",
"type": "string"
},
"livy.spark.dynamicAllocation.minExecutors": {
"propertyName": "livy.spark.dynamicAllocation.minExecutors",
"defaultValue": "",
"description": "Lower bound for the number of executors if dynamic allocation is enabled.",
"widget": "input",
"type": "number"
},
"livy.spark.dynamicAllocation.initialExecutors": {
"propertyName": "livy.spark.dynamicAllocation.initialExecutors",
"defaultValue": "",
"description": "Initial number of executors to run if dynamic allocation is enabled.",
"widget": "input",
"type": "number"
},
"livy.spark.dynamicAllocation.maxExecutors": {
"propertyName": "livy.spark.dynamicAllocation.maxExecutors",
"defaultValue": "",
"description": "Upper bound for the number of executors if dynamic allocation is enabled.",
"widget": "input",
"type": "number"
},
"zeppelin.livy.principal": {
"propertyName": "zeppelin.livy.principal",
"defaultValue": "",
"description": "Kerberos principal to authenticate livy",
"widget": "input",
"type": "string"
},
"zeppelin.livy.keytab": {
"propertyName": "zeppelin.livy.keytab",
"defaultValue": "",
"description": "Kerberos keytab to authenticate livy",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"zeppelin.livy.pull_status.interval.millis": {
"propertyName": "zeppelin.livy.pull_status.interval.millis",
"defaultValue": "1000",
"description": "The interval for checking paragraph execution status",
"widget": "input",
"type": "number"
},
"livy.spark.jars.packages": {
"propertyName": "livy.spark.jars.packages",
"defaultValue": "",
"description": "Adding extra libraries to livy interpreter",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"zeppelin.livy.displayAppInfo": {
"propertyName": "zeppelin.livy.displayAppInfo",
"defaultValue": false,
"description": "Whether display app info",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"option": {
@ -151,22 +134,19 @@
"propertyName": "zeppelin.livy.spark.sql.maxResult",
"defaultValue": "1000",
"description": "Max number of Spark SQL result to display.",
"widget": "input",
"type": "number"
},
"zeppelin.livy.spark.sql.field.truncate": {
"propertyName": "zeppelin.livy.spark.sql.field.truncate",
"defaultValue": true,
"description": "If true, truncate field values longer than 20 characters.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"zeppelin.livy.concurrentSQL": {
"propertyName": "zeppelin.livy.concurrentSQL",
"defaultValue": false,
"description": "Execute multiple SQL concurrently if set true.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"option": {

View file

@ -9,7 +9,6 @@
"propertyName": "markdown.parser.type",
"defaultValue": "pegdown",
"description": "Markdown Parser Type. Available values: pegdown, markdown4j. Default = pegdown",
"widget": "input",
"type": "string"
}
},

View file

@ -9,7 +9,6 @@
"propertyName": "zeppelin.pig.execType",
"defaultValue": "mapreduce",
"description": "local | mapreduce | tez",
"widget": "input",
"type": "string"
},
"zeppelin.pig.includeJobStats": {
@ -17,8 +16,7 @@
"propertyName": "zeppelin.pig.includeJobStats",
"defaultValue": false,
"description": "flag to include job stats in output",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"editor": {
@ -36,7 +34,6 @@
"propertyName": "zeppelin.pig.execType",
"defaultValue": "mapreduce",
"description": "local | mapreduce | tez",
"widget": "input",
"type": "string"
},
"zeppelin.pig.maxResult": {
@ -44,7 +41,6 @@
"propertyName": "zeppelin.pig.maxResult",
"defaultValue": "1000",
"description": "max row number for %pig.query",
"widget": "input",
"type": "number"
}
},

View file

@ -9,7 +9,6 @@
"propertyName": "zeppelin.python",
"defaultValue": "python",
"description": "Python directory. It is set to python by default.(assume python is in your $PATH)",
"widget": "input",
"type": "string"
},
"zeppelin.python.maxResult": {
@ -17,7 +16,6 @@
"propertyName": "zeppelin.python.maxResult",
"defaultValue": "1000",
"description": "Max number of dataframe rows to display.",
"widget": "input",
"type": "number"
}
},

View file

@ -7,25 +7,21 @@
"rhadoop.cmd": {
"envName": "HADOOP_CMD",
"defaultValue": "",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"rhadooop.streamingjar": {
"envName": "HADOOP_STREAMING",
"defaultValue": "",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"rscala.debug": {
"envName": "RSCALA_DEBUG",
"defaultValue": false,
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"rscala.timeout": {
"envName": "RSCALA_TIMEOUT",
"defaultValue": "60",
"widget": "input",
"type": "number"
}
}
@ -38,25 +34,21 @@
"rhadoop.cmd": {
"envName": "HADOOP_CMD",
"defaultValue": "",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"rhadooop.streamingjar": {
"envName": "HADOOP_STREAMING",
"defaultValue": "",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"rscala.debug": {
"envName": "RSCALA_DEBUG",
"defaultValue": false,
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"rscala.timeout": {
"envName": "RSCALA_TIMEOUT",
"defaultValue": "60",
"widget": "input",
"type": "number"
}
}

View file

@ -8,14 +8,12 @@
"envName": null,
"defaultValue": "--local --repl",
"description": "Arguments for scalding REPL",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"max.open.instances": {
"envName": null,
"defaultValue": "50",
"description": "Maximum number of open interpreter instances",
"widget": "input",
"type": "number"
}
}

View file

@ -9,7 +9,6 @@
"propertyName": "shell.command.timeout.millisecs",
"defaultValue": "60000",
"description": "Shell command time out in millisecs. Default = 60000",
"widget": "input",
"type": "number"
},
"zeppelin.shell.auth.type": {
@ -17,7 +16,6 @@
"propertyName": "zeppelin.shell.auth.type",
"defaultValue": "",
"description": "If auth type is needed, Example: KERBEROS",
"widget": "input",
"type": "string"
},
"zeppelin.shell.keytab.location": {
@ -25,7 +23,6 @@
"propertyName": "zeppelin.shell.keytab.location",
"defaultValue": "",
"description": "Kerberos keytab location",
"widget": "input",
"type": "string"
},
"zeppelin.shell.principal": {
@ -33,7 +30,6 @@
"propertyName": "zeppelin.shell.principal",
"defaultValue": "",
"description": "Kerberos principal",
"widget": "input",
"type": "string"
}
},

View file

@ -10,7 +10,6 @@
"propertyName": "spark.executor.memory",
"defaultValue": "",
"description": "Executor memory per worker instance. ex) 512m, 32g",
"widget": "input",
"type": "string"
},
"args": {
@ -18,23 +17,20 @@
"propertyName": null,
"defaultValue": "",
"description": "spark commandline args",
"widget": "textarea",
"type": "string"
"type": "textarea"
},
"zeppelin.spark.useHiveContext": {
"envName": "ZEPPELIN_SPARK_USEHIVECONTEXT",
"propertyName": "zeppelin.spark.useHiveContext",
"defaultValue": true,
"description": "Use HiveContext instead of SQLContext if it is true.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"spark.app.name": {
"envName": "SPARK_APP_NAME",
"propertyName": "spark.app.name",
"defaultValue": "Zeppelin",
"description": "The name of spark application.",
"widget": "input",
"type": "string"
},
"zeppelin.spark.printREPLOutput": {
@ -42,15 +38,13 @@
"propertyName": "zeppelin.spark.printREPLOutput",
"defaultValue": true,
"description": "Print REPL output",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"spark.cores.max": {
"envName": null,
"propertyName": "spark.cores.max",
"defaultValue": "",
"description": "Total number of cores to use. Empty value uses all available core.",
"widget": "input",
"type": "number"
},
"zeppelin.spark.maxResult": {
@ -58,7 +52,6 @@
"propertyName": "zeppelin.spark.maxResult",
"defaultValue": "1000",
"description": "Max number of Spark SQL result to display.",
"widget": "input",
"type": "number"
},
"master": {
@ -66,7 +59,6 @@
"propertyName": "spark.master",
"defaultValue": "local[*]",
"description": "Spark master uri. ex) spark://masterhost:7077",
"widget": "input",
"type": "string"
},
"zeppelin.spark.unSupportedVersionCheck": {
@ -74,8 +66,7 @@
"propertyName": "zeppelin.spark.enableSupportedVersionCheck",
"defaultValue": true,
"description": "Do not change - developer only setting, not for production use",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"editor": {
@ -93,23 +84,20 @@
"propertyName": "zeppelin.spark.concurrentSQL",
"defaultValue": false,
"description": "Execute multiple SQL concurrently if set true.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"zeppelin.spark.sql.stacktrace": {
"envName": "ZEPPELIN_SPARK_SQL_STACKTRACE",
"propertyName": "zeppelin.spark.sql.stacktrace",
"defaultValue": false,
"description": "Show full exception stacktrace for SQL queries if set to true.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"zeppelin.spark.maxResult": {
"envName": "ZEPPELIN_SPARK_MAXRESULT",
"propertyName": "zeppelin.spark.maxResult",
"defaultValue": "1000",
"description": "Max number of Spark SQL result to display.",
"widget": "input",
"type": "number"
},
"zeppelin.spark.importImplicit": {
@ -117,8 +105,7 @@
"propertyName": "zeppelin.spark.importImplicit",
"defaultValue": true,
"description": "Import implicits, UDF collection, and sql if set true. true by default.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"editor": {
@ -136,7 +123,6 @@
"propertyName": null,
"defaultValue": "local-repo",
"description": "local repository for dependency loader",
"widget": "input",
"type": "string"
},
"zeppelin.dep.additionalRemoteRepository": {
@ -144,8 +130,7 @@
"propertyName": null,
"defaultValue": "spark-packages,http://dl.bintray.com/spark-packages/maven,false;",
"description": "A list of 'id,remote-repository-URL,is-snapshot;' for each remote repository.",
"widget": "textarea",
"type": "string"
"type": "textarea"
}
},
"editor": {
@ -163,7 +148,6 @@
"propertyName": null,
"defaultValue": "python",
"description": "Python command to run pyspark with",
"widget": "input",
"type": "string"
}
},

View file

@ -10,7 +10,6 @@
"propertyName": "spark.executor.memory",
"defaultValue": "",
"description": "Executor memory per worker instance. ex) 512m, 32g",
"widget": "input",
"type": "string"
},
"args": {
@ -18,7 +17,6 @@
"propertyName": null,
"defaultValue": "",
"description": "spark commandline args",
"widget": "input",
"type": "string"
},
"zeppelin.spark.useHiveContext": {
@ -26,15 +24,13 @@
"propertyName": "zeppelin.spark.useHiveContext",
"defaultValue": true,
"description": "Use HiveContext instead of SQLContext if it is true.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"spark.app.name": {
"envName": "SPARK_APP_NAME",
"propertyName": "spark.app.name",
"defaultValue": "Zeppelin",
"description": "The name of spark application.",
"widget": "input",
"type": "string"
},
"zeppelin.spark.printREPLOutput": {
@ -42,15 +38,13 @@
"propertyName": "zeppelin.spark.printREPLOutput",
"defaultValue": true,
"description": "Print REPL output",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"spark.cores.max": {
"envName": null,
"propertyName": "spark.cores.max",
"defaultValue": "",
"description": "Total number of cores to use. Empty value uses all available core.",
"widget": "input",
"type": "number"
},
"zeppelin.spark.maxResult": {
@ -58,7 +52,6 @@
"propertyName": "zeppelin.spark.maxResult",
"defaultValue": "1000",
"description": "Max number of Spark SQL result to display.",
"widget": "input",
"type": "number"
},
"master": {
@ -66,7 +59,6 @@
"propertyName": "spark.master",
"defaultValue": "local[*]",
"description": "Spark master uri. ex) spark://masterhost:7077",
"widget": "input",
"type": "string"
},
"zeppelin.spark.unSupportedVersionCheck": {
@ -74,8 +66,7 @@
"propertyName": "zeppelin.spark.enableSupportedVersionCheck",
"defaultValue": true,
"description": "Do not change - developer only setting, not for production use",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"editor": {
@ -92,23 +83,20 @@
"propertyName": "zeppelin.spark.concurrentSQL",
"defaultValue": false,
"description": "Execute multiple SQL concurrently if set true.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"zeppelin.spark.sql.stacktrace": {
"envName": "ZEPPELIN_SPARK_SQL_STACKTRACE",
"propertyName": "zeppelin.spark.sql.stacktrace",
"defaultValue": false,
"description": "Show full exception stacktrace for SQL queries if set to true.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"zeppelin.spark.maxResult": {
"envName": "ZEPPELIN_SPARK_MAXRESULT",
"propertyName": "zeppelin.spark.maxResult",
"defaultValue": "1000",
"description": "Max number of Spark SQL result to display.",
"widget": "input",
"type": "number"
},
"zeppelin.spark.importImplicit": {
@ -116,8 +104,7 @@
"propertyName": "zeppelin.spark.importImplicit",
"defaultValue": true,
"description": "Import implicits, UDF collection, and sql if set true. true by default.",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
}
},
"editor": {
@ -134,7 +121,6 @@
"propertyName": null,
"defaultValue": "local-repo",
"description": "local repository for dependency loader",
"widget": "input",
"type": "string"
},
"zeppelin.dep.additionalRemoteRepository": {
@ -142,8 +128,7 @@
"propertyName": null,
"defaultValue": "spark-packages,http://dl.bintray.com/spark-packages/maven,false;",
"description": "A list of 'id,remote-repository-URL,is-snapshot;' for each remote repository.",
"widget": "textarea",
"type": "string"
"type": "textarea"
}
},
"editor": {
@ -160,7 +145,6 @@
"propertyName": null,
"defaultValue": "python",
"description": "Python command to run pyspark with",
"widget": "input",
"type": "string"
}
},
@ -178,15 +162,13 @@
"propertyName": "zeppelin.R.knitr",
"defaultValue": true,
"description": "whether use knitr or not",
"widget": "checkbox",
"type": "boolean"
"type": "checkbox"
},
"zeppelin.R.cmd": {
"envName": "ZEPPELIN_R_CMD",
"propertyName": "zeppelin.R.cmd",
"defaultValue": "R",
"description": "R repl path",
"widget": "input",
"type": "string"
},
"zeppelin.R.image.width": {
@ -194,7 +176,6 @@
"propertyName": "zeppelin.R.image.width",
"defaultValue": "100%",
"description": "",
"widget": "input",
"type": "number"
},
"zeppelin.R.render.options": {
@ -202,8 +183,7 @@
"propertyName": "zeppelin.R.render.options",
"defaultValue": "out.format = 'html', comment = NA, echo = FALSE, results = 'asis', message = F, warning = F",
"description": "",
"widget": "textarea",
"type": "string"
"type": "textarea"
}
},
"editor": {

View file

@ -25,33 +25,33 @@ public class DefaultInterpreterProperty {
private String propertyName;
private Object defaultValue;
private String description;
private String widget;
private String type;
public DefaultInterpreterProperty(String envName, String propertyName, Object defaultValue,
String description, String widget,
String type) {
String description, String type) {
this.envName = envName;
this.propertyName = propertyName;
this.defaultValue = defaultValue;
this.description = description;
this.widget = widget;
this.type = type;
}
public DefaultInterpreterProperty(Object defaultValue, String description,
String widget, String type) {
this(null, null, defaultValue, description, widget, type);
public DefaultInterpreterProperty(Object defaultValue, String description, String type) {
this(null, null, defaultValue, description, type);
}
public DefaultInterpreterProperty(Object defaultValue, String description) {
this(null, null, defaultValue, description, InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue());
this(null, null, defaultValue, description, InterpreterPropertyType.TEXTAREA.getValue());
}
public DefaultInterpreterProperty(String envName, String propertyName, String defaultValue) {
this(envName, propertyName, defaultValue, null, InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue());
this(envName, propertyName, defaultValue, null, InterpreterPropertyType.TEXTAREA.getValue());
}
public DefaultInterpreterProperty(String envName, String propertyName, String defaultValue,
String description) {
this(envName, propertyName, defaultValue, description,
InterpreterPropertyType.TEXTAREA.getValue());
}
public String getEnvName() {
@ -86,14 +86,6 @@ public class DefaultInterpreterProperty {
this.description = description;
}
public String getWidget() {
return widget;
}
public void setWidget(String widget) {
this.widget = widget;
}
public String getType() {
return type;
}
@ -131,6 +123,6 @@ public class DefaultInterpreterProperty {
@Override
public String toString() {
return String.format("{envName=%s, propertyName=%s, defaultValue=%s, description=%20s, " +
"widget=%s, type=%s}", envName, propertyName, defaultValue, description, widget, type);
"type=%s}", envName, propertyName, defaultValue, description, type);
}
}

View file

@ -23,13 +23,11 @@ package org.apache.zeppelin.interpreter;
public class InterpreterProperty {
private String name;
private Object value;
private String widget;
private String type;
public InterpreterProperty(String name, Object value, String widget, String type) {
public InterpreterProperty(String name, Object value, String type) {
this.name = name;
this.value = value;
this.widget = widget;
this.type = type;
}
@ -54,14 +52,6 @@ public class InterpreterProperty {
this.value = value;
}
public String getWidget() {
return widget;
}
public void setWidget(String widget) {
this.widget = widget;
}
public String getType() {
return type;
}
@ -72,6 +62,6 @@ public class InterpreterProperty {
@Override
public String toString() {
return String.format("{name=%s, value=%s, widget=%s, type=%s}", name, value, widget, type);
return String.format("{name=%s, value=%s, type=%s}", name, value, type);
}
}

View file

@ -17,16 +17,20 @@
package org.apache.zeppelin.interpreter;
import java.util.ArrayList;
import java.util.List;
/**
* Widgets of interpreter properties
* Types of interpreter properties
*/
public enum InterpreterPropertyType {
TEXTAREA("textarea"),
STRING("string"),
NUMBER("number"),
URL("url"),
PASSWORD("password"),
BOOLEAN("boolean");
CHECKBOX("checkbox");
private String value;
@ -46,4 +50,13 @@ public enum InterpreterPropertyType {
}
return null;
}
public static List<String> getTypes() {
List<String> types = new ArrayList<>();
InterpreterPropertyType[] values = values();
for (InterpreterPropertyType interpreterPropertyType : values) {
types.add(interpreterPropertyType.getValue());
}
return types;
}
}

View file

@ -1,48 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.zeppelin.interpreter;
/**
* Widgets of interpreter properties
*/
public enum InterpreterPropertyWidget {
TEXTAREA("textarea"),
INPUT("input"),
PASSWORD("password"),
CHECKBOX("checkbox");
private String value;
InterpreterPropertyWidget(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public static InterpreterPropertyWidget byValue(String value) {
for (InterpreterPropertyWidget e : values()) {
if (e.getValue().equals(value)) {
return e;
}
}
return null;
}
}

View file

@ -38,6 +38,7 @@ import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.zeppelin.annotation.ZeppelinApi;
import org.apache.zeppelin.dep.Repository;
import org.apache.zeppelin.interpreter.InterpreterException;
import org.apache.zeppelin.interpreter.InterpreterPropertyType;
import org.apache.zeppelin.interpreter.InterpreterSetting;
import org.apache.zeppelin.interpreter.InterpreterSettingManager;
import org.apache.zeppelin.rest.message.NewInterpreterSettingRequest;
@ -45,7 +46,6 @@ import org.apache.zeppelin.rest.message.RestartInterpreterRequest;
import org.apache.zeppelin.rest.message.UpdateInterpreterSettingRequest;
import org.apache.zeppelin.server.JsonResponse;
import org.apache.zeppelin.socket.NotebookServer;
import org.apache.zeppelin.utils.InterpreterPropertyWidgetUtils;
import org.apache.zeppelin.utils.SecurityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -295,13 +295,12 @@ public class InterpreterRestApi {
}
/**
* Get available widgets for property
* Get available types for property
*/
@GET
@Path("property/widgets")
public Response listInterpreterPropertyWidgets() {
return new JsonResponse<>(Status.OK, InterpreterPropertyWidgetUtils.getAvailableWidgets())
.build();
@Path("property/types")
public Response listInterpreterPropertyTypes() {
return new JsonResponse<>(Status.OK, InterpreterPropertyType.getTypes()).build();
}
}

View file

@ -1,74 +0,0 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.zeppelin.utils;
import java.util.ArrayList;
import java.util.List;
import org.apache.zeppelin.interpreter.InterpreterPropertyType;
import org.apache.zeppelin.interpreter.InterpreterPropertyWidget;
/**
* Utils for widget of interpreter property
*/
public class InterpreterPropertyWidgetUtils {
private static final List<Widget> availableWidgets = new ArrayList<>();
static {
availableWidgets.add(new Widget("textarea", InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue()));
availableWidgets.add(new Widget("number", InterpreterPropertyWidget.INPUT.getValue(),
InterpreterPropertyType.NUMBER.getValue()));
availableWidgets.add(new Widget("string", InterpreterPropertyWidget.INPUT.getValue(),
InterpreterPropertyType.STRING.getValue()));
availableWidgets.add(new Widget("url", InterpreterPropertyWidget.INPUT.getValue(),
InterpreterPropertyType.URL.getValue()));
availableWidgets.add(new Widget("password", InterpreterPropertyWidget.PASSWORD.getValue(),
InterpreterPropertyType.PASSWORD.getValue()));
availableWidgets.add(new Widget("checkbox", InterpreterPropertyWidget.CHECKBOX.getValue(),
InterpreterPropertyType.BOOLEAN.getValue()));
}
private static class Widget {
private String id;
private String widget;
private String type;
public Widget(String id, String widget, String type) {
this.id = id;
this.widget = widget;
this.type = type;
}
public String getId() {
return id;
}
public String getWidget() {
return widget;
}
public String getType() {
return type;
}
}
public static List<Widget> getAvailableWidgets() {
return availableWidgets;
}
}

View file

@ -46,7 +46,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.zeppelin.conf.ZeppelinConfiguration;
import org.apache.zeppelin.interpreter.InterpreterProperty;
import org.apache.zeppelin.interpreter.InterpreterPropertyType;
import org.apache.zeppelin.interpreter.InterpreterPropertyWidget;
import org.apache.zeppelin.interpreter.InterpreterSetting;
import org.apache.zeppelin.server.ZeppelinServer;
import org.hamcrest.Description;
@ -206,18 +205,14 @@ public abstract class AbstractTestRestApi {
if ("true".equals(System.getenv("CI"))) {
// set spark master and other properties
sparkProperties.put("master",
new InterpreterProperty("master", "local[2]", InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue()));
new InterpreterProperty("master", "local[2]", InterpreterPropertyType.TEXTAREA.getValue()));
sparkProperties.put("spark.cores.max",
new InterpreterProperty("spark.cores.max", "2", InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue()));
new InterpreterProperty("spark.cores.max", "2", InterpreterPropertyType.TEXTAREA.getValue()));
sparkProperties.put("zeppelin.spark.useHiveContext",
new InterpreterProperty("zeppelin.spark.useHiveContext", false, InterpreterPropertyWidget.CHECKBOX.getValue(),
InterpreterPropertyType.BOOLEAN.getValue()));
new InterpreterProperty("zeppelin.spark.useHiveContext", false, InterpreterPropertyType.CHECKBOX.getValue()));
// set spark home for pyspark
sparkProperties.put("spark.home",
new InterpreterProperty("spark.home", getSparkHome(), InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue()));
new InterpreterProperty("spark.home", getSparkHome(), InterpreterPropertyType.TEXTAREA.getValue()));
sparkIntpSetting.setProperties(sparkProperties);
pySpark = true;
@ -228,23 +223,18 @@ public abstract class AbstractTestRestApi {
if (sparkHome != null) {
if (System.getenv("SPARK_MASTER") != null) {
sparkProperties.put("master",
new InterpreterProperty("master", System.getenv("SPARK_MASTER"), InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue()));
new InterpreterProperty("master", System.getenv("SPARK_MASTER"), InterpreterPropertyType.TEXTAREA.getValue()));
} else {
sparkProperties.put("master",
new InterpreterProperty("master", "local[2]", InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue()));
new InterpreterProperty("master", "local[2]", InterpreterPropertyType.TEXTAREA.getValue()));
}
sparkProperties.put("spark.cores.max",
new InterpreterProperty("spark.cores.max", "2", InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue()));
new InterpreterProperty("spark.cores.max", "2", InterpreterPropertyType.TEXTAREA.getValue()));
// set spark home for pyspark
sparkProperties.put("spark.home",
new InterpreterProperty("spark.home", sparkHome, InterpreterPropertyWidget.TEXTAREA.getValue(),
InterpreterPropertyType.STRING.getValue()));
new InterpreterProperty("spark.home", sparkHome, InterpreterPropertyType.TEXTAREA.getValue()));
sparkProperties.put("zeppelin.spark.useHiveContext",
new InterpreterProperty("zeppelin.spark.useHiveContext", false, InterpreterPropertyWidget.CHECKBOX.getValue(),
InterpreterPropertyType.BOOLEAN.getValue()));
new InterpreterProperty("zeppelin.spark.useHiveContext", false, InterpreterPropertyType.CHECKBOX.getValue()));
pySpark = true;
sparkR = true;
}

View file

@ -111,7 +111,7 @@ public class InterpreterRestApiTest extends AbstractTestRestApi {
public void testSettingsCRUD() throws IOException {
// when: call create setting API
String rawRequest = "{\"name\":\"md2\",\"group\":\"md\"," +
"\"properties\":{\"propname\": {\"value\": \"propvalue\", \"name\": \"propname\", \"widget\": \"textarea\", \"type\": \"string\"}}," +
"\"properties\":{\"propname\": {\"value\": \"propvalue\", \"name\": \"propname\", \"type\": \"textarea\"}}," +
"\"interpreterGroup\":[{\"class\":\"org.apache.zeppelin.markdown.Markdown\",\"name\":\"md\"}]," +
"\"dependencies\":[]," +
"\"option\": { \"remote\": true, \"session\": false }}";
@ -139,8 +139,7 @@ public class InterpreterRestApiTest extends AbstractTestRestApi {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name", "propname2");
jsonObject.addProperty("value", "this is new prop");
jsonObject.addProperty("widget", "textarea");
jsonObject.addProperty("type", "string");
jsonObject.addProperty("type", "textarea");
jsonRequest.getAsJsonObject("properties").add("propname2", jsonObject);
PutMethod put = httpPut("/interpreter/setting/" + newSettingId, jsonRequest.toString());
LOG.info("testSettingCRUD update response\n" + put.getResponseBodyAsString());
@ -167,7 +166,7 @@ public class InterpreterRestApiTest extends AbstractTestRestApi {
String md2Dep = "org.apache.drill.exec:drill-jdbc:jar:1.6.0";
String reqBody1 = "{\"name\":\"" + md1Name + "\",\"group\":\"md\"," +
"\"properties\":{\"propname\": {\"value\": \"propvalue\", \"name\": \"propname\", \"widget\": \"textarea\", \"type\": \"string\"}}," +
"\"properties\":{\"propname\": {\"value\": \"propvalue\", \"name\": \"propname\", \"type\": \"textarea\"}}," +
"\"interpreterGroup\":[{\"class\":\"org.apache.zeppelin.markdown.Markdown\",\"name\":\"md\"}]," +
"\"dependencies\":[ {\n" +
" \"groupArtifactVersion\": \"" + md1Dep + "\",\n" +
@ -179,7 +178,7 @@ public class InterpreterRestApiTest extends AbstractTestRestApi {
post.releaseConnection();
String reqBody2 = "{\"name\":\"" + md2Name + "\",\"group\":\"md\"," +
"\"properties\": {\"propname\": {\"value\": \"propvalue\", \"name\": \"propname\", \"widget\": \"textarea\", \"type\": \"string\"}}," +
"\"properties\": {\"propname\": {\"value\": \"propvalue\", \"name\": \"propname\", \"type\": \"textarea\"}}," +
"\"interpreterGroup\":[{\"class\":\"org.apache.zeppelin.markdown.Markdown\",\"name\":\"md\"}]," +
"\"dependencies\":[ {\n" +
" \"groupArtifactVersion\": \"" + md2Dep + "\",\n" +

View file

@ -278,17 +278,17 @@ limitations under the License.
<tr ng-repeat="key in newInterpreterSetting.properties | sortByKey">
<td>{{key}}</td>
<td style="vertical-align: middle;">
<textarea ng-if="newInterpreterSetting.properties[key].widget === 'textarea' && newInterpreterSetting.properties[key].type === 'string'"
<textarea ng-if="newInterpreterSetting.properties[key].type === 'textarea'"
msd-elastic ng-model="newInterpreterSetting.properties[key].value"></textarea>
<input ng-if="newInterpreterSetting.properties[key].widget === 'input' && newInterpreterSetting.properties[key].type === 'string'"
<input ng-if="newInterpreterSetting.properties[key].type === 'string'"
type="text" msd-elastic ng-model="newInterpreterSetting.properties[key].value" />
<input ng-if="newInterpreterSetting.properties[key].widget === 'input' && newInterpreterSetting.properties[key].type === 'number'"
<input ng-if="newInterpreterSetting.properties[key].type === 'number'"
type="text" widget-number msd-elastic ng-model="newInterpreterSetting.properties[key].value" />
<input ng-if="newInterpreterSetting.properties[key].widget === 'input' && newInterpreterSetting.properties[key].type === 'url'"
<input ng-if="newInterpreterSetting.properties[key].type === 'url'"
type="text" msd-elastic ng-model="newInterpreterSetting.properties[key].value" />
<input ng-if="newInterpreterSetting.properties[key].widget === 'password' && newInterpreterSetting.properties[key].type === 'password'"
<input ng-if="newInterpreterSetting.properties[key].type === 'password'"
type="password" msd-elastic ng-model="newInterpreterSetting.properties[key].value" />
<input ng-if="newInterpreterSetting.properties[key].widget === 'checkbox' && newInterpreterSetting.properties[key].type === 'boolean'"
<input ng-if="newInterpreterSetting.properties[key].type === 'boolean'"
type="checkbox" msd-elastic ng-model="newInterpreterSetting.properties[key].value" />
</td>
<td style="vertical-align: middle;">
@ -305,7 +305,7 @@ limitations under the License.
<input pu-elastic-input pu-elastic-input-minwidth="180px"
ng-model="newInterpreterSetting.propertyKey" />
</td>
<td style="vertical-align: middle;" ng-switch on="newInterpreterSetting.propertyWidget.id">
<td style="vertical-align: middle;" ng-switch on="newInterpreterSetting.propertyType">
<textarea ng-switch-default msd-elastic ng-model="newInterpreterSetting.propertyValue"></textarea>
<input ng-switch-when="string" type="text" msd-elastic ng-model="newInterpreterSetting.propertyValue" />
<input ng-switch-when="number" type="text" widget-number msd-elastic ng-model="newInterpreterSetting.propertyValue" />
@ -314,8 +314,8 @@ limitations under the License.
<input ng-switch-when="checkbox" type="checkbox" msd-elastic ng-model="newInterpreterSetting.propertyValue" />
</td>
<td style="vertical-align: middle;">
<select msd-elastic ng-model="newInterpreterSetting.propertyWidget" ng-init="newInterpreterSetting.propertyWidget=interpreterPropertyWidgets[0]"
ng-options="item.id for item in interpreterPropertyWidgets" ng-change="defaultValueByWidget(newInterpreterSetting)">
<select msd-elastic ng-model="newInterpreterSetting.propertyType" ng-init="newInterpreterSetting.propertyType=interpreterPropertyTypes[0]"
ng-options="item for item in interpreterPropertyTypes" ng-change="defaultValueByType(newInterpreterSetting)">
</select>
<button class="btn btn-default btn-sm fa fa-plus" ng-click="addNewInterpreterProperty()">
</button>

View file

@ -26,7 +26,7 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou
$scope.showRepositoryInfo = false
$scope.searchInterpreter = ''
$scope._ = _
$scope.interpreterPropertyWidgets = []
$scope.interpreterPropertyTypes = []
ngToast.dismiss()
$scope.openPermissions = function () {
@ -144,16 +144,16 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou
}
let getAvailableInterpreterPropertyWidgets = function () {
$http.get(baseUrlSrv.getRestApiBase() + '/interpreter/property/widgets')
$http.get(baseUrlSrv.getRestApiBase() + '/interpreter/property/types')
.success(function (data, status, headers, config) {
$scope.interpreterPropertyWidgets = data.body
$scope.interpreterPropertyTypes = data.body
}).error(function (data, status, headers, config) {
console.log('Error %o %o', status, data.message)
})
}
let emptyNewProperty = function(object) {
angular.extend(object, {propertyValue: '', propertyKey: '', propertyWidget: $scope.interpreterPropertyWidgets[0]})
angular.extend(object, {propertyValue: '', propertyKey: '', propertyType: $scope.interpreterPropertyTypes[0]})
}
let emptyNewDependency = function (object) {
@ -194,8 +194,8 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou
}
}
$scope.defaultValueByWidget = function (setting) {
if (setting.propertyWidget.widget === 'checkbox' && setting.propertyWidget.type === 'boolean') {
$scope.defaultValueByType = function (setting) {
if (setting.propertyType === 'checkbox') {
setting.propertyValue = false
return
}
@ -429,7 +429,6 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou
properties[key] = {
value: intpInfo[key].defaultValue,
description: intpInfo[key].description,
widget: intpInfo[key].widget,
type: intpInfo[key].type
}
}
@ -509,7 +508,6 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou
for (let p in newSetting.properties) {
newProperties[p] = {
value: newSetting.properties[p].value,
widget: newSetting.properties[p].widget,
type: newSetting.properties[p].type,
name: p
}
@ -584,8 +582,7 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou
}
$scope.newInterpreterSetting.properties[$scope.newInterpreterSetting.propertyKey] = {
value: $scope.newInterpreterSetting.propertyValue,
widget: $scope.newInterpreterSetting.propertyWidget.widget,
type: $scope.newInterpreterSetting.propertyWidget.type
type: $scope.newInterpreterSetting.propertyType
}
emptyNewProperty($scope.newInterpreterSetting)
} else {
@ -598,7 +595,7 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou
}
setting.properties[setting.propertyKey] =
{value: setting.propertyValue, widget: setting.propertyWidget.widget, type: setting.propertyWidget.type}
{value: setting.propertyValue, type: setting.propertyType}
emptyNewProperty(setting)
}

View file

@ -401,27 +401,27 @@ limitations under the License.
<tr ng-repeat="key in setting.properties | sortByKey" >
<td style="vertical-align: middle;">{{key}}</td>
<td style="vertical-align: middle;">
<span ng-if="setting.properties[key].widget === 'textarea' && setting.properties[key].type === 'string'"
<span ng-if="setting.properties[key].type === 'textarea'"
editable-textarea="setting.properties[key].value" e-form="valueform" e-msd-elastic>
{{setting.properties[key].value | breakFilter}}
</span>
<span ng-if="setting.properties[key].widget === 'input' && setting.properties[key].type === 'string'"
<span ng-if="setting.properties[key].type === 'string'"
editable-text="setting.properties[key].value" e-form="valueform" e-msd-elastic>
{{setting.properties[key].value}}
</span>
<span ng-if="setting.properties[key].widget === 'input' && setting.properties[key].type === 'number'"
<span ng-if="setting.properties[key].type === 'number'"
editable-text="setting.properties[key].value" e-widget-number e-form="valueform" e-msd-elastic>
{{setting.properties[key].value}}
</span>
<span ng-if="setting.properties[key].widget === 'input' && setting.properties[key].type === 'url'"
<span ng-if="setting.properties[key].type === 'url'"
editable-text="setting.properties[key].value" e-form="valueform" e-msd-elastic>
<a ng-href="{{setting.properties[key].value}}">{{setting.properties[key].value}}</a>
</span>
<span ng-if="setting.properties[key].widget === 'password' && setting.properties[key].type === 'password'"
<span ng-if="setting.properties[key].type === 'password'"
editable-password="setting.properties[key].value" e-form="valueform" e-msd-elastic>
{{setting.properties[key].value ? '***' : ''}}
</span>
<span ng-if="setting.properties[key].widget === 'checkbox' && setting.properties[key].type === 'boolean'"
<span ng-if="setting.properties[key].type === 'checkbox'"
editable-checkbox="setting.properties[key].value" e-form="valueform" e-msd-elastic>
{{setting.properties[key].value}}
</span>
@ -438,7 +438,7 @@ limitations under the License.
pu-elastic-input pu-elastic-input-minwidth="180px" />
</td>
<td style="vertical-align: middle;" ng-switch on="setting.propertyWidget.id">
<td style="vertical-align: middle;" ng-switch on="setting.propertyType">
<textarea ng-switch-default msd-elastic ng-model="setting.propertyValue"></textarea>
<input ng-switch-when="string" type="text" msd-elastic ng-model="setting.propertyValue"/>
<input ng-switch-when="number" type="text" msd-elastic ng-model="setting.propertyValue" widget-number />
@ -447,8 +447,8 @@ limitations under the License.
<input ng-switch-when="checkbox" type="checkbox" msd-elastic ng-model="setting.propertyValue" />
</td>
<td style="vertical-align: middle;">
<select ng-model="setting.propertyWidget" ng-init="setting.propertyWidget=interpreterPropertyWidgets[0]"
ng-options="item.id for item in interpreterPropertyWidgets" ng-change="defaultValueByWidget(setting)">
<select ng-model="setting.propertyType" ng-init="setting.propertyType=interpreterPropertyTypes[0]"
ng-options="item for item in interpreterPropertyTypes" ng-change="defaultValueByType(setting)">
</select>
<button class="btn btn-default btn-sm fa fa-plus"

View file

@ -425,8 +425,7 @@ public class InterpreterSetting {
StringMap newProperty = new StringMap();
newProperty.put("name", entry.getKey());
newProperty.put("value", entry.getValue());
newProperty.put("widget", InterpreterPropertyWidget.TEXTAREA.getValue());
newProperty.put("type", InterpreterPropertyType.STRING.getValue());
newProperty.put("type", InterpreterPropertyType.TEXTAREA.getValue());
newProperties.put(entry.getKey().toString(), newProperty);
} else {
// already converted

View file

@ -175,17 +175,14 @@ public class InterpreterSettingManager {
Map<String, InterpreterProperty> properties = new HashMap();
for (String key : p.keySet()) {
StringMap<String> fields = (StringMap<String>) p.get(key);
// default 'text'
String widget = InterpreterPropertyWidget.TEXTAREA.getValue();
String type = InterpreterPropertyType.STRING.getValue();
String type = InterpreterPropertyType.TEXTAREA.getValue();
try {
widget = InterpreterPropertyWidget.byValue(fields.get("widget")).getValue();
type = InterpreterPropertyType.byValue(fields.get("type")).getValue();
} catch (Exception e) {
logger.warn("Incorrect widget or type of property {} in settings {}", key,
logger.warn("Incorrect type of property {} in settings {}", key,
setting.getId());
}
properties.put(key, new InterpreterProperty(key, fields.get("value"), widget, type));
properties.put(key, new InterpreterProperty(key, fields.get("value"), type));
}
setting.setProperties(properties);
@ -511,7 +508,7 @@ public class InterpreterSettingManager {
for (String key : defaultProperties.keySet()) {
DefaultInterpreterProperty defaultInterpreterProperty = defaultProperties.get(key);
properties.put(key, new InterpreterProperty(key, defaultInterpreterProperty.getValue(),
defaultInterpreterProperty.getWidget(), defaultInterpreterProperty.getType()));
defaultInterpreterProperty.getType()));
}
return properties;
}

View file

@ -338,8 +338,8 @@ public class InterpreterFactoryTest {
// check if interpreter instance is saved as Properties in conf/interpreter.json file
Map<String, InterpreterProperty> properties = new HashMap<String, InterpreterProperty>();
properties.put("key1", new InterpreterProperty("key1", "value1", "widget1", "type1"));
properties.put("key2", new InterpreterProperty("key2", "value2", "widget2", "type2"));
properties.put("key1", new InterpreterProperty("key1", "value1", "type1"));
properties.put("key2", new InterpreterProperty("key2", "value2", "type2"));
interpreterSettingManager.createNewSetting("newMock", "mock1", new LinkedList<Dependency>(), new InterpreterOption(false), properties);