Skip to content
Open
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ gofsutil/
.idea
.vscode
*.log
csm-common.mk
go-code-tester
vendor/
19 changes: 10 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright © 2019-2025 Dell Inc. or its subsidiaries. All Rights Reserved.
# Copyright © 2019-2026 Dell Inc. or its subsidiaries. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -11,22 +11,23 @@
# limitations under the License

# some arguments that must be supplied
ARG GOPROXY
ARG GOIMAGE
ARG BASEIMAGE
ARG DIGEST
ARG VERSION="2.16.0"

# Stage to build the driver
FROM $GOIMAGE as builder
ARG GOPROXY
FROM $GOIMAGE AS builder
ARG VERSION

RUN mkdir -p /go/src
COPY ./ /go/src/

WORKDIR /go/src/
RUN CGO_ENABLED=0 \
make build
RUN make build IMAGE_VERSION=$VERSION

# Stage to build the driver image
FROM $BASEIMAGE AS final
ARG VERSION
ENTRYPOINT ["/csi-vxflexos.sh"]
# copy in the driver
COPY --from=builder /go/src/csi-vxflexos /
Expand All @@ -37,7 +38,7 @@ LABEL vendor="Dell Technologies" \
name="csi-powerflex" \
summary="CSI Driver for Dell EMC PowerFlex" \
description="CSI Driver for provisioning persistent storage from Dell EMC PowerFlex" \
release="1.15.0" \
version="2.15.0" \
release="1.16.0" \
version=$VERSION \
license="Apache-2.0"
COPY ./licenses /licenses
13 changes: 0 additions & 13 deletions Gopkg.toml

This file was deleted.

64 changes: 21 additions & 43 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,52 +1,45 @@
# Copyright © 2026 Dell Inc. or its subsidiaries. All Rights Reserved.
#
# Dell Technologies, Dell and other trademarks are trademarks of Dell Inc.
# or its subsidiaries. Other trademarks may be trademarks of their respective
# owners.

include images.mk

# default target
all: help

# include an overrides file, which sets up default values and allows user overrides
include overrides.mk
# This will be overridden during image build.
IMAGE_VERSION ?= 0.0.0
LDFLAGS = "-X main.ManifestSemver=$(IMAGE_VERSION)"

# Help target, prints usefule information
help:
@echo
@echo "The following targets are commonly used:"
@echo
@echo "action-help - Displays instructions on how to run a single github workflow locally"
@echo "actions - Run all workflows locally, requires https://github.com/nektos/act"
@echo "build - Builds the code locally"
@echo "check - Runs the suite of code checking tools: lint, format, etc"
@echo "clean - Cleans the local build"
@echo "docker - Builds the code within a golang container and then creates the driver image"
@echo "images - Builds the code within a golang container and then creates the driver image"
@echo "integration-test - Runs the integration tests. Requires access to an array"
@echo "push - Pushes the built container to a target registry"
@echo "unit-test - Runs the unit tests"
@echo "vendor - Downloads a vendor list (local copy) of repositories required to compile the repo."
@echo
@make -s overrides-help

# Clean the build
clean:
rm -f core/core_generated.go
rm -f semver.mk
rm -rf csm-common.mk
rm -rf vendor
go clean

# Dependencies
dependencies:
go generate
go run core/semver/semver.go -f mk >semver.mk

# Build the driver locally
build: dependencies
CGO_ENABLED=0 GOOS=linux GO111MODULE=on go build

# Generates the docker container (but does not push)
docker: dependencies
make -f docker.mk docker

# Generates the docker container with no cache (but does not push)
docker-no-cache: dependencies
make -f docker.mk docker-no-cache

# Pushes container to the repository
push: docker
make -f docker.mk push
build: generate vendor
CGO_ENABLED=0 GOOS=linux GO111MODULE=on go build -ldflags $(LDFLAGS) -mod=vendor

# Windows or Linux; requires no hardware
unit-test: go-code-tester
Expand All @@ -60,23 +53,8 @@ integration-test:
check:
@scripts/check.sh ./provider/ ./service/

.PHONY: actions action-help
actions: ## Run all GitHub Action checks that run on a pull request creation
@echo "Running all GitHub Action checks for pull request events..."
@act -l | grep -v ^Stage | grep pull_request | grep -v image_security_scan | awk '{print $$2}' | while read WF; do \
echo "Running workflow: $${WF}"; \
act pull_request --no-cache-server --platform ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest --job "$${WF}"; \
done

go-code-tester:
curl -o go-code-tester -L https://raw.githubusercontent.com/dell/common-github-actions/main/go-code-tester/entrypoint.sh \
&& chmod +x go-code-tester

action-help: ## Echo instructions to run one specific workflow locally
@echo "GitHub Workflows can be run locally with the following command:"
@echo "act pull_request --no-cache-server --platform ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest --job <jobid>"
@echo ""
@echo "Where '<jobid>' is a Job ID returned by the command:"
@echo "act -l"
@echo ""
@echo "NOTE: if act is not installed, it can be downloaded from https://github.com/nektos/act"
git clone --depth 1 git@github.com:CSM/actions.git temp-repo
cp temp-repo/go-code-tester/entrypoint.sh ./go-code-tester
chmod +x go-code-tester
rm -rf temp-repo
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
# :lock: **Important Notice**
Starting with the release of **Container Storage Modules v1.16.0**, this repository will no longer be maintained as an open source project. Future development will continue under a closed source model. This change reflects our commitment to delivering even greater value to our customers by enabling faster innovation and more deeply integrated features with the Dell storage portfolio.<br>
For existing customers using Dell’s Container Storage Modules, you will continue to receive:
* **Ongoing Support & Community Engagement**<br>
You will continue to receive high-quality support through Dell Support and our community channels. Your experience of engaging with the Dell community remains unchanged.
* **Streamlined Deployment & Updates**<br>
Deployment and update processes will remain consistent, ensuring a smooth and familiar experience.
* **Access to Documentation & Resources**<br>
All documentation and related materials will remain publicly accessible, providing transparency and technical guidance.
* **Continued Access to Current Open Source Version**<br>
The current open-source version will remain available under its existing license for those who rely on it.

Moving to a closed source model allows Dell’s development team to accelerate feature delivery and enhance integration across our Enterprise Kubernetes Storage solutions ultimately providing a more seamless and robust experience.<br>
We deeply appreciate the contributions of the open source community and remain committed to supporting our customers through this transition.<br>

For questions or access requests, please contact the maintainers via [Dell Support](https://www.dell.com/support/kbdoc/en-in/000188046/container-storage-interface-csi-drivers-and-container-storage-modules-csm-how-to-get-support).

# CSI Driver for Dell PowerFlex

[![Go Report Card](https://goreportcard.com/badge/github.com/dell/csi-vxflexos?style=flat-square)](https://goreportcard.com/report/github.com/dell/csi-vxflexos)
Expand Down Expand Up @@ -49,4 +66,3 @@ Also, if the `X_CSI_VXFLEXOS_SDCGUID` environment variable is not set, the drive
## Documentation
For more detailed information on the driver, please refer to [Container Storage Modules documentation](https://dell.github.io/csm-docs/).


2 changes: 1 addition & 1 deletion core/semver/semver.go
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ var OSExit = func(code int) {
// GetExitError is a wrapper around exec.ExitError
var GetExitError = func(err error) (e *exec.ExitError, ok bool) {
e, ok = err.(*exec.ExitError)
return
return e, ok
}

// GetStatusError is a wrapper around syscall.WaitStatus
Expand Down
23 changes: 23 additions & 0 deletions dell-csi-helm-installer/csi-install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,28 @@ function verify_kubernetes() {
fi
}

# get_sdc_enabled_from_values
# reads node.sdc.enabled from the provided values.yaml (in $VALUES)
# and exports SDC_ENABLED=true/false for child scripts
function get_sdc_enabled_from_values() {
if [ -z "${VALUES}" ] || [ ! -f "${VALUES}" ]; then
# default to false when values file isn't present
export SDC_ENABLED=false
return
fi
local val
val=$(awk '
BEGIN{in_node=0; in_sdc=0}
/^[[:space:]]*node:/ {in_node=1; next}
in_node && /^[[:space:]]*sdc:/ {in_sdc=1; next}
in_node && in_sdc && /^[[:space:]]*enabled:[[:space:]]*/ {gsub(/"/, ""); print tolower($2); exit}
' "${VALUES}")
case "${val}" in
true|"true") export SDC_ENABLED=true;;
*) export SDC_ENABLED=false;;
esac
}

#
# main
#
Expand Down Expand Up @@ -420,6 +442,7 @@ kNonGAVersion=$(run_command kubectl version | grep 'Server Version' | sed -n 's/

# validate the parameters passed in
validate_params "${MODE}"
get_sdc_enabled_from_values

header
check_for_driver "${MODE}"
Expand Down
9 changes: 8 additions & 1 deletion dell-csi-helm-installer/install-csi-vxflexos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@

# make MDM secret key with values from each array
# fail if MDM format is not valid

SDC_ENABLED=${SDC_ENABLED:-false}

function install_mdm_secret() {
log smart_step "Get SDC config and make MDM string for multi array support"
SECRET=${1}
Expand Down Expand Up @@ -56,4 +59,8 @@ function check_ip() {
fi
}

install_mdm_secret "${RELEASE}-config"
if [[ "${SDC_ENABLED}" == "true" ]]; then
install_mdm_secret "${RELEASE}-config"
else
log smart_step "SDC installation is disabled, skipping MDM secret creation"
fi
8 changes: 8 additions & 0 deletions dell-csi-helm-installer/verify-csi-vxflexos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,14 @@ function verify_sdc_installation() {
if [ ${NODE_VERIFY} -eq 0 ]; then
return
fi
JSON=$(kubectl get secret "${RELEASE}-config" -n ${NS} -o go-template='{{ .data.config }}' | base64 --decode)
BLOCK_PROTOCOL=$(echo "${JSON}" | grep -v '^#' | grep blockProtocol | awk -F "\"" '{ print $(NF-1)}' | head -n1)
BLOCK_PROTOCOL=${BLOCK_PROTOCOL:-auto}
if [[ "${BLOCK_PROTOCOL}" == "NVMeTCP" ]]; then
log step "Skipping SDC verification (protocol=${BLOCK_PROTOCOL})"
log step_success
return
fi
log step "Verifying the SDC installation"

local SDC_MINION_NODES=$(run_command kubectl get nodes -o wide | grep -v -e master -e INTERNAL -e infra | awk ' { print $6; }')
Expand Down
34 changes: 0 additions & 34 deletions docker.mk

This file was deleted.

Loading