From 8fed5e2e62a8f3b48862937821978ebb6f69ee49 Mon Sep 17 00:00:00 2001
From: caoyuan <cao.yuan@99cloud.net>
Date: Fri, 15 Sep 2017 23:24:43 +0800
Subject: [PATCH] Make the pg and pgp value configurable

Change-Id: I99cca8c3830077736f71a7ab1abd3818688f9bb1
---
 ansible/group_vars/all.yml              | 4 ++++
 ansible/roles/ceph_pools.yml            | 2 +-
 ansible/roles/cinder/defaults/main.yml  | 5 +++++
 ansible/roles/cinder/tasks/ceph.yml     | 4 ++++
 ansible/roles/glance/defaults/main.yml  | 2 ++
 ansible/roles/glance/tasks/ceph.yml     | 2 ++
 ansible/roles/gnocchi/defaults/main.yml | 2 ++
 ansible/roles/gnocchi/tasks/ceph.yml    | 2 ++
 ansible/roles/nova/defaults/main.yml    | 2 ++
 ansible/roles/nova/tasks/ceph.yml       | 2 ++
 etc/kolla/globals.yml                   | 3 +++
 11 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index a07819b53a..3ae9d223ac 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -628,6 +628,10 @@ ceph_erasure_profile: "k=4 m=2 ruleset-failure-domain=host"
 ceph_rule: "default host {{ 'indep' if ceph_pool_type == 'erasure' else 'firstn' }}"
 ceph_cache_rule: "cache host firstn"
 
+# Set the pgs and pgps for pool
+ceph_pool_pg_num: 128
+ceph_pool_pgp_num: 128
+
 ################################################
 # VMware - OpenStack VMware support
 ################################################
diff --git a/ansible/roles/ceph_pools.yml b/ansible/roles/ceph_pools.yml
index b9da16b902..12a8d02af1 100644
--- a/ansible/roles/ceph_pools.yml
+++ b/ansible/roles/ceph_pools.yml
@@ -25,7 +25,7 @@
   when: pool_type == "replicated"
 
 - name: Creating ceph pool
-  command: docker exec ceph_mon ceph osd pool create {{ pool_name }} 128 128 {{ pool_type }} {{ 'erasure-profile' if pool_type == 'erasure' else '' }} disks
+  command: docker exec ceph_mon ceph osd pool create {{ pool_name }} {{ pool_pg_num }} {{ pool_pgp_num }} {{ pool_type }} {{ 'erasure-profile' if pool_type == 'erasure' else '' }} disks
   delegate_to: "{{ groups['ceph-mon'][0] }}"
   changed_when: False
   failed_when: False
diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml
index 29170c6327..62dd662892 100644
--- a/ansible/roles/cinder/defaults/main.yml
+++ b/ansible/roles/cinder/defaults/main.yml
@@ -64,9 +64,14 @@ ceph_cinder_backup_cache_mode: "{{ ceph_cache_mode }}"
 cinder_pool_name: "{{ ceph_cinder_pool_name }}"
 cinder_pool_type: "{{ ceph_cinder_pool_type }}"
 cinder_cache_mode: "{{ ceph_cinder_cache_mode }}"
+cinder_pool_pg_num: "{{ ceph_pool_pg_num }}"
+cinder_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
+
 cinder_backup_pool_name: "{{ ceph_cinder_backup_pool_name }}"
 cinder_backup_pool_type: "{{ ceph_cinder_backup_pool_type }}"
 cinder_backup_cache_mode: "{{ ceph_cinder_backup_cache_mode }}"
+cinder_backup_pool_pg_num: "{{ ceph_pool_pg_num }}"
+cinder_backup_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
 
 
 ####################
diff --git a/ansible/roles/cinder/tasks/ceph.yml b/ansible/roles/cinder/tasks/ceph.yml
index 5e2d05daad..2be771b6aa 100644
--- a/ansible/roles/cinder/tasks/ceph.yml
+++ b/ansible/roles/cinder/tasks/ceph.yml
@@ -35,12 +35,16 @@
     pool_name: "{{ cinder_pool_name }}"
     pool_type: "{{ cinder_pool_type }}"
     cache_mode: "{{ cinder_cache_mode }}"
+    pool_pg_num: "{{ cinder_pool_pg_num }}"
+    pool_pgp_num: "{{ cinder_pool_pgp_num }}"
 
 - include: ../../ceph_pools.yml
   vars:
     pool_name: "{{ cinder_backup_pool_name }}"
     pool_type: "{{ cinder_backup_pool_type }}"
     cache_mode: "{{ cinder_backup_cache_mode }}"
+    pool_pg_num: "{{ cinder_backup_pool_pg_num }}"
+    pool_pgp_num: "{{ cinder_backup_pool_pgp_num }}"
 
 # TODO(SamYaple): Improve changed_when tests
 - name: Pulling cephx keyring for cinder
diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index 6af594a56b..85740a14d5 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -34,6 +34,8 @@ ceph_glance_cache_mode: "{{ ceph_cache_mode }}"
 glance_pool_name: "{{ ceph_glance_pool_name }}"
 glance_pool_type: "{{ ceph_glance_pool_type }}"
 glance_cache_mode: "{{ ceph_glance_cache_mode }}"
+glance_pool_pg_num: "{{ ceph_pool_pg_num }}"
+glance_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
 
 
 ####################
diff --git a/ansible/roles/glance/tasks/ceph.yml b/ansible/roles/glance/tasks/ceph.yml
index ad7aa07173..389a266ddd 100644
--- a/ansible/roles/glance/tasks/ceph.yml
+++ b/ansible/roles/glance/tasks/ceph.yml
@@ -19,6 +19,8 @@
     pool_name: "{{ glance_pool_name }}"
     pool_type: "{{ glance_pool_type }}"
     cache_mode: "{{ glance_cache_mode }}"
+    pool_pg_num: "{{ glance_pool_pg_num }}"
+    pool_pgp_num: "{{ glance_pool_pgp_num }}"
 
 # TODO(SamYaple): Improve changed_when tests
 - name: Pulling cephx keyring
diff --git a/ansible/roles/gnocchi/defaults/main.yml b/ansible/roles/gnocchi/defaults/main.yml
index 8c9320d12a..dca69efa72 100644
--- a/ansible/roles/gnocchi/defaults/main.yml
+++ b/ansible/roles/gnocchi/defaults/main.yml
@@ -45,6 +45,8 @@ ceph_gnocchi_cache_mode: "{{ ceph_cache_mode }}"
 gnocchi_pool_name: "{{ ceph_gnocchi_pool_name }}"
 gnocchi_pool_type: "{{ ceph_gnocchi_pool_type }}"
 gnocchi_cache_mode: "{{ ceph_gnocchi_cache_mode }}"
+gnocchi_pool_pg_num: "{{ ceph_pool_pg_num }}"
+gnocchi_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
 
 
 ####################
diff --git a/ansible/roles/gnocchi/tasks/ceph.yml b/ansible/roles/gnocchi/tasks/ceph.yml
index eb6fefd357..22f78414f4 100644
--- a/ansible/roles/gnocchi/tasks/ceph.yml
+++ b/ansible/roles/gnocchi/tasks/ceph.yml
@@ -29,6 +29,8 @@
     pool_name: "{{ gnocchi_pool_name }}"
     pool_type: "{{ gnocchi_pool_type }}"
     cache_mode: "{{ gnocchi_cache_mode }}"
+    pool_pg_num: "{{ gnocchi_pool_pg_num }}"
+    pool_pgp_num: "{{ gnocchi_pool_pgp_num }}"
 
 # TODO(SamYaple): Improve changed_when tests
 - name: Pulling cephx keyring
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index ebb341a49a..266f895028 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -144,6 +144,8 @@ ceph_nova_cache_mode: "{{ ceph_cache_mode }}"
 nova_pool_name: "{{ ceph_nova_pool_name }}"
 nova_pool_type: "{{ ceph_nova_pool_type }}"
 nova_cache_mode: "{{ ceph_nova_cache_mode }}"
+nova_pool_pg_num: "{{ ceph_pool_pg_num }}"
+nova_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
 
 # Discard option for nova managed disks. Requires libvirt (1, 0, 6) or later and
 # qemu (1, 6, 0) or later. Set to "" to disable.
diff --git a/ansible/roles/nova/tasks/ceph.yml b/ansible/roles/nova/tasks/ceph.yml
index 7d4a8ed08d..4274a2f71a 100644
--- a/ansible/roles/nova/tasks/ceph.yml
+++ b/ansible/roles/nova/tasks/ceph.yml
@@ -27,6 +27,8 @@
     pool_name: "{{ nova_pool_name }}"
     pool_type: "{{ nova_pool_type }}"
     cache_mode: "{{ nova_cache_mode }}"
+    pool_pg_num: "{{ nova_pool_pg_num }}"
+    pool_pgp_num: "{{ nova_pool_pgp_num }}"
 
 # TODO(SamYaple): Improve changed_when tests
 - name: Pulling cephx keyring for nova
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 99e571e3b5..17773b642c 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -239,6 +239,9 @@ kolla_internal_vip_address: "10.10.10.254"
 # Integrate ceph rados object gateway with openstack keystone
 #enable_ceph_rgw_keystone: "no"
 
+# Set the pgs and pgps for pool
+#ceph_pool_pg_num: 128
+#ceph_pool_pgp_num: 128
 
 #############################
 # Keystone - Identity Options