github.com/jmrodri/operator-sdk@v0.5.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 reconcilation 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 rescue: 143 - name: debug cr 144 ignore_errors: yes 145 failed_when: false 146 debug: 147 var: debug_cr 148 vars: 149 debug_cr: '{{ lookup("k8s", 150 kind=custom_resource.kind, 151 api_version=custom_resource.apiVersion, 152 namespace=namespace, 153 resource_name=custom_resource.metadata.name 154 )}}' 155 156 - name: debug memcached lookup 157 ignore_errors: yes 158 failed_when: false 159 debug: 160 var: deploy 161 vars: 162 deploy: '{{ lookup("k8s", 163 kind="Deployment", 164 api_version="apps/v1", 165 namespace=namespace, 166 label_selector="app=memcached" 167 )}}' 168 169 - name: get operator logs 170 ignore_errors: yes 171 failed_when: false 172 command: kubectl logs deployment/{{ definition.metadata.name }} -n {{ namespace }} 173 vars: 174 definition: "{{ lookup('file', '/'.join([deploy_dir, 'operator.yaml'])) | from_yaml }}" 175 register: log 176 177 - debug: var=log.stdout_lines 178 179 - fail: 180 msg: "Failed in asserts.yml"