package service import ( "strconv" "strings" "github.com/ocdp/cluster-service/internal/domain/entity" ) func normalizeStandardQuotaQuantity(value string) string { value = strings.TrimSpace(value) switch strings.ToLower(value) { case "unlimited", "none", "no-limit", "nolimit": return "" } upper := strings.ToUpper(value) switch { case strings.HasSuffix(upper, "MB"): return strings.TrimSpace(value[:len(value)-2]) + "M" case strings.HasSuffix(upper, "GB"): return strings.TrimSpace(value[:len(value)-2]) + "G" default: return value } } func normalizeGPUMemoryQuota(value string) (string, error) { value = strings.TrimSpace(value) if value == "" { return "", nil } upper := strings.ToUpper(value) multiplier := int64(1) number := value switch { case strings.HasSuffix(upper, "MB"): number = strings.TrimSpace(value[:len(value)-2]) case strings.HasSuffix(upper, "M"): number = strings.TrimSpace(value[:len(value)-1]) case strings.HasSuffix(upper, "GB"): number = strings.TrimSpace(value[:len(value)-2]) multiplier = 1000 case strings.HasSuffix(upper, "G"): number = strings.TrimSpace(value[:len(value)-1]) multiplier = 1000 case strings.HasSuffix(upper, "GIB"): number = strings.TrimSpace(value[:len(value)-3]) multiplier = 1024 case strings.HasSuffix(upper, "GI"): number = strings.TrimSpace(value[:len(value)-2]) multiplier = 1024 } parsed, err := strconv.ParseInt(number, 10, 64) if err != nil || parsed < 0 { return "", entity.ErrInvalidTenantResourceQuota } return strconv.FormatInt(parsed*multiplier, 10), nil }