├── .dockerignore ├── .gitattributes ├── .github └── dependabot.yml ├── .gitignore ├── .secrets.baseline ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── PROJECT ├── README.md ├── api └── v1 │ ├── common.go │ ├── groupversion_info.go │ ├── hostdefiner_types.go │ ├── hostdefinition_types.go │ ├── ibmblockcsi_types.go │ └── zz_generated.deepcopy.go ├── build ├── Dockerfile ├── Dockerfile.nodeagent ├── Dockerfile.operator ├── bin │ ├── entrypoint │ └── user_setup ├── ci │ ├── Dockerfile.olm-validation │ ├── Dockerfile.unittest │ ├── Jenkinsfile │ ├── build_push_image.sh │ ├── multiarch │ │ ├── helper_to_push_csi_images_and_manifests.sh │ │ ├── helper_to_push_docker_image.sh │ │ └── helper_to_push_docker_manifest.sh │ ├── olm_validation.sh │ ├── run_olm_validation.sh │ └── run_unittests.sh ├── docker-entrypoint.sh ├── health_check.sh └── node-agent.sh ├── config ├── crd │ ├── bases │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ └── csi.ibm.com_ibmblockcsis.yaml │ └── kustomization.yaml ├── manager │ └── manager.yaml ├── rbac │ ├── kustomization.yaml │ ├── role.yaml │ ├── role_binding.yaml │ ├── role_labels_patch.yaml │ └── service_account.yaml └── samples │ ├── csi.ibm.com_v1_ibmblockcsi_cr.yaml │ └── csi_v1_hostdefiner_cr.yaml ├── controllers ├── hostdefiner_controller.go ├── ibmblockcsi_controller.go ├── internal │ ├── common │ │ └── common.go │ ├── crutils │ │ ├── common.go │ │ ├── default_setter.go │ │ ├── default_setter_test.go │ │ ├── ibmblockcsi.go │ │ ├── ibmblockcsi_suite_test.go │ │ ├── static_resource_generator.go │ │ └── validator.go │ └── hostdefiner │ │ ├── default_setter.go │ │ ├── default_setter_test.go │ │ ├── hostdefiner.go │ │ └── static_resource_generator.go ├── syncer │ ├── common.go │ ├── csi_controller.go │ ├── csi_hostdefiner.go │ └── csi_node.go └── util │ ├── common │ └── common.go │ ├── datastructures.go │ └── tests │ └── tests.go ├── deploy ├── 99-ibm-attach.yaml ├── installer │ ├── generated │ │ └── ibm-block-csi-operator.yaml │ └── kustomization.yaml └── olm-catalog │ ├── ibm-block-csi-operator-community │ ├── 1.10.0 │ │ ├── bundle-1.10.0.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.10.0.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.11.0 │ │ ├── bundle-1.11.0.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.11.0.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.11.2 │ │ ├── bundle-1.11.2.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.11.2.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.11.3 │ │ ├── bundle-1.11.3.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.11.3.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.11.4 │ │ ├── bundle-1.11.4.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.11.4.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.12.0 │ │ ├── bundle-1.12.0.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.12.0.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.12.1 │ │ ├── bundle-1.12.1.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.12.1.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.12.2 │ │ ├── bundle-1.12.2.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.12.2.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.12.3 │ │ ├── bundle-1.12.3.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.12.3.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.12.4 │ │ ├── bundle-1.12.4.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.12.4.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.3.0 │ │ ├── bundle-1.3.0.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_ibmblockcsis_crd.yaml │ │ │ └── ibm-block-csi-operator.v1.3.0.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.4.0 │ │ ├── bundle-1.4.0.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_ibmblockcsis_crd.yaml │ │ │ └── ibm-block-csi-operator.v1.4.0.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.5.0 │ │ ├── bundle-1.5.0.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_ibmblockcsis_crd.yaml │ │ │ └── ibm-block-csi-operator.v1.5.0.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.6.0 │ │ ├── bundle-1.6.0.Dockerfile │ │ ├── manifests │ │ │ ├── ibm-block-csi-operator.v1.6.0.clusterserviceversion.yaml │ │ │ └── ibmblockcsis.csi.ibm.com.crd.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.7.0 │ │ ├── bundle-1.7.0.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.7.0.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.8.0 │ │ ├── bundle-1.8.0.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.8.0.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ ├── 1.9.0 │ │ ├── bundle-1.9.0.Dockerfile │ │ ├── manifests │ │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ │ └── ibm-block-csi-operator.v1.9.0.clusterserviceversion.yaml │ │ └── metadata │ │ │ └── annotations.yaml │ └── ci.yaml │ └── ibm-block-csi-operator │ ├── 1.10.0 │ ├── bundle-1.10.0.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.11.0 │ ├── bundle-1.11.0.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.11.2 │ ├── bundle-1.11.2.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.11.3 │ ├── bundle-1.11.3.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.11.4 │ ├── bundle-1.11.4.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.12.0 │ ├── bundle-1.12.0.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.12.1 │ ├── bundle-1.12.1.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.12.2 │ ├── bundle-1.12.2.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.12.3 │ ├── bundle-1.12.3.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.12.4 │ ├── bundle-1.12.4.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_hostdefiners.yaml │ │ ├── csi.ibm.com_hostdefinitions.yaml │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.3.0 │ ├── bundle-1.3.0.Dockerfile │ ├── manifests │ │ ├── ibm-block-csi-operator.v1.3.0.clusterserviceversion.yaml │ │ └── ibmblockcsis.csi.ibm.com.crd.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.4.0 │ ├── bundle-1.4.0.Dockerfile │ ├── manifests │ │ ├── ibm-block-csi-operator.v1.4.0.clusterserviceversion.yaml │ │ └── ibmblockcsis.csi.ibm.com.crd.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.5.0 │ ├── bundle-1.5.0.Dockerfile │ ├── manifests │ │ ├── ibm-block-csi-operator.v1.5.0.clusterserviceversion.yaml │ │ └── ibmblockcsis.csi.ibm.com.crd.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.6.0 │ ├── bundle-1.6.0.Dockerfile │ ├── manifests │ │ ├── ibm-block-csi-operator.v1.6.0.clusterserviceversion.yaml │ │ └── ibmblockcsis.csi.ibm.com.crd.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.7.0 │ ├── bundle-1.7.0.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.v1.7.0.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.8.0 │ ├── bundle-1.8.0.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ ├── 1.9.0 │ ├── bundle-1.9.0.Dockerfile │ ├── manifests │ │ ├── csi.ibm.com_ibmblockcsis.yaml │ │ └── ibm-block-csi-operator.clusterserviceversion.yaml │ └── metadata │ │ └── annotations.yaml │ └── ibm-block-csi-operator.package.yaml ├── envtest ├── hostdefiner_controller_test.go ├── ibmblockcsi_controller_test.go └── suite_test.go ├── go.mod ├── go.sum ├── hack ├── boilerplate.go.txt ├── check-generated-manifests.sh ├── get-arch.sh ├── update-all.sh ├── update-config-yamls.sh ├── update-copyright.sh ├── update-installer.sh └── update_labels_in_crd.sh ├── main.go ├── pkg ├── config │ ├── constants.go │ ├── resources.go │ └── settings.go └── util │ ├── boolptr │ └── boolptr.go │ └── kubernetes │ └── kube_client.go └── version └── version.go /.dockerignore: -------------------------------------------------------------------------------- 1 | .git/ 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | vendor/* linguist-generated=true 2 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "gomod" 9 | directory: "/" 10 | schedule: 11 | interval: "weekly" 12 | rebase-strategy: "disabled" 13 | labels: 14 | - go 15 | - dependencies 16 | - package-ecosystem: "github-actions" 17 | directory: "/" 18 | schedule: 19 | interval: "weekly" 20 | rebase-strategy: "disabled" 21 | labels: 22 | - github_actions 23 | - dependencies 24 | 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.bak/ 3 | deploy/examples/ 4 | # Temporary Build Files 5 | build/_output 6 | build/_test 7 | .idea/ 8 | # Created by https://www.gitignore.io/api/go,vim,emacs,visualstudiocode 9 | ### Emacs ### 10 | # -*- mode: gitignore; -*- 11 | *~ 12 | \#*\# 13 | /.emacs.desktop 14 | /.emacs.desktop.lock 15 | *.elc 16 | auto-save-list 17 | tramp 18 | .\#* 19 | # Org-mode 20 | .org-id-locations 21 | *_archive 22 | # flymake-mode 23 | *_flymake.* 24 | # eshell files 25 | /eshell/history 26 | /eshell/lastdir 27 | # elpa packages 28 | /elpa/ 29 | # reftex files 30 | *.rel 31 | # AUCTeX auto folder 32 | /auto/ 33 | # cask packages 34 | .cask/ 35 | dist/ 36 | # Flycheck 37 | flycheck_*.el 38 | # server auth directory 39 | /server/ 40 | # projectiles files 41 | .projectile 42 | projectile-bookmarks.eld 43 | # directory configuration 44 | .dir-locals.el 45 | # saveplace 46 | places 47 | # url cache 48 | url/cache/ 49 | # cedet 50 | ede-projects.el 51 | # smex 52 | smex-items 53 | # company-statistics 54 | company-statistics-cache.el 55 | # anaconda-mode 56 | anaconda-mode/ 57 | ### Go ### 58 | # Binaries for programs and plugins 59 | *.exe 60 | *.exe~ 61 | *.dll 62 | *.so 63 | *.dylib 64 | # Test binary, build with 'go test -c' 65 | *.test 66 | # Output of the go coverage tool, specifically when used with LiteIDE 67 | *.out 68 | ### Vim ### 69 | # swap 70 | .sw[a-p] 71 | .*.sw[a-p] 72 | # session 73 | Session.vim 74 | # temporary 75 | .netrwhist 76 | # auto-generated tag files 77 | tags 78 | ### VisualStudioCode ### 79 | .vscode/* 80 | .history 81 | # End of https://www.gitignore.io/api/go,vim,emacs,visualstudiocode 82 | /vendor/pkg/ 83 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing guidelines 2 | 3 | ## Prerequisites 4 | - [go](https://golang.org/dl/) version v1.13+. 5 | - [docker](https://docs.docker.com/install/) version 17.03+. 6 | - [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) version v1.14.1+. 7 | - [kubebuilder](https://book.kubebuilder.io/quick-start.html#installation) v2.0.1+ 8 | 9 | ## How to run unit tests locally 10 | 1. Make sure kubebuilder is installed. 11 | 2. Run `make test` in the project root directory. 12 | 13 | ## Developing guidelines 14 | - Be sure to run `make update` or `make test` before you finish a commit. 15 | - If CRDs in `deploy/crds` are updated, the same file names located in `deploy/olm-catalog/ibm-block-csi-operator` must be updated accordingly. 16 | - If `role.yaml`, `role_binding.yaml`, or `operator.yaml` in `deploy` are updated, the ClusterServiceVersion(CSV) file in `deploy/olm-catalog/ibm-block-csi-operator` must be updated accordingly. 17 | - If `README.md` is updated, ClusterServiceVersion(CSV) file in `deploy/olm-catalog/ibm-block-csi-operator` must be updated accordingly. 18 | - Run `operator-sdk add` to add a new API or controller, for more details, please refer to https://github.com/operator-framework/operator-sdk. 19 | - Run `operator-sdk generate k8s` and `operator-sdk generate crds` after you change something in `pkg/apis`. 20 | 21 | ## Package the Operator 22 | This repository makes use of the [Operator Framework](https://github.com/operator-framework) and its packaging concept for Operators. Make sure you read the following guides before packaging the operator and uploading to OperatorHub. 23 | - https://github.com/operator-framework/community-operators/blob/master/docs/contributing.md 24 | - https://github.com/operator-framework/operator-lifecycle-manager/blob/master/doc/design/building-your-csv.md 25 | - https://github.com/operator-framework/community-operators/blob/master/docs/required-fields.md 26 | -------------------------------------------------------------------------------- /PROJECT: -------------------------------------------------------------------------------- 1 | domain: ibm.com 2 | layout: 3 | - go.kubebuilder.io/v3 4 | plugins: 5 | manifests.sdk.operatorframework.io/v2: {} 6 | scorecard.sdk.operatorframework.io/v2: {} 7 | projectName: ibm-block-csi-operator 8 | repo: github.com/IBM/ibm-block-csi-operator 9 | resources: 10 | - api: 11 | crdVersion: v1 12 | namespaced: true 13 | controller: true 14 | domain: ibm.com 15 | group: csi 16 | kind: IBMBlockCSI 17 | path: github.com/IBM/ibm-block-csi-operator/api/v1 18 | version: v1 19 | - api: 20 | crdVersion: v1 21 | namespaced: true 22 | controller: true 23 | domain: ibm.com 24 | group: csi 25 | kind: HostDefiner 26 | path: github.com/IBM/ibm-block-csi-operator/api/v1 27 | version: v1 28 | - api: 29 | crdVersion: v1 30 | controller: true 31 | domain: ibm.com 32 | group: csi 33 | kind: HostDefinition 34 | path: github.com/IBM/ibm-block-csi-operator/api/v1 35 | version: v1 36 | version: "3" 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IBM block storage CSI driver operator 2 | The Container Storage Interface (CSI) Driver for IBM block storage systems enables container orchestrators such as Kubernetes to manage the life cycle of persistent storage. 3 | 4 | This is the official operator to deploy and manage IBM block storage CSI driver. 5 | 6 | For compatibility, prerequisites, release notes, and other user information, see [IBM block storage CSI driver documentation](https://www.ibm.com/docs/en/stg-block-csi-driver). 7 | 8 | 9 | ### SecurityContextConstraints Requirements 10 | 11 | The operator uses the restricted and privileged SCC for deployments. 12 | 13 | Custom SecurityContextConstraints definition: 14 | 15 | ```yaml 16 | apiVersion: security.openshift.io/v1 17 | kind: SecurityContextConstraints 18 | metadata: 19 | annotations: 20 | kubernetes.io/description: 'anyuid provides all features of the restricted SCC 21 | but allows users to run with any UID and any GID.' 22 | name: ibm-block-csi-anyuid 23 | allowHostDirVolumePlugin: false 24 | allowHostIPC: false 25 | allowHostNetwork: false 26 | allowHostPID: false 27 | allowHostPorts: false 28 | allowPrivilegeEscalation: true 29 | allowPrivilegedContainer: false 30 | allowedCapabilities: null 31 | defaultAddCapabilities: null 32 | fsGroup: 33 | type: RunAsAny 34 | groups: 35 | readOnlyRootFilesystem: false 36 | requiredDropCapabilities: 37 | - MKNOD 38 | runAsUser: 39 | type: MustRunAsRange 40 | seLinuxContext: 41 | type: MustRunAs 42 | supplementalGroups: 43 | type: RunAsAny 44 | volumes: 45 | - configMap 46 | - downwardAPI 47 | - emptyDir 48 | - persistentVolumeClaim 49 | - projected 50 | - secret 51 | ``` 52 | 53 | ```yaml 54 | apiVersion: security.openshift.io/v1 55 | kind: SecurityContextConstraints 56 | metadata: 57 | annotations: 58 | kubernetes.io/description: 'privileged allows access to all privileged and host 59 | features and the ability to run as any user, any group, any fsGroup, and with 60 | any SELinux context. WARNING: this is the most relaxed SCC and should be used 61 | only for cluster administration. Grant with caution.' 62 | name: ibm-block-csi-privileged 63 | allowHostDirVolumePlugin: true 64 | allowHostIPC: true 65 | allowHostNetwork: true 66 | allowHostPID: true 67 | allowHostPorts: true 68 | allowPrivilegeEscalation: true 69 | allowPrivilegedContainer: true 70 | allowedCapabilities: 71 | - '*' 72 | allowedUnsafeSysctls: 73 | - '*' 74 | defaultAddCapabilities: null 75 | fsGroup: 76 | type: RunAsAny 77 | groups: 78 | priority: null 79 | readOnlyRootFilesystem: false 80 | requiredDropCapabilities: null 81 | runAsUser: 82 | type: MustRunAsRange 83 | seLinuxContext: 84 | type: RunAsAny 85 | seccompProfiles: 86 | - '*' 87 | supplementalGroups: 88 | type: RunAsAny 89 | volumes: 90 | - '*' 91 | ``` 92 | 93 | ## Licensing 94 | 95 | Copyright 2025 IBM Corp. 96 | 97 | Licensed under the Apache License, Version 2.0 (the "License"); 98 | you may not use this file except in compliance with the License. 99 | You may obtain a copy of the License at 100 | 101 | http://www.apache.org/licenses/LICENSE-2.0 102 | 103 | Unless required by applicable law or agreed to in writing, software 104 | distributed under the License is distributed on an "AS IS" BASIS, 105 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 106 | See the License for the specific language governing permissions and 107 | limitations under the License. 108 | 109 | -------------------------------------------------------------------------------- /api/v1/common.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package v1 18 | 19 | type DriverPhase string 20 | 21 | const ( 22 | DriverPhaseNone DriverPhase = "" 23 | DriverPhaseCreating DriverPhase = "Creating" 24 | DriverPhaseRunning DriverPhase = "Running" 25 | DriverPhaseFailed DriverPhase = "Failed" 26 | ) 27 | -------------------------------------------------------------------------------- /api/v1/groupversion_info.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Package v1 contains API Schema definitions for the csi v1 API group 18 | //+kubebuilder:object:generate=true 19 | //+groupName=csi.ibm.com 20 | package v1 21 | 22 | import ( 23 | "k8s.io/apimachinery/pkg/runtime/schema" 24 | "sigs.k8s.io/controller-runtime/pkg/scheme" 25 | ) 26 | 27 | var ( 28 | // GroupVersion is group version used to register these objects 29 | GroupVersion = schema.GroupVersion{Group: "csi.ibm.com", Version: "v1"} 30 | 31 | // SchemeBuilder is used to add go types to the GroupVersionKind scheme 32 | SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} 33 | 34 | // AddToScheme adds the types in this group-version to the given scheme. 35 | AddToScheme = SchemeBuilder.AddToScheme 36 | ) 37 | -------------------------------------------------------------------------------- /api/v1/hostdefiner_types.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package v1 18 | 19 | import ( 20 | corev1 "k8s.io/api/core/v1" 21 | metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 22 | ) 23 | 24 | // EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! 25 | // NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. 26 | 27 | // HostDefinerSpec defines the desired state of HostDefiner 28 | type HostDefinerSpec struct { 29 | HostDefiner IBMBlockHostDefinerSpec `json:"hostDefiner"` 30 | 31 | ImagePullSecrets []string `json:"imagePullSecrets,omitempty"` 32 | } 33 | 34 | // IBMBlockHostDefinerSpec defines the observed state of HostDefiner 35 | type IBMBlockHostDefinerSpec struct { 36 | Repository string `json:"repository"` 37 | Tag string `json:"tag"` 38 | 39 | // +kubebuilder:validation:Optional 40 | Prefix string `json:"prefix"` 41 | // +kubebuilder:validation:Optional 42 | ConnectivityType string `json:"connectivityType"` 43 | // +kubebuilder:validation:Optional 44 | ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy"` 45 | // +kubebuilder:validation:Optional 46 | Affinity *corev1.Affinity `json:"affinity,omitempty"` 47 | // +kubebuilder:validation:Optional 48 | Tolerations []corev1.Toleration `json:"tolerations,omitempty"` 49 | // +kubebuilder:validation:Optional 50 | // +kubebuilder:default:=true 51 | AllowDelete bool `json:"allowDelete,omitempty"` 52 | // +kubebuilder:validation:Optional 53 | // +kubebuilder:default:=false 54 | DynamicNodeLabeling bool `json:"dynamicNodeLabeling,omitempty"` 55 | // +kubebuilder:validation:Optional 56 | PortSet string `json:"portSet"` 57 | } 58 | 59 | // HostDefinerStatus defines the observed state of HostDefiner 60 | type HostDefinerStatus struct { 61 | Phase DriverPhase `json:"phase"` 62 | HostDefinerReady bool `json:"hostDefinerReady"` 63 | 64 | // Version is the current driver version 65 | Version string `json:"version"` 66 | } 67 | 68 | //+kubebuilder:object:root=true 69 | //+kubebuilder:subresource:status 70 | 71 | // HostDefiner is the Schema for the hostdefiners API 72 | type HostDefiner struct { 73 | metav1.TypeMeta `json:",inline"` 74 | metav1.ObjectMeta `json:"metadata,omitempty"` 75 | 76 | Spec HostDefinerSpec `json:"spec,omitempty"` 77 | Status HostDefinerStatus `json:"status,omitempty"` 78 | } 79 | 80 | //+kubebuilder:object:root=true 81 | 82 | // HostDefinerList contains a list of HostDefiner 83 | type HostDefinerList struct { 84 | metav1.TypeMeta `json:",inline"` 85 | metav1.ListMeta `json:"metadata,omitempty"` 86 | Items []HostDefiner `json:"items"` 87 | } 88 | 89 | func init() { 90 | SchemeBuilder.Register(&HostDefiner{}, &HostDefinerList{}) 91 | } 92 | -------------------------------------------------------------------------------- /api/v1/hostdefinition_types.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package v1 18 | 19 | import ( 20 | metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 21 | ) 22 | 23 | // EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! 24 | // NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. 25 | 26 | // HostDefinitionSpec defines the desired state of HostDefinition 27 | type HostDefinitionSpec struct { 28 | HostDefinition Definition `json:"hostDefinition"` 29 | } 30 | 31 | // Definition defines the observed state of HostDefinition 32 | type Definition struct { 33 | NodeName string `json:"nodeName"` 34 | ManagementAddress string `json:"managementAddress"` 35 | 36 | // +kubebuilder:validation:Optional 37 | SecretName string `json:"secretName"` 38 | // +kubebuilder:validation:Optional 39 | SecretNamespace string `json:"secretNamespace"` 40 | // +kubebuilder:validation:Optional 41 | NodeId string `json:"nodeId"` 42 | // +kubebuilder:validation:Optional 43 | ConnectivityType string `json:"connectivityType"` 44 | // +kubebuilder:validation:Optional 45 | Ports []string `json:"ports"` 46 | // +kubebuilder:validation:Optional 47 | NodeNameOnStorage string `json:"nodeNameOnStorage"` 48 | // +kubebuilder:validation:Optional 49 | IOGroups []int `json:"ioGroups"` 50 | } 51 | 52 | // HostDefinitionStatus defines the status of the host definition on the storage 53 | type HostDefinitionStatus struct { 54 | Phase DriverPhase `json:"phase"` 55 | } 56 | 57 | //+kubebuilder:object:root=true 58 | //+kubebuilder:subresource:status 59 | //+kubebuilder:resource:scope=Cluster 60 | 61 | // HostDefinition is the Schema for the hostdefinitions API 62 | // +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" 63 | // +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.status.phase` 64 | // +kubebuilder:printcolumn:name="Node",type=string,JSONPath=`.spec.hostDefinition.nodeName` 65 | // +kubebuilder:printcolumn:name="Management_Address",type=string,JSONPath=`.spec.hostDefinition.managementAddress` 66 | type HostDefinition struct { 67 | metav1.TypeMeta `json:",inline"` 68 | metav1.ObjectMeta `json:"metadata,omitempty"` 69 | 70 | Spec HostDefinitionSpec `json:"spec,omitempty"` 71 | Status HostDefinitionStatus `json:"status,omitempty"` 72 | } 73 | 74 | //+kubebuilder:object:root=true 75 | 76 | // HostDefinitionList contains a list of HostDefinition 77 | type HostDefinitionList struct { 78 | metav1.TypeMeta `json:",inline"` 79 | metav1.ListMeta `json:"metadata,omitempty"` 80 | Items []HostDefinition `json:"items"` 81 | } 82 | 83 | func init() { 84 | SchemeBuilder.Register(&HostDefinition{}, &HostDefinitionList{}) 85 | } 86 | -------------------------------------------------------------------------------- /build/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.access.redhat.com/ubi9-minimal:9.6-1747218906 2 | 3 | ENV OPERATOR=/usr/local/bin/ibm-block-csi-operator \ 4 | USER_UID=1001 \ 5 | USER_NAME=ibm-block-csi-operator 6 | 7 | # install operator binary 8 | COPY build/_output/bin/ibm-block-csi-operator ${OPERATOR} 9 | 10 | COPY build/bin /usr/local/bin 11 | RUN /usr/local/bin/user_setup 12 | 13 | ENTRYPOINT ["/usr/local/bin/entrypoint"] 14 | 15 | USER ${USER_UID} 16 | -------------------------------------------------------------------------------- /build/Dockerfile.nodeagent: -------------------------------------------------------------------------------- 1 | FROM golang:1.24 2 | 3 | WORKDIR /go/src/github.com/IBM/ibm-block-csi-operator/ 4 | COPY . . 5 | RUN CGO_ENABLED=1 GOOS=linux go build -mod vendor -o ibm-node-agent -gcflags all=-trimpath=${GOPATH} -asmflags all=-trimpath=${GOPATH} cmd/node/main.go 6 | 7 | 8 | FROM registry.access.redhat.com/ubi9-minimal:9.6-1747218906 9 | 10 | ENV PATH="/driver:${PATH}" 11 | RUN yum install -y iscsi-initiator-utils && yum clean all 12 | WORKDIR /driver 13 | COPY --from=0 /go/src/github.com/IBM/ibm-block-csi-operator/ibm-node-agent . 14 | COPY build/node-agent.sh . 15 | RUN chmod -R 755 /driver 16 | 17 | ENTRYPOINT ["./node-agent.sh"] 18 | CMD ["ibm-node-agent"] 19 | -------------------------------------------------------------------------------- /build/Dockerfile.operator: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corporation 2019. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM golang:1.24 16 | 17 | WORKDIR /go/src/github.com/IBM/ibm-block-csi-operator/ 18 | COPY . . 19 | RUN go mod download 20 | RUN CGO_ENABLED=1 GOOS=linux go build \ 21 | -o build/_output/bin/ibm-block-csi-operator \ 22 | -gcflags all=-trimpath=${GOPATH} \ 23 | -asmflags all=-trimpath=${GOPATH} \ 24 | main.go 25 | 26 | 27 | FROM registry.access.redhat.com/ubi9-minimal:9.6-1747218906 28 | 29 | ARG VERSION=1.12.4 30 | ARG BUILD_NUMBER=0 31 | 32 | ###Required Labels 33 | LABEL name="Operator for IBM block storage CSI driver" \ 34 | vendor="IBM" \ 35 | maintainer="IBM" \ 36 | version=$VERSION \ 37 | release=$BUILD_NUMBER \ 38 | summary="The operator for IBM block storage CSI driver" \ 39 | description="The IBM block storage CSI driver enables container orchestrators, such as Kubernetes and OpenShift, to manage the life-cycle of persistent storage." \ 40 | io.k8s.display-name="Operator for IBM block storage CSI driver" \ 41 | io.k8s.description="The IBM block storage CSI driver enables container orchestrators, such as Kubernetes and OpenShift, to manage the life-cycle of persistent storage." \ 42 | io.openshift.tags=ibm,csi,ibm-block-csi-operator 43 | 44 | ENV OPERATOR=/usr/local/bin/ibm-block-csi-operator \ 45 | USER_UID=1001 \ 46 | USER_NAME=ibm-block-csi-operator \ 47 | IBMBlockCSI_CR_YAML=/usr/local/etc/csi.ibm.com_v1_ibmblockcsi_cr.yaml \ 48 | HostDefiner_CR_YAML=/usr/local/etc/csi_v1_hostdefiner_cr.yaml 49 | 50 | COPY build/health_check.sh . 51 | RUN chmod 777 ./health_check.sh 52 | COPY ./LICENSE /licenses/ 53 | COPY ./config/samples/csi.ibm.com_v1_ibmblockcsi_cr.yaml ${IBMBlockCSI_CR_YAML} 54 | COPY ./config/samples/csi_v1_hostdefiner_cr.yaml ${HostDefiner_CR_YAML} 55 | RUN chmod 0444 ${IBMBlockCSI_CR_YAML} \ 56 | && chmod 0444 ${HostDefiner_CR_YAML} 57 | 58 | # install operator binary 59 | COPY --from=0 /go/src/github.com/IBM/ibm-block-csi-operator/build/_output/bin/ibm-block-csi-operator ${OPERATOR} 60 | 61 | COPY build/bin /usr/local/bin 62 | RUN chmod +x /usr/local/bin/user_setup 63 | RUN /usr/local/bin/user_setup 64 | 65 | #USER root 66 | #RUN microdnf update -y 67 | 68 | #USER default 69 | ENTRYPOINT ["/usr/local/bin/entrypoint"] 70 | 71 | USER ${USER_UID} 72 | -------------------------------------------------------------------------------- /build/bin/entrypoint: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | exec ${OPERATOR} $@ 4 | -------------------------------------------------------------------------------- /build/bin/user_setup: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -x 3 | 4 | # ensure $HOME exists and is accessible by group 0 (we don't know what the runtime UID will be) 5 | echo "${USER_NAME}:x:${USER_UID}:0:${USER_NAME} user:${HOME}:/sbin/nologin" >> /etc/passwd 6 | mkdir -p ${HOME} 7 | chown ${USER_UID}:0 ${HOME} 8 | chmod ug+rwx ${HOME} 9 | 10 | # no need for this script to remain in the image after running 11 | rm $0 12 | -------------------------------------------------------------------------------- /build/ci/Dockerfile.olm-validation: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corporation 2025. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM python:3 16 | 17 | WORKDIR /usr/src/app 18 | 19 | COPY hack/get-arch.sh get-arch.sh 20 | 21 | RUN RELEASE_VERSION=v1.9.0 \ 22 | && ARCH=$(./get-arch.sh) \ 23 | && SDK_ASSET=operator-sdk_linux_${ARCH} \ 24 | && curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/${SDK_ASSET} \ 25 | && chmod +x ${SDK_ASSET} \ 26 | && mkdir -p /usr/local/bin/ \ 27 | && cp ${SDK_ASSET} /usr/local/bin/operator-sdk \ 28 | && rm ${SDK_ASSET} 29 | 30 | COPY Makefile Makefile 31 | COPY build/ build/ 32 | COPY deploy/olm-catalog deploy/olm-catalog 33 | CMD ["make", "olm-validation"] 34 | -------------------------------------------------------------------------------- /build/ci/Dockerfile.unittest: -------------------------------------------------------------------------------- 1 | # Copyright IBM Corporation 2019. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM golang:1.24 16 | 17 | ENV GO111MODULE=on \ 18 | GOROOT=/usr/local/go \ 19 | WORKDIR=/go/src/github.com/IBM/ibm-block-csi-operator 20 | ENV IBMBlockCSI_CR_YAML=$WORKDIR/config/samples/csi.ibm.com_v1_ibmblockcsi_cr.yaml \ 21 | HostDefiner_CR_YAML=$WORKDIR/config/samples/csi_v1_hostdefiner_cr.yaml 22 | WORKDIR $WORKDIR 23 | RUN go install github.com/onsi/ginkgo/v2/ginkgo@v2.23.4 \ 24 | && go install sigs.k8s.io/controller-runtime/tools/setup-envtest@v0.0.0-20220322150744-c46b410039fd 25 | COPY Makefile . 26 | 27 | RUN make kustomize \ 28 | && make controller-gen 29 | 30 | COPY . . 31 | 32 | CMD ["make", "test"] 33 | -------------------------------------------------------------------------------- /build/ci/Jenkinsfile: -------------------------------------------------------------------------------- 1 | pipeline { 2 | parameters { 3 | string(name: 'IMAGE_VERSION', defaultValue: "1.12.4") 4 | string(name: 'DOCKER_REGISTRY', defaultValue: DEFAULT_DOCKER_REGISTRY) 5 | string(name: 'EMAIL_TO', defaultValue: "") 6 | } 7 | environment { 8 | registryCredentialsID = 'quay_io_credentials' 9 | } 10 | options { 11 | ansiColor('xterm') 12 | } 13 | agent { 14 | label "${env.AGENT_LABEL}" 15 | } 16 | stages { 17 | stage ('Run unit tests') { 18 | steps { 19 | sh 'mkdir -p build/_output/reports && chmod 777 build/_output/reports' 20 | sh './build/ci/run_unittests.sh' 21 | } 22 | } 23 | stage ('Run OLM validations') { 24 | steps { 25 | sh './build/ci/run_olm_validation.sh' 26 | } 27 | } 28 | stage ('Build and push images') { 29 | steps { 30 | script { 31 | def registryUrl = "${DOCKER_REGISTRY}" 32 | withCredentials([usernamePassword(credentialsId: registryCredentialsID, usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) { 33 | sh 'docker login -u $USERNAME -p $PASSWORD ${DOCKER_REGISTRY}' 34 | sh './build/ci/build_push_image.sh build/_output/reports/images_url' 35 | sh 'docker logout ${DOCKER_REGISTRY}' 36 | } 37 | } 38 | } 39 | } 40 | } 41 | post { 42 | always { 43 | sh 'ls -la build/_output/reports/' 44 | // junit 'build/reports/*.xml' 45 | archiveArtifacts 'build/_output/reports/images_url' 46 | sh '[ -d build/_output/reports ] && rm -rf build/_output/reports' 47 | script { 48 | manager.addShortText("${env.GIT_BRANCH}") 49 | } 50 | } 51 | 52 | failure { 53 | emailext body: 'Check console output at $BUILD_URL to view the results. \n\n ${CHANGES} \n\n -------------------------------------------------- \n${BUILD_LOG, maxLines=100, escapeHtml=false}', 54 | to: "${env.EMAIL_TO}", 55 | subject: 'Build failed in Jenkins: $PROJECT_NAME - #$BUILD_NUMBER' 56 | } 57 | unstable { 58 | emailext body: 'Check console output at $BUILD_URL to view the results. \n\n ${CHANGES} \n\n -------------------------------------------------- \n${BUILD_LOG, maxLines=100, escapeHtml=false}', 59 | to: "${env.EMAIL_TO}", 60 | subject: 'Unstable build in Jenkins: $PROJECT_NAME - #$BUILD_NUMBER' 61 | } 62 | changed { 63 | emailext body: 'Check console output at $BUILD_URL to view the results.', 64 | to: "${env.EMAIL_TO}", 65 | subject: 'Jenkins build is back to normal: $PROJECT_NAME - #$BUILD_NUMBER' 66 | } 67 | 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /build/ci/build_push_image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xe 2 | 3 | # Validations 4 | MANDATORY_ENVS="IMAGE_VERSION BUILD_NUMBER DOCKER_REGISTRY OPERATOR_IMAGE GIT_BRANCH" 5 | for envi in $MANDATORY_ENVS; do 6 | [ -z "${!envi}" ] && { echo "Error - Env $envi is mandatory for the script."; exit 1; } || : 7 | done 8 | 9 | # Prepare specific tag for the image 10 | branch=`echo $GIT_BRANCH| sed 's|/|.|g'` #not sure if docker accept / in the version 11 | specific_tag="${IMAGE_VERSION}_b${BUILD_NUMBER}_${branch}" 12 | 13 | # Set latest tag only if its from develop branch or master and prepare tags 14 | [ "$GIT_BRANCH" = "develop" -o "$GIT_BRANCH" = "origin/develop" -o "$GIT_BRANCH" = "master" ] && tag_latest="true" || tag_latest="false" 15 | 16 | 17 | # Operator 18 | # -------------- 19 | operator_registry="${DOCKER_REGISTRY}/${OPERATOR_IMAGE}" 20 | operator_tag_specific="${operator_registry}:${specific_tag}" 21 | operator_tag_latest=${operator_registry}:latest 22 | [ "$tag_latest" = "true" ] && taglatestflag="-t ${operator_tag_latest}" 23 | 24 | echo "Build and push the Operator image" 25 | docker build -t ${operator_tag_specific} $taglatestflag -f build/Dockerfile.operator --build-arg VERSION="${IMAGE_VERSION}" --build-arg BUILD_NUMBER="${BUILD_NUMBER}" . 26 | docker push ${operator_tag_specific} 27 | [ "$tag_latest" = "true" ] && docker push ${operator_tag_latest} || : 28 | 29 | set +x 30 | echo "" 31 | echo "Image ready:" 32 | echo " ${operator_tag_specific}" 33 | [ "$tag_latest" = "true" ] && { echo " ${operator_tag_specific}"; } || : 34 | 35 | # if param $1 given the script echo the specific tag 36 | [ -n "$1" ] && printf "${operator_tag_specific}" > $1 || : 37 | 38 | -------------------------------------------------------------------------------- /build/ci/multiarch/helper_to_push_docker_image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xe 2 | 3 | # This script is for internal use in CI 4 | # Assume docker login to the external registry was done in advance. 5 | 6 | function usage() 7 | { 8 | echo $0 [internal-image-path] [external-image-path] [latest-tag-optional] 9 | exit 1 10 | } 11 | 12 | [ $# -eq 2 -o $# -eq 3 ] || { usage; } 13 | 14 | internal_image=$1 15 | external_image=$2 16 | latest="$3" 17 | 18 | # if also latest, then define latest_external_image (replace the external tag with the $latest wanted tag) 19 | if [ -n "$latest" ]; then 20 | latest_external_image=`echo $external_image | sed "s|^\(.*/.*:\)\(.*\)$|\1$latest|"` 21 | latest_str_msg=" And latest tag image [$latest_external_image]" 22 | fi 23 | 24 | echo "Preparing to push internal_image --> external_image:" 25 | echo " internal_image=[$internal_image]" 26 | echo " external_image=[$external_image]" 27 | [ -n "$latest" ] && echo " latest_image =[$latest_external_image]" 28 | 29 | 30 | echo "1. Validate no external_image exists yet before pushing it." # Note: no need to test latest tag since it already exists 31 | docker pull $external_image && { echo "Error : the $external_image exists in remote. Cannot overwrite it."; exit 1; } || { echo "$external_image is not exist on the remote."; } 32 | echo "" 33 | 34 | 35 | echo "2. Validate internal_image does not exist yet on local." 36 | docker images $internal_image 37 | docker rmi $internal_image && { echo "Remove the internal_image image to pull it again"; } || { echo "internal_image does not exist on local. Continue."; } 38 | echo "" 39 | 40 | 41 | echo "3. Pull internal_image to local" 42 | docker pull $internal_image 43 | echo "" 44 | 45 | 46 | echo "4. Tag internal_image to external_image (and latest=[$latest_external_image]) and remove the internal_image" 47 | docker tag $internal_image $external_image 48 | [ -n "$latest_external_image" ] && docker tag $internal_image $latest_external_image 49 | docker rmi $internal_image 50 | docker push $external_image 51 | [ -n "$latest_external_image" ] && docker push $latest_external_image 52 | echo "" 53 | 54 | 55 | echo "5. Test pushed image by delete the local and pull it back" 56 | docker rmi $external_image 57 | docker pull $external_image 58 | docker rmi $external_image 59 | 60 | 61 | if [ -n "$latest_external_image" ]; then 62 | echo "6. Test pushed [latest] image by delete the local and pull it back" 63 | docker rmi $latest_external_image 64 | docker pull $latest_external_image 65 | docker rmi $latest_external_image 66 | fi 67 | 68 | set +x 69 | echo "" 70 | echo "Succeeded to push internal_image --> external_image" 71 | echo " internal_image=[$internal_image]" 72 | echo " external_image=[$external_image]" 73 | [ -n "$latest" ] && echo " latest_image =[$latest_external_image]" 74 | set -x 75 | 76 | -------------------------------------------------------------------------------- /build/ci/olm_validation.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xe 2 | 3 | # 4 | # Copyright 2025 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | 18 | NON_BUNDLE_FORMAT_VERSIONS_FOR_CERTIFIED=() 19 | NON_BUNDLE_FORMAT_VERSIONS_FOR_COMMUNITY=("1.0.0" "1.1.0" "1.2.0" "1.3.0" "1.4.0" "1.5.0") 20 | 21 | validate(){ 22 | olm_bundles_dir="$1*/" 23 | non_bundle_format_versions=$2[@] 24 | non_bundle_format_versions=("${!non_bundle_format_versions}") 25 | for olm_bundle_dir in ${olm_bundles_dir} ; do 26 | version=$(basename "${olm_bundle_dir}") 27 | exclude_version=$(echo "${non_bundle_format_versions[@]}" | grep -o "${version}" | wc -w) 28 | if [ "${exclude_version}" -eq 0 ]; then 29 | echo "Validating ${olm_bundle_dir}" 30 | operator-sdk bundle --verbose validate "${olm_bundle_dir}" 31 | else 32 | echo "Not validating non bundle format version ${olm_bundle_dir}" 33 | fi 34 | done 35 | } 36 | 37 | validate "deploy/olm-catalog/ibm-block-csi-operator/" "NON_BUNDLE_FORMAT_VERSIONS_FOR_CERTIFIED" 38 | validate "deploy/olm-catalog/ibm-block-csi-operator-community/" "NON_BUNDLE_FORMAT_VERSIONS_FOR_COMMUNITY" 39 | -------------------------------------------------------------------------------- /build/ci/run_olm_validation.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xe 2 | 3 | # 4 | # Copyright 2025 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | docker build -f build/ci/Dockerfile.olm-validation -t operator-olm-validation . 20 | 21 | docker run --rm -t operator-olm-validation 22 | -------------------------------------------------------------------------------- /build/ci/run_unittests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xe 2 | 3 | # 4 | # Copyright 2019 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | docker build -f build/ci/Dockerfile.unittest -t operator-unittests . 20 | docker run --rm -t operator-unittests 21 | -------------------------------------------------------------------------------- /build/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "Calling $@..." 5 | 6 | exec "$@" 7 | -------------------------------------------------------------------------------- /build/health_check.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # skip the health check and wait for the official one 4 | # https://github.com/operator-framework/operator-sdk/issues/1234 5 | echo "health check passed!" 6 | 7 | -------------------------------------------------------------------------------- /build/node-agent.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash -x 2 | 3 | echo "Starting iscsid..." 4 | iscsid -f & 5 | 6 | # sleep one second to make sure iscsid is running in background 7 | sleep 1 8 | 9 | echo "Calling $@..." 10 | exec "$@" 11 | -------------------------------------------------------------------------------- /config/crd/bases/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.17.0 6 | labels: 7 | app.kubernetes.io/instance: ibm-block-csi-operator 8 | app.kubernetes.io/managed-by: ibm-block-csi-operator 9 | app.kubernetes.io/name: ibm-block-csi-operator 10 | csi: ibm 11 | product: ibm-block-csi-driver 12 | release: v1.12.4 13 | name: hostdefinitions.csi.ibm.com 14 | spec: 15 | group: csi.ibm.com 16 | names: 17 | kind: HostDefinition 18 | listKind: HostDefinitionList 19 | plural: hostdefinitions 20 | singular: hostdefinition 21 | scope: Cluster 22 | versions: 23 | - additionalPrinterColumns: 24 | - jsonPath: .metadata.creationTimestamp 25 | name: Age 26 | type: date 27 | - jsonPath: .status.phase 28 | name: Phase 29 | type: string 30 | - jsonPath: .spec.hostDefinition.nodeName 31 | name: Node 32 | type: string 33 | - jsonPath: .spec.hostDefinition.managementAddress 34 | name: Management_Address 35 | type: string 36 | name: v1 37 | schema: 38 | openAPIV3Schema: 39 | description: HostDefinition is the Schema for the hostdefinitions API 40 | properties: 41 | apiVersion: 42 | description: |- 43 | APIVersion defines the versioned schema of this representation of an object. 44 | Servers should convert recognized schemas to the latest internal value, and 45 | may reject unrecognized values. 46 | More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources 47 | type: string 48 | kind: 49 | description: |- 50 | Kind is a string value representing the REST resource this object represents. 51 | Servers may infer this from the endpoint the client submits requests to. 52 | Cannot be updated. 53 | In CamelCase. 54 | More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 55 | type: string 56 | metadata: 57 | type: object 58 | spec: 59 | description: HostDefinitionSpec defines the desired state of HostDefinition 60 | properties: 61 | hostDefinition: 62 | description: Definition defines the observed state of HostDefinition 63 | properties: 64 | connectivityType: 65 | type: string 66 | ioGroups: 67 | items: 68 | type: integer 69 | type: array 70 | managementAddress: 71 | type: string 72 | nodeId: 73 | type: string 74 | nodeName: 75 | type: string 76 | nodeNameOnStorage: 77 | type: string 78 | ports: 79 | items: 80 | type: string 81 | type: array 82 | secretName: 83 | type: string 84 | secretNamespace: 85 | type: string 86 | required: 87 | - managementAddress 88 | - nodeName 89 | type: object 90 | required: 91 | - hostDefinition 92 | type: object 93 | status: 94 | description: HostDefinitionStatus defines the status of the host definition 95 | on the storage 96 | properties: 97 | phase: 98 | type: string 99 | required: 100 | - phase 101 | type: object 102 | type: object 103 | served: true 104 | storage: true 105 | subresources: 106 | status: {} 107 | -------------------------------------------------------------------------------- /config/crd/kustomization.yaml: -------------------------------------------------------------------------------- 1 | commonLabels: 2 | product: ibm-block-csi-driver 3 | csi: ibm 4 | app.kubernetes.io/name: ibm-block-csi-operator 5 | app.kubernetes.io/instance: ibm-block-csi-operator 6 | app.kubernetes.io/managed-by: ibm-block-csi-operator 7 | release: v1.12.4 8 | 9 | resources: 10 | - bases/csi.ibm.com_ibmblockcsis.yaml 11 | - bases/csi.ibm.com_hostdefiners.yaml 12 | - bases/csi.ibm.com_hostdefinitions.yaml 13 | #+kubebuilder:scaffold:crdkustomizeresource 14 | -------------------------------------------------------------------------------- /config/manager/manager.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | labels: 5 | app.kubernetes.io/instance: ibm-block-csi-operator 6 | app.kubernetes.io/managed-by: ibm-block-csi-operator 7 | app.kubernetes.io/name: ibm-block-csi-operator 8 | csi: ibm 9 | product: ibm-block-csi-driver 10 | name: ibm-block-csi-operator 11 | namespace: default 12 | spec: 13 | replicas: 1 14 | selector: 15 | matchLabels: 16 | app.kubernetes.io/name: ibm-block-csi-operator 17 | template: 18 | metadata: 19 | annotations: 20 | productID: 5027566ef6c54de49028be7df25119e1 21 | productMetric: FREE 22 | productName: IBM Block CSI Driver 23 | productVersion: 1.12.4 24 | labels: 25 | app.kubernetes.io/instance: ibm-block-csi-operator 26 | app.kubernetes.io/managed-by: ibm-block-csi-operator 27 | app.kubernetes.io/name: ibm-block-csi-operator 28 | csi: ibm 29 | product: ibm-block-csi-driver 30 | spec: 31 | affinity: 32 | nodeAffinity: 33 | requiredDuringSchedulingIgnoredDuringExecution: 34 | nodeSelectorTerms: 35 | - matchExpressions: 36 | - key: kubernetes.io/arch 37 | operator: In 38 | values: 39 | - amd64 40 | - s390x 41 | - ppc64le 42 | containers: 43 | - args: 44 | - --zap-encoder 45 | - console 46 | command: 47 | - ibm-block-csi-operator 48 | env: 49 | - name: WATCH_NAMESPACE 50 | value: "" 51 | - name: POD_NAME 52 | valueFrom: 53 | fieldRef: 54 | fieldPath: metadata.name 55 | - name: OPERATOR_NAME 56 | value: ibm-block-csi-operator 57 | image: quay.io/ibmcsiblock/ibm-block-csi-operator:1.12.4 58 | imagePullPolicy: IfNotPresent 59 | livenessProbe: 60 | exec: 61 | command: 62 | - ./health_check.sh 63 | initialDelaySeconds: 10 64 | periodSeconds: 30 65 | name: ibm-block-csi-operator 66 | readinessProbe: 67 | exec: 68 | command: 69 | - ./health_check.sh 70 | initialDelaySeconds: 3 71 | periodSeconds: 1 72 | resources: 73 | limits: 74 | cpu: 100m 75 | memory: 500Mi 76 | requests: 77 | cpu: 50m 78 | memory: 100Mi 79 | securityContext: 80 | capabilities: 81 | drop: 82 | - ALL 83 | serviceAccountName: ibm-block-csi-operator 84 | -------------------------------------------------------------------------------- /config/rbac/kustomization.yaml: -------------------------------------------------------------------------------- 1 | resources: 2 | - service_account.yaml 3 | - role.yaml 4 | - role_binding.yaml 5 | 6 | 7 | patchesStrategicMerge: 8 | - role_labels_patch.yaml 9 | -------------------------------------------------------------------------------- /config/rbac/role_binding.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1 2 | kind: ClusterRoleBinding 3 | metadata: 4 | labels: 5 | app.kubernetes.io/instance: ibm-block-csi-operator 6 | app.kubernetes.io/managed-by: ibm-block-csi-operator 7 | app.kubernetes.io/name: ibm-block-csi-operator 8 | csi: ibm 9 | product: ibm-block-csi-driver 10 | name: ibm-block-csi-operator 11 | roleRef: 12 | apiGroup: rbac.authorization.k8s.io 13 | kind: ClusterRole 14 | name: ibm-block-csi-operator 15 | subjects: 16 | - kind: ServiceAccount 17 | name: ibm-block-csi-operator 18 | namespace: default 19 | -------------------------------------------------------------------------------- /config/rbac/role_labels_patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1 2 | kind: ClusterRole 3 | metadata: 4 | labels: 5 | product: ibm-block-csi-driver 6 | csi: ibm 7 | app.kubernetes.io/name: ibm-block-csi-operator 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | -------------------------------------------------------------------------------- /config/rbac/service_account.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | labels: 5 | app.kubernetes.io/instance: ibm-block-csi-operator 6 | app.kubernetes.io/managed-by: ibm-block-csi-operator 7 | app.kubernetes.io/name: ibm-block-csi-operator 8 | csi: ibm 9 | product: ibm-block-csi-driver 10 | release: v1.12.4 11 | name: ibm-block-csi-operator 12 | namespace: default 13 | -------------------------------------------------------------------------------- /config/samples/csi.ibm.com_v1_ibmblockcsi_cr.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: csi.ibm.com/v1 2 | kind: IBMBlockCSI 3 | metadata: 4 | name: ibm-block-csi 5 | namespace: default 6 | labels: 7 | app.kubernetes.io/name: ibm-block-csi 8 | app.kubernetes.io/instance: ibm-block-csi 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | release: v1.12.4 11 | spec: 12 | # controller is a statefulSet with ibm-block-csi-controller container 13 | # and csi-provisioner, csi-attacher, csi-snapshotter and livenessprobe sidecars. 14 | controller: 15 | repository: quay.io/ibmcsiblock/ibm-block-csi-driver-controller 16 | tag: "1.12.4" 17 | imagePullPolicy: IfNotPresent 18 | affinity: 19 | nodeAffinity: 20 | requiredDuringSchedulingIgnoredDuringExecution: 21 | nodeSelectorTerms: 22 | - matchExpressions: 23 | - key: kubernetes.io/arch 24 | operator: In 25 | values: 26 | - amd64 27 | - s390x 28 | - ppc64le 29 | 30 | # node is a daemonSet with ibm-block-csi-node container 31 | # and csi-node-driver-registrar and livenessprobe sidecars. 32 | node: 33 | repository: quay.io/ibmcsiblock/ibm-block-csi-driver-node 34 | tag: "1.12.4" 35 | imagePullPolicy: IfNotPresent 36 | affinity: 37 | nodeAffinity: 38 | requiredDuringSchedulingIgnoredDuringExecution: 39 | nodeSelectorTerms: 40 | - matchExpressions: 41 | - key: kubernetes.io/arch 42 | operator: In 43 | values: 44 | - amd64 45 | - s390x 46 | - ppc64le 47 | 48 | # tolerations: 49 | # - effect: NoSchedule 50 | # key: node-role.kubernetes.io/control-plane 51 | # operator: Exists 52 | 53 | sidecars: 54 | - name: csi-node-driver-registrar 55 | repository: registry.k8s.io/sig-storage/csi-node-driver-registrar 56 | tag: "v2.13.0" 57 | imagePullPolicy: IfNotPresent 58 | - name: csi-provisioner 59 | repository: registry.k8s.io/sig-storage/csi-provisioner 60 | tag: "v4.0.1" 61 | imagePullPolicy: IfNotPresent 62 | - name: csi-attacher 63 | repository: registry.k8s.io/sig-storage/csi-attacher 64 | tag: "v4.8.0" 65 | imagePullPolicy: IfNotPresent 66 | - name: csi-snapshotter 67 | repository: registry.k8s.io/sig-storage/csi-snapshotter 68 | tag: "v8.2.0" 69 | imagePullPolicy: IfNotPresent 70 | - name: csi-resizer 71 | repository: registry.k8s.io/sig-storage/csi-resizer 72 | tag: "v1.13.1" 73 | imagePullPolicy: IfNotPresent 74 | - name: csi-addons-replicator 75 | repository: quay.io/ibmcsiblock/csi-block-volumereplication-operator 76 | tag: "v0.9.2" 77 | imagePullPolicy: IfNotPresent 78 | - name: csi-volume-group 79 | repository: quay.io/ibmcsiblock/csi-volume-group-operator 80 | tag: "v0.9.2" 81 | imagePullPolicy: IfNotPresent 82 | - name: livenessprobe 83 | repository: registry.k8s.io/sig-storage/livenessprobe 84 | tag: "v2.15.0" 85 | imagePullPolicy: IfNotPresent 86 | 87 | # healthPort: 9808 88 | # imagePullSecrets: 89 | # - "secretName" 90 | -------------------------------------------------------------------------------- /config/samples/csi_v1_hostdefiner_cr.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: csi.ibm.com/v1 2 | kind: HostDefiner 3 | metadata: 4 | name: host-definer 5 | namespace: default 6 | labels: 7 | app.kubernetes.io/name: host-definer 8 | app.kubernetes.io/instance: ibm-block-csi 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | release: v1.12.4 11 | spec: 12 | hostDefiner: 13 | # prefix: # Optional. 14 | # connectivityType: # Optional. Values nvme/fc/iscsi. The default is chosen dynamically. 15 | # allowDelete: true # Optional. Values true/false. The default is true. 16 | # dynamicNodeLabeling: false # Optional. Values true/false. The default is false. 17 | # portSet: # Optional. Port set for new FlashSystem port definitions 18 | repository: quay.io/ibmcsiblock/ibm-block-csi-host-definer 19 | tag: "1.12.4" 20 | imagePullPolicy: IfNotPresent 21 | affinity: 22 | nodeAffinity: 23 | requiredDuringSchedulingIgnoredDuringExecution: 24 | nodeSelectorTerms: 25 | - matchExpressions: 26 | - key: kubernetes.io/arch 27 | operator: In 28 | values: 29 | - amd64 30 | - s390x 31 | - ppc64le 32 | # tolerations: 33 | # - effect: NoSchedule 34 | # key: node-role.kubernetes.io/control-plane 35 | # operator: Exists 36 | # imagePullSecrets: 37 | # - "secretName" 38 | -------------------------------------------------------------------------------- /controllers/internal/common/common.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package common 18 | 19 | import "k8s.io/apimachinery/pkg/labels" 20 | 21 | func GetSelectorLabels(component string) labels.Set { 22 | return labels.Set{ 23 | "app.kubernetes.io/component": component, 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /controllers/internal/crutils/common.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package crutils 18 | 19 | import ( 20 | corev1 "k8s.io/api/core/v1" 21 | "k8s.io/apimachinery/pkg/labels" 22 | "k8s.io/apimachinery/pkg/runtime/schema" 23 | ) 24 | 25 | type Instance interface { 26 | GetLabels() labels.Set 27 | GetObjectKind() schema.ObjectKind 28 | } 29 | 30 | func getImagePullSecrets(imagePullSecrets []string) []corev1.LocalObjectReference { 31 | secrets := []corev1.LocalObjectReference{} 32 | if len(imagePullSecrets) > 0 { 33 | for _, secretName := range imagePullSecrets { 34 | secrets = append(secrets, corev1.LocalObjectReference{Name: secretName}) 35 | } 36 | } 37 | return secrets 38 | } 39 | -------------------------------------------------------------------------------- /controllers/internal/crutils/ibmblockcsi_suite_test.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package crutils_test 18 | 19 | import ( 20 | "testing" 21 | 22 | . "github.com/onsi/ginkgo/v2" 23 | . "github.com/onsi/gomega" 24 | ) 25 | 26 | func TestIbmblockcsi(t *testing.T) { 27 | RegisterFailHandler(Fail) 28 | RunSpecs(t, "Ibmblockcsi Suite") 29 | } 30 | -------------------------------------------------------------------------------- /controllers/internal/crutils/validator.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package crutils 18 | 19 | // Validate checks if the spec is valid 20 | // Replace it with kubernetes native default setter when it is available. 21 | // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#validation 22 | func (c *IBMBlockCSI) Validate() error { 23 | return nil 24 | } 25 | -------------------------------------------------------------------------------- /controllers/internal/hostdefiner/default_setter.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package hostdefiner 18 | 19 | import ( 20 | "path" 21 | 22 | corev1 "k8s.io/api/core/v1" 23 | 24 | "github.com/IBM/ibm-block-csi-operator/pkg/config" 25 | ) 26 | 27 | func (c *HostDefiner) SetDefaults() bool { 28 | 29 | c.setDefaultForNilSliceFields() 30 | 31 | if c.isUnofficialRepo(c.Spec.HostDefiner.Repository) { 32 | return false 33 | } 34 | return c.setDefaults() 35 | } 36 | 37 | func (c *HostDefiner) setDefaultForNilSliceFields() { 38 | if c.Spec.ImagePullSecrets == nil { 39 | c.Spec.ImagePullSecrets = []string{} 40 | } 41 | if c.Spec.HostDefiner.Tolerations == nil { 42 | c.Spec.HostDefiner.Tolerations = []corev1.Toleration{} 43 | } 44 | } 45 | 46 | func (c *HostDefiner) isUnofficialRepo(repo string) bool { 47 | if repo != "" { 48 | var registryUsername = path.Dir(repo) 49 | if registryUsername != config.IBMRegistryUsername { 50 | return true 51 | } 52 | } 53 | return false 54 | } 55 | 56 | func (c *HostDefiner) setDefaults() bool { 57 | var changed = false 58 | 59 | if c.Spec.HostDefiner.Repository != config.DefaultHostDefinerCr.Spec.HostDefiner.Repository || 60 | c.Spec.HostDefiner.Tag != config.DefaultHostDefinerCr.Spec.HostDefiner.Tag { 61 | c.Spec.HostDefiner.Repository = config.DefaultHostDefinerCr.Spec.HostDefiner.Repository 62 | c.Spec.HostDefiner.Tag = config.DefaultHostDefinerCr.Spec.HostDefiner.Tag 63 | 64 | changed = true 65 | } 66 | 67 | return changed 68 | } 69 | -------------------------------------------------------------------------------- /controllers/internal/hostdefiner/default_setter_test.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package hostdefiner_test 18 | 19 | import ( 20 | . "github.com/onsi/ginkgo/v2" 21 | . "github.com/onsi/gomega" 22 | 23 | csiv1 "github.com/IBM/ibm-block-csi-operator/api/v1" 24 | . "github.com/IBM/ibm-block-csi-operator/controllers/internal/hostdefiner" 25 | "github.com/IBM/ibm-block-csi-operator/pkg/config" 26 | ) 27 | 28 | var _ = Describe("DefaultSetter", func() { 29 | var hd = &csiv1.HostDefiner{} 30 | var hdWrapper = New(hd) 31 | var changed bool 32 | 33 | It("should have a host definition cr yaml configured", func() { 34 | err := config.LoadDefaultsOfHostDefiner() 35 | Expect(err).To(BeNil()) 36 | }) 37 | 38 | Context("test SetDefaults", func() { 39 | 40 | JustBeforeEach(func() { 41 | changed = hdWrapper.SetDefaults() 42 | }) 43 | 44 | Context("nothing is set", func() { 45 | 46 | It("should set right host definition defaults", func() { 47 | Expect(changed).To(BeTrue()) 48 | Expect(hd.Spec.HostDefiner.Repository).To(Equal(config.DefaultHostDefinerCr.Spec.HostDefiner.Repository)) 49 | Expect(hd.Spec.HostDefiner.Tag).To(Equal(config.DefaultHostDefinerCr.Spec.HostDefiner.Tag)) 50 | }) 51 | }) 52 | 53 | Context("only host definition repository is unofficial", func() { 54 | 55 | BeforeEach(func() { 56 | hd = &csiv1.HostDefiner{ 57 | Spec: csiv1.HostDefinerSpec{ 58 | HostDefiner: csiv1.IBMBlockHostDefinerSpec{ 59 | Repository: "test", 60 | }, 61 | }, 62 | } 63 | hdWrapper.HostDefiner = hd 64 | }) 65 | 66 | It("should not set any defaults", func() { 67 | Expect(changed).To(BeFalse()) 68 | Expect(hd.Spec.HostDefiner.Repository).To(Equal("test")) 69 | Expect(hd.Spec.HostDefiner.Tag).To(Equal("")) 70 | }) 71 | }) 72 | 73 | Context("only host definition tag is set", func() { 74 | 75 | BeforeEach(func() { 76 | hd = &csiv1.HostDefiner{ 77 | Spec: csiv1.HostDefinerSpec{ 78 | HostDefiner: csiv1.IBMBlockHostDefinerSpec{ 79 | Tag: "test", 80 | }, 81 | }, 82 | } 83 | hdWrapper.HostDefiner = hd 84 | }) 85 | 86 | It("should set right defaults", func() { 87 | Expect(changed).To(BeTrue()) 88 | Expect(hd.Spec.HostDefiner.Repository).To(Equal(config.DefaultHostDefinerCr.Spec.HostDefiner.Repository)) 89 | Expect(hd.Spec.HostDefiner.Tag).NotTo(Equal("test")) 90 | }) 91 | }) 92 | 93 | Context("everything is set", func() { 94 | 95 | BeforeEach(func() { 96 | hdWrapper.SetDefaults() 97 | }) 98 | 99 | It("should do nothing", func() { 100 | Expect(changed).To(BeFalse()) 101 | Expect(hd.Spec.HostDefiner.Repository).To(Equal(config.DefaultHostDefinerCr.Spec.HostDefiner.Repository)) 102 | Expect(hd.Spec.HostDefiner.Tag).To(Equal(config.DefaultHostDefinerCr.Spec.HostDefiner.Tag)) 103 | }) 104 | }) 105 | 106 | }) 107 | }) 108 | -------------------------------------------------------------------------------- /controllers/internal/hostdefiner/hostdefiner.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package hostdefiner 18 | 19 | import ( 20 | "fmt" 21 | 22 | csiv1 "github.com/IBM/ibm-block-csi-operator/api/v1" 23 | "github.com/IBM/ibm-block-csi-operator/controllers/internal/common" 24 | "github.com/IBM/ibm-block-csi-operator/pkg/config" 25 | csiversion "github.com/IBM/ibm-block-csi-operator/version" 26 | "k8s.io/apimachinery/pkg/labels" 27 | ) 28 | 29 | type HostDefiner struct { 30 | *csiv1.HostDefiner 31 | } 32 | 33 | func New(hd *csiv1.HostDefiner) *HostDefiner { 34 | return &HostDefiner{ 35 | HostDefiner: hd, 36 | } 37 | } 38 | 39 | func (hd *HostDefiner) Unwrap() *csiv1.HostDefiner { 40 | return hd.HostDefiner 41 | } 42 | 43 | func (hd *HostDefiner) GetHostDefinerPodLabels() labels.Set { 44 | return labels.Merge(hd.GetLabels(), hd.GetHostDefinerSelectorLabels()) 45 | } 46 | 47 | func (hd *HostDefiner) GetLabels() labels.Set { 48 | labels := labels.Set{ 49 | "app.kubernetes.io/name": config.ProductName, 50 | "app.kubernetes.io/instance": hd.Name, 51 | "app.kubernetes.io/version": csiversion.Version, 52 | "app.kubernetes.io/managed-by": config.Name, 53 | "csi": "ibm", 54 | "product": config.ProductName, 55 | "release": fmt.Sprintf("v%s", csiversion.Version), 56 | } 57 | 58 | if hd.Labels != nil { 59 | for k, v := range hd.Labels { 60 | if !labels.Has(k) { 61 | labels[k] = v 62 | } 63 | } 64 | } 65 | 66 | return labels 67 | } 68 | 69 | func (hd *HostDefiner) GetHostDefinerSelectorLabels() labels.Set { 70 | return common.GetSelectorLabels(config.HostDefiner.String()) 71 | } 72 | 73 | func (hd *HostDefiner) GetAnnotations() labels.Set { 74 | labels := labels.Set{ 75 | "productID": config.ProductName, 76 | "productName": config.ProductName, 77 | "productVersion": csiversion.Version, 78 | } 79 | 80 | if hd.Annotations != nil { 81 | for k, v := range hd.Annotations { 82 | if !labels.Has(k) { 83 | labels[k] = v 84 | } 85 | } 86 | } 87 | 88 | return labels 89 | } 90 | 91 | func (hd *HostDefiner) GetHostDefinerImage() string { 92 | if hd.Spec.HostDefiner.Tag == "" { 93 | return hd.Spec.HostDefiner.Repository 94 | } 95 | return hd.Spec.HostDefiner.Repository + ":" + hd.Spec.HostDefiner.Tag 96 | } 97 | -------------------------------------------------------------------------------- /controllers/syncer/common.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package syncer 18 | 19 | import ( 20 | metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 21 | "k8s.io/apimachinery/pkg/labels" 22 | ) 23 | 24 | var defaultAnnotations = []string{ 25 | "productID", 26 | "productName", 27 | "productVersion", 28 | } 29 | 30 | func ensureAnnotations(templateObjectMeta *metav1.ObjectMeta, objectMeta *metav1.ObjectMeta, annotations labels.Set) { 31 | for _, s := range defaultAnnotations { 32 | templateObjectMeta.Annotations[s] = annotations[s] 33 | objectMeta.Annotations[s] = annotations[s] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /controllers/util/datastructures.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package util 18 | 19 | func Contains(list []string, s string) bool { 20 | for _, v := range list { 21 | if v == s { 22 | return true 23 | } 24 | } 25 | return false 26 | } 27 | 28 | func Remove(list []string, s string) []string { 29 | var newList []string 30 | for _, v := range list { 31 | if v != s { 32 | newList = append(newList, v) 33 | } 34 | } 35 | return newList 36 | } 37 | -------------------------------------------------------------------------------- /deploy/99-ibm-attach.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: machineconfiguration.openshift.io/v1 2 | kind: MachineConfig 3 | metadata: 4 | labels: 5 | machineconfiguration.openshift.io/role: worker 6 | name: 99-ibm-attach 7 | spec: 8 | config: 9 | ignition: 10 | version: 2.2.0 11 | storage: 12 | files: 13 | - path: /etc/multipath.conf 14 | mode: 384 15 | filesystem: root 16 | contents: 17 | source: data:,defaults%20%7B%0A%20%20%20%20path_checker%20tur%0A%20%20%20%20path_selector%20%22round-robin%200%22%0A%20%20%20%20rr_weight%20uniform%0A%20%20%20%20prio%20const%0A%20%20%20%20rr_min_io_rq%201%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20polling_interval%2030%0A%20%20%20%20path_grouping_policy%20multibus%0A%20%20%20%20find_multipaths%20yes%0A%20%20%20%20no_path_retry%20fail%0A%20%20%20%20user_friendly_names%20yes%0A%20%20%20%20failback%20immediate%0A%20%20%20%20checker_timeout%2010%0A%20%20%20%20fast_io_fail_tmo%20off%0A%7D%0A%0Adevices%20%7B%0A%20%20%20%20device%20%7B%0A%20%20%20%20%20%20%20%20path_checker%20tur%0A%20%20%20%20%20%20%20%20product%20%22FlashSystem%22%0A%20%20%20%20%20%20%20%20vendor%20%22IBM%22%0A%20%20%20%20%20%20%20%20rr_weight%20uniform%0A%20%20%20%20%20%20%20%20rr_min_io_rq%204%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20path_grouping_policy%20multibus%0A%20%20%20%20%20%20%20%20path_selector%20%22round-robin%200%22%0A%20%20%20%20%20%20%20%20no_path_retry%20fail%0A%20%20%20%20%20%20%20%20failback%20immediate%0A%20%20%20%20%7D%0A%20%20%20%20device%20%7B%0A%20%20%20%20%20%20%20%20path_checker%20tur%0A%20%20%20%20%20%20%20%20product%20%22FlashSystem-9840%22%0A%20%20%20%20%20%20%20%20vendor%20%22IBM%22%0A%20%20%20%20%20%20%20%20fast_io_fail_tmo%20off%0A%20%20%20%20%20%20%20%20rr_weight%20uniform%0A%20%20%20%20%20%20%20%20rr_min_io_rq%201000%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20path_grouping_policy%20multibus%0A%20%20%20%20%20%20%20%20path_selector%20%22round-robin%200%22%0A%20%20%20%20%20%20%20%20no_path_retry%20fail%0A%20%20%20%20%20%20%20%20failback%20immediate%0A%20%20%20%20%7D%0A%20%20%20%20device%20%7B%0A%20%20%20%20%20%20%20%20vendor%20%22IBM%22%0A%20%20%20%20%20%20%20%20product%20%222145%22%0A%20%20%20%20%20%20%20%20path_checker%20tur%0A%20%20%20%20%20%20%20%20path_grouping_policy%20group_by_prio%0A%20%20%20%20%20%20%20%20path_selector%20%22service-time%200%22%20%23%20Used%20by%20Red%20Hat%207.x%0A%20%20%20%20%20%20%20%20prio%20alua%0A%20%20%20%20%20%20%20%20rr_min_io_rq%201%0A%20%20%20%20%20%20%20%20rr_weight%20uniform%20%0A%20%20%20%20%20%20%20%20no_path_retry%20%225%22%0A%20%20%20%20%20%20%20%20dev_loss_tmo%20120%0A%20%20%20%20%20%20%20%20failback%20immediate%0A%20%20%20%7D%0A%7D%0Ablacklist%20%7B%0A%7D%0A 18 | verification: {} 19 | - path: /etc/udev/rules.d/99-ibm-2145.rules 20 | mode: 420 21 | filesystem: root 22 | contents: 23 | source: data:,%23%20Set%20SCSI%20command%20timeout%20to%20120s%20%28default%20%3D%3D%2030%20or%2060%29%20for%20IBM%202145%20devices%0ASUBSYSTEM%3D%3D%22block%22%2C%20ACTION%3D%3D%22add%22%2C%20ENV%7BID_VENDOR%7D%3D%3D%22IBM%22%2CENV%7BID_MODEL%7D%3D%3D%222145%22%2C%20RUN%2B%3D%22/bin/sh%20-c%20%27echo%20120%20%3E/sys/block/%25k/device/timeout%27%22%0A 24 | verification: {} 25 | systemd: 26 | units: 27 | - name: multipathd.service 28 | enabled: true 29 | # Uncomment the following lines if this MachineConfig will be used with iSCSI connectivity 30 | #- name: iscsid.service 31 | # enabled: true 32 | -------------------------------------------------------------------------------- /deploy/installer/kustomization.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | 4 | resources: 5 | - config/crd/bases/csi.ibm.com_ibmblockcsis.yaml 6 | - config/crd/bases/csi.ibm.com_hostdefinitions.yaml 7 | - config/crd/bases/csi.ibm.com_hostdefiners.yaml 8 | - config/rbac/service_account.yaml 9 | - config/rbac/role.yaml 10 | - config/rbac/role_binding.yaml 11 | - config/manager/manager.yaml 12 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.10.0/bundle-1.10.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.9-v4.11" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.10.0/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.10.0 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | name: v1 35 | schema: 36 | openAPIV3Schema: 37 | description: HostDefinition is the Schema for the hostdefinitions API 38 | properties: 39 | apiVersion: 40 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 41 | type: string 42 | kind: 43 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 44 | type: string 45 | metadata: 46 | type: object 47 | spec: 48 | description: HostDefinitionSpec defines the desired state of HostDefinition 49 | properties: 50 | hostDefinition: 51 | description: Definition defines the observed state of HostDefinition 52 | properties: 53 | nodeId: 54 | type: string 55 | nodeName: 56 | type: string 57 | secretName: 58 | type: string 59 | secretNamespace: 60 | type: string 61 | required: 62 | - nodeName 63 | type: object 64 | required: 65 | - hostDefinition 66 | type: object 67 | status: 68 | description: HostDefinitionStatus defines the status of the host definition on the storage 69 | properties: 70 | phase: 71 | type: string 72 | required: 73 | - phase 74 | type: object 75 | type: object 76 | served: true 77 | storage: true 78 | subresources: 79 | status: {} 80 | status: 81 | acceptedNames: 82 | kind: "" 83 | plural: "" 84 | conditions: [] 85 | storedVersions: [] 86 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.10.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.9-v4.11" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.0/bundle-1.11.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.10-v4.12" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.0/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.11.0 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.10-v4.12" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.2/bundle-1.11.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.13-v4.15" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.2/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.11.2 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.2/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.13-v4.15" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.3/bundle-1.11.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.13-v4.15" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.3/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.11.3 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.3/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.13-v4.15" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.4/bundle-1.11.4.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.13-v4.17" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.4/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.11.4 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.11.4/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.13-v4.17" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.0/bundle-1.12.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable,stable-v1.12,stable-v1.12.0 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.14-v4.17" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.0/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.12.0 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.0 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.14-v4.17" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.1/bundle-1.12.1.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable,stable-v1.12,stable-v1.12.1 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.14-v4.18" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.1/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.12.1 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.1/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.1 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.14-v4.18" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.2/bundle-1.12.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable,stable-v1.12,stable-v1.12.2 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.14-v4.18" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.2/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.12.2 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.2/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.2 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.14-v4.18" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.3/bundle-1.12.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable,stable-v1.12,stable-v1.12.3 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.15-v4.18" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.3/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.3 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.15-v4.18" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.4/bundle-1.12.4.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable,stable-v1.12,stable-v1.12.4 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.15-v4.19" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.12.4/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.4 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.15-v4.19" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.3.0/bundle-1.3.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.5,v4.6" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | LABEL com.redhat.delivery.backport=true 15 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.3.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.4.0/bundle-1.4.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.5,v4.6" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | LABEL com.redhat.delivery.backport=true 15 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.4.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.5.0/bundle-1.5.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.6,v4.7" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | LABEL com.redhat.delivery.backport=true 15 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.5.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.6.0/bundle-1.6.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.7-v4.8" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.6.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.7-v4.8" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.7.0/bundle-1.7.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.8" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.7.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.8" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.8.0/bundle-1.8.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.7-v4.9" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.8.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.7-v4.9" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.9.0/bundle-1.9.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator-community 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.8-v4.10" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/1.9.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator-community 8 | com.redhat.openshift.versions: "v4.8-v4.10" 9 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator-community/ci.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # Use `replaces-mode` or `semver-mode`. Once you switch to `semver-mode`, there is no easy way back. 3 | updateGraph: replaces-mode 4 | reviewers: 5 | - kasserater 6 | - arielk 7 | - csiblock 8 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.10.0/bundle-1.10.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.9-v4.11" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.10.0/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.10.0 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | name: v1 35 | schema: 36 | openAPIV3Schema: 37 | description: HostDefinition is the Schema for the hostdefinitions API 38 | properties: 39 | apiVersion: 40 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 41 | type: string 42 | kind: 43 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 44 | type: string 45 | metadata: 46 | type: object 47 | spec: 48 | description: HostDefinitionSpec defines the desired state of HostDefinition 49 | properties: 50 | hostDefinition: 51 | description: Definition defines the observed state of HostDefinition 52 | properties: 53 | nodeId: 54 | type: string 55 | nodeName: 56 | type: string 57 | secretName: 58 | type: string 59 | secretNamespace: 60 | type: string 61 | required: 62 | - nodeName 63 | type: object 64 | required: 65 | - hostDefinition 66 | type: object 67 | status: 68 | description: HostDefinitionStatus defines the status of the host definition on the storage 69 | properties: 70 | phase: 71 | type: string 72 | required: 73 | - phase 74 | type: object 75 | type: object 76 | served: true 77 | storage: true 78 | subresources: 79 | status: {} 80 | status: 81 | acceptedNames: 82 | kind: "" 83 | plural: "" 84 | conditions: [] 85 | storedVersions: [] 86 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.10.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.9-v4.11 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.0/bundle-1.11.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.10-v4.12" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.0/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.11.0 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.10-v4.12 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.2/bundle-1.11.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.13-v4.15" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.2/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.11.2 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.2/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.13-v4.15 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.3/bundle-1.11.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.13-v4.15" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.3/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.11.3 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.3/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.13-v4.15 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.4/bundle-1.11.4.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.13-v4.17" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.4/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.11.4 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.11.4/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.13-v4.17 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.0/bundle-1.12.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.14-v4.17" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.0/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.12.0 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.0 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.14-v4.17 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.1/bundle-1.12.1.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable,stable-v1.12,stable-v1.12.1 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.14-v4.18" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.1/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.12.1 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.1/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.1 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.14-v4.18 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.2/bundle-1.12.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable,stable-v1.12,stable-v1.12.2 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.14-v4.18" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.2/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.12.2 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.2/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.2 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.14-v4.18 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.3/bundle-1.12.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable,stable-v1.12,stable-v1.12.3 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.15-v4.18" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.3/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.12.3 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.3/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.3 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.15-v4.18 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.4/bundle-1.12.4.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable,stable-v1.12,stable-v1.12.4 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.15-v4.19" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.4/manifests/csi.ibm.com_hostdefinitions.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | annotations: 5 | controller-gen.kubebuilder.io/version: v0.7.0 6 | creationTimestamp: null 7 | labels: 8 | app.kubernetes.io/instance: ibm-block-csi-operator 9 | app.kubernetes.io/managed-by: ibm-block-csi-operator 10 | app.kubernetes.io/name: ibm-block-csi-operator 11 | csi: ibm 12 | product: ibm-block-csi-driver 13 | release: v1.12.4 14 | name: hostdefinitions.csi.ibm.com 15 | spec: 16 | group: csi.ibm.com 17 | names: 18 | kind: HostDefinition 19 | listKind: HostDefinitionList 20 | plural: hostdefinitions 21 | singular: hostdefinition 22 | scope: Cluster 23 | versions: 24 | - additionalPrinterColumns: 25 | - jsonPath: .metadata.creationTimestamp 26 | name: Age 27 | type: date 28 | - jsonPath: .status.phase 29 | name: Phase 30 | type: string 31 | - jsonPath: .spec.hostDefinition.nodeName 32 | name: Node 33 | type: string 34 | - jsonPath: .spec.hostDefinition.managementAddress 35 | name: Management_Address 36 | type: string 37 | name: v1 38 | schema: 39 | openAPIV3Schema: 40 | description: HostDefinition is the Schema for the hostdefinitions API 41 | properties: 42 | apiVersion: 43 | description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 44 | type: string 45 | kind: 46 | description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 47 | type: string 48 | metadata: 49 | type: object 50 | spec: 51 | description: HostDefinitionSpec defines the desired state of HostDefinition 52 | properties: 53 | hostDefinition: 54 | description: Definition defines the observed state of HostDefinition 55 | properties: 56 | connectivityType: 57 | type: string 58 | ioGroups: 59 | items: 60 | type: integer 61 | type: array 62 | managementAddress: 63 | type: string 64 | nodeId: 65 | type: string 66 | nodeName: 67 | type: string 68 | nodeNameOnStorage: 69 | type: string 70 | ports: 71 | items: 72 | type: string 73 | type: array 74 | secretName: 75 | type: string 76 | secretNamespace: 77 | type: string 78 | required: 79 | - managementAddress 80 | - nodeName 81 | type: object 82 | required: 83 | - hostDefinition 84 | type: object 85 | status: 86 | description: HostDefinitionStatus defines the status of the host definition on the storage 87 | properties: 88 | phase: 89 | type: string 90 | required: 91 | - phase 92 | type: object 93 | type: object 94 | served: true 95 | storage: true 96 | subresources: 97 | status: {} 98 | status: 99 | acceptedNames: 100 | kind: "" 101 | plural: "" 102 | conditions: [] 103 | storedVersions: [] 104 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.12.4/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable,stable-v1.12,stable-v1.12.4 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.15-v4.19 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.3.0/bundle-1.3.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.5,v4.6" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | LABEL com.redhat.delivery.backport=true 15 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.3.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.4.0/bundle-1.4.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.5,v4.6" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | LABEL com.redhat.delivery.backport=true 15 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.4.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.5.0/bundle-1.5.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.6,v4.7" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | LABEL com.redhat.delivery.backport=true 15 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.5.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.6.0/bundle-1.6.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.7,v4.8" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.6.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.7.0/bundle-1.7.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="=v4.8" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.7.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.8.0/bundle-1.8.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.7-v4.9" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.8.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.7-v4.9 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.9.0/bundle-1.9.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | LABEL operators.operatorframework.io.bundle.channel.default.v1=stable 4 | LABEL operators.operatorframework.io.bundle.channels.v1=stable 5 | LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ 6 | LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 7 | LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ 8 | LABEL operators.operatorframework.io.bundle.package.v1=ibm-block-csi-operator 9 | 10 | COPY manifests /manifests/ 11 | COPY metadata /metadata/ 12 | LABEL com.redhat.openshift.versions="v4.8-v4.10" 13 | LABEL com.redhat.delivery.operator.bundle=true 14 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/1.9.0/metadata/annotations.yaml: -------------------------------------------------------------------------------- 1 | annotations: 2 | operators.operatorframework.io.bundle.channel.default.v1: stable 3 | operators.operatorframework.io.bundle.channels.v1: stable 4 | operators.operatorframework.io.bundle.manifests.v1: manifests/ 5 | operators.operatorframework.io.bundle.mediatype.v1: registry+v1 6 | operators.operatorframework.io.bundle.metadata.v1: metadata/ 7 | operators.operatorframework.io.bundle.package.v1: ibm-block-csi-operator 8 | 9 | com.redhat.openshift.versions: v4.8-v4.10 10 | -------------------------------------------------------------------------------- /deploy/olm-catalog/ibm-block-csi-operator/ibm-block-csi-operator.package.yaml: -------------------------------------------------------------------------------- 1 | channels: 2 | - currentCSV: ibm-block-csi-operator.v1.12.4 3 | name: stable 4 | defaultChannel: stable 5 | packageName: ibm-block-csi-operator 6 | -------------------------------------------------------------------------------- /envtest/suite_test.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package envtest 18 | 19 | import ( 20 | "context" 21 | "os" 22 | "path/filepath" 23 | "testing" 24 | 25 | . "github.com/onsi/ginkgo/v2" 26 | . "github.com/onsi/gomega" 27 | "k8s.io/client-go/kubernetes/scheme" 28 | ctrl "sigs.k8s.io/controller-runtime" 29 | "sigs.k8s.io/controller-runtime/pkg/client" 30 | "sigs.k8s.io/controller-runtime/pkg/envtest" 31 | "sigs.k8s.io/controller-runtime/pkg/log/zap" 32 | 33 | csiv1 "github.com/IBM/ibm-block-csi-operator/api/v1" 34 | "github.com/IBM/ibm-block-csi-operator/controllers" 35 | "github.com/IBM/ibm-block-csi-operator/controllers/util/common" 36 | "github.com/IBM/ibm-block-csi-operator/pkg/config" 37 | logf "sigs.k8s.io/controller-runtime/pkg/log" 38 | //+kubebuilder:scaffold:imports 39 | ) 40 | 41 | var ( 42 | k8sClient client.Client 43 | testEnv *envtest.Environment 44 | kubeVersion = "dummyKubeVersion" 45 | cancel context.CancelFunc 46 | ctx context.Context 47 | ) 48 | 49 | func TestAPIs(t *testing.T) { 50 | RegisterFailHandler(Fail) 51 | 52 | RunSpecs(t, "Controller Suite") 53 | } 54 | 55 | var _ = BeforeSuite(func() { 56 | Expect(os.Setenv(config.ENVKubeVersion, kubeVersion)).To(Succeed()) 57 | 58 | logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) 59 | 60 | ctx, cancel = context.WithCancel(context.TODO()) 61 | 62 | By("bootstrapping test environment") 63 | testEnv = &envtest.Environment{ 64 | CRDDirectoryPaths: []string{filepath.Join("..", "config", "crd", "bases")}, 65 | ErrorIfCRDPathMissing: true, 66 | AttachControlPlaneOutput: true, 67 | } 68 | 69 | cfg, err := testEnv.Start() 70 | Expect(err).NotTo(HaveOccurred()) 71 | Expect(cfg).NotTo(BeNil()) 72 | 73 | err = csiv1.AddToScheme(scheme.Scheme) 74 | Expect(err).NotTo(HaveOccurred()) 75 | //+kubebuilder:scaffold:scheme 76 | 77 | k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}) 78 | Expect(err).NotTo(HaveOccurred()) 79 | Expect(k8sClient).NotTo(BeNil()) 80 | 81 | mgr, err := ctrl.NewManager(cfg, ctrl.Options{ 82 | Scheme: scheme.Scheme, 83 | }) 84 | Expect(err).ToNot(HaveOccurred()) 85 | controllerHelper := common.NewControllerHelper(mgr.GetClient()) 86 | 87 | err = (&controllers.IBMBlockCSIReconciler{ 88 | Client: mgr.GetClient(), 89 | Scheme: mgr.GetScheme(), 90 | Namespace: "default", 91 | ControllerHelper: controllerHelper, 92 | }).SetupWithManager(mgr) 93 | Expect(err).ToNot(HaveOccurred()) 94 | 95 | err = (&controllers.HostDefinerReconciler{ 96 | Client: mgr.GetClient(), 97 | Scheme: mgr.GetScheme(), 98 | }).SetupWithManager(mgr) 99 | Expect(err).ToNot(HaveOccurred()) 100 | 101 | go func() { 102 | err = mgr.Start(ctx) 103 | Expect(err).ToNot(HaveOccurred()) 104 | }() 105 | 106 | }) 107 | 108 | var _ = AfterSuite(func() { 109 | cancel() 110 | By("tearing down the test environment") 111 | err := testEnv.Stop() 112 | Expect(err).NotTo(HaveOccurred()) 113 | Expect(os.Unsetenv(config.ENVKubeVersion)).To(Succeed()) 114 | }) 115 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/IBM/ibm-block-csi-operator 2 | 3 | go 1.24.0 4 | 5 | toolchain go1.24.1 6 | 7 | require ( 8 | github.com/go-logr/logr v1.4.3 9 | github.com/imdario/mergo v0.3.16 10 | github.com/onsi/ginkgo/v2 v2.23.4 11 | github.com/onsi/gomega v1.37.0 12 | github.com/pkg/errors v0.9.1 13 | github.com/presslabs/controller-util v0.15.0 14 | k8s.io/api v0.33.1 15 | k8s.io/apimachinery v0.33.1 16 | k8s.io/client-go v0.33.1 17 | sigs.k8s.io/controller-runtime v0.21.0 18 | sigs.k8s.io/yaml v1.4.0 19 | ) 20 | 21 | require ( 22 | github.com/beorn7/perks v1.0.1 // indirect 23 | github.com/blang/semver/v4 v4.0.0 // indirect 24 | github.com/cespare/xxhash/v2 v2.3.0 // indirect 25 | github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect 26 | github.com/emicklei/go-restful/v3 v3.11.0 // indirect 27 | github.com/evanphx/json-patch/v5 v5.9.11 // indirect 28 | github.com/fsnotify/fsnotify v1.7.0 // indirect 29 | github.com/fxamacker/cbor/v2 v2.7.0 // indirect 30 | github.com/go-logr/zapr v1.3.0 // indirect 31 | github.com/go-openapi/jsonpointer v0.21.0 // indirect 32 | github.com/go-openapi/jsonreference v0.20.2 // indirect 33 | github.com/go-openapi/swag v0.23.0 // indirect 34 | github.com/go-task/slim-sprig/v3 v3.0.0 // indirect 35 | github.com/go-test/deep v1.1.1 // indirect 36 | github.com/gogo/protobuf v1.3.2 // indirect 37 | github.com/google/btree v1.1.3 // indirect 38 | github.com/google/gnostic-models v0.6.9 // indirect 39 | github.com/google/go-cmp v0.7.0 // indirect 40 | github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect 41 | github.com/google/uuid v1.6.0 // indirect 42 | github.com/iancoleman/strcase v0.3.0 // indirect 43 | github.com/josharian/intern v1.0.0 // indirect 44 | github.com/json-iterator/go v1.1.12 // indirect 45 | github.com/mailru/easyjson v0.7.7 // indirect 46 | github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect 47 | github.com/modern-go/reflect2 v1.0.2 // indirect 48 | github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect 49 | github.com/prometheus/client_golang v1.22.0 // indirect 50 | github.com/prometheus/client_model v0.6.1 // indirect 51 | github.com/prometheus/common v0.62.0 // indirect 52 | github.com/prometheus/procfs v0.15.1 // indirect 53 | github.com/spf13/pflag v1.0.5 // indirect 54 | github.com/x448/float16 v0.8.4 // indirect 55 | go.uber.org/automaxprocs v1.6.0 // indirect 56 | go.uber.org/multierr v1.11.0 // indirect 57 | go.uber.org/zap v1.27.0 // indirect 58 | golang.org/x/net v0.38.0 // indirect 59 | golang.org/x/oauth2 v0.27.0 // indirect 60 | golang.org/x/sync v0.12.0 // indirect 61 | golang.org/x/sys v0.32.0 // indirect 62 | golang.org/x/term v0.30.0 // indirect 63 | golang.org/x/text v0.23.0 // indirect 64 | golang.org/x/time v0.9.0 // indirect 65 | golang.org/x/tools v0.31.0 // indirect 66 | gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect 67 | google.golang.org/protobuf v1.36.5 // indirect 68 | gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect 69 | gopkg.in/inf.v0 v0.9.1 // indirect 70 | gopkg.in/yaml.v3 v3.0.1 // indirect 71 | k8s.io/apiextensions-apiserver v0.33.0 // indirect 72 | k8s.io/klog/v2 v2.130.1 // indirect 73 | k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect 74 | k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect 75 | sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect 76 | sigs.k8s.io/randfill v1.0.0 // indirect 77 | sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect 78 | ) 79 | 80 | // Indirect operator-sdk dependencies use git.apache.org, which is frequently 81 | // down. The github mirror should be used instead. 82 | // Locking to a specific version (from 'go mod graph'): 83 | replace git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999 84 | 85 | replace github.com/operator-framework/operator-sdk => github.com/operator-framework/operator-sdk v1.9.0 86 | -------------------------------------------------------------------------------- /hack/boilerplate.go.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /hack/check-generated-manifests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # 4 | # Copyright 2019 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | project_dirname=ibm-block-csi-operator 20 | cd .. 21 | cp -r $project_dirname ./$project_dirname-expected 22 | cd $project_dirname-expected/ 23 | hack/update-config-yamls.sh 24 | cd .. 25 | diff -qr --exclude=bin $project_dirname $project_dirname-expected/ 26 | rm -rf $project_dirname-expected/ 27 | -------------------------------------------------------------------------------- /hack/get-arch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # 4 | # Copyright 2025 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ARCH=$(if [ "$(uname -m)" = "x86_64" ]; then echo "amd64"; else echo "$(uname -m)" ; fi) 20 | echo $ARCH 21 | -------------------------------------------------------------------------------- /hack/update-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # 4 | # Copyright 2019 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | CURRENT_PATH=$(dirname "$BASH_SOURCE") 20 | 21 | echo "Running all update scripts" 22 | 23 | for f in ${CURRENT_PATH}/update-*.sh; do 24 | if [[ $f = "${CURRENT_PATH}/update-all.sh" ]]; then 25 | continue 26 | fi 27 | $f 28 | done 29 | -------------------------------------------------------------------------------- /hack/update-config-yamls.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -xe 2 | 3 | # 4 | # Copyright 2019 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | # Run make generate and make manifests to update code after crd changes. 20 | 21 | make generate 22 | 23 | make manifests 24 | -------------------------------------------------------------------------------- /hack/update-copyright.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # 4 | # Copyright 2019 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | # Add the copyright header for all fo files if not. 20 | 21 | CURRENT_PATH=$(dirname "$BASH_SOURCE") 22 | PROTECT_ROOT=$CURRENT_PATH/.. 23 | VENDOR_PATH=$CURRENT_PATH/../vendor 24 | BOILERPLATE=$CURRENT_PATH/boilerplate.go.txt 25 | 26 | function contains() 27 | { 28 | local i 29 | for i in "${@}" 30 | do 31 | [[ "$i" == "$1" ]] && return 0; # 0 is true 32 | done 33 | return 1 # 1 is false 34 | } 35 | 36 | echo "add copyright header" 37 | 38 | for file in $(find $PROTECT_ROOT -not -path "$VENDOR_PATH/*" -not -name "zz_generated*" -type f -name \*.go); do 39 | if [[ $(grep -n "\/\*" -m 1 $file | cut -f1 -d:) == 1 ]] && [[ $(grep -n "Copyright" -m 1 $file | cut -f1 -d:) == 2 ]] 40 | then 41 | # the file already has a copyright. 42 | continue 43 | else 44 | if !(contains $file_name "${excluded_files[@]}") 45 | then 46 | cat $BOILERPLATE > $file.tmp; 47 | echo "" >> $file.tmp; 48 | cat $file >> $file.tmp; 49 | mv $file.tmp $file; 50 | fi 51 | fi 52 | done -------------------------------------------------------------------------------- /hack/update-installer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # 4 | # Copyright 2019 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | # Combine all the operator related yamls in the deploy 20 | # folder into one file. 21 | 22 | yes | cp deploy/installer/kustomization.yaml . 23 | kustomize build -o deploy/installer/generated/ibm-block-csi-operator.yaml 24 | rm -f kustomization.yaml 25 | -------------------------------------------------------------------------------- /hack/update_labels_in_crd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # 4 | # Copyright 2025 IBM Corp. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | 18 | base_path=config/crd/bases/ 19 | generated_crd_file_name_prefix=/apiextensions.k8s.io_v1_customresourcedefinition_ 20 | api_group=csi.ibm.com 21 | kinds=(hostdefinitions ibmblockcsis hostdefiners) 22 | kustomize build config/crd/ -o ${base_path} 23 | for kind in ${kinds[@]}; do 24 | mv ${base_path%%/}${generated_crd_file_name_prefix}${kind}.${api_group}.yaml ${base_path%%/}/${api_group}_${kind}.yaml 25 | done 26 | -------------------------------------------------------------------------------- /pkg/config/constants.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package config 18 | 19 | // Add a field here if it never changes, if it changes over time, put it to settings.go 20 | const ( 21 | APIGroup = "csi.ibm.com" 22 | APIVersion = "v1" 23 | Name = "ibm-block-csi-operator" 24 | DriverName = "block.csi.ibm.com" 25 | ProductName = "ibm-block-csi-driver" 26 | RbacAuthorizationApiGroup = "rbac.authorization.k8s.io" 27 | CsiNodesResource = "csinodes" 28 | SecretsResource = "secrets" 29 | PodsResource = "pods" 30 | VerbGet = "get" 31 | VerbList = "list" 32 | VerbWatch = "watch" 33 | VerbCreate = "create" 34 | VerbPatch = "patch" 35 | StorageApiGroup = "storage.k8s.io" 36 | AppsApiGroup = "apps" 37 | StorageClassesResource = "storageclasses" 38 | HostDefinerResource = "hostdefiners" 39 | HostDefinitionResource = "hostdefinitions" 40 | HostDefinitionStatusResource = "hostdefinitions/status" 41 | EventsResource = "events" 42 | NodesResource = "nodes" 43 | DaemonSetResource = "daemonsets" 44 | 45 | ENVKubeVersion = "KUBE_VERSION" 46 | 47 | CSINodeDriverRegistrar = "csi-node-driver-registrar" 48 | CSIProvisioner = "csi-provisioner" 49 | CSIAttacher = "csi-attacher" 50 | CSISnapshotter = "csi-snapshotter" 51 | CSIResizer = "csi-resizer" 52 | CSIAddonsReplicator = "csi-addons-replicator" 53 | CSIVolumeGroup = "csi-volume-group" 54 | LivenessProbe = "livenessprobe" 55 | 56 | ControllerSocketVolumeMountPath = "/var/lib/csi/sockets/pluginproxy/" 57 | NodeSocketVolumeMountPath = "/csi" 58 | ControllerLivenessProbeContainerSocketVolumeMountPath = "/csi" 59 | ControllerSocketPath = "/var/lib/csi/sockets/pluginproxy/csi.sock" 60 | NodeSocketPath = "/csi/csi.sock" 61 | NodeRegistrarSocketPath = "/var/lib/kubelet/plugins/block.csi.ibm.com/csi.sock" 62 | CSIEndpoint = "unix:///var/lib/csi/sockets/pluginproxy/csi.sock" 63 | CSINodeEndpoint = "unix:///csi/csi.sock" 64 | ) 65 | -------------------------------------------------------------------------------- /pkg/config/resources.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package config 18 | 19 | import ( 20 | "fmt" 21 | "strings" 22 | ) 23 | 24 | // ResourceName is the type for aliasing resources that will be created. 25 | type ResourceName string 26 | 27 | func (rn ResourceName) String() string { 28 | return string(rn) 29 | } 30 | 31 | const ( 32 | CSIController ResourceName = "csi-controller" 33 | CSINode ResourceName = "csi-node" 34 | HostDefiner ResourceName = "hostdefiner" 35 | NodeAgent ResourceName = "ibm-node-agent" 36 | CSIControllerServiceAccount ResourceName = "csi-controller-sa" 37 | CSINodeServiceAccount ResourceName = "csi-node-sa" 38 | HostDefinerServiceAccount ResourceName = "hostdefiner-sa" 39 | ExternalProvisionerClusterRole ResourceName = "external-provisioner-clusterrole" 40 | ExternalProvisionerClusterRoleBinding ResourceName = "external-provisioner-clusterrolebinding" 41 | ExternalAttacherClusterRole ResourceName = "external-attacher-clusterrole" 42 | ExternalAttacherClusterRoleBinding ResourceName = "external-attacher-clusterrolebinding" 43 | ExternalSnapshotterClusterRole ResourceName = "external-snapshotter-clusterrole" 44 | ExternalSnapshotterClusterRoleBinding ResourceName = "external-snapshotter-clusterrolebinding" 45 | ExternalResizerClusterRole ResourceName = "external-resizer-clusterrole" 46 | ExternalResizerClusterRoleBinding ResourceName = "external-resizer-clusterrolebinding" 47 | CSIAddonsReplicatorClusterRole ResourceName = "csi-addons-replicator-clusterrole" 48 | CSIAddonsReplicatorClusterRoleBinding ResourceName = "csi-addons-replicator-clusterrolebinding" 49 | CSIVolumeGroupClusterRole ResourceName = "csi-volume-group-clusterrole" 50 | CSIVolumeGroupClusterRoleBinding ResourceName = "csi-volume-group-clusterrolebinding" 51 | CSIControllerSCCClusterRole ResourceName = "csi-controller-scc-clusterrole" 52 | CSIControllerSCCClusterRoleBinding ResourceName = "csi-controller-scc-clusterrolebinding" 53 | CSINodeSCCClusterRole ResourceName = "csi-node-scc-clusterrole" 54 | CSINodeSCCClusterRoleBinding ResourceName = "csi-node-scc-clusterrolebinding" 55 | HostDefinerClusterRole ResourceName = "hostdefiner-clusterrole" 56 | HostDefinerClusterRoleBinding ResourceName = "hostdefiner-clusterrolebinding" 57 | ) 58 | 59 | // GetNameForResource returns the name of a resource for a CSI driver 60 | func GetNameForResource(name ResourceName, driverName string) string { 61 | switch name { 62 | case CSIController: 63 | return fmt.Sprintf("%s-controller", driverName) 64 | case CSINode: 65 | return fmt.Sprintf("%s-node", driverName) 66 | case CSIControllerServiceAccount: 67 | return fmt.Sprintf("%s-controller-sa", driverName) 68 | case CSINodeServiceAccount: 69 | return fmt.Sprintf("%s-node-sa", driverName) 70 | default: 71 | if strings.Contains(name.String(), "hostdefiner") { 72 | return fmt.Sprintf("%s-%s", driverName, name.String()) 73 | } 74 | return fmt.Sprintf("%s-%s", driverName, name) 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /pkg/config/settings.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package config 18 | 19 | import ( 20 | "fmt" 21 | "io/ioutil" 22 | "os" 23 | 24 | v1 "github.com/IBM/ibm-block-csi-operator/api/v1" 25 | "k8s.io/apimachinery/pkg/util/sets" 26 | "sigs.k8s.io/yaml" 27 | ) 28 | 29 | const ( 30 | EnvNameIBMBlockCSICrYaml = "IBMBlockCSI_CR_YAML" 31 | EnvNameHostDefinerCrYaml = "HostDefiner_CR_YAML" 32 | 33 | DefaultLogLevel = "DEBUG" 34 | ControllerUserID = int64(9999) 35 | 36 | NodeAgentPort = "10086" 37 | 38 | IBMRegistryUsername = "ibmcom" 39 | K8SRegistryUsername = "registry.k8s.io/sig-storage" 40 | QuayRegistryUsername = "quay.io/k8scsi" 41 | QuayAddonsRegistryUsername = "quay.io/csiaddons" 42 | QuayCSIBlockRegistryUsername = "quay.io/ibmcsiblock" 43 | RedHatRegistryUsername = "registry.redhat.io/openshift4" 44 | ) 45 | 46 | var DefaultIBMBlockCSICr v1.IBMBlockCSI 47 | 48 | var DefaultHostDefinerCr v1.HostDefiner 49 | 50 | var DefaultSidecarsByName map[string]v1.CSISidecar 51 | 52 | var OfficialRegistriesUsernames = sets.NewString(IBMRegistryUsername, K8SRegistryUsername, 53 | QuayRegistryUsername, QuayAddonsRegistryUsername, QuayCSIBlockRegistryUsername, 54 | RedHatRegistryUsername) 55 | 56 | func LoadDefaultsOfIBMBlockCSI() error { 57 | yamlFile, err := getCrYamlFile(EnvNameIBMBlockCSICrYaml) 58 | if err != nil { 59 | return err 60 | } 61 | 62 | err = yaml.Unmarshal(yamlFile, &DefaultIBMBlockCSICr) 63 | if err != nil { 64 | return fmt.Errorf("error unmarshaling yaml: %v", err) 65 | } 66 | 67 | DefaultSidecarsByName = make(map[string]v1.CSISidecar) 68 | 69 | for _, sidecar := range DefaultIBMBlockCSICr.Spec.Sidecars { 70 | DefaultSidecarsByName[sidecar.Name] = sidecar 71 | } 72 | 73 | return nil 74 | } 75 | 76 | func LoadDefaultsOfHostDefiner() error { 77 | yamlFile, err := getCrYamlFile(EnvNameHostDefinerCrYaml) 78 | if err != nil { 79 | return err 80 | } 81 | 82 | err = yaml.Unmarshal(yamlFile, &DefaultHostDefinerCr) 83 | if err != nil { 84 | return fmt.Errorf("error unmarshaling yaml: %v", err) 85 | } 86 | 87 | return nil 88 | } 89 | 90 | func getCrYamlFile(crPathEnvVariable string) ([]byte, error) { 91 | crYamlPath, err := getCrYamlPath(crPathEnvVariable) 92 | if err != nil { 93 | return []byte{}, err 94 | } 95 | 96 | yamlFile, err := ioutil.ReadFile(crYamlPath) 97 | if err != nil { 98 | return []byte{}, fmt.Errorf("failed to read file %q: %v", yamlFile, err) 99 | } 100 | return yamlFile, nil 101 | } 102 | 103 | func getCrYamlPath(crPathEnvVariable string) (string, error) { 104 | crYamlPath := os.Getenv(crPathEnvVariable) 105 | 106 | if crYamlPath == "" { 107 | return "", fmt.Errorf("environment variable %q was not set", crPathEnvVariable) 108 | } 109 | return crYamlPath, nil 110 | } 111 | -------------------------------------------------------------------------------- /pkg/util/boolptr/boolptr.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package boolptr 18 | 19 | // IsTrue returns true if and only if the bool pointer is non-nil and set to true. 20 | func IsTrue(b *bool) bool { 21 | return b != nil && *b == true 22 | } 23 | 24 | // IsFalse returns true if and only if the bool pointer is non-nil and set to false. 25 | func IsFalse(b *bool) bool { 26 | return b != nil && *b == false 27 | } 28 | 29 | // True returns a *bool whose underlying value is true. 30 | func True() *bool { 31 | t := true 32 | return &t 33 | } 34 | 35 | // False returns a *bool whose underlying value is false. 36 | func False() *bool { 37 | t := false 38 | return &t 39 | } 40 | 41 | // Equal returns true if and only if both values are set and equal. 42 | func Equal(a, b *bool) bool { 43 | if a == nil || b == nil { 44 | return false 45 | } else { 46 | return *a == *b 47 | } 48 | } 49 | 50 | // Equal returns true if both values are set and equal or both are nil. 51 | func NilOrEqual(a, b *bool) bool { 52 | if a == nil && b == nil { 53 | return true 54 | } else if a == nil || b == nil { 55 | return false 56 | } else { 57 | return *a == *b 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /pkg/util/kubernetes/kube_client.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package kubernetes 18 | 19 | import ( 20 | "os" 21 | 22 | "k8s.io/client-go/kubernetes" 23 | "k8s.io/client-go/rest" 24 | logf "sigs.k8s.io/controller-runtime/pkg/log" 25 | ) 26 | 27 | var log = logf.Log.WithName("kube_client") 28 | 29 | func InitKubeClient(clientConfig *rest.Config) *kubernetes.Clientset { 30 | client, err := kubernetes.NewForConfig(clientConfig) 31 | if err != nil { 32 | log.Error(err, "") 33 | os.Exit(1) 34 | } 35 | return client 36 | } 37 | -------------------------------------------------------------------------------- /version/version.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2019 IBM Corp. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package version 18 | 19 | var ( 20 | Version = "1.12.4" 21 | DriverVersion = "1.12.4" 22 | ) 23 | --------------------------------------------------------------------------------