#!/usr/bin/ansible-playbook --module-path=../../../library/
# ./oc_scale.yml -e "cli_master_test=$OPENSHIFT_MASTER
---
- hosts: "{{ cli_master_test }}"
  gather_facts: no

  tasks:
  - name: list oc scale for default router dc
    oc_scale:
      state: list
      name: router
      namespace: default
      kind: dc
    register: scaleout
  - debug: var=scaleout

  - assert:
      that:
      - scaleout.module_results is defined
      - scaleout.module_results.0 | int > 0
      msg: "Did not find 'module_result' in returned value or module_result not > 0."

  - name: get the rc for router
    oc_obj:
      state: list
      kind: dc
      namespace: default
      selector: router=router
    register: rcout
  - debug:
      msg: "{{ rcout.module_results.results[0]['items'][-1]['metadata']['name'] }}"

  - name: scale dc to 1
    oc_scale:
      name: router
      namespace: default
      kind: dc
      replicas: 1
    register: scaleout
  - debug: var=scaleout

  # The preferred method here would be to let the module
  # detect when its finished and time out
  - name: let the scale happen
    pause:
      seconds: 10
    when: scaleout.changed

  - name: fetch the current router pods
    oc_obj:
      selector: router=router
      namespace: default
      kind: pod
      state: list
    register: pods
  - debug: var=pods

  - assert:
      that:
      - pods.module_results is defined
      - pods.module_results.results is defined
      - pods.module_results.results[0]['items'] | length == 1
      msg: "Did not find 1 replica in scale results."

  - name: scale dc to 2
    oc_scale:
      name: router
      namespace: default
      kind: dc
      replicas: 2
    register: scaleout
  - debug: var=scaleout

  # The preferred method here would be to let the module
  # detect when its finished and time out
  - name: let the scale happen
    pause:
      seconds: 30

  - name: fetch the current router pods
    oc_obj:
      selector: router=router
      namespace: default
      kind: pod
      state: list
    register: pods
  - debug: var=pods

  - assert:
      that:
      - pods.module_results is defined
      - pods.module_results.results is defined
      - pods.module_results.results[0]['items'] | length == 2
      msg: "Did not find 1 replica in scale results."


  # Test scale on non-existent dc
  - name: scale non-existent dc
    oc_scale:
      name: not_there
      kind: dc
      replicas: 2
    register: scaleout
    ignore_errors: True

  - debug: var=scaleout

  - assert:
      that:
      - scaleout.changed == False
      - scaleout.msg is defined
      - scaleout.msg.returncode == 1
      - scaleout.msg.stderr is defined
      msg: "Deploymentconfig exists.  This should error."
