in cli/azd/pkg/apphost/generate.go [655:738]
func (b *infraGenerator) LoadManifest(m *Manifest) error {
// initCompilerOptions defines the way the infraGenerator loads and compiles the manifest.
if err := b.initCompilerOptions(m); err != nil {
return fmt.Errorf("initializing compiler options: %w", err)
}
for name, comp := range m.Resources {
if err := b.extractOutputs(comp); err != nil {
return fmt.Errorf("extracting outputs: %w", err)
}
b.resourceTypes[name] = comp.Type
if comp.ConnectionString != nil {
b.connectionStrings[name] = *comp.ConnectionString
}
switch comp.Type {
case "project.v0":
b.addProject(name, *comp.Path, comp.Env, comp.Bindings, comp.Args, nil, "")
case "project.v1":
var deploymentParams map[string]any
var deploymentSource string
if comp.Deployment != nil {
deploymentParams = comp.Deployment.Params
deploymentSource = filepath.Base(*comp.Deployment.Path)
}
b.addProject(name, *comp.Path, comp.Env, comp.Bindings, comp.Args, deploymentParams, deploymentSource)
case "container.v0":
err := b.addBuildContainer(name, comp)
if err != nil {
return err
}
case "dapr.v0":
err := b.addDapr(name, comp.Dapr)
if err != nil {
return err
}
case "dapr.component.v0":
err := b.addDaprComponent(name, comp.DaprComponent)
if err != nil {
return err
}
case "container.v1":
err := b.addBuildContainer(name, comp)
if err != nil {
return err
}
case "dockerfile.v0":
err := b.addBuildContainer(name, comp)
if err != nil {
return err
}
case "parameter.v0":
if err := b.addInputParameter(name, comp); err != nil {
return fmt.Errorf("adding bicep parameter from resource %s (%s): %w", name, comp.Type, err)
}
case "value.v0":
if comp.Value != "" && !hasInputs(comp.Value) {
// a value.v0 resource with value not referencing inputs doesn't need any further processing
b.valueStrings[name] = comp.Value
continue
}
if err := b.addInputParameter(name, comp); err != nil {
return fmt.Errorf("adding bicep parameter from resource %s (%s): %w", name, comp.Type, err)
}
case "azure.bicep.v0", "azure.bicep.v1":
if err := b.addBicep(name, comp); err != nil {
return fmt.Errorf("adding bicep resource %s: %w", name, err)
}
default:
ignore, err := strconv.ParseBool(os.Getenv("AZD_DEBUG_DOTNET_APPHOST_IGNORE_UNSUPPORTED_RESOURCES"))
if err == nil && ignore {
log.Printf(
"ignoring resource of type %s since AZD_DEBUG_DOTNET_APPHOST_IGNORE_UNSUPPORTED_RESOURCES is set",
comp.Type)
continue
}
return fmt.Errorf("unsupported resource type: %s", comp.Type)
}
}
return nil
}