fix(provision): reconcile channel pricing and hosted access
This commit is contained in:
@@ -157,6 +157,7 @@ func validateProviders(providers []ProviderManifest) error {
|
||||
seen := make(map[string]struct{}, len(providers))
|
||||
for _, provider := range providers {
|
||||
providerID := strings.TrimSpace(provider.ProviderID)
|
||||
missingDefaultModel := firstMissingDefaultModel(provider.DefaultModels, provider.ChannelTemplate.ModelMapping)
|
||||
switch {
|
||||
case providerID == "":
|
||||
return fmt.Errorf("provider manifest: provider_id is required")
|
||||
@@ -180,6 +181,10 @@ func validateProviders(providers []ProviderManifest) error {
|
||||
return fmt.Errorf("provider %q: channel_template.name is required", providerID)
|
||||
case len(provider.ChannelTemplate.ModelMapping) == 0:
|
||||
return fmt.Errorf("provider %q: channel_template.model_mapping must not be empty", providerID)
|
||||
case !containsProviderModel(provider.ChannelTemplate.ModelMapping, provider.SmokeTestModel):
|
||||
return fmt.Errorf("provider %q: channel_template.model_mapping must include smoke_test_model %q", providerID, provider.SmokeTestModel)
|
||||
case missingDefaultModel != "":
|
||||
return fmt.Errorf("provider %q: channel_template.model_mapping must cover default_models, missing %q", providerID, missingDefaultModel)
|
||||
case strings.TrimSpace(provider.PlanTemplate.Name) == "":
|
||||
return fmt.Errorf("provider %q: plan_template.name is required", providerID)
|
||||
case provider.PlanTemplate.ValidityDays <= 0:
|
||||
@@ -247,3 +252,29 @@ func contains(items []string, target string) bool {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func containsProviderModel(modelMapping map[string]string, target string) bool {
|
||||
trimmedTarget := strings.TrimSpace(target)
|
||||
if trimmedTarget == "" {
|
||||
return false
|
||||
}
|
||||
for sourceModel, mappedModel := range modelMapping {
|
||||
if strings.TrimSpace(sourceModel) == trimmedTarget || strings.TrimSpace(mappedModel) == trimmedTarget {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func firstMissingDefaultModel(defaultModels []string, modelMapping map[string]string) string {
|
||||
for _, model := range defaultModels {
|
||||
trimmedModel := strings.TrimSpace(model)
|
||||
if trimmedModel == "" {
|
||||
continue
|
||||
}
|
||||
if !containsProviderModel(modelMapping, trimmedModel) {
|
||||
return trimmedModel
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user