func extractLabels()

in pkg/csi_driver/controller.go [282:314]


func extractLabels(parameters map[string]string, driverName string) (map[string]string, error) {
	labels := make(map[string]string)
	scLabels := make(map[string]string)
	for k, v := range parameters {
		switch strings.ToLower(k) {
		case ParameterKeyPVCName:
			labels[tagKeyCreatedForClaimName] = v
		case ParameterKeyPVCNamespace:
			labels[tagKeyCreatedForClaimNamespace] = v
		case ParameterKeyPVName:
			labels[tagKeyCreatedForVolumeName] = v
		case ParameterKeyLabels:
			var err error
			scLabels, err = util.ConvertLabelsStringToMap(v)
			if err != nil {
				return nil, fmt.Errorf("parameters contain invalid labels parameter: %w", err)
			}
		}
	}

	labels[tagKeyCreatedBy] = strings.ReplaceAll(driverName, ".", "_")
	labels, err := mergeLabels(scLabels, labels)
	if err != nil {
		return nil, err
	}

	// TODO: validate labels: https://cloud.google.com/storage/docs/tags-and-labels#bucket-labels
	for k, v := range labels {
		labels[k] = strings.ReplaceAll(v, ".", "_")
	}

	return mergeLabels(scLabels, labels)
}