Documentation ¶
Overview ¶
*
- Copyright 2019 IBM Corp. *
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at *
- http://www.apache.org/licenses/LICENSE-2.0 *
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
Index ¶
- Constants
- Variables
- func GetVersionJSON(configFilePath string) (string, error)
- type ConfigFile
- type ConfigYmlEmptyAttribute
- type Driver
- func (d *Driver) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error)
- func (d *Driver) GetPluginInfo(ctx context.Context, req *csi.GetPluginInfoRequest) (*csi.GetPluginInfoResponse, error)
- func (d *Driver) Probe(ctx context.Context, req *csi.ProbeRequest) (*csi.ProbeResponse, error)
- func (d *Driver) Run() error
- func (d *Driver) Stop()
- type NodeMounter
- type NodeService
- func (d *NodeService) NodeExpandVolume(ctx context.Context, req *csi.NodeExpandVolumeRequest) (*csi.NodeExpandVolumeResponse, error)
- func (d *NodeService) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error)
- func (d *NodeService) NodeGetInfo(ctx context.Context, req *csi.NodeGetInfoRequest) (*csi.NodeGetInfoResponse, error)
- func (d *NodeService) NodeGetVolumeStats(ctx context.Context, req *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error)
- func (d *NodeService) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error)
- func (d *NodeService) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRequest) (*csi.NodeStageVolumeResponse, error)
- func (d *NodeService) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error)
- func (d *NodeService) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error)
- type NodeUtils
- func (n NodeUtils) ClearStageInfoFile(filePath string) error
- func (n NodeUtils) ExpandFilesystem(devicePath string, volumePath string, fsType string) error
- func (n NodeUtils) ExpandMpathDevice(mpathDevice string) error
- func (n NodeUtils) FormatDevice(devicePath string, fsType string)
- func (n NodeUtils) GenerateNodeID(hostName string, fcWWNs []string, iscsiIQN string) (string, error)
- func (n NodeUtils) GetArrayInitiators(ipsByArrayInitiator map[string][]string) []string
- func (n NodeUtils) GetInfoFromPublishContext(publishContext map[string]string, configYaml ConfigFile) (string, int, map[string][]string, error)
- func (n NodeUtils) GetPodPath(origPath string) string
- func (n NodeUtils) GetSysDevicesFromMpath(device string) (string, error)
- func (n NodeUtils) GetTopologyLabels(ctx context.Context, nodeName string) (map[string]string, error)
- func (n NodeUtils) IsDirectory(path string) bool
- func (n NodeUtils) IsNotMountPoint(file string) (bool, error)
- func (n NodeUtils) IsPathExists(path string) bool
- func (n NodeUtils) MakeDir(dirPath string) error
- func (n NodeUtils) MakeFile(filePath string) error
- func (n NodeUtils) ParseFCPorts() ([]string, error)
- func (n NodeUtils) ParseIscsiInitiators() (string, error)
- func (n NodeUtils) RemoveFileOrDirectory(path string) error
- func (n NodeUtils) RescanPhysicalDevices(sysDevices []string) error
- func (n NodeUtils) StageInfoFileIsExist(filePath string) bool
- type NodeUtilsInterface
- type RequestValidationError
- type SyncLock
- type SyncLockInterface
- type VersionInfo
- type VolumeAlreadyProcessingError
Constants ¶
View Source
const ( DefualtConfigFile string = "config.yaml" EnvNameDriverConfFile string = "DRIVER_CONFIG_YML" )
View Source
const ( FCPath = "/sys/class/fc_host" FCPortPath = "/sys/class/fc_host/host*/port_name" MaxNodeIdLength = 128 )
View Source
const ( // In the Dockerfile of the node, specific commands (e.g: multipath, mount...) from the host mounted inside the container in /host directory. // Command lines inside the container will show /host prefix. PrefixChrootOfHostRoot = "/host" PublishContextSeparator = "," NodeIdDelimiter = ";" NodeIdFcDelimiter = ":" TimeOutMultipathdCmd = 10 * 1000 )
Variables ¶
View Source
var ( StageInfoFilename = ".stageInfo.json" IscsiFullPath = "/host/etc/iscsi/initiatorname.iscsi" )
View Source
var ErrorNoPortsCouldFitInNodeId = "could not fit any ports in node id: %v, length limit: %d"
View Source
var ErrorUnsupportedConnectivityType = "Unsupported connectivity type : {%v}"
View Source
var ErrorWhileTryingToReadFC = "Error while tring to get FC port from string: %v."
View Source
var ErrorWhileTryingToReadIQN = "Error while trying to get iqn from string: %v."
Functions ¶
func GetVersionJSON ¶
Types ¶
type ConfigFile ¶
type ConfigFile struct { Identity struct { Name string Version string } Controller struct { Publish_context_lun_parameter string Publish_context_connectivity_parameter string Publish_context_array_iqn string Publish_context_fc_initiators string } }
func ReadConfigFile ¶
func ReadConfigFile(configFilePath string) (ConfigFile, error)
type ConfigYmlEmptyAttribute ¶
type ConfigYmlEmptyAttribute struct {
Attr string
}
func (*ConfigYmlEmptyAttribute) Error ¶
func (e *ConfigYmlEmptyAttribute) Error() string
type Driver ¶
type Driver struct { NodeService // contains filtered or unexported fields }
func (*Driver) GetPluginCapabilities ¶
func (d *Driver) GetPluginCapabilities(ctx context.Context, req *csi.GetPluginCapabilitiesRequest) (*csi.GetPluginCapabilitiesResponse, error)
func (*Driver) GetPluginInfo ¶
func (d *Driver) GetPluginInfo(ctx context.Context, req *csi.GetPluginInfoRequest) (*csi.GetPluginInfoResponse, error)
func (*Driver) Probe ¶
func (d *Driver) Probe(ctx context.Context, req *csi.ProbeRequest) (*csi.ProbeResponse, error)
type NodeMounter ¶ added in v1.1.0
type NodeService ¶
type NodeService struct { Mounter NodeMounter ConfigYaml ConfigFile Hostname string NodeUtils NodeUtilsInterface VolumeIdLocksMap SyncLockInterface OsDeviceConnectivityMapping map[string]device_connectivity.OsDeviceConnectivityInterface OsDeviceConnectivityHelper device_connectivity.OsDeviceConnectivityHelperScsiGenericInterface // contains filtered or unexported fields }
nodeService represents the node service of CSI driver
func NewNodeService ¶
func NewNodeService(configYaml ConfigFile, hostname string, nodeUtils NodeUtilsInterface, OsDeviceConnectivityMapping map[string]device_connectivity.OsDeviceConnectivityInterface, osDeviceConnectivityHelper device_connectivity.OsDeviceConnectivityHelperScsiGenericInterface, executer executer.ExecuterInterface, mounter NodeMounter, syncLock SyncLockInterface) NodeService
newNodeService creates a new node service it panics if failed to create the service
func (*NodeService) NodeExpandVolume ¶
func (d *NodeService) NodeExpandVolume(ctx context.Context, req *csi.NodeExpandVolumeRequest) (*csi.NodeExpandVolumeResponse, error)
func (*NodeService) NodeGetCapabilities ¶
func (d *NodeService) NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error)
func (*NodeService) NodeGetInfo ¶
func (d *NodeService) NodeGetInfo(ctx context.Context, req *csi.NodeGetInfoRequest) (*csi.NodeGetInfoResponse, error)
func (*NodeService) NodeGetVolumeStats ¶
func (d *NodeService) NodeGetVolumeStats(ctx context.Context, req *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error)
func (*NodeService) NodePublishVolume ¶
func (d *NodeService) NodePublishVolume(ctx context.Context, req *csi.NodePublishVolumeRequest) (*csi.NodePublishVolumeResponse, error)
func (*NodeService) NodeStageVolume ¶
func (d *NodeService) NodeStageVolume(ctx context.Context, req *csi.NodeStageVolumeRequest) (*csi.NodeStageVolumeResponse, error)
func (*NodeService) NodeUnpublishVolume ¶
func (d *NodeService) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error)
func (*NodeService) NodeUnstageVolume ¶
func (d *NodeService) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstageVolumeRequest) (*csi.NodeUnstageVolumeResponse, error)
type NodeUtils ¶
type NodeUtils struct { Executer executer.ExecuterInterface // contains filtered or unexported fields }
func NewNodeUtils ¶
func NewNodeUtils(executer executer.ExecuterInterface, mounter mount.Interface) *NodeUtils
func (NodeUtils) ClearStageInfoFile ¶
func (NodeUtils) ExpandFilesystem ¶ added in v1.4.0
func (NodeUtils) ExpandMpathDevice ¶ added in v1.4.0
func (NodeUtils) FormatDevice ¶ added in v1.4.0
func (NodeUtils) GenerateNodeID ¶ added in v1.4.0
func (NodeUtils) GetArrayInitiators ¶ added in v1.1.0
func (NodeUtils) GetInfoFromPublishContext ¶
func (NodeUtils) GetPodPath ¶ added in v1.1.0
To some files/dirs pod cannot access using its real path. It has to use a different path which is <prefix>/<path>. E.g. in order to access /etc/test.txt pod has to use /host/etc/test.txt
func (NodeUtils) GetSysDevicesFromMpath ¶
func (NodeUtils) GetTopologyLabels ¶ added in v1.6.0
func (NodeUtils) IsDirectory ¶ added in v1.1.0
func (NodeUtils) IsNotMountPoint ¶ added in v1.1.0
func (NodeUtils) IsPathExists ¶ added in v1.1.0
func (NodeUtils) ParseFCPorts ¶ added in v0.9.0
func (NodeUtils) ParseIscsiInitiators ¶
func (NodeUtils) RemoveFileOrDirectory ¶ added in v1.1.0
Deletes file or directory with all sub-directories and files
func (NodeUtils) RescanPhysicalDevices ¶ added in v1.4.0
func (NodeUtils) StageInfoFileIsExist ¶
type NodeUtilsInterface ¶
type NodeUtilsInterface interface { ParseIscsiInitiators() (string, error) ParseFCPorts() ([]string, error) GetInfoFromPublishContext(publishContext map[string]string, configYaml ConfigFile) (string, int, map[string][]string, error) GetArrayInitiators(ipsByArrayInitiator map[string][]string) []string GetSysDevicesFromMpath(baseDevice string) (string, error) // TODO refactor and move all staging methods to dedicate interface. ClearStageInfoFile(filePath string) error StageInfoFileIsExist(filePath string) bool IsPathExists(filePath string) bool IsDirectory(filePath string) bool RemoveFileOrDirectory(filePath string) error MakeDir(dirPath string) error MakeFile(filePath string) error ExpandFilesystem(devicePath string, volumePath string, fsType string) error ExpandMpathDevice(mpathDevice string) error RescanPhysicalDevices(sysDevices []string) error FormatDevice(devicePath string, fsType string) IsNotMountPoint(file string) (bool, error) GetPodPath(filepath string) string GenerateNodeID(hostName string, fcWWNs []string, iscsiIQN string) (string, error) GetTopologyLabels(ctx context.Context, nodeName string) (map[string]string, error) }
type RequestValidationError ¶
type RequestValidationError struct {
Msg string
}
func (*RequestValidationError) Error ¶
func (e *RequestValidationError) Error() string
type SyncLockInterface ¶
type SyncLockInterface interface { AddVolumeLock(id string, msg string) error RemoveVolumeLock(id string, msg string) GetSyncMap() *sync.Map }
func NewSyncLock ¶
func NewSyncLock() SyncLockInterface
type VersionInfo ¶
type VersionInfo struct { DriverVersion string `json:"driverVersion"` GitCommit string `json:"gitCommit"` BuildDate string `json:"buildDate"` GoVersion string `json:"goVersion"` Compiler string `json:"compiler"` Platform string `json:"platform"` }
func GetVersion ¶
func GetVersion(configFilePath string) (VersionInfo, error)
type VolumeAlreadyProcessingError ¶
type VolumeAlreadyProcessingError struct {
// contains filtered or unexported fields
}
func (*VolumeAlreadyProcessingError) Error ¶
func (e *VolumeAlreadyProcessingError) Error() string
Source Files ¶
Click to show internal directories.
Click to hide internal directories.