func()

in pkg/csi_driver/controller.go [463:506]


func (s *controllerServer) generateUniqueFilesystemName(ctx context.Context, instance *lustre.ServiceInstance) (string, error) {
	if instance.Filesystem != "" {
		klog.Infof("Filesystem name auto-generation skipped for instance %+v: value is predefined in the storage class", instance)

		return instance.Filesystem, nil
	}
	targetRegion, err := util.GetRegionFromZone(instance.Location)
	if err != nil {
		return "", err
	}
	allZones, err := s.cloudProvider.LustreService.ListLocations(ctx, &lustre.ListFilter{Project: instance.Project})
	if err != nil {
		return "", err
	}
	targetZones, err := filterZonesByRegion(allZones, targetRegion)
	if err != nil {
		return "", err
	}

	// Create a set of existing filesystem names for quick lookup.
	existingFSNames := make(map[string]struct{})
	for _, zone := range targetZones {
		filter := &lustre.ListFilter{Project: instance.Project, Location: zone}
		instances, err := s.cloudProvider.LustreService.ListInstance(ctx, filter)
		if err != nil {
			return "", err
		}

		for _, inst := range instances {
			existingFSNames[inst.Filesystem] = struct{}{} // An empty struct is used because it consumes zero memory.
		}
	}

	// Generate unique identifier for lustre instance fsname.
	for {
		id, err := generateRandomID()
		if err != nil {
			return "", fmt.Errorf("failed to generate random lustre fsname: %w", err)
		}
		if _, exists := existingFSNames[id]; !exists {
			return id, nil
		}
	}
}