main.yml 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. ---
  2. # Releases any egressip resources that do not have a corresponding ICHP project.
  3. - name: Check which egressip resources have been allocated to ICHP projects.
  4. kubernetes.core.k8s_info:
  5. kubeconfig: tmp/kubeconfig-ocp4
  6. validate_certs: no
  7. api_version: k8s.ovn.org/v1
  8. kind: egressip
  9. label_selectors:
  10. - ichp.ing.net/generated=
  11. register: egressips_allocated
  12. - name: Convert that to a list of projects names that have been allocated IPs.
  13. ansible.builtin.set_fact:
  14. egress_projects: "{{ (egressips_allocated | community.general.json_query('resources[*].metadata.labels') | items2dict(key_name='egress.for.namespace', value_name='ichp.ing.net/generated')).keys() }}"
  15. - name: Check which ICHP namespaces there are.
  16. kubernetes.core.k8s_info:
  17. kubeconfig: tmp/kubeconfig-ocp4
  18. validate_certs: no
  19. api_version: v1
  20. kind: namespace
  21. label_selectors:
  22. - ichp.ing.net/generated=
  23. register: ichp_namespaces
  24. - name: Convert that to a list of project names that exist.
  25. ansible.builtin.set_fact:
  26. existing_projects: "{{ ichp_namespaces | community.general.json_query('resources[*].metadata.name') | flatten }}"
  27. - name: Now get a list of egressips that belong to missing projects.
  28. ansible.builtin.set_fact:
  29. orphan_egressips: "{{ egress_projects | difference(existing_projects) }}"
  30. - name: Remove egressips without a corresponding namespace.
  31. kubernetes.core.k8s:
  32. kubeconfig: tmp/kubeconfig-ocp4
  33. validate_certs: no
  34. api_version: k8s.ovn.org/v1
  35. kind: egressip
  36. name: "egress-ns-{{ item }}"
  37. state: absent
  38. loop: "{{ orphan_egressips }}"
  39. ...