func getVolumeIDFromGlobalMount(host volume.VolumeHost, globalPath string) (string, error) { basePath := path.Join(host.GetPluginDir(awsElasticBlockStorePluginName), "mounts") rel, err := filepath.Rel(basePath, globalPath) if err != nil { return "", err } if strings.Contains(rel, "../") { return "", fmt.Errorf("Unexpected mount path: " + globalPath) } // Reverse the :// replacement done in makeGlobalPDPath volumeID := rel if strings.HasPrefix(volumeID, "aws/") { volumeID = strings.Replace(volumeID, "aws/", "aws://", 1) } glog.V(2).Info("Mapping mount dir ", globalPath, " to volumeID ", volumeID) return volumeID, nil }
// make a directory like /var/lib/qinglet/plugins/qingyuan/pod/rbd/pool-image-image func makePDNameInternal(host volume.VolumeHost, pool string, image string) string { return path.Join(host.GetPluginDir(RBDPluginName), "rbd", pool+"-image-"+image) }
// make a directory like /var/lib/qinglet/plugins/qingyuan/pod/iscsi/portal-iqn-some_iqn-lun-0 func makePDNameInternal(host volume.VolumeHost, portal string, iqn string, lun string) string { return path.Join(host.GetPluginDir(ISCSIPluginName), "iscsi", portal+"-iqn-"+iqn+"-lun-"+lun) }
func makeGlobalPDPath(host volume.VolumeHost, volumeID string) string { // Clean up the URI to be more fs-friendly name := volumeID name = strings.Replace(name, "://", "/", -1) return path.Join(host.GetPluginDir(awsElasticBlockStorePluginName), "mounts", name) }
func makeGlobalPDName(host volume.VolumeHost, devName string) string { return path.Join(host.GetPluginDir(gcePersistentDiskPluginName), "mounts", devName) }