From 8106dcff44597e0761448303ed6fa12b9f22552d Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Fri, 11 Dec 2020 14:36:00 +0100 Subject: [PATCH] tests: rgw_multisite playbook test refactor Currently we create an object from the primary sites but we try to read that object still from the master which doesn't make sense, we should try to read it from a secondary site. Signed-off-by: Guillaume Abrioux (cherry picked from commit e2ea403d5ef938a3ea12276004eaa71f9919a4a3) --- tests/functional/rgw_multisite.yml | 67 ++++++++++++++++++------------ 1 file changed, 41 insertions(+), 26 deletions(-) diff --git a/tests/functional/rgw_multisite.yml b/tests/functional/rgw_multisite.yml index 425578c1c..152d4489d 100644 --- a/tests/functional/rgw_multisite.yml +++ b/tests/functional/rgw_multisite.yml @@ -2,10 +2,7 @@ - hosts: rgws gather_facts: True become: True - vars: - s3cmd_cmd: "s3cmd --no-ssl --access_key=P9Eb6S8XNyo4dtZZUUMy --secret_key=qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB --host={{ rgw_multisite_endpoint_addr }}:8080 --host-bucket={{ rgw_multisite_endpoint_addr }}:8080" tasks: - - name: check if it is Atomic host stat: path=/run/ostree-booted register: stat_ostree @@ -15,6 +12,18 @@ set_fact: is_atomic: '{{ stat_ostree.stat.exists }}' + - name: import_role ceph-defaults + import_role: + name: ceph-defaults + + - name: import_role ceph-facts + include_role: + name: ceph-facts + tasks_from: "{{ item }}.yml" + with_items: + - set_radosgw_address + - container_binary + - name: install s3cmd package: name: s3cmd @@ -24,39 +33,45 @@ when: not is_atomic | bool - name: generate and upload a random 10Mb file - containerized deployment - command: > - docker run --rm --name=rgw_multisite_test --entrypoint=/bin/bash {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} -c 'dd if=/dev/urandom of=/tmp/testinfra.img bs=1M count=10; {{ s3cmd_cmd }} mb s3://testinfra; {{ s3cmd_cmd }} put /tmp/testinfra.img s3://testinfra' + shell: > + {{ container_binary }} run --rm --name=rgw_multisite_test --entrypoint=bash {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} -c 'dd if=/dev/urandom of=/tmp/testinfra-{{ item.rgw_realm }}.img bs=1M count=10; + s3cmd --no-ssl --access_key={{ item.system_access_key }} --secret_key={{ item.system_secret_key }} --host={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} --host-bucket={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} mb s3://testinfra-{{ item.rgw_realm }}; + s3cmd --no-ssl --access_key={{ item.system_access_key }} --secret_key={{ item.system_secret_key }} --host={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} --host-bucket={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} put /tmp/testinfra-{{ item.rgw_realm }}.img s3://testinfra-{{ item.rgw_realm }}' + with_items: "{{ rgw_instances_host }}" when: - rgw_zonemaster | bool - - containerized_deployment | default(False) | bool + - containerized_deployment | bool - name: generate and upload a random a 10Mb file - non containerized - shell: > - dd if=/dev/urandom of=/tmp/testinfra.img bs=1M count=10; - {{ s3cmd_cmd }} mb s3://testinfra; - {{ s3cmd_cmd }} put /tmp/testinfra.img s3://testinfra + shell: | + dd if=/dev/urandom of=/tmp/testinfra-{{ item.rgw_realm }}.img bs=1M count=10; + s3cmd --no-ssl --access_key={{ item.system_access_key }} --secret_key={{ item.system_secret_key }} --host={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} --host-bucket={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} mb s3://testinfra-{{ item.rgw_realm }}; + s3cmd --no-ssl --access_key={{ item.system_access_key }} --secret_key={{ item.system_secret_key }} --host={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} --host-bucket={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} put /tmp/testinfra-{{ item.rgw_realm }}.img s3://testinfra-{{ item.rgw_realm }}; + with_items: "{{ rgw_instances_host }}" when: - - rgw_zonemaster | default(False) | bool - - not containerized_deployment | default(False) | bool + - rgw_zonemaster | bool + - not containerized_deployment | bool - name: get info from replicated file - containerized deployment command: > - docker run --rm --name=rgw_multisite_test --entrypoint=/bin/bash {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} -c '{{ s3cmd_cmd }} info s3://testinfra/testinfra.img' - register: s3cmd_info_status + {{ container_binary }} run --rm --name=rgw_multisite_test --entrypoint=s3cmd {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} --no-ssl --access_key={{ item.system_access_key }} --secret_key={{ item.system_secret_key }} --host={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} --host-bucket={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} info s3://testinfra-{{ item.rgw_realm }}/testinfra-{{ item.rgw_realm }}.img + with_items: "{{ rgw_instances_host }}" + register: result + retries: 60 + delay: 1 + until: result is succeeded when: - - not rgw_zonemaster | default(False) | bool - - containerized_deployment | default(False) | bool - retries: 10 - delay: 2 - until: s3cmd_info_status.get('rc', 1) == 0 + - not rgw_zonemaster | bool + - containerized_deployment | bool - name: get info from replicated file - non containerized command: > - {{ s3cmd_cmd }} info s3://testinfra/testinfra.img - register: s3cmd_info_status + s3cmd --no-ssl --access_key={{ item.system_access_key }} --secret_key={{ item.system_secret_key }} --host={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} --host-bucket={{ item.radosgw_address }}:{{ item.radosgw_frontend_port }} info s3://testinfra-{{ item.rgw_realm }}/testinfra-{{ item.rgw_realm }}.img + with_items: "{{ rgw_instances_host }}" + register: result + retries: 60 + delay: 1 + until: result is succeeded when: - - not rgw_zonemaster | default(False) | bool - - not containerized_deployment | default(False) | bool - retries: 10 - delay: 2 - until: s3cmd_info_status.get('rc', 1) == 0 + - not rgw_zonemaster | bool + - not containerized_deployment | bool