From 8a2ea4d3eeeb2659a09600cd6cf03ea7c1db06ac Mon Sep 17 00:00:00 2001 From: Dmitriy Rabotyagov Date: Mon, 5 Aug 2019 19:59:41 +0300 Subject: [PATCH] Add manila tempest testing This patch adds definiton of manila extra configuration, which should be used for correct work of tempest and running manila test. Additionally it sets default manila backend to cephfs and extends scenario Change-Id: I636bf2fee1833d33d66c4f2812f2d510cabd15d6 --- .../openstack_user_config.yml.aio | 1 + .../openstack_user_config.yml.aio.j2 | 1 + ...penstack_user_config.yml.prod-ceph.example | 11 +++ inventory/group_vars/all/ceph.yml | 2 +- inventory/group_vars/ceph_all.yml | 38 +++++++++- inventory/group_vars/manila_all.yml | 6 +- playbooks/ceph-nfs-install.yml | 3 + playbooks/ceph-rgw-install.yml | 5 -- playbooks/os-manila-install.yml | 15 ---- playbooks/setup-infrastructure.yml | 1 + scripts/log-collect.sh | 1 + .../templates/user_variables.aio.yml.j2 | 6 ++ .../templates/user_variables_manila.yml.j2 | 72 +++++++++++++------ tests/roles/bootstrap-host/vars/main.yml | 3 + 14 files changed, 121 insertions(+), 44 deletions(-) diff --git a/etc/openstack_deploy/openstack_user_config.yml.aio b/etc/openstack_deploy/openstack_user_config.yml.aio index 4a5f927bb1..b35005eb18 100644 --- a/etc/openstack_deploy/openstack_user_config.yml.aio +++ b/etc/openstack_deploy/openstack_user_config.yml.aio @@ -99,6 +99,7 @@ global_overrides: - glance_api - cinder_api - cinder_volume + - manila_share - nova_compute - swift_proxy diff --git a/etc/openstack_deploy/openstack_user_config.yml.aio.j2 b/etc/openstack_deploy/openstack_user_config.yml.aio.j2 index 0941df08d9..12e22a0c63 100644 --- a/etc/openstack_deploy/openstack_user_config.yml.aio.j2 +++ b/etc/openstack_deploy/openstack_user_config.yml.aio.j2 @@ -124,6 +124,7 @@ global_overrides: - cinder_api - cinder_volume - nova_compute + - manila_share - swift_proxy # galera, memcache, rabbitmq, utility diff --git a/etc/openstack_deploy/openstack_user_config.yml.prod-ceph.example b/etc/openstack_deploy/openstack_user_config.yml.prod-ceph.example index 97431a37ed..4dec627175 100644 --- a/etc/openstack_deploy/openstack_user_config.yml.prod-ceph.example +++ b/etc/openstack_deploy/openstack_user_config.yml.prod-ceph.example @@ -70,6 +70,7 @@ global_overrides: - glance_api - cinder_api - cinder_volume + - manila_share - nova_compute - ceph-osd @@ -106,6 +107,12 @@ shared-infra_hosts: *infrastructure_hosts # ceph-mon containers ceph-mon_hosts: *infrastructure_hosts +# ceph-mds containers +ceph-mds_hosts: *infrastructure_hosts + +# ganesha-nfs hosts +ceph-nfs_hosts: *infrastructure_hosts + # repository (apt cache, python packages, etc) repo-infra_hosts: *infrastructure_hosts @@ -156,5 +163,9 @@ metering-alarm_hosts: *infrastructure_hosts # gnocchi (telemetry metrics storage) metrics_hosts: *infrastructure_hosts +# manila (share service) +manila-infra_hosts: *infrastructure_hosts +manila-data_hosts: *infrastructure_hosts + # ceilometer compute agent (telemetry data collection) metering-compute_hosts: *compute_hosts diff --git a/inventory/group_vars/all/ceph.yml b/inventory/group_vars/all/ceph.yml index c726cb5cd0..021f80783a 100644 --- a/inventory/group_vars/all/ceph.yml +++ b/inventory/group_vars/all/ceph.yml @@ -54,5 +54,5 @@ openstack_keys: - { name: client.cinder, caps: { mon: "profile rbd", osd: "allow class-read object_prefix rbd_children, profile rbd pool={{ openstack_cinder_pool.name }}, profile rbd pool={{ openstack_nova_pool.name }}, profile rbd pool={{ openstack_glance_pool.name }}"}, mode: "0600" } - { name: client.cinder-backup, caps: { mon: "profile rbd", osd: "profile rbd pool={{ openstack_cinder_backup_pool.name }}"}, mode: "0600" } - { name: client.gnocchi, caps: { mon: "profile rbd", osd: "profile rbd pool={{ openstack_gnocchi_pool.name }}"}, mode: "0600", } + - { name: client.manila, caps: { mon: "allow r, allow command 'auth del', allow command 'auth caps', allow command 'auth get', allow command 'auth get-or-create'", mds: "allow *", osd: "allow rw"}, mode: "0600", } - { name: client.openstack, caps: { mon: "profile rbd", osd: "profile rbd pool={{ openstack_glance_pool.name }}, profile rbd pool={{ openstack_nova_pool.name }}, profile rbd pool={{ openstack_cinder_pool.name }}, profile rbd pool={{ openstack_cinder_backup_pool.name }}"}, mode: "0600" } - diff --git a/inventory/group_vars/ceph_all.yml b/inventory/group_vars/ceph_all.yml index 1f585630c3..f94cb6142a 100644 --- a/inventory/group_vars/ceph_all.yml +++ b/inventory/group_vars/ceph_all.yml @@ -18,16 +18,50 @@ ceph_container_bind_mounts: - bind_dir_path: "/var/lib/ceph" mount_path: "/openstack/{{ inventory_hostname }}" + +ceph_conf_overrides_manila: + client.manila: + "client mount gid": 0 + "client mount uid": 0 # To extend ceph_conf_overrides use the ceph_conf_overrides_custom which will # combine any ceph_conf_overrides with other RGW specific overrides. ceph_conf_overrides_custom: {} -ceph_conf_overrides: "{{ (ceph_conf_overrides_rgw | default({})) | combine(ceph_conf_overrides_custom, recursive=True) }}" +ceph_conf_overrides: "{{ (ceph_conf_overrides_rgw | default({})) | combine(ceph_conf_overrides_manila, recursive=True) | combine(ceph_conf_overrides_custom, recursive=True) }}" # Disable the NFS gateway PPA and package install by default as it is not # needed. -nfs_file_gw: False +nfs_file_gw: "{{ (('ceph-nfs' in groups) and ('ceph-mds' in groups)) }}" nfs_obj_gw: False +nfs_ganesha_stable: "{{ (ansible_distribution_release != 'bionic') }}" +nfs_ganesha_stable_branch: V2.8-stable # NTP in an OSA environment is handled by ansible-hardening using chrony # ceph-ansible's default enabling of ntpd conflicts with the OSA defaults ntp_service_enabled: False + + +openstack_cephfs_data_pool: + name: "manila_data" + pg_num: "{{ osd_pool_default_pg_num }}" + pgp_num: "{{ osd_pool_default_pg_num }}" + rule_name: "replicated_rule" + type: 1 + erasure_profile: "" + expected_num_objects: "" + application: "cephfs" + size: "{{ osd_pool_default_size }}" + min_size: "{{ osd_pool_default_min_size }}" +openstack_cephfs_metadata_pool: + name: "manila_metadata" + pg_num: "{{ osd_pool_default_pg_num }}" + pgp_num: "{{ osd_pool_default_pg_num }}" + rule_name: "replicated_rule" + type: 1 + erasure_profile: "" + expected_num_objects: "" + application: "cephfs" + size: "{{ osd_pool_default_size }}" + min_size: "{{ osd_pool_default_min_size }}" + +cephfs_data_pool: "{{ openstack_cephfs_data_pool }}" +cephfs_metadata_pool: "{{ openstack_cephfs_metadata_pool }}" diff --git a/inventory/group_vars/manila_all.yml b/inventory/group_vars/manila_all.yml index 0ac500afb9..1652f5e94e 100644 --- a/inventory/group_vars/manila_all.yml +++ b/inventory/group_vars/manila_all.yml @@ -16,12 +16,16 @@ # Set the available protocol list manila_enabled_share_protocols: - NFS - - CIFS - CEPHFS _manila_default_share_type: "{{ (manila_backends | default({})).keys() }}" manila_default_share_type: "{{ ((_manila_default_share_type | length) > 0) | ternary(_manila_default_share_type[0], null) }}" +# manila_backend_lvm_inuse: True if current host has an lvm backend +manila_backend_lvm_inuse: "{{ (manila_backends | default({}) | to_json).find('lvm') != -1 }}" +# manila_backend_rbd_inuse: True if the current host has an rbd backend +manila_backend_rbd_inuse: "{{ (manila_backends | default({}) | to_json).find('manila.share.drivers.cephfs') != -1 }}" + # V1 api config manila_service_publicuri: "{{ openstack_service_publicuri_proto|default(manila_service_proto) }}://{{ external_lb_vip_address }}:{{ manila_service_port }}" manila_service_internaluri: "{{ openstack_service_internaluri_proto|default(manila_service_proto) }}://{{ internal_lb_vip_address }}:{{ manila_service_port }}" diff --git a/playbooks/ceph-nfs-install.yml b/playbooks/ceph-nfs-install.yml index 49e3d4ee5a..2849bea567 100644 --- a/playbooks/ceph-nfs-install.yml +++ b/playbooks/ceph-nfs-install.yml @@ -48,6 +48,9 @@ - role: ceph-handler tags: - skip_ansible_lint + - role: ceph-common + tags: + - skip_ansible_lint - role: ceph-nfs tags: - skip_ansible_lint diff --git a/playbooks/ceph-rgw-install.yml b/playbooks/ceph-rgw-install.yml index 34602f4bc1..79cff15c53 100644 --- a/playbooks/ceph-rgw-install.yml +++ b/playbooks/ceph-rgw-install.yml @@ -22,11 +22,6 @@ vars_files: - "defaults/{{ install_method }}_install.yml" pre_tasks: - - import_tasks: common-tasks/os-log-dir-setup.yml - vars: - log_dirs: - - src: "/openstack/log/{{ inventory_hostname }}-ceph" - dest: "/var/log/ceph" - import_tasks: common-tasks/ceph-server.yml diff --git a/playbooks/os-manila-install.yml b/playbooks/os-manila-install.yml index 5edc8aed94..a0d46b4a65 100644 --- a/playbooks/os-manila-install.yml +++ b/playbooks/os-manila-install.yml @@ -36,21 +36,6 @@ - "'manila_api' in group_names" - "groups['manila_api'] | length > 1" - - name: Configure container (non-nfs) - include_tasks: "common-tasks/os-{{ container_tech | default('lxc') }}-container-setup.yml" - vars: - list_of_bind_mounts: "{{ manila_container_bind_mounts }}" - when: - - not is_metal - - manila_default_store == "file" - - (manila_nfs_client is not defined) or (manila_nfs_client | length == 0) - - - name: Configure container (nfs) - include_tasks: "common-tasks/os-{{ container_tech | default('lxc') }}-container-setup.yml" - when: - - not is_metal - - (manila_default_store != "file") or (manila_nfs_client is defined) - - include_tasks: common-tasks/unbound-clients.yml when: - hostvars['localhost']['resolvconf_enabled'] | bool diff --git a/playbooks/setup-infrastructure.yml b/playbooks/setup-infrastructure.yml index 4ab7c90633..b66a7e44e0 100644 --- a/playbooks/setup-infrastructure.yml +++ b/playbooks/setup-infrastructure.yml @@ -23,6 +23,7 @@ - import_playbook: rabbitmq-install.yml - import_playbook: etcd-install.yml - import_playbook: ceph-install.yml +- import_playbook: ceph-nfs-install.yml - import_playbook: rsyslog-install.yml # The journald-remote should be disabled by default until diff --git a/scripts/log-collect.sh b/scripts/log-collect.sh index df45576262..af4782adef 100755 --- a/scripts/log-collect.sh +++ b/scripts/log-collect.sh @@ -42,6 +42,7 @@ COMMON_ETC_LOG_NAMES="apt \ calico \ ceph \ etcd \ + ganesha \ haproxy \ httpd \ memcached \ diff --git a/tests/roles/bootstrap-host/templates/user_variables.aio.yml.j2 b/tests/roles/bootstrap-host/templates/user_variables.aio.yml.j2 index ebd49d1911..e1de11e6ec 100644 --- a/tests/roles/bootstrap-host/templates/user_variables.aio.yml.j2 +++ b/tests/roles/bootstrap-host/templates/user_variables.aio.yml.j2 @@ -80,6 +80,12 @@ placement_wsgi_processes_max: 2 placement_wsgi_processes: 2 placement_wsgi_buffer_size: 16384 +## Manila +manila_wsgi_processes_max: 2 +manila_wsgi_processes: 2 +manila_wsgi_threads: 1 +manila_wsgi_buffer_size: 65535 + ## Nova nova_reserved_host_memory_mb: 256 nova_wsgi_threads: 1 diff --git a/tests/roles/bootstrap-host/templates/user_variables_manila.yml.j2 b/tests/roles/bootstrap-host/templates/user_variables_manila.yml.j2 index 1717cf1912..7341b3f610 100644 --- a/tests/roles/bootstrap-host/templates/user_variables_manila.yml.j2 +++ b/tests/roles/bootstrap-host/templates/user_variables_manila.yml.j2 @@ -15,33 +15,65 @@ tempest_plugins: repo: https://opendev.org/openstack/manila-tempest-plugin branch: master +tempest_flavors: + - name: tempest1 + id: 201 + ram: 256 + disk: 1 + vcpus: 1 + - name: tempest2 + id: 202 + ram: 512 + disk: 1 + vcpus: 1 + - name: manila-service-flavor + id: 100 + ram: 256 + disk: 2 + vcpus: 1 + tempest_test_whitelist: - manila_tempest_tests.tests.scenario.test_share_basic_ops +tempest_run_concurrency: 0 + tempest_tempest_conf_overrides: share: + run_consistency_group_tests: False + run_snapshot_tests: False + multitenancy_enabled: False + run_shrink_tests: True + run_extend_tests: True + multi_backend: False + enable_protocols: nfs + run_ipv6_tests: False + share_creation_retry_number: 2 + suppress_errors_in_cleanup: True + capability_storage_protocol: NFS + enable_ip_rules_for_protocols: nfs image_with_share_tools: manila-service-image image_password: manila - enable_protocols: nfs - enable_ip_rules_for_protocols: nfs - enable_ro_access_level_for_protocols: nfs - suppress_errors_in_cleanup: true - share_creation_retry_number: 3 - run_ipv6_tests: False + +tempest_images: + - url: "http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img" + checksum: "sha256:a8dd75ecffd4cdd96072d60c2237b448e0c8b2bc94d57f10fdbc8c481d9005b8" + format: "qcow2" + name: "cirros" + - url: "http://tarballs.openstack.org/manila-image-elements/images/manila-service-image-master.qcow2" + format: "qcow2" + name: "manila-service-image" manila_backends: - nfs-share1: - share_backend_name: NFS_SHARE1 - share_driver: manila.share.drivers.lvm.LVMShareDriver + cephfsnfs1: + cephfs_auth_id: manila + cephfs_cluster_name: ceph + cephfs_conf_path: /etc/ceph/ceph.conf + cephfs_enable_snapshots: False + cephfs_ganesha_server_ip: 172.29.236.100 + cephfs_ganesha_server_is_remote: False + cephfs_protocol_helper_type: NFS driver_handles_share_servers: False - lvm_share_volume_group: manila-shares - lvm_share_export_ips: 172.29.244.100 - generic: - share_backend_name: GENERIC - share_driver: manila.share.drivers.generic.GenericShareDriver - driver_handles_share_servers: True - service_instance_flavor_id: 100 - service_image_name: manila-service-image - service_instance_user: manila - service_instance_password: manila - interface_driver: manila.network.linux.interface.BridgeInterfaceDriver + share_backend_name: CEPHFSNFS1 + share_driver: manila.share.drivers.cephfs.driver.CephFSDriver + ganesha_rados_store_enable: False + ganesha_rados_store_pool_name: manila_data diff --git a/tests/roles/bootstrap-host/vars/main.yml b/tests/roles/bootstrap-host/vars/main.yml index 6bc535aa43..0450f83031 100644 --- a/tests/roles/bootstrap-host/vars/main.yml +++ b/tests/roles/bootstrap-host/vars/main.yml @@ -41,6 +41,9 @@ bootstrap_host_scenarios_expanded: |- {% if 'magnum' in bootstrap_host_scenarios %} {% set _ = scenario_list.extend(['heat']) %} {% endif %} + {% if 'manila' in bootstrap_host_scenarios %} + {% set _ = scenario_list.extend(['ceph']) %} + {% endif %} {% if 'murano' in bootstrap_host_scenarios %} {% set _ = scenario_list.extend(['heat']) %} {% endif %}