---

- name: discern | create supervisor scripts - discern, discern_celery
  template: >
    src={{ item }}.conf.j2 dest={{ supervisor_cfg_dir }}/{{ item }}.conf
    owner={{ supervisor_user }} mode=0644
  sudo_user: "{{ supervisor_user }}"
  with_items: ['discern', 'discern_celery']

#Upload config files for django (auth and env)
- name: discern | create discern application config env.json file
  template: src=env.json.j2 dest={{ discern_app_dir }}/env.json
  sudo_user: "{{ discern_user }}"
  notify:
    - discern | restart discern
  tags:
    - deploy

- name: discern | create discern auth file auth.json
  template: src=auth.json.j2 dest={{ discern_app_dir }}/auth.json
  sudo_user: "{{ discern_user }}"
  notify:
    - discern | restart discern
  tags:
    - deploy

- name: discern | git checkout discern repo into discern_code_dir
  git: dest={{ discern_code_dir }} repo={{ discern_source_repo }} version={{ discern_version }}
  sudo_user: "{{ discern_user }}"
  notify:
    - discern | restart discern
  tags:
    - deploy

- name: discern | git checkout ease repo into discern_ease_code_dir
  git: dest={{ discern_ease_code_dir}} repo={{ discern_ease_source_repo }} version={{ discern_ease_version }}
  sudo_user: "{{ discern_user }}"
  notify:
    - discern | restart discern
  tags:
    - deploy

#Numpy has to be a pre-requirement in order for scipy to build
- name : discern | install python pre-requirements for discern and ease
  pip: requirements={{item}} virtualenv={{ discern_venv_dir }} state=present
  sudo_user: "{{ discern_user }}"
  notify:
    - discern | restart discern
  with_items:
    - "{{ discern_pre_requirements_file }}"
    - "{{ discern_ease_pre_requirements_file }}"
  tags:
    - deploy

- name : discern | install python requirements for discern and ease
  pip: requirements={{item}} virtualenv={{ discern_venv_dir }} state=present
  sudo_user: "{{ discern_user }}"
  notify:
    - discern | restart discern
  with_items:
    - "{{ discern_post_requirements_file }}"
    - "{{ discern_ease_post_requirements_file }}"
  tags:
    - deploy

- name: discern | install ease python package
  shell: >
    {{ discern_venv_dir }}/bin/activate; cd {{ discern_ease_code_dir }}; python setup.py install
  notify:
    - discern | restart discern
  tags:
    - deploy

- name: discern | download and install nltk
  shell: |
      set -e
      curl -o {{ discern_nltk_tmp_file }} {{ discern_nltk_download_url }}
      tar zxf {{ discern_nltk_tmp_file }}
      rm -f {{ discern_nltk_tmp_file }}
      touch {{ discern_nltk_download_url|basename }}-installed
        creates={{ discern_data_dir }}/{{ discern_nltk_download_url|basename }}-installed
        chdir={{ discern_data_dir }}
  sudo_user: "{{ discern_user }}"
  notify:
    - discern | restart discern
  tags:
    - deploy


#Run this instead of using the ansible module because the ansible module only support syncdb of these three, and does not
#support virtualenvs as of this comment
- name: discern | django syncdb migrate and collectstatic for discern
  shell: >
    {{ discern_venv_dir }}/bin/python {{discern_code_dir}}/manage.py {{item}} --noinput --settings={{discern_settings}} --pythonpath={{discern_code_dir}}
      chdir={{ discern_code_dir }}
  sudo_user: "{{ discern_user }}"
  notify:
    - discern | restart discern
  with_items:
    - syncdb
    - migrate
    - collectstatic
  tags:
    - deploy
#Have this separate from the other three because it doesn't take the noinput flag
- name: discern | django update_index for discern
  shell: >
    {{ discern_venv_dir}}/bin/python {{discern_code_dir}}/manage.py update_index --settings={{discern_settings}} --pythonpath={{discern_code_dir}}
      chdir={{ discern_code_dir }}
  sudo_user: "{{ discern_user }}"
  notify:
    - discern | restart discern
  tags:
    - deploy


  # call supervisorctl update. this reloads
  # the supervisorctl config and restarts
  # the services if any of the configurations
  # have changed.
  #
- name: discern | update supervisor configuration
  shell:  "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
  register: supervisor_update
  sudo_user: "{{ supervisor_service_user }}"
  changed_when: supervisor_update.stdout != ""
  tags: deploy

- name: discern | ensure discern, discern_celery has started
  supervisorctl_local: >
    name={{ item }}
    supervisorctl_path={{ supervisor_ctl }}
    config={{ supervisor_cfg }}
    state=started
  with_items:
  - discern
  - discern_celery
  tags: deploy