
# Phoenix QueryServer Configuration

    module.exports = (service) ->
      options = service.options

## Users and Groups

      options.user ?= {}
      options.user = name: options.user if typeof options.user is 'string'
      options.user.name ?= 'phoenix'
      options.user.system ?= true
      options.user.comment ?= 'Phoenix User'
      options.user.home ?= '/var/lib/phoenix'
      options.user.groups ?= 'hadoop'
      # Group
      options.group ?= {}
      options.group = name: options.group if typeof options.group is 'string'
      options.group.name ?= 'phoenix'
      options.group.system ?= true
      options.user.gid = options.group.name

## Environment

      # Layout
      options.conf_dir ?= '/etc/phoenix/conf'
      options.log_dir ?= '/var/log/phoenix'
      options.pid_dir ?= '/var/run/phoenix'
      # Misc
      options.iptables ?= service.deps.iptables and service.deps.iptables.options.action is 'start'

## Kerberos

      options.krb5 ?= {}
      options.krb5.realm ?= service.deps.krb5_client.options.etc_krb5_conf?.libdefaults?.default_realm
      # Admin Information
      options.krb5.admin ?= service.deps.krb5_client.options.admin[options.krb5.realm]

## QueryServer Configuration

      options.phoenix_site ?= {}
      options.phoenix_site['phoenix.queryserver.http.port'] ?= '8765'
      options.phoenix_site['phoenix.queryserver.metafactory.class'] ?= 'org.apache.phoenix.queryserver.server.PhoenixMetaFactoryImpl'
      options.phoenix_site['phoenix.queryserver.serialization'] ?= 'PROTOBUF'
      options.phoenix_site['phoenix.queryserver.keytab.file'] ?= '/etc/security/keytabs/spnego.service.keytab'
      options.phoenix_site['phoenix.queryserver.kerberos.principal'] ?= "HTTP/_HOST@#{options.krb5.realm}"
      options.phoenix_site['avatica.connectioncache.concurrency'] ?= '10'
      options.phoenix_site['avatica.connectioncache.initialcapacity'] ?= '100'
      options.phoenix_site['avatica.connectioncache.maxcapacity'] ?= '1000'
      options.phoenix_site['avatica.connectioncache.expiryduration'] ?= '10'
      options.phoenix_site['avatica.connectioncache.expiryunit'] ?= 'MINUTES'
      options.phoenix_site['avatica.statementcache.concurrency'] ?= '100'
      options.phoenix_site['avatica.statementcache.initialcapacity'] ?= '1000'
      options.phoenix_site['avatica.statementcache.maxcapacity'] ?= '10000'
      options.phoenix_site['avatica.statementcache.expiryduration'] ?= '5'
      options.phoenix_site['avatica.statementcache.expiryunit'] ?= 'MINUTES'
      options.phoenix_site[k] ?= v for k, v of service.deps.hbase_client[0].options.hbase_site
      
## Other Configurations

      options.host = service.node.fqdn
      options.java_home = service.deps.java.options.java_home

## Dependencies

    string = require '@nikitajs/core/lib/misc/string'
    {merge} = require '@nikitajs/core/lib/misc'
    appender = require '../../lib/appender'
