|
8 | 8 | deploy_dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/deploy"
|
9 | 9 | custom_resource: "{{ lookup('file', '/'.join([deploy_dir, 'crds/ansible_v1alpha1_memcached_cr.yaml'])) | from_yaml }}"
|
10 | 10 | tasks:
|
| 11 | + - block: |
| 12 | + - name: debug memcached lookup |
| 13 | + debug: |
| 14 | + var: deploy |
| 15 | + vars: |
| 16 | + deploy: '{{ lookup("k8s", |
| 17 | + kind="Deployment", |
| 18 | + api_version="apps/v1", |
| 19 | + namespace=namespace, |
| 20 | + label_selector="app=memcached" |
| 21 | + )}}' |
11 | 22 |
|
12 |
| - - name: debug memcached lookup |
13 |
| - debug: |
14 |
| - var: deploy |
15 |
| - vars: |
16 |
| - deploy: '{{ lookup("k8s", |
17 |
| - kind="Deployment", |
18 |
| - api_version="apps/v1", |
19 |
| - namespace=namespace, |
20 |
| - label_selector="app=memcached" |
21 |
| - )}}' |
| 23 | + - name: Wait 2 minutes for memcached deployment |
| 24 | + debug: |
| 25 | + var: deploy |
| 26 | + until: deploy and deploy.status and deploy.status.replicas == deploy.status.get("availableReplicas", 0) |
| 27 | + retries: 12 |
| 28 | + delay: 10 |
| 29 | + vars: |
| 30 | + deploy: '{{ lookup("k8s", |
| 31 | + kind="Deployment", |
| 32 | + api_version="apps/v1", |
| 33 | + namespace=namespace, |
| 34 | + label_selector="app=memcached" |
| 35 | + )}}' |
22 | 36 |
|
23 |
| - - name: Wait 2 minutes for memcached deployment |
24 |
| - debug: |
25 |
| - var: deploy |
26 |
| - until: deploy and deploy.status and deploy.status.replicas == deploy.status.get("availableReplicas", 0) |
27 |
| - retries: 12 |
28 |
| - delay: 10 |
29 |
| - vars: |
30 |
| - deploy: '{{ lookup("k8s", |
31 |
| - kind="Deployment", |
32 |
| - api_version="apps/v1", |
33 |
| - namespace=namespace, |
34 |
| - label_selector="app=memcached" |
35 |
| - )}}' |
| 37 | + - name: Create ConfigMap that the Operator should delete |
| 38 | + k8s: |
| 39 | + definition: |
| 40 | + apiVersion: v1 |
| 41 | + kind: ConfigMap |
| 42 | + metadata: |
| 43 | + name: deleteme |
| 44 | + namespace: '{{ namespace }}' |
| 45 | + data: |
| 46 | + delete: me |
36 | 47 |
|
37 |
| - - name: Create ConfigMap that the Operator should delete |
38 |
| - k8s: |
39 |
| - definition: |
40 |
| - apiVersion: v1 |
41 |
| - kind: ConfigMap |
42 |
| - metadata: |
43 |
| - name: deleteme |
44 |
| - namespace: '{{ namespace }}' |
45 |
| - data: |
46 |
| - delete: me |
| 48 | + - name: Verify custom status exists |
| 49 | + assert: |
| 50 | + that: debug_cr.status.get("test") == "hello world" |
| 51 | + vars: |
| 52 | + debug_cr: '{{ lookup("k8s", |
| 53 | + kind=custom_resource.kind, |
| 54 | + api_version=custom_resource.apiVersion, |
| 55 | + namespace=namespace, |
| 56 | + resource_name=custom_resource.metadata.name |
| 57 | + )}}' |
47 | 58 |
|
48 |
| - - name: debug CR lookup |
49 |
| - debug: |
50 |
| - var: cr |
51 |
| - vars: |
52 |
| - deploy: '{{ lookup("k8s", |
53 |
| - kind=custom_resource.kind, |
54 |
| - api_version=custom_resource.apiVersion, |
55 |
| - namespace=namespace, |
56 |
| - resource_name=custom_resource.metadata.name |
57 |
| - )}}' |
| 59 | + - name: Delete the custom resource |
| 60 | + k8s: |
| 61 | + state: absent |
| 62 | + namespace: '{{ namespace }}' |
| 63 | + definition: '{{ custom_resource }}' |
58 | 64 |
|
59 |
| - - name: Verify custom status exists |
60 |
| - assert: |
61 |
| - that: cr.resources[0].status.get("test") == "hello world" |
62 |
| - when: cr is defined |
| 65 | + - name: Wait for the custom resource to be deleted |
| 66 | + k8s_facts: |
| 67 | + api_version: '{{ custom_resource.apiVersion }}' |
| 68 | + kind: '{{ custom_resource.kind }}' |
| 69 | + namespace: '{{ namespace }}' |
| 70 | + name: '{{ custom_resource.metadata.name }}' |
| 71 | + register: cr |
| 72 | + retries: 10 |
| 73 | + delay: 2 |
| 74 | + until: not cr.resources |
| 75 | + failed_when: cr.resources |
63 | 76 |
|
64 |
| - - name: Delete the custom resource |
65 |
| - k8s: |
66 |
| - state: absent |
67 |
| - namespace: '{{ namespace }}' |
68 |
| - definition: '{{ custom_resource }}' |
| 77 | + - name: Verify the ConfigMap was deleted |
| 78 | + assert: |
| 79 | + that: not lookup('k8s', kind='ConfigMap', api_version='v1', namespace=namespace, resource_name='deleteme') |
69 | 80 |
|
70 |
| - - name: Wait for the custom resource to be deleted |
71 |
| - k8s_facts: |
72 |
| - api_version: '{{ custom_resource.apiVersion }}' |
73 |
| - kind: '{{ custom_resource.kind }}' |
74 |
| - namespace: '{{ namespace }}' |
75 |
| - name: '{{ custom_resource.metadata.name }}' |
76 |
| - register: cr |
77 |
| - retries: 10 |
78 |
| - delay: 2 |
79 |
| - until: not cr.resources |
80 |
| - failed_when: cr.resources |
| 81 | + - name: Verify the Deployment was deleted (wait 30s) |
| 82 | + assert: |
| 83 | + that: not lookup('k8s', kind='Deployment', api_version='apps/v1', namespace=namespace, label_selector='app=memcached') |
| 84 | + retries: 10 |
| 85 | + delay: 3 |
81 | 86 |
|
82 |
| - - name: Verify the ConfigMap was deleted |
83 |
| - assert: |
84 |
| - that: not lookup('k8s', kind='ConfigMap', api_version='v1', namespace=namespace, resource_name='deleteme') |
| 87 | + rescue: |
| 88 | + - name: debug cr |
| 89 | + ignore_errors: yes |
| 90 | + failed_when: false |
| 91 | + debug: |
| 92 | + var: debug_cr |
| 93 | + vars: |
| 94 | + debug_cr: '{{ lookup("k8s", |
| 95 | + kind=custom_resource.kind, |
| 96 | + api_version=custom_resource.apiVersion, |
| 97 | + namespace=namespace, |
| 98 | + resource_name=custom_resource.metadata.name |
| 99 | + )}}' |
85 | 100 |
|
86 |
| - - name: Verify the Deployment was deleted |
87 |
| - assert: |
88 |
| - that: not lookup('k8s', kind='Deployment', api_version='apps/v1', namespace=namespace, label_selector='app=memcached') |
| 101 | + - name: debug memcached lookup |
| 102 | + ignore_errors: yes |
| 103 | + failed_when: false |
| 104 | + debug: |
| 105 | + var: deploy |
| 106 | + vars: |
| 107 | + deploy: '{{ lookup("k8s", |
| 108 | + kind="Deployment", |
| 109 | + api_version="apps/v1", |
| 110 | + namespace=namespace, |
| 111 | + label_selector="app=memcached" |
| 112 | + )}}' |
| 113 | + |
| 114 | + - name: get operator logs |
| 115 | + ignore_errors: yes |
| 116 | + failed_when: false |
| 117 | + command: kubectl logs deployment/{{ definition.metadata.name }} -n {{ namespace }} |
| 118 | + vars: |
| 119 | + definition: "{{ lookup('file', '/'.join([deploy_dir, 'operator.yaml'])) | from_yaml }}" |
| 120 | + register: log |
| 121 | + |
| 122 | + - debug: var=log.stdout_lines |
| 123 | + |
| 124 | + - fail: |
| 125 | + msg: "Failed in asserts.yml" |
0 commit comments