---
- name: Manage the composition of shinyproxy as a docker (non swarm) service
  block:
  - name: Create the directory where the dockerfile and the configuration file will be copied into
    file: dest={{ shinyproxy_as_docker_src_dir }} state=directory

  - name: Install the shinyproxy configuration file when using version 2.x
    template: src=shinyproxy-2-conf.yml.j2 dest={{ shinyproxy_as_docker_src_dir }}/application.yml owner=root group=root mode=0400

  - name: Install the shinyproxy docker file
    template: src=Dockerfile.j2 dest={{ shinyproxy_as_docker_src_dir }}/Dockerfile owner=root group=root mode=0444

  - name: Install the docker compose file
    template: src=shinyproxy-docker-compose.yml.j2 dest={{ shinyproxy_as_docker_src_dir }}/docker-compose.yml

  - name: Run the docker compose file to start the service
    docker_compose:
      project_src: '{{ shinyproxy_as_docker_src_dir }}'
      build: yes

  when: shinyproxy_container_backend == 'docker'
  tags: [ 'shinyproxy', 'shinyproxy_docker', 'docker' ]

- name: Manage the installation of the shinyproxy configuration of the swarm service
  block:
  - name: Create the directory where the dockerfile and the configuration file will be copied into
    file: dest={{ shinyproxy_as_docker_src_dir }} state=directory

  - name: Install the shinyproxy configuration file
    template: src=shinyproxy-2-conf.yml.j2 dest={{ shinyproxy_as_docker_src_dir }}/application.yml owner=root group=root mode=0400

  when: shinyproxy_container_backend == 'docker-swarm'
  tags: [ 'shinyproxy', 'shinyproxy_swarm', 'docker' ]

- name: Manage the composition of shinyproxy as a docker swarm stack
  block:
  - name: Install the docker compose file
    template: src=shinyproxy-docker-compose.yml.j2 dest={{ shinyproxy_as_docker_src_dir }}/docker-shinyproxy-stack.yml

  - name: Start the shinyproxy stack 
    docker_stack:
      name: shinyproxy
      state: present
      compose:
        - '{{ shinyproxy_as_docker_src_dir }}/docker-shinyproxy-stack.yml'

  run_once: True
  when:
    - docker_swarm_manager_main_node is defined and docker_swarm_manager_main_node | bool
    - shinyproxy_container_backend == 'docker-swarm'
  tags: [ 'shinyproxy', 'shinyproxy_swarm', 'docker' ]