github.com/theishshah/operator-sdk@v0.6.0/test/ansible-memcached/asserts.yml (about) 1 --- 2 3 - name: Verify 4 hosts: localhost 5 connection: local 6 vars: 7 ansible_python_interpreter: '{{ ansible_playbook_python }}' 8 deploy_dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/deploy" 9 custom_resource: "{{ lookup('file', '/'.join([deploy_dir, 'crds/ansible_v1alpha1_memcached_cr.yaml'])) | from_yaml }}" 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 )}}' 22 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 )}}' 36 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 47 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 )}}' 58 59 # This will verify that the `secret` role was executed 60 - name: Verify that test-service was created 61 assert: 62 that: lookup('k8s', kind='Service', api_version='v1', namespace=namespace, resource_name='test-service') 63 64 - when: molecule_yml.scenario.name == "test-local" 65 block: 66 - name: Restart the operator by killing the pod 67 k8s: 68 state: absent 69 definition: 70 api_version: v1 71 kind: Pod 72 metadata: 73 namespace: '{{ namespace }}' 74 name: '{{ pod.metadata.name }}' 75 vars: 76 pod: '{{ q("k8s", api_version="v1", kind="Pod", namespace=namespace, label_selector="name=memcached-operator").0 }}' 77 78 - name: Wait 2 minutes for operator deployment 79 debug: 80 var: deploy 81 until: deploy and deploy.status and deploy.status.replicas == deploy.status.get("availableReplicas", 0) 82 retries: 12 83 delay: 10 84 vars: 85 deploy: '{{ lookup("k8s", 86 kind="Deployment", 87 api_version="apps/v1", 88 namespace=namespace, 89 resource_name="memcached-operator" 90 )}}' 91 92 - name: Wait for reconciliation to have a chance at finishing 93 pause: 94 seconds: 15 95 96 - name: Delete the service that is created. 97 k8s: 98 kind: Service 99 api_version: v1 100 namespace: '{{ namespace }}' 101 name: test-service 102 state: absent 103 104 - name: Verify that test-service was re-created 105 debug: 106 var: service 107 until: service 108 retries: 12 109 delay: 10 110 vars: 111 service: '{{ lookup("k8s", 112 kind="Service", 113 api_version="v1", 114 namespace=namespace, 115 resource_name="test-service", 116 )}}' 117 118 - name: Delete the custom resource 119 k8s: 120 state: absent 121 namespace: '{{ namespace }}' 122 definition: '{{ custom_resource }}' 123 124 - name: Wait for the custom resource to be deleted 125 k8s_facts: 126 api_version: '{{ custom_resource.apiVersion }}' 127 kind: '{{ custom_resource.kind }}' 128 namespace: '{{ namespace }}' 129 name: '{{ custom_resource.metadata.name }}' 130 register: cr 131 retries: 10 132 delay: 2 133 until: not cr.resources 134 failed_when: cr.resources 135 136 - name: Verify the Deployment was deleted (wait 30s) 137 assert: 138 that: not lookup('k8s', kind='Deployment', api_version='apps/v1', namespace=namespace, label_selector='app=memcached') 139 retries: 10 140 delay: 3 141 142 - name: Add operator pod to inventory 143 add_host: 144 name: '{{ pod.metadata.name }}' 145 groups: operator 146 ansible_connection: kubectl 147 ansible_remote_tmp: /tmp/ansible 148 kubectl_namespace: '{{ namespace }}' 149 when: molecule_yml.scenario.name == "test-local" 150 vars: 151 pod: '{{ q("k8s", api_version="v1", kind="Pod", namespace=namespace, label_selector="name=memcached-operator").0 }}' 152 rescue: 153 - name: debug cr 154 ignore_errors: yes 155 failed_when: false 156 debug: 157 var: debug_cr 158 vars: 159 debug_cr: '{{ lookup("k8s", 160 kind=custom_resource.kind, 161 api_version=custom_resource.apiVersion, 162 namespace=namespace, 163 resource_name=custom_resource.metadata.name 164 )}}' 165 166 - name: debug memcached lookup 167 ignore_errors: yes 168 failed_when: false 169 debug: 170 var: deploy 171 vars: 172 deploy: '{{ lookup("k8s", 173 kind="Deployment", 174 api_version="apps/v1", 175 namespace=namespace, 176 label_selector="app=memcached" 177 )}}' 178 179 - name: get operator logs 180 ignore_errors: yes 181 failed_when: false 182 command: kubectl logs deployment/{{ definition.metadata.name }} -n {{ namespace }} -c operator 183 vars: 184 definition: "{{ lookup('file', '/'.join([deploy_dir, 'operator.yaml'])) | from_yaml }}" 185 register: log 186 187 - debug: var=log.stdout_lines 188 189 - name: get ansible logs 190 ignore_errors: yes 191 failed_when: false 192 command: kubectl logs deployment/{{ definition.metadata.name }} -n {{ namespace }} -c ansible 193 vars: 194 definition: "{{ lookup('file', '/'.join([deploy_dir, 'operator.yaml'])) | from_yaml }}" 195 register: ansible_log 196 197 - debug: var=ansible_log.stdout_lines 198 199 - fail: 200 msg: "Failed in asserts.yml" 201 202 - hosts: operator 203 gather_facts: no 204 become: false 205 tasks: 206 - name: Output latest log 207 command: cat /tmp/ansible-operator/runner/ansible.example.com/v1alpha1/Memcached/{{ namespace }}/example-memcached/artifacts/latest/stdout 208 register: ansible_log 209 - debug: var=ansible_log.stdout_lines