From 3575c3bf7801e09507f2ee2bf9e83cd67035815f Mon Sep 17 00:00:00 2001 From: Nitin Goyal Date: Thu, 22 Apr 2021 21:20:22 +0530 Subject: [PATCH] ceph: expand Mon Pvc's Expand Mon Pvc's if storage request has increased for the Mons in the cephcluster crd. Signed-off-by: Nitin Goyal --- pkg/operator/ceph/cluster/mon/mon.go | 14 ++++++++++++++ pkg/operator/ceph/cluster/mon/spec.go | 6 +++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/pkg/operator/ceph/cluster/mon/mon.go b/pkg/operator/ceph/cluster/mon/mon.go index 2dea013fa..9517824ff 100644 --- a/pkg/operator/ceph/cluster/mon/mon.go +++ b/pkg/operator/ceph/cluster/mon/mon.go @@ -1179,6 +1179,20 @@ func (c *Cluster) commitMaxMonID(monName string) error { var updateDeploymentAndWait = UpdateCephDeploymentAndWait func (c *Cluster) updateMon(m *monConfig, d *apps.Deployment) error { + // Expand mon PVC if storage request for mon has increased in cephcluster crd + if c.monVolumeClaimTemplate(m) != nil { + desiredPvc, err := c.makeDeploymentPVC(m, false) + if err != nil { + return errors.Wrapf(err, "failed to make mon %q pvc", d.Name) + } + + existingPvc, err := c.context.Clientset.CoreV1().PersistentVolumeClaims(c.Namespace).Get(context.TODO(), m.ResourceName, metav1.GetOptions{}) + if err != nil { + return errors.Wrapf(err, "failed to fetch pvc for mon %q", m.ResourceName) + } + k8sutil.ExpandPVCIfRequired(c.context.Client, desiredPvc, existingPvc) + } + logger.Infof("deployment for mon %s already exists. updating if needed", d.Name) diff --git a/pkg/operator/ceph/cluster/mon/spec.go b/pkg/operator/ceph/cluster/mon/spec.go index a761d6be9..dc27da50e 100644 --- a/pkg/operator/ceph/cluster/mon/spec.go +++ b/pkg/operator/ceph/cluster/mon/spec.go @@ -30,6 +30,7 @@ import ( "github.com/rook/rook/pkg/operator/k8sutil" apps "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -49,8 +50,11 @@ func (c *Cluster) getLabels(monConfig *monConfig, canary, includeNewLabels bool) labels["mon_canary"] = "true" } if includeNewLabels { - if c.monVolumeClaimTemplate(monConfig) != nil { + monVolumeClaimTemplate := c.monVolumeClaimTemplate(monConfig) + if monVolumeClaimTemplate != nil { + size := monVolumeClaimTemplate.Spec.Resources.Requests[v1.ResourceStorage] labels["pvc_name"] = monConfig.ResourceName + labels["pvc_size"] = size.String() } if monConfig.Zone != "" { labels["stretch-zone"] = monConfig.Zone