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

  tasks:
  - name: create route
    oc_route:
      name: test
      namespace: default
      tls_termination: edge
      cert_content: testing cert
      cacert_content: testing cacert
      key_content: key content
      service_name: test
      host: test.example
    register: routeout
  - debug: var=routeout

  - assert:
      that: "routeout.module_results.results[0]['metadata']['name'] == 'test'"
      msg: route create failed

  - name: get route
    oc_route:
      state: list
      name: test
      namespace: default
    register: routeout
  - debug: var=routeout

  - assert:
      that: "routeout.module_results[0]['metadata']['name'] == 'test'"
      msg: get route failed

  - name: delete route
    oc_route:
      state: absent
      name: test
      namespace: default
    register: routeout
  - debug: var=routeout

  - assert:
      that: "routeout.module_results.returncode == 0"
      msg: delete route failed

  - name: create route
    oc_route:
      name: test
      namespace: default
      tls_termination: edge
      cert_content: testing cert
      cacert_content: testing cacert
      key_content: testing key
      service_name: test
      host: test.example
    register: routeout
  - debug: var=routeout

  # FIXME: oc_route is not idempotent
  #- name: create route noop
  #  oc_route:
  #    name: test
  #    namespace: default
  #    tls_termination: edge
  #    cert_content: testing cert
  #    cacert_content: testing cacert
  #    key_content: testing key
  #    service_name: test
  #    host: test.example
  #  register: routeout
  #- debug: var=routeout
  #
  #- assert:
  #    that: "routeout.changed == False"
  #    msg: Route create not idempotent

  - name: delete route
    oc_route:
      name: test
      namespace: default
      state: absent
    register: routeout

  - name: create route
    oc_route:
      name: test
      namespace: default
      tls_termination: passthrough
      service_name: test
      host: test.example
      port: 8443
    register: routeout

  - assert:
      that:
      - "routeout.changed == True"
      - "routeout.module_results['results'][0]['spec']['port']['targetPort'] == 8443"
      msg: Route create not idempotent

  - name: create route
    oc_route:
      name: test
      namespace: default
      tls_termination: passthrough
      service_name: test
      host: test.example
      port: 8444
    register: routeout
  - debug: var=routeout

  - assert:
      that:
      - "routeout.changed == True"
      - "routeout.module_results.results[0]['spec']['port']['targetPort'] == 8444"
      msg: Route update not idempotent
