diff options
Diffstat (limited to 'roles/xtesting-onap-vnf/tasks')
-rw-r--r-- | roles/xtesting-onap-vnf/tasks/launch.yaml | 75 | ||||
-rw-r--r-- | roles/xtesting-onap-vnf/tasks/main.yaml | 5 | ||||
-rw-r--r-- | roles/xtesting-onap-vnf/tasks/prepare.yaml | 57 | ||||
-rw-r--r-- | roles/xtesting-onap-vnf/tasks/prepare_cnf_test.yaml | 86 |
4 files changed, 223 insertions, 0 deletions
diff --git a/roles/xtesting-onap-vnf/tasks/launch.yaml b/roles/xtesting-onap-vnf/tasks/launch.yaml new file mode 100644 index 0000000..4220647 --- /dev/null +++ b/roles/xtesting-onap-vnf/tasks/launch.yaml @@ -0,0 +1,75 @@ +--- +# tasks file for functest (tests) + +## +- block: + - name: generate pre command to run + ansible.builtin.set_fact: + command: "mkdir -p /var/lib/xtesting/results/{{ run_type }}" + + - name: generate command to run + ansible.builtin.set_fact: + command: "{{ command }} && run_tests --test {{ run_type }} --report" + + - name: add S3 upload to command + ansible.builtin.set_fact: + command: "{{ command }} --push" + when: use_s3 | bool + + - name: generate a random number between 0 and 600 + ansible.builtin.set_fact: + before_launch_wait_time: "{{ 600 | random }}" + when: random_wait and before_launch_wait_time is not defined + + - name: "wait {{ before_launch_wait_time }}s in order to allow 'sequential' tests" + run_once: yes + wait_for: + timeout: "{{ before_launch_wait_time }}" + delegate_to: localhost + when: random_wait + + - name: "launch onap-vnf docker for {{ run_type }}" + community.general.docker_container: + container_default_behavior: no_defaults + name: "{{ docker_vnf_name }}-{{ run_type }}" + image: "{{ docker_vnf_image }}:{{ docker_vnf_version }}" + env_file: "{{ exec_local_path }}/env" + state: started + command: "/bin/bash -c '{{ command }}'" + pull: yes + recreate: yes + volumes: "{{ volumes }}" + etc_hosts: "{{ etc_hosts }}" + detach: yes + keep_volumes: no + + - name: wait for test docker to be finished + community.docker.docker_container_info: + name: "{{ docker_vnf_name }}-{{ run_type }}" + register: container_info + until: container_info.container.State.Status == "exited" + retries: "{{ run_timeout }}" + delay: 1 + + - name: "{{ run_type }} has failed" + ansible.builtin.fail: + msg: "The test {{ run_type }} has failed" + when: container_info.container.State.ExitCode != 0 + always: + - name: retrieve container logs + shell: "docker logs {{ docker_vnf_name }}-{{ run_type }}" + register: container_logs + ignore_errors: True + + - name: display container logs + debug: + msg: "{{ container_logs.stdout }}" + ignore_errors: True + - name: "save VNF results for artifacts" + ansible.posix.synchronize: + src: "{{ res_local_path }}/{{ run_tiers }}/{{ run_type }}" + dest: "./results/{{ run_tiers }}" + mode: pull + use_ssh_args: true + ignore_errors: True + when: not use_s3 | bool diff --git a/roles/xtesting-onap-vnf/tasks/main.yaml b/roles/xtesting-onap-vnf/tasks/main.yaml new file mode 100644 index 0000000..db10573 --- /dev/null +++ b/roles/xtesting-onap-vnf/tasks/main.yaml @@ -0,0 +1,5 @@ +--- +- import_tasks: prepare_cnf_test.yaml + when: run_type == "basic_cnf" +- import_tasks: prepare.yaml +- import_tasks: launch.yaml diff --git a/roles/xtesting-onap-vnf/tasks/prepare.yaml b/roles/xtesting-onap-vnf/tasks/prepare.yaml new file mode 100644 index 0000000..addab8c --- /dev/null +++ b/roles/xtesting-onap-vnf/tasks/prepare.yaml @@ -0,0 +1,57 @@ +--- +# tasks file for roles/prepare_test + +## +# Prepare config +## +- name: Clean directory + ansible.builtin.file: + path: "{{ exec_local_path }}" + state: absent + +- name: Create directory + ansible.builtin.file: + path: "{{ exec_local_path }}/vnf-services" + state: directory + mode: 0755 + +- name: Create env file + ansible.builtin.template: + src: env-os.j2 + dest: "{{ exec_local_path }}/env" + mode: "0644" + +- name: copy pythonsdk-tests configuration file + ansible.builtin.template: + src: settings.py.j2 + dest: "{{ exec_local_path }}/settings.py" + mode: "0644" + +- name: create basic_vm configuration file + ansible.builtin.template: + src: basic_vm-service-{{ onap_version }}.yaml.j2 + dest: "{{ exec_local_path }}/basic_vm-service.yaml" + mode: "0644" + +- name: create basic_vm_macro configuration file + ansible.builtin.template: + src: basic_vm_macro-service-{{ onap_version }}.yaml.j2 + dest: "{{ exec_local_path }}/basic_vm_macro-service.yaml" + mode: "0644" + +- name: create directories as root + become: yes + ansible.builtin.file: + path: "{{ res_local_path }}/{{ run_tiers }}/{{ run_type }}" + state: directory + mode: 0755 +- name: Delete old logs + become: yes + ansible.builtin.file: + state: absent + path: "{{ res_local_path }}/{{ run_tiers }}/{{ run_type }}" + +- name: clean onap-vnf docker + community.general.docker_container: + name: "{{ docker_vnf_name }}-{{ run_type }}" + state: absent diff --git a/roles/xtesting-onap-vnf/tasks/prepare_cnf_test.yaml b/roles/xtesting-onap-vnf/tasks/prepare_cnf_test.yaml new file mode 100644 index 0000000..47ee366 --- /dev/null +++ b/roles/xtesting-onap-vnf/tasks/prepare_cnf_test.yaml @@ -0,0 +1,86 @@ +--- +- name: Check that cloud-site service does not exist + community.kubernetes.k8s_service: + name: cloud-site + namespace: onap + state: absent + +- name: Expose nodePort with created cloud-site service + shell: kubectl -n onap expose svc so-catalog-db-adapter --name cloud-site --type=NodePort + +- name: Get nodePort for cloud-site service + community.kubernetes.k8s_info: + kind: service + namespace: onap + name: cloud-site + register: output + +- name: set variable for api port + ansible.builtin.set_fact: + cloudsite_port: "{{ output.resources[0].spec.ports[0].nodePort }}" + +- name: Get DEFAULT Cloud Site + ansible.builtin.uri: + url: "{{ so_url }}:{{ cloudsite_port }}/\ + cloudSite/DEFAULT" + method: GET + status_code: 200 + body_format: json + validate_certs: "no" + return_content: "yes" + headers: + authorization: Basic YnBlbDpwYXNzd29yZDEk + Accept: application/json + Cache-Control: no-cache + register: output + +- name: Add cloud site CloudRegion + ansible.builtin.uri: + url: "{{ so_url }}:{{ cloudsite_port }}/\ + cloudSite/{{ k8sRegionID }}" + method: PUT + status_code: + - 200 + - 201 + body_format: json + validate_certs: "no" + return_content: "yes" + headers: + authorization: Basic YnBlbDpwYXNzd29yZDEk + Accept: application/json + Cache-Control: no-cache + body: + id: "{{ k8sRegionID }}" + region_id: "{{ k8sRegionID }}" + aic_version: 2.5 + clli: "{{ datacenter_id }}" + orchestrator: multicloud + identity_service_id: DEFAULT_KEYSTONE + identityService: "{{ output.json.identityService }}" + +- name: Remove created cloud-site service with NodePort + community.kubernetes.k8s_service: + name: cloud-site + namespace: onap + state: absent + +- name: delete cnf namespace + community.kubernetes.k8s: + state: absent + definition: + apiVersion: v1 + kind: Namespace + metadata: + name: "{{ cnf_namespace }}" + +- name: wait for cnf namespace full deletion + shell: | + set -o pipefail && kubectl get namespace | + grep -c {{ cnf_namespace }} || true + args: + executable: /bin/bash + register: kube + changed_when: kube.stdout == '0' + until: kube.stdout == '0' + retries: 600 + delay: 1 |