---
# Include this play once for each container you want to create and use as a test host.
#
# Optional parameters on the include are as follows:
# * scenario = unique name for the container to be started
# * image = name of the image to start in the container
# * command = command to run in the container
# * l_groups = host groups that the container should be added to
# * l_host_vars = any variables that should be added to the host

- name: Start container for specified test host
  gather_facts: no
  hosts: localhost
  connection: local
  tasks:

    - set_fact:
        # This is a little weird but if we use a var instead of a fact,
        # a different random value is generated for each task. See:
        # https://opensolitude.com/2015/05/27/ansible-lookups-variables-vs-facts.html
        container_name: openshift_ansible_test_{{ scenario | default(100000000000000 | random) }}

    - name: start container
      docker_container:
        name: "{{ container_name }}"
        image: "{{ lookup('env', 'IMAGE_PREFIX') | default('openshift-ansible-integration-', true) }}{{ image | default('test-target-base') }}"
        command: "{{ command | default('sleep 1800') }}"
        recreate: yes
        # NOTE: When/if we need to run containers that are docker hosts as well:
        # volumes: [ "/var/run/docker.sock:/var/run/docker.sock:z" ]

    - name: add container as host in inventory
      add_host:
        ansible_connection: docker
        name: "{{ container_name }}"
        groups: '{{ l_groups | default("masters,nodes,etcd") }}'

    # There ought to be a better way to transfer the host vars, but see:
    # https://groups.google.com/forum/#!topic/Ansible-project/Jwx8RYhqxPA
    - name: set host facts per test parameters
      set_fact:
        "{{ item.key }}": "{{ item.value }}"
      delegate_facts: True
      delegate_to: "{{ container_name }}"
      with_dict: "{{ l_host_vars | default({}) }}"

- hosts: all
  tasks:
    # run before openshift_version to prevent it breaking
    - include_tasks: preflight/playbooks/tasks/enable_repo.yml
      vars: { repo_name: "ose-3.2" }

- import_playbook: ../../../playbooks/init/main.yml

- hosts: all
  tasks:

    # put it back like it was for the tests
    - include_tasks: preflight/playbooks/tasks/enable_repo.yml
      vars: { repo_name: "ose-3.2", enabled: False }
