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
}
}
}