Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update forceRemovedDriver #681

Closed
wants to merge 23 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
3a2a298
added default values for reverse proxy module (#652)
harishp8889 Aug 8, 2024
86e8f93
disable sdc-monito and health-monitor by default (#653)
kumarp20 Aug 8, 2024
45db088
Added the default checks for kublet directory in the common config
meggm Aug 8, 2024
5ab4443
Pmax minimal changes (#655)
harishp8889 Aug 12, 2024
36930d8
powerflex minimal sample changes
ashleyvjoy Aug 13, 2024
13385a5
powerstore minimal yaml addition
gilltaran Aug 13, 2024
a34517c
"powerstore minimal yaml addition"
gilltaran Aug 13, 2024
4ee15f0
minimal sample addition powerstore
gilltaran Aug 13, 2024
ce7c725
feat: added minmal unity yaml (#658)
mgandharva Aug 13, 2024
41a20a2
Pmax minimal changes (#659)
harishp8889 Aug 13, 2024
ce68147
Fixed the issues with initContainer and the MDM key not found
meggm Aug 13, 2024
099efc2
kubelet_config_dir changes added for powerstore
gilltaran Aug 13, 2024
c95bffd
Merge branch 'main' into minimal-manifests-poc
meggm Sep 4, 2024
6afb844
Fixing yaml lint issues
meggm Sep 4, 2024
4abf6b7
Fixing go lint issues
meggm Sep 4, 2024
4b25d92
Fixing go lint issues
meggm Sep 4, 2024
ff6fef4
Fixing the UT failure in the driver code
meggm Sep 4, 2024
a3d637b
minimal manifest for powerflex
ashleyvjoy Sep 5, 2024
28d6c95
fix: update unity code (#680)
mgandharva Sep 5, 2024
a061506
Merge branch 'main' into minimal-manifests-poc
meggm Sep 9, 2024
616bee2
fix lint error
ashleyvjoy Sep 9, 2024
948f542
fix: removed forceremovedriver
mgandharva Sep 9, 2024
2de5684
fix- int issue
mgandharva Sep 9, 2024
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
3 changes: 3 additions & 0 deletions operatorconfig/driverconfig/common/k8s-1.30-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@ images:
sdcmonitor: dellemc/sdc:4.5.2.1
#"images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0

#"images.csiReverseProxy" defines the container images used for csi metadata retriever
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,8 @@ spec:
value: <X_CSI_QUOTA_ENABLED>
- name: X_CSI_POWERFLEX_EXTERNAL_ACCESS
value: <X_CSI_POWERFLEX_EXTERNAL_ACCESS>
- name: X_CSI_DEBUG
value: true
volumeMounts:
- name: socket-dir
mountPath: /var/run/csi
Expand Down
2 changes: 2 additions & 0 deletions operatorconfig/driverconfig/powerflex/v2.11.0/node.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ spec:
value: <X_CSI_RENAME_SDC_PREFIX>
- name: X_CSI_MAX_VOLUMES_PER_NODE
value: <X_CSI_MAX_VOLUMES_PER_NODE>
- name: X_CSI_DEBUG
value: true
- name: X_CSI_POWERFLEX_KUBE_NODE_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ spec:
- name: socket-dir
mountPath: /var/run/csi
- name: driver
image: dellemc/csi-powermax:v2.11.0
image: amaas-eos-drm2.cec.lab.emc.com:5074/csm/powermax/csi-powermax:minimal-poc
imagePullPolicy: IfNotPresent
command: ["/csi-powermax.sh"]
env:
Expand Down Expand Up @@ -283,6 +283,8 @@ spec:
value: 5m
- name: X_CSI_POWERMAX_CONFIG_PATH
value: /powermax-config-params/driver-config-params.yaml
- name: X_CSI_POWERMAX_ARRAY_CONFIG_PATH
value: /powermax-array-config/powermax-array-config.yaml
- name: X_CSI_HEALTH_MONITOR_ENABLED
value: "<X_CSI_HEALTH_MONITOR_ENABLED>"
- name: X_CSI_VSPHERE_ENABLED
Expand Down Expand Up @@ -313,6 +315,8 @@ spec:
readOnly: true
- name: powermax-config-params
mountPath: <DriverDefaultReleaseName>-config-params
- name: powermax-array-config
mountPath: /powermax-array-config
volumes:
- name: socket-dir
emptyDir:
Expand All @@ -323,5 +327,8 @@ spec:
- name: powermax-config-params
configMap:
name: <DriverDefaultReleaseName>-config-params
- name: powermax-array-config
configMap:
name: powermax-array-config
- name: cert-dir
emptyDir:
9 changes: 8 additions & 1 deletion operatorconfig/driverconfig/powermax/v2.11.0/node.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ spec:
capabilities:
add: ["SYS_ADMIN"]
allowPrivilegeEscalation: true
image: dellemc/csi-powermax:v2.11.0
image: amaas-eos-drm2.cec.lab.emc.com:5074/csm/powermax/csi-powermax:minimal-poc
imagePullPolicy: IfNotPresent
env:
- name: X_CSI_POWERMAX_DRIVER_NAME
Expand Down Expand Up @@ -137,6 +137,8 @@ spec:
value: /certs
- name: X_CSI_POWERMAX_CONFIG_PATH
value: /powermax-config-params/driver-config-params.yaml
- name: X_CSI_POWERMAX_ARRAY_CONFIG_PATH
value: /powermax-array-config/powermax-array-config.yaml
- name: X_CSI_POWERMAX_TOPOLOGY_CONFIG_PATH
value: /node-topology-config/topologyConfig.yaml
- name: X_CSI_IG_NODENAME_TEMPLATE
Expand Down Expand Up @@ -196,6 +198,8 @@ spec:
readOnly: true
- name: powermax-config-params
mountPath: /powermax-config-params
- name: powermax-array-config
mountPath: /powermax-array-config
- name: node-topology-config
mountPath: /node-topology-config
- name: registrar
Expand Down Expand Up @@ -261,6 +265,9 @@ spec:
- name: powermax-config-params
configMap:
name: <DriverDefaultReleaseName>-config-params
- name: powermax-array-config
configMap:
name: powermax-array-config
- name: node-topology-config
configMap:
name: node-topology-config
Expand Down
37 changes: 35 additions & 2 deletions pkg/drivers/commonconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ func GetController(ctx context.Context, cr csmv1.ContainerStorageModule, operato
if cr.Spec.Driver.CSIDriverType == "powermax" {
YamlString = ModifyPowermaxCR(YamlString, cr, "Controller")
}
if cr.Spec.Driver.CSIDriverType == "isilon" {
YamlString = ModifyPowerScaleCR(YamlString, cr, "Controller")
}

driverYAML, err := utils.GetDriverYaml(YamlString, "Deployment")
if err != nil {
Expand All @@ -115,6 +118,10 @@ func GetController(ctx context.Context, cr csmv1.ContainerStorageModule, operato

controllerYAML := driverYAML.(utils.ControllerYAML)
controllerYAML.Deployment.Spec.Replicas = &cr.Spec.Driver.Replicas
var defaultReplicas int32 = 1
if *(controllerYAML.Deployment.Spec.Replicas) == 0 {
controllerYAML.Deployment.Spec.Replicas = &defaultReplicas
}

if len(cr.Spec.Driver.Controller.Tolerations) != 0 {
tols := make([]acorev1.TolerationApplyConfiguration, 0)
Expand Down Expand Up @@ -151,15 +158,25 @@ func GetController(ctx context.Context, cr csmv1.ContainerStorageModule, operato
}

removeContainer := false
if string(*c.Name) == "csi-external-health-monitor-controller" || string(*c.Name) == "external-health-monitor" {
removeContainer = true
}
for _, s := range cr.Spec.Driver.SideCars {
if s.Name == *c.Name {
if s.Enabled == nil {
if string(*c.Name) == "csi-external-health-monitor-controller" || string(*c.Name) == "external-health-monitor" {
removeContainer = true
log.Infow("Container to be removed", "name", *c.Name)
break
}
removeContainer = false
log.Infow("Container to be enabled", "name", *c.Name)
break
} else if !*s.Enabled {
removeContainer = true
log.Infow("Container to be removed", "name", *c.Name)
} else {
removeContainer = false
log.Infow("Container to be enabled", "name", *c.Name)
}
break
Expand Down Expand Up @@ -320,6 +337,9 @@ func GetNode(ctx context.Context, cr csmv1.ContainerStorageModule, operatorConfi
if cr.Spec.Driver.CSIDriverType == "powermax" {
YamlString = ModifyPowermaxCR(YamlString, cr, "Node")
}
if cr.Spec.Driver.CSIDriverType == "isilon" {
YamlString = ModifyPowerScaleCR(YamlString, cr, "Node")
}

driverYAML, err := utils.GetDriverYaml(YamlString, "DaemonSet")
if err != nil {
Expand All @@ -333,6 +353,10 @@ func GetNode(ctx context.Context, cr csmv1.ContainerStorageModule, operatorConfi
dnspolicy := corev1.DNSPolicy(cr.Spec.Driver.DNSPolicy)
nodeYaml.DaemonSetApplyConfig.Spec.Template.Spec.DNSPolicy = &dnspolicy
}
var defaultDNSPolicy corev1.DNSPolicy = corev1.DNSClusterFirstWithHostNet
if cr.Spec.Driver.DNSPolicy == "" {
nodeYaml.DaemonSetApplyConfig.Spec.Template.Spec.DNSPolicy = &defaultDNSPolicy
}

if len(cr.Spec.Driver.Node.Tolerations) != 0 {
tols := make([]acorev1.TolerationApplyConfiguration, 0)
Expand Down Expand Up @@ -368,15 +392,24 @@ func GetNode(ctx context.Context, cr csmv1.ContainerStorageModule, operatorConfi
}
}
removeContainer := false
if string(*c.Name) == "sdc-monitor" {
removeContainer = true
}
for _, s := range cr.Spec.Driver.SideCars {
if s.Name == *c.Name {
if s.Enabled == nil {
log.Infow("Container to be enabled", "name", *c.Name)
break
if string(*c.Name) == "sdc-monitor" {
removeContainer = true
log.Infow("Container to be removed", "name", *c.Name)
} else {
removeContainer = false
log.Infow("Container to be enabled", "name", *c.Name)
}
} else if !*s.Enabled {
removeContainer = true
log.Infow("Container to be removed", "name", *c.Name)
} else {
removeContainer = false
log.Infow("Container to be enabled", "name", *c.Name)
}
break
Expand Down
55 changes: 53 additions & 2 deletions pkg/drivers/powerflex.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ const (

// CsiPowerflexExternalAccess - External Access flag
CsiPowerflexExternalAccess = "<X_CSI_POWERFLEX_EXTERNAL_ACCESS>"

// CsiDebug - Debug flag
CsiDebug = "<X_CSI_DEBUG>"
)

// PrecheckPowerFlex do input validation
Expand Down Expand Up @@ -85,6 +88,19 @@ func PrecheckPowerFlex(ctx context.Context, cr *csmv1.ContainerStorageModule, op
break
}
}
if cr.Spec.Driver.InitContainers == nil {
cr.Spec.Driver.InitContainers = []csmv1.ContainerTemplate{
{
Name: "sdc",
Envs: []corev1.EnvVar{
{
Name: "MDM",
Value: mdmVar,
},
},
},
}
}

for _, sidecar := range cr.Spec.Driver.SideCars {
if sidecar.Name == "sdc-monitor" {
Expand All @@ -102,6 +118,32 @@ func PrecheckPowerFlex(ctx context.Context, cr *csmv1.ContainerStorageModule, op
sidenv[j] = updatenv
}
}
if cr.Spec.Driver.SideCars == nil {
cr.Spec.Driver.SideCars = []csmv1.ContainerTemplate{
{
Name: "sdc-monitor",
Envs: []corev1.EnvVar{
{
Name: "MDM",
Value: mdmVar,
},
},
},
}
}

kubeletConfigDirFound := false
for _, env := range cr.Spec.Driver.Common.Envs {
if env.Name == "KUBELET_CONFIG_DIR" {
kubeletConfigDirFound = true
}
}
if !kubeletConfigDirFound {
cr.Spec.Driver.Common.Envs = append(cr.Spec.Driver.Common.Envs, corev1.EnvVar{
Name: "KUBELET_CONFIG_DIR",
Value: "/var/lib/kubelet",
})
}

return nil
}
Expand Down Expand Up @@ -226,8 +268,9 @@ func ModifyPowerflexCR(yamlString string, cr csmv1.ContainerStorageModule, fileT
storageCapacity := "false"
enableQuota := ""
powerflexExternalAccess := ""
healthMonitorController := ""
healthMonitorNode := ""
healthMonitorController := "false"
healthMonitorNode := "false"
csiDebug := "true"

// nolint:gosec
switch fileType {
Expand All @@ -239,9 +282,13 @@ func ModifyPowerflexCR(yamlString string, cr csmv1.ContainerStorageModule, fileT
if env.Name == "X_CSI_HEALTH_MONITOR_ENABLED" {
healthMonitorController = env.Value
}
if env.Name == "X_CSI_DEBUG" {
csiDebug = env.Value
}
}
yamlString = strings.ReplaceAll(yamlString, CsiHealthMonitorEnabled, healthMonitorController)
yamlString = strings.ReplaceAll(yamlString, CsiPowerflexExternalAccess, powerflexExternalAccess)
yamlString = strings.ReplaceAll(yamlString, CsiDebug, csiDebug)

case "Node":
for _, env := range cr.Spec.Driver.Node.Envs {
Expand All @@ -263,12 +310,16 @@ func ModifyPowerflexCR(yamlString string, cr csmv1.ContainerStorageModule, fileT
if env.Name == "X_CSI_HEALTH_MONITOR_ENABLED" {
healthMonitorNode = env.Value
}
if env.Name == "X_CSI_DEBUG" {
csiDebug = env.Value
}
}
yamlString = strings.ReplaceAll(yamlString, CsiApproveSdcEnabled, approveSdcEnabled)
yamlString = strings.ReplaceAll(yamlString, CsiRenameSdcEnabled, renameSdcEnabled)
yamlString = strings.ReplaceAll(yamlString, CsiPrefixRenameSdc, renameSdcPrefix)
yamlString = strings.ReplaceAll(yamlString, CsiVxflexosMaxVolumesPerNode, maxVolumesPerNode)
yamlString = strings.ReplaceAll(yamlString, CsiHealthMonitorEnabled, healthMonitorNode)
yamlString = strings.ReplaceAll(yamlString, CsiDebug, csiDebug)

case "CSIDriverSpec":
if cr.Spec.Driver.CSIDriverSpec.StorageCapacity {
Expand Down
89 changes: 89 additions & 0 deletions pkg/drivers/powerflex_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,86 @@ var (
{"empty config", csmForPowerFlex("empty"), powerFlexClient, shared.MakeSecretWithJSON("empty-config", pFlexNS, configJSONFileEmpty), "Arrays details are not provided"},
{"bad config", csmForPowerFlex("bad"), powerFlexClient, shared.MakeSecretWithJSON("bad-config", pFlexNS, configJSONFileBad), "unable to parse"},
}

modifyPowerflexCRTests = []struct {
name string
yamlString string
cr csmv1.ContainerStorageModule
fileType string
expected string
}{
{
name: "Controller case with values",
yamlString: "CSI_HEALTH_MONITOR_ENABLED=OLD CSI_POWERFLEX_EXTERNAL_ACCESS=OLD CSI_DEBUG=OLD",
cr: csmv1.ContainerStorageModule{
Spec: csmv1.ContainerStorageModuleSpec{
Driver: csmv1.Driver{
Controller: csmv1.ContainerTemplate{
Envs: []corev1.EnvVar{
{Name: "X_CSI_POWERFLEX_EXTERNAL_ACCESS", Value: "NEW_POWERFLEX_ACCESS"},
{Name: "X_CSI_HEALTH_MONITOR_ENABLED", Value: "NEW_HEALTH_MONITOR"},
{Name: "X_CSI_DEBUG", Value: "NEW_DEBUG"},
},
},
},
},
},
fileType: "Controller",
expected: "CSI_HEALTH_MONITOR_ENABLED=OLD CSI_POWERFLEX_EXTERNAL_ACCESS=OLD CSI_DEBUG=OLD",
},
{
name: "Node case with values",
yamlString: "CSI_APPROVE_SDC_ENABLED=NEW_APPROVE_SDC CSI_RENAME_SDC_ENABLED=NEW_RENAME_SDC CSI_PREFIX_RENAME_SDC=NEW_RENAME_PREFIX CSI_VXFLEXOS_MAX_VOLUMES_PER_NODE=NEW_MAX_VOLUMES CSI_HEALTH_MONITOR_ENABLED=NEW_HEALTH_MONITOR_NODE CSI_DEBUG=NEW_DEBUG",
cr: csmv1.ContainerStorageModule{
Spec: csmv1.ContainerStorageModuleSpec{
Driver: csmv1.Driver{
Node: csmv1.ContainerTemplate{
Envs: []corev1.EnvVar{
{Name: "X_CSI_APPROVE_SDC_ENABLED", Value: "NEW_APPROVE_SDC"},
{Name: "X_CSI_RENAME_SDC_ENABLED", Value: "NEW_RENAME_SDC"},
{Name: "X_CSI_PREFIX_RENAME_SDC", Value: "NEW_RENAME_PREFIX"},
{Name: "X_CSI_VXFLEXOS_MAX_VOLUMES_PER_NODE", Value: "NEW_MAX_VOLUMES"},
{Name: "X_CSI_HEALTH_MONITOR_ENABLED", Value: "NEW_HEALTH_MONITOR_NODE"},
{Name: "X_CSI_DEBUG", Value: "NEW_DEBUG"},
},
},
},
},
},
fileType: "Node",
expected: "CSI_APPROVE_SDC_ENABLED=NEW_APPROVE_SDC CSI_RENAME_SDC_ENABLED=NEW_RENAME_SDC CSI_PREFIX_RENAME_SDC=NEW_RENAME_PREFIX CSI_VXFLEXOS_MAX_VOLUMES_PER_NODE=NEW_MAX_VOLUMES CSI_HEALTH_MONITOR_ENABLED=NEW_HEALTH_MONITOR_NODE CSI_DEBUG=NEW_DEBUG",
},
{
name: "CSIDriverSpec case with storage capacity",
yamlString: "CSI_STORAGE_CAPACITY_ENABLED=OLD CSI_VXFLEXOS_QUOTA_ENABLED=OLD",
cr: csmv1.ContainerStorageModule{
Spec: csmv1.ContainerStorageModuleSpec{
Driver: csmv1.Driver{
CSIDriverSpec: csmv1.CSIDriverSpec{
StorageCapacity: true,
},
},
},
},
fileType: "CSIDriverSpec",
expected: "CSI_STORAGE_CAPACITY_ENABLED=OLD CSI_VXFLEXOS_QUOTA_ENABLED=OLD",
},
{
name: "CSIDriverSpec case without storage capacity",
yamlString: "CSI_STORAGE_CAPACITY_ENABLED=OLD CSI_VXFLEXOS_QUOTA_ENABLED=OLD",
cr: csmv1.ContainerStorageModule{
Spec: csmv1.ContainerStorageModuleSpec{
Driver: csmv1.Driver{
CSIDriverSpec: csmv1.CSIDriverSpec{
StorageCapacity: false,
},
},
},
},
fileType: "CSIDriverSpec",
expected: "CSI_STORAGE_CAPACITY_ENABLED=OLD CSI_VXFLEXOS_QUOTA_ENABLED=OLD",
},
}
)

func TestPowerFlexGo(t *testing.T) {
Expand Down Expand Up @@ -94,3 +174,12 @@ func csmForPowerFlexBadVersion() csmv1.ContainerStorageModule {

return res
}

func TestModifyPowerflexCR(t *testing.T) {
for _, tt := range modifyPowerflexCRTests {
t.Run(tt.name, func(t *testing.T) {
result := ModifyPowerflexCR(tt.yamlString, tt.cr, tt.fileType)
assert.Equal(t, tt.expected, result)
})
}
}
Loading
Loading