Configure Rexster
admin
(string | user object) The login name or a user object (see Nikita User documentation).config
(object) Object for Rexster configuration (xml) file
Example:
{
"ryba": {
"rexster": {
"admin": {
"name": "rexster"
"password": "rexster123"
},
"config": {
"http": {
[...]
}
}
}
}
}
module.exports = handler: ->
require('../titan/configure').handler.call @
{realm} = @config.ryba
titan_ctxs = @contexts 'ryba/titan'
throw Error "Cannot install Rexster without titan" unless titan_ctxs.length
{titan} = titan_ctxs[0].config.ryba
rexster = @config.ryba.rexster ?= {}
rexster.user ?= {}
rexster.user = name: rexster.user if typeof rexster.user is 'string'
rexster.user.name ?= 'rexster'
rexster.user.system ?= true
rexster.user.gid ?= 'rexster'
rexster.user.comment ?= 'Rexster User'
rexster.user.home ?= "#{titan.home}/rexhome"
# Group
rexster.group ?= {}
rexster.group = name: rexster.group if typeof rexster.group is 'string'
rexster.group.name ?= 'rexster'
rexster.group.system ?= true
# Kerberos config
rexster.krb5_user ?= {}
rexster.krb5_user.principal ?= "rexster/#{@config.host}@#{realm}"
rexster.krb5_user.keytab ?= '/etc/security/keytabs/rexster.service.keytab'
rexster.admin ?= {}
rexster.admin = name: rexster.admin if typeof rexster.admin is 'string'
rexster.admin.name ?= 'rexster'
rexster.admin.password ?= 'rexster123'
rexster.log_dir ?= '/var/log/rexster'
config = rexster.config ?= {}
config.http ?= {}
config.http['server-port'] ?= 8182
config.http['server-host'] ?= '0.0.0.0'
config.http['base-uri'] ?= "http://#{@config.host}"
config.http['web-root'] ?= 'public'
config.http['character-set'] ?= "UTF-8"
config.http['enable-jmx'] ?= false
config.http['enable-doghouse'] ?= true
config.http['max-post-size'] ?= 2097152
config.http['max-header-size'] ?= 8192
config.http['upload-timeout-millis'] ?= 30000
config.http['thread-pool'] ?=
worker:
"core-size": 8
"max-size": 8
kernal:
"core-size": 4
"max-size": 4
config.http['io-strategy'] ?= "leader-follower"
config.rexpro ?= {}
config.rexpro['server-port'] ?= 8184
config.rexpro['server-host'] ?= '0.0.0.0'
config.rexpro['session-max-idle'] ?= 1790000
config.rexpro['session-check-interval'] ?= 3000000
config.rexpro['connection-max-idle'] ?= 180000
config.rexpro['connection-check-interval'] ?= 3000000
config.rexpro['read-buffer'] ?= 65536
config.rexpro['enable-jmx'] ?= false
config.rexpro['thread-pool'] ?=
worker:
'core-size': 8
'max-size': 8
kernal:
'core-size': 4
'max-size': 4
config.rexpro['io-strategy'] ?= "leader-follower"
TODO: Security see https://github.com/tinkerpop/rexster/wiki/Rexster-Security
config['security'] ?=
authentication:
type: 'default'
if config.security.authentication.type is 'default'
config.security.authentication.configuration ?= {}
config.security.authentication.configuration.users ?= {}
config.security.authentication.configuration.users.user ?= []
config.security.authentication.configuration.users.user = [config.security.authentication.configuration.users.user] unless Array.isArray config.security.authentication.configuration.users.user
if config.security.authentication.configuration.users.user.length is 0
config.security.authentication.configuration.users.user.push
username: rexster.admin.name
password: rexster.admin.password
config['shutdown-port'] ?= 8183
config['shutdown-host'] = "127.0.0.1"
config['config-check-interval'] ?= 10000
config['script-engines'] ?= [
"script-engine":
"name": "gremlin-groovy"
"reset-threshold": 500
"imports": "com.tinkerpop.gremlin.*,com.tinkerpop.gremlin.java.*,com.tinkerpop.gremlin.pipes.filter.*,com.tinkerpop.gremlin.pipes.sideeffect.*,com.tinkerpop.gremlin.pipes.transform.*,com.tinkerpop.blueprints.*,com.tinkerpop.blueprints.impls.*,com.tinkerpop.blueprints.impls.tg.*,com.tinkerpop.blueprints.impls.neo4j.*,com.tinkerpop.blueprints.impls.neo4j.batch.*,com.tinkerpop.blueprints.impls.neo4j2.*,com.tinkerpop.blueprints.impls.neo4j2.batch.*,com.tinkerpop.blueprints.impls.orient.*,com.tinkerpop.blueprints.impls.orient.batch.*,com.tinkerpop.blueprints.impls.dex.*,com.tinkerpop.blueprints.impls.rexster.*,com.tinkerpop.blueprints.impls.sail.*,com.tinkerpop.blueprints.impls.sail.impls.*,com.tinkerpop.blueprints.util.*,com.tinkerpop.blueprints.util.io.*,com.tinkerpop.blueprints.util.io.gml.*,com.tinkerpop.blueprints.util.io.graphml.*,com.tinkerpop.blueprints.util.io.graphson.*,com.tinkerpop.blueprints.util.wrappers.*,com.tinkerpop.blueprints.util.wrappers.batch.*,com.tinkerpop.blueprints.util.wrappers.batch.cache.*,com.tinkerpop.blueprints.util.wrappers.event.*,com.tinkerpop.blueprints.util.wrappers.event.listener.*,com.tinkerpop.blueprints.util.wrappers.id.*,com.tinkerpop.blueprints.util.wrappers.partition.*,com.tinkerpop.blueprints.util.wrappers.readonly.*,com.tinkerpop.blueprints.oupls.sail.*,com.tinkerpop.blueprints.oupls.sail.pg.*,com.tinkerpop.blueprints.oupls.jung.*,com.tinkerpop.pipes.*,com.tinkerpop.pipes.branch.*,com.tinkerpop.pipes.filter.*,com.tinkerpop.pipes.sideeffect.*,com.tinkerpop.pipes.transform.*,com.tinkerpop.pipes.util.*,com.tinkerpop.pipes.util.iterators.*,com.tinkerpop.pipes.util.structures.*,org.apache.commons.configuration.*,com.thinkaurelius.titan.core.*,com.thinkaurelius.titan.core.attribute.*,com.thinkaurelius.titan.core.log.*,com.thinkaurelius.titan.core.olap.*,com.thinkaurelius.titan.core.schema.*,com.thinkaurelius.titan.core.util.*,com.thinkaurelius.titan.example.*,org.apache.commons.configuration.*,com.tinkerpop.gremlin.Tokens.T,com.tinkerpop.gremlin.groovy.*",
"static-imports": "com.tinkerpop.blueprints.Direction.*,com.tinkerpop.blueprints.TransactionalGraph$Conclusion.*,com.tinkerpop.blueprints.Compare.*,com.thinkaurelius.titan.core.attribute.Geo.*,com.thinkaurelius.titan.core.attribute.Text.*,com.thinkaurelius.titan.core.Cardinality.*,com.thinkaurelius.titan.core.Multiplicity.*,com.tinkerpop.blueprints.Query$Compare.*"
]
config['metrics'] ?= [
reporter: type:"jmx"
,
reporter: type:"http"
,
reporter:
type:"console"
properties:
"rates-time-unit": "SECONDS"
"duration-time-unit": "SECONDS"
"report-period": 10
"report-time-unit": "MINUTES"
"includes": "http.rest.*"
"excludes": "http.rest.*.delete"
]
config.graphs ?= [
graph:
'graph-name': 'titan'
'graph-type': 'com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration'
'graph-read-only': false
'properties': titan.config
'extensions': 'allows': 'allow': ['tp:gremlin']
]