Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions e2e/cephfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,11 @@ var _ = Describe(cephfsType, func() {
logAndFail("failed to set cluster name: %v", err)
}

err = cephFSDeployment.setEnableFencing(true)
if err != nil {
logAndFail("failed to enable fencing: %v", err)
}

err = createSubvolumegroup(f, fileSystemName, subvolumegroup)
if err != nil {
logAndFail("failed to create subvolumegroup %s: %v", subvolumegroup, err)
Expand Down
37 changes: 36 additions & 1 deletion e2e/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"fmt"

clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubernetes/test/e2e/framework"
)

const (
Expand Down Expand Up @@ -58,7 +59,7 @@ func (r *OperatorDeployment) getPodSelector() string {
r.deploymentName, r.daemonsetName)
}

func (OperatorDeployment) setEnableMetadata(value bool) error {
func (r *OperatorDeployment) setEnableMetadata(value bool) error {
command := []string{
"operatorconfigs.csi.ceph.io",
OperatorConfigName,
Expand All @@ -73,6 +74,40 @@ func (OperatorDeployment) setEnableMetadata(value bool) error {
return err
}

// restart the pods so that the new configuration is activated
framework.Logf("enableMetadata has been set to %t, restarting Ceph-CSI pods", value)
podLabels := r.getPodSelector()
err = deletePodWithLabel(podLabels, cephCSINamespace, false)
if err != nil {
return fmt.Errorf("failed to delete pods with labels (%s): %w", podLabels, err)
}
err = waitForDaemonSets(r.daemonsetName, cephCSINamespace, r.clientSet, deployTimeout)
if err != nil {
return fmt.Errorf("timeout waiting for daemonset pods: %w", err)
}
err = waitForDeploymentComplete(r.clientSet, r.deploymentName, cephCSINamespace, deployTimeout)
if err != nil {
return fmt.Errorf("timeout waiting for deployment to be in running state: %w", err)
}

return nil
}

func (OperatorDeployment) setEnableFencing(value bool) error {
command := []string{
"operatorconfigs.csi.ceph.io",
OperatorConfigName,
"--type=merge",
"-p",
fmt.Sprintf(`{"spec": {"driverSpecDefaults": {"enableFencing": %t}}}`, value),
}

// Patch the operator config
err := retryKubectlArgs(cephCSINamespace, kubectlPatch, deployTimeout, command...)
if err != nil {
return err
}

return nil
}

Expand Down
5 changes: 5 additions & 0 deletions e2e/rbd.go
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,11 @@ var _ = Describe("RBD", func() {
logAndFail("failed to set domain labels: %v", err)
}

err = rbdDeployment.setEnableFencing(true)
if err != nil {
logAndFail("failed to enable fencing: %v", err)
}

err = rbdDeployment.setClusterName(defaultClusterName)
if err != nil {
logAndFail("failed to set cluster name: %v", err)
Expand Down
7 changes: 7 additions & 0 deletions e2e/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ type DeploymentMethod interface {
getDaemonsetName() string
getPodSelector() string
setClusterName(clusterName string) error
setEnableFencing(enable bool) error
}
type RBDDeploymentMethod interface {
DeploymentMethod
Expand Down Expand Up @@ -157,6 +158,12 @@ func (d *DriverInfo) setClusterName(clusterName string) error {
return nil
}

func (d *DriverInfo) setEnableFencing(enable bool) error {
// No-op as fencing is enabled in the yaml files by default, disabling is not needed.
// Required implementation in OperatorDeployment.
return nil
}

// listCephFSFileSystems list CephFS filesystems in json format.
func listCephFSFileSystems(f *framework.Framework) ([]cephfsFilesystem, error) {
var fsList []cephfsFilesystem
Expand Down
4 changes: 2 additions & 2 deletions scripts/deploy-ceph-csi-operator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ function generate_operator_config() {
generate_encryption_configmap

cat <<EOF >"${TEMP_DIR}/operatorconfig.yaml"
apiVersion: csi.ceph.io/v1alpha1
apiVersion: csi.ceph.io/v1
kind: OperatorConfig
metadata:
name: ceph-csi-operator-config
Expand Down Expand Up @@ -100,7 +100,7 @@ EOF
function generate_driver() {
local driver_name=$1
cat <<EOF >"${TEMP_DIR}/${driver_name}.yaml"
apiVersion: csi.ceph.io/v1alpha1
apiVersion: csi.ceph.io/v1
kind: Driver
metadata:
name: ${driver_name}
Expand Down
Loading