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"