Skip to content

Commit

Permalink
Added operator cleanup task module to ocp-descheduler role
Browse files Browse the repository at this point in the history
Signed-off-by: Aditya Honkalas <[email protected]>
  • Loading branch information
AdityaHonkalas committed Jan 13, 2023
1 parent 504a385 commit 97865de
Show file tree
Hide file tree
Showing 6 changed files with 117 additions and 24 deletions.
2 changes: 1 addition & 1 deletion examples/all.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ ipa_user_last_name: "Star" # IPA user last name to display
descheduler_role_enable: false
descheduler_operator_deploy: false
descheduler_catalogsource_image: "quay.io/openshift-release-dev/ocp-release-nightly:iib-int-index-art-operators-4.12"
descheduler_catalogsource_name: "kube-descheduler-operator-catalog"
descheduler_catalogsource_name: "my-operator-catalog"
descheduler_namespace: "openshift-descheduler"
descheduler_channel: "4.12"
descheduler_e2e_tests_run: false
Expand Down
4 changes: 2 additions & 2 deletions examples/ocp_descheduler_vars.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ descheduler_role_enable: false
descheduler_operator_deploy: false
descheduler_catalogsource_image: "quay.io/openshift-release-dev/ocp-release-nightly:iib-int-index-art-operators-4.12"
descheduler_catalogsource_name: "my-operator-catalog"
descheduler_namespace: "openshift-kube-descheduler-operator"
descheduler_namespace: "openshift-descheduler"
descheduler_channel: "4.12"
descheduler_e2e_tests_run: false
descheduler_workdir: "/tmp/descheduler"
descheduler_workdir: "/tmp/descheduler"
descheduler_e2e_repo: "https://github.com/openshift/openshift-tests-private"
descheduler_e2e_github_branch: "master"
descheduler_go_tarball: "https://go.dev/dl/go1.18.4.linux-ppc64le.tar.gz"
2 changes: 1 addition & 1 deletion playbooks/roles/ocp-descheduler/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Role Variables
| descheduler_role_enable | no | false | Set the flag `true` to run this playbook. |
| descheduler_operator_deploy | no | false | Set the flag `true` to deploy descheduler operator. |
| descheduler_catalogsource_image | no | `quay.io/openshift-release-dev/ocp-release-nightly:iib-int-index-art-operators-4.12` | Descheduler operator image index for catalog source, the default has been given for operator version 4.12 ART. |
| descheduler_catalogsource_name | no | kube-descheduler-operator-catalog | Custom catalog source name, if not defined default will be used. |
| descheduler_catalogsource_name | no | my-operator-catalog | Custom catalog source name, if not defined default will be used. |
| descheduler_namespace | no | openshift-descheduler | Custom namespace name to create a new namespace, if not defined the default wil be used. |
| descheduler_channel | no | 4.12 | Channel version for the descheduler operator. |
| descheduler_e2e_tests_run | no | false | Set the flag `true` for running descheduler e2e tests. |
Expand Down
6 changes: 3 additions & 3 deletions playbooks/roles/ocp-descheduler/defaults/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ descheduler_role_enable: false
descheduler_operator_deploy: false
descheduler_catalogsource_image: "quay.io/openshift-release-dev/ocp-release-nightly:iib-int-index-art-operators-4.12"
descheduler_catalogsource_name: "my-operator-catalog"
descheduler_namespace: "openshift-kube-descheduler-operator"
descheduler_namespace: "openshift-descheduler"
descheduler_channel: "4.12"
descheduler_e2e_tests_run: false
descheduler_workdir: "/tmp/descheduler"
descheduler_workdir: "/tmp/descheduler"
descheduler_e2e_repo: "https://github.com/openshift/openshift-tests-private"
descheduler_e2e_github_branch: "master"
descheduler_go_tarball: "https://go.dev/dl/go1.18.4.linux-ppc64le.tar.gz"
descheduler_go_tarball: "https://go.dev/dl/go1.18.4.linux-ppc64le.tar.gz
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---

## Descheduler operator cleanup

- name: Check the namespaces containing descheduler operator installed
shell: oc get csv -A | awk '{ if($2 ~ /clusterkubedescheduleroperator/) print($1)}'
register: descheduler_installed_namespaces

- name: Cleanup block to remove the operator support objects and namespace
block:
- name: Delete the subscriptions for descheduler
shell: "oc delete subscription --all -n {{ item }}"
loop: "{{ descheduler_installed_namespaces.stdout_lines }}"

- name: Delete the operatorgroups for descheduler
shell: "oc delete operatorgroup --all -n {{ item }}"
loop: "{{ descheduler_installed_namespaces.stdout_lines }}"

- name: Delete the operator deployments
shell: "oc delete deploy --all -n {{ item }}"
loop: "{{ descheduler_installed_namespaces.stdout_lines }}"

- name: Delete the CSV for operator
shell: "oc delete csv --all -n {{ item }}"
loop: "{{ descheduler_installed_namespaces.stdout_lines }}"

- name: Delete the projects
shell: "oc delete ns {{ item }}"
loop: "{{ descheduler_installed_namespaces.stdout_lines }}"

- name: Check if the {{ descheduler_namespace }} namespace is active
shell: "oc get namespace {{ descheduler_namespace }} --no-headers | wc -l"
register: namespace_exists

- name: Delete the OperatorGroup, Subscription and {{ descheduler_namespace }} namespace
block:
- name: Delete the subscription
kubernetes.core.k8s:
state: absent
definition:
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: openshift-descheduler-subscription
namespace: "{{ descheduler_namespace }}"
spec:
channel: "{{ descheduler_channel }}"
installPlanApproval: Automatic
name: cluster-kube-descheduler-operator
source: "{{ descheduler_catalogsource_name }}"
sourceNamespace: openshift-marketplace

- name: Delete the OperatorGroup
kubernetes.core.k8s:
state: absent
definition:
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: openshift-descheduler-operatorgroup
namespace: "{{ descheduler_namespace }}"
spec:
targetNamespaces:
- "{{ descheduler_namespace }}"

- name: Create a target namespace
kubernetes.core.k8s:
state: absent
definition:
apiVersion: v1
kind: Namespace
metadata:
name: "{{ descheduler_namespace }}"
spec:
targetNamespaces:
- "{{ descheduler_namespace }}"

when: namespace_exists.stdout != 0
49 changes: 32 additions & 17 deletions playbooks/roles/ocp-descheduler/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,16 @@
include_role:
name: check-cluster-health

- name: Check if the operator is available in the OperatorHub
shell: oc get packagemanifest cluster-kube-descheduler-operator -n openshift-marketplace --no-headers | wc -l
register: operator_packagemanifest_entries

# Descheduler operator deployment block
- name: Descheduler operator deployment
block:
- name: Include operator cleanup task module
include_tasks: "{{ role_path }}/tasks/descheduler-operator-cleanup.yaml"

- name: Setup a catalogsource for installing descheduler operator
block:
- name: Include the global pull-secret update role to extract podman-secret
Expand All @@ -36,7 +43,6 @@
custom_catalogsource_name: "{{ descheduler_catalogsource_name }}"
custom_catalogsource_display_name: "Descheduler Operator"
custom_catalogsource_image: "{{ descheduler_catalogsource_image }}"
when: descheduler_catalogsource_image != '' or descheduler_catalogsource_image == None

- name: Create a target namespace
kubernetes.core.k8s:
Expand Down Expand Up @@ -78,27 +84,36 @@
name: cluster-kube-descheduler-operator
source: "{{ descheduler_catalogsource_name }}"
sourceNamespace: openshift-marketplace
when: descheduler_operator_deploy

- name: Verify the operator installation
block:
- name: Check if the cluster service version has status as Succeeded
shell: "oc get csv --all-namespaces --no-headers | grep clusterkubedescheduleroperator | awk '{ if (($2 ~ /clusterkubedescheduleroperator/) && $NF == \"Succeeded\") print $2 }'| wc -l"
register: descheduler_operators_csv
until: descheduler_operators_csv.stdout|int != 0
retries: 15
delay: 60

- name: Check if pods are running
shell: "oc get pods --all-namespaces --no-headers | grep descheduler | awk '{ if ($4 == \"Running\") print $2 }' | wc -l"
register: descheduler_pods
until: descheduler_pods.stdout|int != 0
retries: 15
delay: 60
- name: Verify the operator installation
block:
- name: Check if the cluster service version has status as Succeeded
shell: "oc get csv --all-namespaces --no-headers | grep clusterkubedescheduleroperator | awk '{ if (($2 ~ /clusterkubedescheduleroperator/) && $NF == \"Succeeded\") print $2 }'| wc -l"
register: descheduler_operators_csv
until: descheduler_operators_csv.stdout|int != 0
retries: 15
delay: 60

- name: Check if pods are running
shell: "oc get pods --all-namespaces --no-headers | grep descheduler | awk '{ if ($4 == \"Running\") print $2 }' | wc -l"
register: descheduler_pods
until: descheduler_pods.stdout|int != 0
retries: 15
delay: 60

when: descheduler_operator_deploy and operator_packagemanifest_entries.stdout|int != 0

# Descheduler e2e run block
- name: Running e2e test suite in openshift-tests-private for descheduler
block:
- name: Check if there is operator installed already
shell: oc get csv -A | awk '{ if ($2 ~ /clusterkubedescheduleroperator/) print $3}' | wc -l
register: descheduler_csv

- name: Invoke operator clean block
include_tasks: "{{ role_path}}/tasks/descheduler-operator-cleanup.yaml"
when: descheduler_csv.stdout|int != 0

- name: Create a directory for clonning the repo
file:
state: directory
Expand Down

0 comments on commit 97865de

Please sign in to comment.