Skip to content

Commit

Permalink
Merge pull request #8586 from rook/mergify/bp/release-1.7/pr-8582
Browse files Browse the repository at this point in the history
ceph: fix panic when recreating the csidriver object (backport #8582)
  • Loading branch information
travisn committed Aug 26, 2021
2 parents a3df1e0 + b569ecc commit 6ca2e00
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 18 deletions.
16 changes: 8 additions & 8 deletions pkg/operator/ceph/csi/betav1csidriver.go
Expand Up @@ -72,6 +72,8 @@ func (d beta1CsiDriver) createCSIDriverInfo(ctx context.Context, clientset kuber
// As FSGroupPolicy field is immutable, should be set only during create time.
// if the request is to change the FSGroupPolicy, we are deleting the CSIDriver object and creating it.
if driver.Spec.FSGroupPolicy != nil && csiDriver.Spec.FSGroupPolicy != nil && *driver.Spec.FSGroupPolicy != *csiDriver.Spec.FSGroupPolicy {
d.csiClient = csidrivers
d.csiDriver = csiDriver
return d.reCreateCSIDriverInfo(ctx)
}

Expand All @@ -88,18 +90,16 @@ func (d beta1CsiDriver) createCSIDriverInfo(ctx context.Context, clientset kuber
}

func (d beta1CsiDriver) reCreateCSIDriverInfo(ctx context.Context) error {
csiDriver := d.csiDriver
csiClient := d.csiClient
err := csiClient.Delete(ctx, csiDriver.Name, metav1.DeleteOptions{})
err := d.csiClient.Delete(ctx, d.csiDriver.Name, metav1.DeleteOptions{})
if err != nil {
return errors.Wrapf(err, "failed to delete CSIDriver object for driver %q", csiDriver.Name)
return errors.Wrapf(err, "failed to delete CSIDriver object for driver %q", d.csiDriver.Name)
}
logger.Infof("CSIDriver object deleted for driver %q", csiDriver.Name)
_, err = csiClient.Create(ctx, csiDriver, metav1.CreateOptions{})
logger.Infof("CSIDriver object deleted for driver %q", d.csiDriver.Name)
_, err = d.csiClient.Create(ctx, d.csiDriver, metav1.CreateOptions{})
if err != nil {
return errors.Wrapf(err, "failed to recreate CSIDriver object for driver %q", csiDriver.Name)
return errors.Wrapf(err, "failed to recreate CSIDriver object for driver %q", d.csiDriver.Name)
}
logger.Infof("CSIDriver object recreated for driver %q", csiDriver.Name)
logger.Infof("CSIDriver object recreated for driver %q", d.csiDriver.Name)
return nil
}

Expand Down
16 changes: 8 additions & 8 deletions pkg/operator/ceph/csi/csidriver.go
Expand Up @@ -72,6 +72,8 @@ func (d v1CsiDriver) createCSIDriverInfo(ctx context.Context, clientset kubernet
// As FSGroupPolicy field is immutable, should be set only during create time.
// if the request is to change the FSGroupPolicy, we are deleting the CSIDriver object and creating it.
if driver.Spec.FSGroupPolicy != nil && csiDriver.Spec.FSGroupPolicy != nil && *driver.Spec.FSGroupPolicy != *csiDriver.Spec.FSGroupPolicy {
d.csiClient = csidrivers
d.csiDriver = csiDriver
return d.reCreateCSIDriverInfo(ctx)
}

Expand All @@ -88,18 +90,16 @@ func (d v1CsiDriver) createCSIDriverInfo(ctx context.Context, clientset kubernet
}

func (d v1CsiDriver) reCreateCSIDriverInfo(ctx context.Context) error {
csiDriver := d.csiDriver
csiClient := d.csiClient
err := csiClient.Delete(ctx, csiDriver.Name, metav1.DeleteOptions{})
err := d.csiClient.Delete(ctx, d.csiDriver.Name, metav1.DeleteOptions{})
if err != nil {
return errors.Wrapf(err, "failed to delete CSIDriver object for driver %q", csiDriver.Name)
return errors.Wrapf(err, "failed to delete CSIDriver object for driver %q", d.csiDriver.Name)
}
logger.Infof("CSIDriver object deleted for driver %q", csiDriver.Name)
_, err = csiClient.Create(ctx, d.csiDriver, metav1.CreateOptions{})
logger.Infof("CSIDriver object deleted for driver %q", d.csiDriver.Name)
_, err = d.csiClient.Create(ctx, d.csiDriver, metav1.CreateOptions{})
if err != nil {
return errors.Wrapf(err, "failed to recreate CSIDriver object for driver %q", csiDriver.Name)
return errors.Wrapf(err, "failed to recreate CSIDriver object for driver %q", d.csiDriver.Name)
}
logger.Infof("CSIDriver object recreated for driver %q", csiDriver.Name)
logger.Infof("CSIDriver object recreated for driver %q", d.csiDriver.Name)
return nil
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/operator/ceph/csi/spec.go
Expand Up @@ -435,7 +435,6 @@ func startDrivers(clientset kubernetes.Interface, rookclientset rookclient.Inter
return errors.Wrap(err, "failed to load rbd plugin service template")
}
rbdService.Namespace = namespace
logger.Info("successfully started CSI Ceph RBD")
}
if EnableCephFS {
cephfsPlugin, err = templateToDaemonSet("cephfsplugin", CephFSPluginTemplatePath, tp)
Expand All @@ -453,7 +452,6 @@ func startDrivers(clientset kubernetes.Interface, rookclientset rookclient.Inter
return errors.Wrap(err, "failed to load cephfs plugin service template")
}
cephfsService.Namespace = namespace
logger.Info("successfully started CSI CephFS driver")
}

// get common provisioner tolerations and node affinity
Expand Down Expand Up @@ -516,6 +514,7 @@ func startDrivers(clientset kubernetes.Interface, rookclientset rookclient.Inter
return errors.Wrapf(err, "failed to start rbd provisioner deployment: %+v", rbdProvisionerDeployment)
}
k8sutil.AddRookVersionLabelToDeployment(rbdProvisionerDeployment)
logger.Info("successfully started CSI Ceph RBD driver")
}

if rbdService != nil {
Expand Down Expand Up @@ -584,6 +583,7 @@ func startDrivers(clientset kubernetes.Interface, rookclientset rookclient.Inter
return errors.Wrapf(err, "failed to start cephfs provisioner deployment: %+v", cephfsProvisionerDeployment)
}
k8sutil.AddRookVersionLabelToDeployment(cephfsProvisionerDeployment)
logger.Info("successfully started CSI CephFS driver")
}
if cephfsService != nil {
err = ownerInfo.SetControllerReference(cephfsService)
Expand Down

0 comments on commit 6ca2e00

Please sign in to comment.