- name: push packages out to frontend
  hosts: mbs-frontend:mbs-frontend-stg
  user: root
  vars_files: 
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
  vars:
    testing: False
  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"

  tasks:
  - name: clean all metadata {%if testing%}(with infrastructure-testing on){%endif%}
    command: yum clean all {%if testing%} --enablerepo=infrastructure-tags-stg {%endif%}
    check_mode: no
  - name: yum update mbs packages from main repo
    yum: name={{item}} state=latest
    when: not testing
    with_items:
    - module-build-service
    - libmodulemd
    - python2-solv
  - name: yum update mbs packages from testing repo
    yum: name={{item}} state=latest enablerepo=infrastructure-tags-stg
    when: testing
    with_items:
    - module-build-service
    - libmodulemd
    - python2-solv

- name: push packages out to backend
  hosts: mbs-backend:mbs-backend-stg
  user: root
  vars_files: 
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
  vars:
    testing: False
  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"

  tasks:
  - name: clean all metadata {%if testing%}(with infrastructure-testing on){%endif%}
    command: yum clean all {%if testing%} --enablerepo=infrastructure-tags-stg {%endif%}
    check_mode: no
  - name: yum update mbs packages from main repo
    yum: name={{item}} state=latest
    when: not testing
    with_items:
    - module-build-service
    - libmodulemd
    - python2-solv
  - name: yum update mbs packages from testing repo
    yum: name={{item}} state=latest enablerepo=infrastructure-tags-stg
    when: testing
    with_items:
    - module-build-service
    - libmodulemd
    - python2-solv

- name: verify the frontend and stop it
  hosts: mbs-frontend:mbs-frontend-stg
  user: root
  vars_files: 
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"
  vars:
    mbs_import_default_modules: False

  pre_tasks:
  - name: tell nagios to shush w.r.t. the frontend
    nagios: action=downtime minutes=15 service=host host={{ inventory_hostname_short }}{{ env_suffix }}
    delegate_to: noc01.phx2.fedoraproject.org
    ignore_errors: true

  roles:
  - mbs/common
  - mbs/frontend

  post_tasks:
  - service: name="httpd" state=stopped

- name: verify the backend, stop it, and then upgrade the db
  hosts: mbs-backend:mbs-backend-stg
  user: root
  vars_files: 
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"
  vars:
    mbs_import_default_modules: False

  pre_tasks:
  - name: tell nagios to shush w.r.t. the backend
    nagios: action=downtime minutes=15 service=host host={{ inventory_hostname_short }}{{ env_suffix }}
    delegate_to: noc01.phx2.fedoraproject.org
    ignore_errors: true

  roles:
  - mbs/common
  #- mbs/backend

  tasks:
  - name: Stop the mbs backend
    service: name="fedmsg-hub" state=stopped

  - name: Upgrade the database
    command: mbs-upgradedb
    ignore_errors: true

  - name: And... start the backend again
    service: name="fedmsg-hub" state=started

  - name: Import the default-modules
    command: /usr/bin/mbs-manager import_module /etc/module-build-service/default-modules/{{ item | basename }}
    with_fileglob:
    - "{{ playbook_dir }}/../../../roles/mbs/common/files/default-modules.{{ env }}/*.yaml"

  post_tasks:
  - name: tell nagios to unshush w.r.t. the backend
    nagios: action=unsilence service=host host={{ inventory_hostname_short }}{{ env_suffix }}
    delegate_to: noc01.phx2.fedoraproject.org
    ignore_errors: true

- name: restart the frontend
  hosts: mbs-frontend:mbs-frontend-stg
  user: root
  vars_files: 
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
  handlers:
  - import_tasks: "{{ handlers_path }}/restart_services.yml"

  tasks:
  - service: name="httpd" state=started
  # Shouldn't be necessary after this change makes it out
  # https://src.fedoraproject.org/rpms/module-build-service/c/d19515a7c053aa90cddccd5e10a5615b773a7bd2
  - name: Make sure fedmsg-hub isn't running on the frontend.
    service:
      name: fedmsg-hub
      state: stopped
      enabled: false

  post_tasks:
  - name: tell nagios to unshush w.r.t. the frontend
    nagios: action=unsilence service=host host={{ inventory_hostname_short }}{{ env_suffix }}
    delegate_to: noc01.phx2.fedoraproject.org
    ignore_errors: true
