From e6a948d8594dd92ab7b23142aef3e7bdce47cc13 Mon Sep 17 00:00:00 2001 From: fpantano Date: Thu, 1 Aug 2019 21:13:59 +0200 Subject: [PATCH] Allow overrides in non global ceph.conf sections In current ceph-base version there is a CephConfigOverride parameter which allows to override ceph.conf params in global section only. This change will permit overrides to specify the ceph.conf section into which they apply, while retaining backward compatiblity. Also adds in scenarios 001 and 004 some test cases. Co-Authored-By: Giulio Fidente Change-Id: Icaba7a58f458d853912d038f24c0cb4f853e0166 Implements: blueprint ceph-config-overrides (cherry picked from commit 2501f4747c609482ac4e500aaf8ed5519e174bc7) --- .../scenario001-multinode-containers.yaml | 5 ++ .../scenario004-multinode-containers.yaml | 2 + docker/services/ceph-ansible/ceph-base.yaml | 52 +++++++++++++------ 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/ci/environments/scenario001-multinode-containers.yaml b/ci/environments/scenario001-multinode-containers.yaml index 8ce2ee89c0..6a6b665d90 100644 --- a/ci/environments/scenario001-multinode-containers.yaml +++ b/ci/environments/scenario001-multinode-containers.yaml @@ -178,3 +178,8 @@ parameter_defaults: - tty4 - tty5 - tty6 + CephConfigOverrides: + global: + globalkey: globalvalue + osd: + osdkey: osdvalue diff --git a/ci/environments/scenario004-multinode-containers.yaml b/ci/environments/scenario004-multinode-containers.yaml index 025e4852b2..52daf2ed9a 100644 --- a/ci/environments/scenario004-multinode-containers.yaml +++ b/ci/environments/scenario004-multinode-containers.yaml @@ -130,3 +130,5 @@ parameter_defaults: # BgpvpnServiceProvider: 'BGPVPN:Dummy:networking_bgpvpn.neutron.services.service_drivers.driver_api.BGPVPNDriver:default' # L2gwServiceProvider: ['L2GW:l2gw:networking_l2gw.services.l2gateway.service_drivers.L2gwDriver:default'] NotificationDriver: 'noop' + CephConfigOverrides: + globalkey: globalvalue diff --git a/docker/services/ceph-ansible/ceph-base.yaml b/docker/services/ceph-ansible/ceph-base.yaml index 245446fad9..a3740a529b 100644 --- a/docker/services/ceph-ansible/ceph-base.yaml +++ b/docker/services/ceph-ansible/ceph-base.yaml @@ -183,6 +183,10 @@ conditions: expression: $.data.split('/')[0].matches('(\.|:)') perform_upgrade: equals: [{get_param: StackUpdateType}, 'UPGRADE'] + ceph_config_overrides_with_sections: + yaql: + data: {get_param: CephConfigOverrides} + expression: $.data.keys().any(predicate => $ in ['global', 'mon', 'mgr', 'osd', 'mds', 'client']) resources: DockerImageUrlParts: @@ -211,6 +215,27 @@ resources: expression: $.data.rightSplit(':', 1)[1] data: {get_param: DockerCephDaemonImage} + DefaultCephConfigOverrides: + type: OS::Heat::Value + properties: + type: json + value: + global: + osd_pool_default_size: {get_param: CephPoolDefaultSize} + osd_pool_default_pg_num: {get_param: CephPoolDefaultPgNum} + osd_pool_default_pgp_num: {get_param: CephPoolDefaultPgNum} + rgw_keystone_api_version: 3 + rgw_keystone_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]} + rgw_keystone_accepted_roles: 'Member, admin' + rgw_keystone_accepted_admin_roles: ResellerAdmin + rgw_keystone_admin_domain: default + rgw_keystone_admin_project: service + rgw_keystone_admin_user: swift + rgw_keystone_admin_password: {get_param: SwiftPassword} + rgw_keystone_implicit_tenants: 'true' + rgw_keystone_revocation_interval: '0' + rgw_s3_auth_use_keystone: 'true' + outputs: role_data: description: Role data for the Ceph base service. @@ -347,21 +372,18 @@ outputs: keys: *openstack_keys pools: [] ceph_conf_overrides: - global: - map_merge: - - osd_pool_default_size: {get_param: CephPoolDefaultSize} - osd_pool_default_pg_num: {get_param: CephPoolDefaultPgNum} - osd_pool_default_pgp_num: {get_param: CephPoolDefaultPgNum} - rgw_keystone_api_version: 3 - rgw_keystone_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]} - rgw_keystone_accepted_roles: 'Member, admin' - rgw_keystone_admin_domain: default - rgw_keystone_admin_project: service - rgw_keystone_admin_user: swift - rgw_keystone_admin_password: {get_param: SwiftPassword} - rgw_keystone_implicit_tenants: 'true' - rgw_keystone_revocation_interval: '0' - rgw_s3_auth_use_keystone: 'true' + if: + - ceph_config_overrides_with_sections + - yaql: + data: + default: + map_merge: + - {get_attr: [DefaultCephConfigOverrides, value]} + overrides: {get_param: CephConfigOverrides} + expression: $.data.default.mergeWith($.data.overrides) + - global: + map_merge: + - {get_attr: [DefaultCephConfigOverrides, value, global]} - {get_param: CephConfigOverrides} ntp_service_enabled: false generate_fsid: false