This repository contains functions to be consumed by various Kubernetes and out-of-tree CSI components like external provisioner to facilitate migration of code from Kubernetes In-tree plugin code to CSI plugin repositories.

Consumers of this repository can make use of functions like TranslateToCSI and TranslateToInTree functions to translate PV sources.

Community, discussion, contribution, and support

Learn how to engage with the Kubernetes community on the community page.

You can reach the maintainers of this repository at:

Code of Conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

Contibution Guidelines

See for more information.

Expand ▾ Collapse ▴




This section is empty.


This section is empty.


func GetCSINameFromInTreeName

func GetCSINameFromInTreeName(pluginName string) (string, error)

    GetCSINameFromInTreeName returns the name of a CSI driver that supersedes the in-tree plugin with the given name

    func GetInTreeNameFromCSIName

    func GetInTreeNameFromCSIName(pluginName string) (string, error)

      GetInTreeNameFromCSIName returns the name of the in-tree plugin superseded by a CSI driver with the given name

      func GetInTreePluginNameFromSpec

      func GetInTreePluginNameFromSpec(pv *v1.PersistentVolume, vol *v1.Volume) (string, error)

        GetInTreePluginNameFromSpec returns the plugin name

        func IsInlineMigratable

        func IsInlineMigratable(vol *v1.Volume) bool

          IsInlineMigratable tests whether there is Migration logic for the given Inline Volume

          func IsMigratableIntreePluginByName

          func IsMigratableIntreePluginByName(inTreePluginName string) bool

            IsMigratableIntreePluginByName tests whether there is migration logic for the in-tree plugin whose name matches the given name

            func IsMigratedCSIDriverByName

            func IsMigratedCSIDriverByName(csiPluginName string) bool

              IsMigratedCSIDriverByName tests whether there exists an in-tree plugin with logic to migrate to the CSI driver with given name

              func IsPVMigratable

              func IsPVMigratable(pv *v1.PersistentVolume) bool

                IsPVMigratable tests whether there is migration logic for the given Persistent Volume

                func TranslateCSIPVToInTree

                func TranslateCSIPVToInTree(pv *v1.PersistentVolume) (*v1.PersistentVolume, error)

                  TranslateCSIPVToInTree takes a PV with a CSI PersistentVolume Source and will translate it to a in-tree Persistent Volume Source for the specific in-tree volume specified by the `Driver` field in the CSI Source. The input PV object will not be modified.

                  func TranslateInTreePVToCSI

                  func TranslateInTreePVToCSI(pv *v1.PersistentVolume) (*v1.PersistentVolume, error)

                    TranslateInTreePVToCSI takes a persistent volume and will translate the in-tree source to a CSI Source if the translation logic has been implemented. The input persistent volume will not be modified

                    func TranslateInTreeStorageClassParametersToCSI

                    func TranslateInTreeStorageClassParametersToCSI(inTreePluginName string, scParameters map[string]string) (map[string]string, error)

                      TranslateInTreeStorageClassParametersToCSI takes in-tree storage class parameters and translates them to a set of parameters consumable by CSI plugin


                      This section is empty.

                      Source Files


                      Path Synopsis