- name: "writing supervisor scripts - xqueue, xqueue consumer"
  template: >
    src={{ item }}.conf.j2 dest={{ supervisor_available_dir }}/{{ item }}.conf
    owner={{ supervisor_user }} group={{ common_web_user }} mode=0644
  with_items: ['xqueue', 'xqueue_consumer']

- name: "enabling supervisor scripts - xqueue, xqueue consumer"
  file: >
    src={{ supervisor_available_dir }}/{{ item }}.conf
    dest={{ supervisor_cfg_dir }}/{{ item }}.conf
    owner={{ supervisor_user }} group={{ common_web_user }}
    mode=0644 state=link force=yes
  with_items: ['xqueue', 'xqueue_consumer']
  when: not disable_edx_services


- name: create xqueue application config
  template: src=xqueue.env.json.j2 dest={{ xqueue_app_dir }}/xqueue.env.json mode=0644
  sudo_user: "{{ xqueue_user }}"
  notify:
    - restart xqueue

- name: create xqueue auth file
  template: src=xqueue.auth.json.j2 dest={{ xqueue_app_dir }}/xqueue.auth.json mode=0644
  sudo_user: "{{ xqueue_user }}"
  notify:
    - restart xqueue

# Do A Checkout
- name: git checkout xqueue repo into xqueue_code_dir
  git: >
    dest={{ xqueue_code_dir }} repo={{ xqueue_source_repo }} version={{ xqueue_version }}
    accept_hostkey=yes
  sudo_user: "{{ xqueue_user }}"
  register: xqueue_checkout
  notify:
    - restart xqueue


# Install the python pre requirements into {{ xqueue_venv_dir }}
- name : install python pre-requirements
  pip: >
    requirements="{{ xqueue_pre_requirements_file }}" virtualenv="{{ xqueue_venv_dir }}" state=present
    extra_args="-i {{ COMMON_PYPI_MIRROR_URL }}"
  sudo_user: "{{ xqueue_user }}"
  notify:
    - restart xqueue

# Install the python post requirements into {{ xqueue_venv_dir }}
- name : install python post-requirements
  pip: >
    requirements="{{ xqueue_post_requirements_file }}" virtualenv="{{ xqueue_venv_dir }}" state=present
    extra_args="-i {{ COMMON_PYPI_MIRROR_URL }}"
  sudo_user: "{{ xqueue_user }}"
  notify:
    - restart xqueue

# If there is a common user for migrations run migrations using his username
# and credentials. If not we use the xqueue mysql user
- name: syncdb and migrate
  shell: >
    SERVICE_VARIANT=xqueue {{ xqueue_venv_bin }}/django-admin.py syncdb --migrate --noinput --settings=xqueue.aws_migrate --pythonpath={{ xqueue_code_dir }}
  sudo_user: "{{ xqueue_user }}"
  environment:
    DB_MIGRATION_USER: "{{ COMMON_MYSQL_MIGRATE_USER }}"
    DB_MIGRATION_PASS: "{{ COMMON_MYSQL_MIGRATE_PASS }}"
  when: migrate_db is defined and migrate_db|lower == "yes" and COMMON_MYSQL_MIGRATE_PASS
  notify:
    - restart xqueue

- name: syncdb and migrate
  shell: >
    SERVICE_VARIANT=xqueue {{ xqueue_venv_bin }}/django-admin.py syncdb --migrate --noinput --settings=xqueue.aws_settings --pythonpath={{ xqueue_code_dir }}
  sudo_user: "{{ xqueue_user }}"
  when: migrate_db is defined and migrate_db|lower == "yes" and not COMMON_MYSQL_MIGRATE_PASS
  notify:
    - restart xqueue


- name: create users
  shell: >
    SERVICE_VARIANT=xqueue {{ xqueue_venv_bin }}/django-admin.py update_users --settings=xqueue.aws_settings --pythonpath={{ xqueue_code_dir }}
  sudo_user: "{{ xqueue_user }}"
  notify:
    - restart xqueue

  # call supervisorctl update. this reloads
  # the supervisorctl config and restarts
  # the services if any of the configurations
  # have changed.
  #
- name: update supervisor configuration
  shell:  "{{ supervisor_ctl }} -c {{ supervisor_cfg }} update"
  register: supervisor_update
  changed_when: supervisor_update.stdout is defined and supervisor_update.stdout != ""
  when: not disable_edx_services

- name: ensure xqueue, consumer is running
  supervisorctl_local: >
    name={{ item }}
    supervisorctl_path={{ supervisor_ctl }}
    config={{ supervisor_cfg }}
    state=started
  with_items:
  - xqueue
  - xqueue_consumer
  when: not disable_edx_services

- name: create a symlink for venv python
  file: >
    src="{{ xqueue_venv_bin }}/{{ item }}"
    dest={{ COMMON_BIN_DIR }}/{{ item }}.xqueue
    state=link
  with_items:
  - python
  - pip

- include: tag_ec2.yml tags=deploy
  when: COMMON_TAG_EC2_INSTANCE

- set_fact: xqueue_installed=true