
# Schema Registry Install

    module.exports = header: 'Schema Registry Install', handler: ->
      {registry} = @config.ryba

## Identities

      @system.group header: 'Group', registry.group
      @system.user header: 'User', registry.user

## IPTables

  | Service  | Port | Proto | Parameter                                            |
  |----------|------|-------|------------------------------------------------------|
  | registry | 9080 | http  | registry.config.server.applicationConnectors[0].port |
  | registry | 9090 | http  | registry.config.server.adminConnectors[0].port       |


      rules = []
      for con, i in registry.config.server.applicationConnectors
        rules.push chain: 'INPUT', jump: 'ACCEPT', dport: con.port, protocol: 'tcp', state: 'NEW', comment: "Registry App #{i+1} port"
      for con, i in registry.config.server.adminConnectors
        rules.push chain: 'INPUT', jump: 'ACCEPT', dport: con.port, protocol: 'tcp', state: 'NEW', comment: "Registry Admin #{i+1} port"
      @tools.iptables
        header: 'IPTables'
        if: @config.iptables.action is 'start'
        rules: rules

## Service

      @call header: 'Packages', ->
        @service
          name: 'registry'
        @service.init
          header: 'rc.d'
          target: '/etc/init.d/registry'
          source: "#{__dirname}/resources/registry.j2"
          context: registry: registry
          local: true
          mode: 0o0755

## Layout

      @call header: 'Layout', ->
        @system.mkdir
          target: registry.pid_dir
          uid: registry.user.name
          gid: registry.group.name
        @system.mkdir
          target: registry.log_dir
          uid: registry.user.name
          gid: registry.group.name
        @execute
          cmd: """
          rm -rf /usr/hdf/current/registry/logs
          ln -s #{registry.log_dir} /usr/hdf/current/registry/logs
          """
          unless_exec: '[ -L /usr/hdf/current/registry/logs ]'

## Env

      @file.render
        header: 'Env'
        target: "#{registry.conf_dir}/registry-env.sh"
        source: "#{__dirname}/resources/registry-env.sh.j2"
        context: registry: registry
        local: true
        backup: true

## Configuration

      @file.yaml
        header: 'Registry properties'
        target: "#{registry.conf_dir}/registry.yaml"
        content: registry.config
        backup: true
        eof: true

## Database

      @call header: 'Storage Backend DB', ->
        @db.user registry.db,
          header: 'User'
          database: null
        @db.database registry.db,
          header: 'Database'
          user: registry.db.username
        @system.execute
          header: 'Bootstrap'
          cmd: db.cmd registry.db, """
          use #{registry.db.database};
          source /usr/hdf/current/registry/bootstrap/sql/#{registry.config['storageProviderConfiguration']['properties']['db.type']}/create_tables.sql;
          """
          if: -> @status -1

## Dependencies

    db = require '@nikitajs/core/lib/misc/db'
