github.com/aloknnikhil/operator-sdk@v0.8.2/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