var inTreePlugins … type CSITranslator … // New creates a new CSITranslator which does real translation // for "in-tree plugins <-> csi drivers" func New() CSITranslator { … } // TranslateInTreeStorageClassToCSI takes in-tree Storage Class // and translates it to a set of parameters consumable by CSI plugin func (CSITranslator) TranslateInTreeStorageClassToCSI(logger klog.Logger, inTreePluginName string, sc *storage.StorageClass) (*storage.StorageClass, error) { … } // TranslateInTreeInlineVolumeToCSI takes a inline volume and will translate // the in-tree volume source to a CSIPersistentVolumeSource (wrapped in a PV) // if the translation logic has been implemented. func (CSITranslator) TranslateInTreeInlineVolumeToCSI(logger klog.Logger, volume *v1.Volume, podNamespace string) (*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 (CSITranslator) TranslateInTreePVToCSI(logger klog.Logger, 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 (CSITranslator) TranslateCSIPVToInTree(pv *v1.PersistentVolume) (*v1.PersistentVolume, error) { … } // IsMigratableIntreePluginByName tests whether there is migration logic for the in-tree plugin // whose name matches the given name func (CSITranslator) IsMigratableIntreePluginByName(inTreePluginName string) bool { … } // IsMigratedCSIDriverByName tests whether there exists an in-tree plugin with logic // to migrate to the CSI driver with given name func (CSITranslator) IsMigratedCSIDriverByName(csiPluginName string) bool { … } // GetInTreePluginNameFromSpec returns the plugin name func (CSITranslator) GetInTreePluginNameFromSpec(pv *v1.PersistentVolume, vol *v1.Volume) (string, error) { … } // GetCSINameFromInTreeName returns the name of a CSI driver that supersedes the // in-tree plugin with the given name func (CSITranslator) GetCSINameFromInTreeName(pluginName string) (string, error) { … } // GetInTreeNameFromCSIName returns the name of the in-tree plugin superseded by // a CSI driver with the given name func (CSITranslator) GetInTreeNameFromCSIName(pluginName string) (string, error) { … } // IsPVMigratable tests whether there is migration logic for the given Persistent Volume func (CSITranslator) IsPVMigratable(pv *v1.PersistentVolume) bool { … } // IsInlineMigratable tests whether there is Migration logic for the given Inline Volume func (CSITranslator) IsInlineMigratable(vol *v1.Volume) bool { … } // RepairVolumeHandle generates a correct volume handle based on node ID information. func (CSITranslator) RepairVolumeHandle(driverName, volumeHandle, nodeID string) (string, error) { … }