---
- block:
    - name: Create the orientdb user
      user: name={{ orientdb_user }} home={{ orientdb_base_dir }} createhome=yes shell=/bin/bash
      
    - name: Get the orientdb distribution
      get_url: url={{ orientdb_binary_distribution_url }} dest={{ orientdb_base_dir }}/{{ orientdb_tar_file }}

    - name: Unpack the orientdb distribution
      unarchive: src={{ orientdb_base_dir }}/{{ orientdb_tar_file }} dest={{ orientdb_base_dir }} copy=no
      args:
        creates: '{{ orientdb_home_prefix }}/{{ orientdb_user }}/{{ orientdb_dir }}-{{ orientdb_version }}'

    - name: Link to the latest version
      become: True
      become_user: '{{ orientdb_user }}'
      file: src={{ orientdb_dir }}-{{ orientdb_version }} dest={{ orientdb_install_dir }} state=link

    - name: Install the orientdb startup script
      template: src=orientdb.init.j2 dest=/etc/init.d/orientdb owner=root group=root mode=0755
      tags: [ 'orientdb', 'orientdb_init' ]

    - name: Create a orientdb log directory out of the distribution directory
      file: dest={{ orientdb_log_dir }} state=directory owner={{ orientdb_user }} group={{ orientdb_user }} mode=0755

    - name: Link the log directory inside the orientdb user home
      become: True
      become_user: '{{ orientdb_user }}'
      file: dest={{ orientdb_home_prefix }}/{{ orientdb_user }}/logs src={{ orientdb_log_dir }} state=link

    - name: Create the needed directory inside the orientdb user home
      become: True
      become_user: '{{ orientdb_user }}'
      file: dest={{ item }} state=directory mode=0750
      with_items:
        - '{{ orientdb_data_dir }}'
        - '{{ orientdb_pid_dir }}'
        - '{{ orientdb_automatic_backup_directory }}'

    - name: Remove the old hook jars
      shell: rm -f {{ orientdb_install_dir }}/lib/{{ item }}
      with_items: '{{ orientdb_hooks_to_be_removed | default([]) }}'
      tags: [ 'orientdb', 'orientdb_hooks' ]

    - name: Fetch and install the hook jars
      get_url: url='{{ item }}' dest={{ orientdb_install_dir }}/lib
      with_items: '{{ orientdb_hooks_jars | default([]) }}'
      notify: Restart orientdb
      tags: [ 'orientdb', 'orientdb_hooks' ]

    - name: Install the orientdb default settings
      template: src=orientdb.default.j2 dest=/etc/default/orientdb owner=root group=root mode=0444
      notify: Restart orientdb

    - name: Fix the pid file path inside the start/stop scripts
      lineinfile: dest={{ orientdb_install_dir }}/bin/{{ item }} regexp="^ORIENTDB_PID=.*$" line="ORIENTDB_PID={{ orientdb_pid_dir }}/orientdb.pid"
      with_items:
        - server.sh
        - shutdown.sh

    - name: Install the orientdb configuration files
      template: src={{ item }}.j2 dest={{ orientdb_install_dir }}/config/{{ item }} owner={{ orientdb_user }} group={{ orientdb_user }} mode=0640
      with_items: '{{ orientdb_configuration_files }}'
      notify: Restart orientdb
      tags: [ 'orientdb', 'orientdb_config' ]

    - name: Install the nagios nrpe configuration
      template: src=orientdb-nrpe.cfg.j2 dest={{ nrpe_include_dir }}/orientdb-nrpe.cfg owner=root group=root mode=0444
      notify: Reload NRPE server
      when:
        - nrpe_include_dir is defined
        - nagios_enabled is defined and nagios_enabled
      tags: [ 'orientdb', 'orientdb_nagios' ]

    - name: Ensure that the service is enabled and running
      service: name=orientdb state=started enabled=yes
      when: orientdb_enabled

  tags: orientdb
  when: orientdb_install

- block:
    - name: Create the acme hooks directory if it does not yet exist
      file: dest={{ letsencrypt_acme_services_scripts_dir }} state=directory owner=root group=root

    - name: Install a letsencrypt hook to update the orientdb certificate
      template: src=orientdb-letsencrypt-acme.sh.j2 dest={{ letsencrypt_acme_services_scripts_dir }}/orientdb owner=root group=root mode=4555

  tags: [ 'orientdb', 'letsencrypt', 'orientdb_letsencrypt' ]
  when:
    - orientdb_install
    - orientdb_letsencrypt_ssl_enabled


- block:
    - name: Ensure that the service is disabled and stopped
      service: name=orientdb state=stopped enabled=no

    - name: Remove the link to the orientdb distribution
      file: dest={{ orientdb_home_prefix }}/{{ orientdb_user }}/{{ orientdb_dir }} state=absent

    - name: Remove the default options file
      file: dest=/etc/default/orientdb state=absent

  tags: orientdb
  when: not orientdb_install