---
- name: setup zone is present
  cs_zone:
    name: "{{ cs_resource_prefix }}-zone"
    dns1: 8.8.8.8
    dns2: 8.8.4.4
    network_type: Basic
  register: zone
- name: verify setup zone is present
  assert:
    that:
      - zone is successful

- name: setup pod is absent
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: absent
  register: pod
- name: verify setup pod is absent
  assert:
    that:
      - pod is successful

- name: test fail if missing name
  cs_pod:
  register: pod
  ignore_errors: true
- name: verify results of fail if missing name
  assert:
    that:
      - pod is failed
      - "pod.msg == 'missing required arguments: name'"


- name: test create pod in check mode
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    start_ip: 10.100.10.101
    gateway: 10.100.10.1
    netmask: 255.255.255.0
  register: pod_origin
  check_mode: true
- name: verify test create pod  in check mode
  assert:
    that:
      - pod_origin is changed
      - pod_origin.zone == "{{ cs_resource_prefix }}-zone"

- name: test create pod
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    start_ip: 10.100.10.101
    gateway: 10.100.10.1
    netmask: 255.255.255.0
  register: pod_origin
- name: verify test create pod
  assert:
    that:
      - pod_origin is changed
      - pod_origin.allocation_state == "Enabled"
      - pod_origin.start_ip == "10.100.10.101"
      - pod_origin.end_ip == "10.100.10.254"
      - pod_origin.gateway == "10.100.10.1"
      - pod_origin.netmask == "255.255.255.0"
      - pod_origin.zone == "{{ cs_resource_prefix }}-zone"

- name: test create pod idempotence
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    start_ip: 10.100.10.101
    gateway: 10.100.10.1
    netmask: 255.255.255.0
  register: pod
- name: verify test create pod idempotence
  assert:
    that:
      - pod is not changed
      - pod.allocation_state == "Enabled"
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.1"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test update pod in check mode
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    gateway: 10.100.10.2
    netmask: 255.255.255.0
  register: pod
  check_mode: true
- name: verify test update pod in check mode
  assert:
    that:
      - pod is changed
      - pod.allocation_state == "Enabled"
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.1"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test update pod
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    gateway: 10.100.10.2
    netmask: 255.255.255.0
  register: pod
- name: verify test update pod
  assert:
    that:
      - pod is changed
      - pod.allocation_state == "Enabled"
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test update pod idempotence
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    gateway: 10.100.10.2
    netmask: 255.255.255.0
  register: pod
- name: verify test update pod idempotence
  assert:
    that:
      - pod is not changed
      - pod.allocation_state == "Enabled"
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test disable pod in check mode
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: disabled
  register: pod
  check_mode: true
- name: verify test enable pod in check mode
  assert:
    that:
      - pod is changed
      - pod.allocation_state == "Enabled"
      - pod.id == pod_origin.id
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test disable pod
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: disabled
  register: pod
- name: verify test enable pod
  assert:
    that:
      - pod is changed
      - pod.allocation_state == "Disabled"
      - pod.id == pod_origin.id
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test disable pod idempotence
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: disabled
  register: pod
- name: verify test enable pod idempotence
  assert:
    that:
      - pod is not changed
      - pod.allocation_state == "Disabled"
      - pod.id == pod_origin.id
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test enable pod in check mode
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: enabled
  register: pod
  check_mode: true
- name: verify test disable pod in check mode
  assert:
    that:
      - pod is changed
      - pod.allocation_state == "Disabled"
      - pod.id == pod_origin.id
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test enable pod
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: enabled
  register: pod
- name: verify test disable pod
  assert:
    that:
      - pod is changed
      - pod.allocation_state == "Enabled"
      - pod.id == pod_origin.id
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"


- name: test enable pod idempotence
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: enabled
  register: pod
- name: verify test enabled pod idempotence
  assert:
    that:
      - pod is not changed
      - pod.allocation_state == "Enabled"
      - pod.id == pod_origin.id
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test absent pod in check mode
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: absent
  register: pod
  check_mode: true
- name: verify test create pod in check mode
  assert:
    that:
      - pod is changed
      - pod.id == pod_origin.id
      - pod.allocation_state == "Enabled"
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test absent pod
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: absent
  register: pod
- name: verify test create pod
  assert:
    that:
      - pod is changed
      - pod.id == pod_origin.id
      - pod.allocation_state == "Enabled"
      - pod.start_ip == "10.100.10.101"
      - pod.end_ip == "10.100.10.254"
      - pod.gateway == "10.100.10.2"
      - pod.netmask == "255.255.255.0"
      - pod.zone == "{{ cs_resource_prefix }}-zone"

- name: test absent pod idempotence
  cs_pod:
    name: "{{ cs_resource_prefix }}-pod"
    zone: "{{ cs_resource_prefix }}-zone"
    state: absent
  register: pod
- name: verify test absent pod idempotence
  assert:
    that:
      - pod is not changed
