in pkg/csi/cache.go [93:135]
func getVolumeTypeMapping(configMapData map[string]string) (map[string]volumeTypeInfo, error) {
nodes, found := configMapData[volumeTypeInfoKey]
if !found {
return nil, fmt.Errorf("%s not found in volume type config map", volumeTypeInfoKey)
}
typeMap := map[string]volumeTypeInfo{}
for _, line := range strings.Split(nodes, "\n") {
line = strings.TrimSpace(line)
if line == "" {
continue
}
items := strings.Split(line, ",")
if len(items) < 2 {
return nil, fmt.Errorf("Bad line in volume type config map: %s", line)
}
node := strings.TrimSpace(items[0])
if _, found := typeMap[node]; found {
return nil, fmt.Errorf("node %s duplicated in volume type config map: %s", node, line)
}
var info volumeTypeInfo
for _, item := range items[1:] {
parts := strings.SplitN(item, "=", 2)
trimmed := strings.TrimSpace(parts[0])
switch trimmed {
case "type":
info.VolumeType = strings.TrimSpace(parts[1])
case "size":
szStr := strings.TrimSpace(parts[1])
q, err := resource.ParseQuantity(szStr)
if err != nil {
return nil, fmt.Errorf("bad size in volume type config map: %s", line)
}
info.Size = q
case "disk":
info.Disk = strings.TrimSpace(parts[1])
default:
return nil, fmt.Errorf("bad key %s in volume type config map: %s", trimmed, line)
}
}
typeMap[node] = info
}
return typeMap, nil
}