
# Hadoop HDFS SecondaryNameNode 

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

## Environment

      # Layout
      options.pid_dir ?= service.deps.hadoop_core.options.hdfs.pid_dir
      options.log_dir ?= service.deps.hadoop_core.options.hdfs.log_dir
      options.conf_dir ?= '/etc/hadoop-hdfs-journalnode/conf'
      options.iptables ?= service.deps.iptables and service.deps.iptables.options.action is 'start'
      # Misc
      options.clean_logs ?= false

## Identities

      options.hadoop_group = merge service.deps.hadoop_core.options.hadoop_group, options.hadoop_group
      options.group = merge service.deps.hadoop_core.options.hdfs.group, options.group
      options.user = merge service.deps.hadoop_core.options.hdfs.user, options.user

## Kerberos

      options.krb5 ?= {}
      options.krb5.realm ?= service.deps.krb5_client.options.etc_krb5_conf?.libdefaults?.default_realm
      throw Error 'Required Options: "realm"' unless options.krb5.realm
      # Admin Information
      options.krb5.admin ?= service.deps.krb5_client.options.admin[options.krb5.realm]

## Configuration

      options.hdfs_site['dfs.http.policy'] ?= 'HTTPS_ONLY' # HTTP_ONLY or HTTPS_ONLY or HTTP_AND_HTTPS
      # Store the temporary images to merge
      options.hdfs_site['dfs.namenode.checkpoint.dir'] ?= ['file:///var/hdfs/checkpoint']
      options.hdfs_site['dfs.namenode.checkpoint.dir'] = options.hdfs_site['dfs.namenode.checkpoint.dir'].join ',' if Array.isArray options.hdfs_site['dfs.namenode.checkpoint.dir']
      options.hdfs_site['dfs.namenode.checkpoint.edits.dir'] ?= '${dfs.namenode.checkpoint.dir}' # HDP invalid default value
      # Network
      options.hdfs_site['dfs.namenode.secondary.http-address'] ?= "#{service.node.fqdn}:50090"
      # Kerberos principal name for the secondary NameNode.
      options.hdfs_site['dfs.secondary.namenode.kerberos.principal'] ?= "nn/_HOST@#{options.krb5.realm}"
      # Combined keytab file containing the NameNode service and host principals.
      options.hdfs_site['dfs.secondary.namenode.keytab.file'] ?= '/etc/security/keytabs/nn.service.keytab'
      # Address of secondary namenode web server
      options.hdfs_site['dfs.secondary.http.address'] ?= "#{service.node.fqdn}:50090"
      # The https port where secondary-namenode binds
      options.hdfs_site['dfs.secondary.https.port'] ?= '50490' # todo, this has nothing to do here
      options.hdfs_site['dfs.namenode.secondary.http-address'] ?= "#{service.node.fqdn}:50090"
      options.hdfs_site['dfs.namenode.secondary.https-address'] ?= "#{service.node.fqdn}:50490"
      options.hdfs_site['dfs.secondary.namenode.kerberos.internal.spnego.principal'] ?= "HTTP/_HOST@#{options.krb5.realm}"
      options.hdfs_site['dfs.secondary.namenode.kerberos.https.principal'] = "HTTP/_HOST@#{options.krb5.realm}"

## Dependencies

    {merge} = require 'mixme'
