aboutsummaryrefslogtreecommitdiffstats
path: root/roles/xtesting-onap-vnf/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'roles/xtesting-onap-vnf/tasks')
-rw-r--r--roles/xtesting-onap-vnf/tasks/launch.yaml75
-rw-r--r--roles/xtesting-onap-vnf/tasks/main.yaml5
-rw-r--r--roles/xtesting-onap-vnf/tasks/prepare.yaml57
-rw-r--r--roles/xtesting-onap-vnf/tasks/prepare_cnf_test.yaml86
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