Support arbitrary attributes for the Ceph pools
authorGiulio Fidente <gfidente@redhat.com>
Mon, 25 Jul 2016 13:11:40 +0000 (15:11 +0200)
committerGiulio Fidente <gfidente@redhat.com>
Mon, 8 Aug 2016 14:47:06 +0000 (14:47 +0000)
This change adds a CephPools parameter which can be used to
provide custom settings for any Ceph pool.

It also removes our custom setting for the default pg_num,
pgp_num and size so that these are used for the managed
pools (and can be overridden) but aren't enforced globally.

Change-Id: Idcf28bec46beabb1b590fc8e78b43e58d8e35717
Closes-Bug: 1517969
Depends-On: I38978f0f3119e4ab7dd45021e598253cb066cb5a

puppet/services/ceph-base.yaml
puppet/services/ceph-mon.yaml

index bce52f3..4702861 100644 (file)
@@ -58,9 +58,6 @@ outputs:
       config_settings:
         tripleo::profile::base::ceph::ceph_ipv6: {get_param: CephIPv6}
         tripleo::profile::base::ceph::enable_ceph_storage: {get_param: ControllerEnableCephStorage}
-        ceph::profile::params::osd_pool_default_pg_num: 32
-        ceph::profile::params::osd_pool_default_pgp_num: 32
-        ceph::profile::params::osd_pool_default_size: 3
         ceph::profile::params::osd_pool_default_min_size: 1
         ceph::profile::params::osds: {/srv/data: {}}
         ceph::profile::params::manage_repo: false
index f48515e..074d941 100644 (file)
@@ -31,6 +31,19 @@ parameters:
   NovaRbdPoolName:
     default: vms
     type: string
+  CephPools:
+    description: >
+      It can be used to override settings for one of the predefined pools, or to create
+      additional ones. Example:
+      {
+        "volumes": {
+          "size": 5,
+          "pg_num: 128,
+          "pgp_num": 128
+         }
+      }
+    default: {}
+    type: json
 
 resources:
   CephBase:
@@ -46,12 +59,24 @@ outputs:
           - get_attr: [CephBase, role_data, config_settings]
           - ceph::profile::params::ms_bind_ipv6: {get_param: CephIPv6}
             ceph::profile::params::mon_key: {get_param: CephMonKey}
+            # repeat returns items in a list, so we need to map_merge twice
             tripleo::profile::base::ceph::mon::ceph_pools:
-              - {get_param: CinderRbdPoolName}
-              - {get_param: CinderBackupRbdPoolName}
-              - {get_param: NovaRbdPoolName}
-              - {get_param: GlanceRbdPoolName}
-              - {get_param: GnocchiRbdPoolName}
+              map_merge:
+                - map_merge:
+                    repeat:
+                      for_each:
+                        <%pool%>:
+                          - {get_param: CinderRbdPoolName}
+                          - {get_param: CinderBackupRbdPoolName}
+                          - {get_param: NovaRbdPoolName}
+                          - {get_param: GlanceRbdPoolName}
+                          - {get_param: GnocchiRbdPoolName}
+                      template:
+                        <%pool%>:
+                          pg_num: 32
+                          pgp_num: 32
+                          size: 3
+                - {get_param: CephPools}
             tripleo.ceph_mon.firewall_rules:
               '110 ceph_mon':
                 dport: