# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.
---
# This role will run a CouchDB server on the db group

- name: "Set the coordinator to the first node"
  set_fact:
    coordinator: "{{ groups['db'][0] }}"

- name: check if db credentials are valid for CouchDB
  fail: msg="The db provider in your {{ hosts_dir }}/group_vars/all is {{ db_provider }}, it has to be CouchDB, pls double check"
  when: db_provider != "CouchDB"

- name: check for persistent disk
  shell: df -h
  register: disk_status
  when: block_device is defined

- name: "set the volume_dir"
  vars:
    instance: "{{instances | selectattr('name', 'equalto', 'db') | list | first}}"
  set_fact:
    volume_dir: "{{ instance.volume.fsmount | default( '/mnt/' + group_names|first, true ) }}:/usr/local/var/lib/couchdb"
  when: (block_device is defined) and (block_device in disk_status.stdout)

- name: "(re)start CouchDB from '{{ couchdb_image }} ' "
  vars:
    couchdb_image: "{{ couchdb.docker_image | default('apache/couchdb:' ~ couchdb.version ) }}"
  docker_container:
    name: couchdb
    image: "{{ couchdb_image }}"
    state: started
    recreate: true
    restart_policy: "{{ docker.restart.policy }}"
    volumes: "{{volume_dir | default([])}}"
    ports:
      - "{{ db_port }}:5984"
      - "4369:4369"
      - "9100:9100"
    env:
      COUCHDB_USER: "{{ db_username }}"
      COUCHDB_PASSWORD: "{{ db_password }}"
      NODENAME: "{{ ansible_host }}"
    pull: "{{ couchdb.pull_couchdb | default(true) }}"

- name: wait until CouchDB in this host is up and running
  uri:
    url: "{{ db_protocol }}://{{ ansible_host }}:{{ db_port }}/_utils/"
  register: result
  until: result.status == 200
  retries: 12
  delay: 5

- name: create '_users' database for singleton mode
  uri:
    url: "{{ db_protocol }}://{{ ansible_host }}:{{ db_port }}/_users"
    method: PUT
    status_code: 201
    user: "{{ db_username }}"
    password: "{{ db_password }}"
    force_basic_auth: yes
  when: (couchdb.version|version_compare('2.0','>=')) and (db.instances|int == 1)

- name: enable the cluster setup mode
  uri:
    url: "{{ db_protocol }}://{{ ansible_host }}:{{ db_port }}/_cluster_setup"
    method: POST
    body: >
        {"action": "enable_cluster", "bind_address":"0.0.0.0", "username": "{{ db_username }}", "password":"{{ db_password }}", "port": {{ db_port }}, "node_count": "{{ groups['db'] | length }}", "remote_node": "{{ ansible_host }}", "remote_current_user": "{{ db_username }}", "remote_current_password": "{{ db_password }}"}
    body_format: json
    status_code: 201
    user: "{{ db_username }}"
    password: "{{ db_password }}"
    force_basic_auth: yes
  when: (inventory_hostname == coordinator) and (db.instances|int >= 2)

- name: add remote nodes to the cluster
  uri:
    url: "{{ db_protocol }}://{{ coordinator }}:{{ db_port }}/_cluster_setup"
    method: POST
    body: >
        {"action": "add_node", "host":"{{ ansible_host }}", "port": {{ db_port }}, "username": "{{ db_username }}", "password":"{{ db_password }}"}
    body_format: json
    status_code: 201
    user: "{{ db_username }}"
    password: "{{ db_password }}"
    force_basic_auth: yes
  when: (inventory_hostname != coordinator) and (db.instances|int >= 2)

- name: finish the cluster setup mode
  uri:
    url: "{{ db_protocol }}://{{ ansible_host }}:{{ db_port }}/_cluster_setup"
    method: POST
    body: >
        {"action": "finish_cluster"}
    body_format: json
    status_code: 201
    user: "{{ db_username }}"
    password: "{{ db_password }}"
    force_basic_auth: yes
  when: (inventory_hostname == coordinator) and (db.instances|int >= 2)
