{% set show_top = salt['state.show_top']() %}
{% set top_states = show_top.values() | join(', ') %}

{% if 'thehive' in top_states %}

{% set MANAGERIP = salt['pillar.get']('manager:mainip', '') %}
{% set VERSION = salt['pillar.get']('global:soversion', 'HH1.2.2') %}
{% set IMAGEREPO = salt['pillar.get']('global:imagerepo') %}
{% set MANAGER = salt['grains.get']('master') %}
thehiveconfdir:
  file.directory:
    - name: /opt/so/conf/thehive/etc
    - makedirs: True
    - user: 939
    - group: 939

thehivelogdir:
  file.directory:
    - name: /opt/so/log/thehive
    - makedirs: True
    - user: 939
    - group: 939

thehiveconf:
  file.recurse:
    - name: /opt/so/conf/thehive/etc
    - source: salt://thehive/etc
    - user: 939
    - group: 939
    - template: jinja

cortexconfdir:
  file.directory:
    - name: /opt/so/conf/cortex
    - makedirs: True
    - user: 939
    - group: 939

cortexlogdir:
  file.directory:
    - name: /opt/so/log/cortex
    - makedirs: True
    - user: 939
    - group: 939

cortexconf:
  file.recurse:
    - name: /opt/so/conf/cortex
    - source: salt://thehive/etc
    - user: 939
    - group: 939
    - template: jinja

cortexanalyzers:
  file.directory:
    - name: /opt/so/conf/cortex/custom-analyzers
    - user: 939
    - group: 939
    - template: jinja

cortexresponders:
  file.directory:
    - name: /opt/so/conf/cortex/custom-responders
    - user: 939
    - group: 939
    - template: jinja

# Install Elasticsearch

# Made directory for ES data to live in
thehiveesdata:
  file.directory:
    - name: /nsm/thehive/esdata
    - makedirs: True
    - user: 939
    - group: 939

so-thehive-es:
  docker_container.running:
    - image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-thehive-es:{{ VERSION }}
    - hostname: so-thehive-es
    - name: so-thehive-es
    - user: 939
    - interactive: True
    - tty: True
    - binds:
      - /nsm/thehive/esdata:/usr/share/elasticsearch/data:rw
      - /opt/so/conf/thehive/etc/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
      - /opt/so/conf/thehive/etc/es/log4j2.properties:/usr/share/elasticsearch/config/log4j2.properties:ro
      - /opt/so/log/thehive:/var/log/elasticsearch:rw
    - environment:
      - http.host=0.0.0.0
      - http.port=9400
      - transport.tcp.port=9500
      - transport.host=0.0.0.0
      - cluster.name=thehive
      - thread_pool.index.queue_size=100000
      - thread_pool.search.queue_size=100000
      - thread_pool.bulk.queue_size=100000
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
    - port_bindings:
      - 0.0.0.0:9400:9400
      - 0.0.0.0:9500:9500

# Install Cortex
so-cortex:
  docker_container.running:
    - image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-thehive-cortex:{{ VERSION }}
    - hostname: so-cortex
    - name: so-cortex
    - user: 939
    - binds:
      - /opt/so/conf/thehive/etc/cortex-application.conf:/opt/cortex/conf/application.conf:ro
      - /opt/so/conf/cortex/custom-analyzers:/custom-analyzers:ro
      - /opt/so/conf/cortex/custom-responders:/custom-responders:ro
    - port_bindings:
      - 0.0.0.0:9001:9001

cortexscript:
  cmd.script:
    - source: salt://thehive/scripts/cortex_init
    - cwd: /opt/so
    - template: jinja
    - hide_output: True

so-thehive:
  docker_container.running:
    - image: {{ MANAGER }}:5000/{{ IMAGEREPO }}/so-thehive:{{ VERSION }}
    - environment:
      - ELASTICSEARCH_HOST={{ MANAGERIP }}
    - hostname: so-thehive
    - name: so-thehive
    - user: 939
    - binds:
      - /opt/so/conf/thehive/etc/application.conf:/opt/thehive/conf/application.conf:ro
    - port_bindings:
      - 0.0.0.0:9000:9000

thehivescript:
  cmd.script:
    - source: salt://thehive/scripts/hive_init
    - cwd: /opt/so
    - template: jinja
    - hide_output: True

{% else %}

thehive_state_not_allowed:
  test.fail_without_changes:
    - name: thehive_state_not_allowed

{% endif %}