#!/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
  user: root
  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.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.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.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

  - 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.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.results.results[0]['spec']['port']['targetPort'] == 8444"
      msg: Route update not idempotent
