Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 18 additions & 6 deletions cli/azd/extensions/azure.ai.agents/internal/cmd/files.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,31 @@ type filesFlags struct {

// isVNextEnabled checks whether hosted agent vnext is enabled
// by looking at both the OS environment and the azd environment.
func isVNextEnabled(ctx context.Context) bool {
// An optional AzdClient can be passed to avoid creating a new connection;
// if nil, the function creates one internally.
func isVNextEnabled(ctx context.Context, client ...*azdext.AzdClient) bool {
if v := os.Getenv("enableHostedAgentVNext"); v != "" {
if enabled, err := strconv.ParseBool(v); err == nil && enabled {
return true
}
}

// Best-effort check of azd environment
azdClient, err := azdext.NewAzdClient()
if err != nil {
return false
// Use provided client or create one for best-effort azd env check
var azdClient *azdext.AzdClient
var closeClient bool
if len(client) > 0 && client[0] != nil {
azdClient = client[0]
} else {
var err error
azdClient, err = azdext.NewAzdClient()
if err != nil {
return false
}
closeClient = true
}
if closeClient {
defer azdClient.Close()
}
defer azdClient.Close()

azdEnv, err := loadAzdEnvironment(ctx, azdClient)
if err != nil {
Expand Down
13 changes: 9 additions & 4 deletions cli/azd/extensions/azure.ai.agents/internal/cmd/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -1231,16 +1231,21 @@ func (a *InitAction) populateContainerSettings(ctx context.Context) (*project.Co

selected := project.ResourceTiers[*resp.Value]

return &project.ContainerSettings{
containerSettings := &project.ContainerSettings{
Resources: &project.ResourceSettings{
Memory: selected.Memory,
Cpu: selected.Cpu,
},
Scale: &project.ScaleSettings{
}

if !isVNextEnabled(ctx, a.azdClient) {
containerSettings.Scale = &project.ScaleSettings{
MinReplicas: project.DefaultMinReplicas,
MaxReplicas: project.DefaultMaxReplicas,
},
}, nil
}
}

return containerSettings, nil
}

func downloadGithubManifest(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -742,10 +742,13 @@ func (a *InitFromCodeAction) addToProject(ctx context.Context, targetDir string,
Memory: project.DefaultMemory,
Cpu: project.DefaultCpu,
},
Scale: &project.ScaleSettings{
}

if !isVNextEnabled(ctx) {
agentConfig.Container.Scale = &project.ScaleSettings{
MinReplicas: project.DefaultMinReplicas,
MaxReplicas: project.DefaultMaxReplicas,
},
}
}

agentConfig.Deployments = a.deploymentDetails
Expand Down
20 changes: 11 additions & 9 deletions cli/azd/extensions/azure.ai.agents/internal/cmd/listen.go
Original file line number Diff line number Diff line change
Expand Up @@ -287,14 +287,14 @@ func populateContainerSettings(ctx context.Context, azdClient *azdext.AzdClient,
}
}

// Check and populate Scale
if containerSettings.Scale == nil {
result.Scale = &project.ScaleSettings{}
} else {
// Preserve existing Scale settings from azure.yaml, but don't create new defaults for VNext
if containerSettings.Scale != nil {
result.Scale = &project.ScaleSettings{
MinReplicas: containerSettings.Scale.MinReplicas,
MaxReplicas: containerSettings.Scale.MaxReplicas,
}
} else if !isVNextEnabled(ctx, azdClient) {
result.Scale = &project.ScaleSettings{}
}

// Set default values if zero or empty
Expand All @@ -306,12 +306,14 @@ func populateContainerSettings(ctx context.Context, azdClient *azdext.AzdClient,
result.Resources.Cpu = project.DefaultCpu
}

if result.Scale.MinReplicas == 0 {
result.Scale.MinReplicas = project.DefaultMinReplicas
}
if result.Scale != nil {
if result.Scale.MinReplicas == 0 {
result.Scale.MinReplicas = project.DefaultMinReplicas
}

if result.Scale.MaxReplicas == 0 {
result.Scale.MaxReplicas = project.DefaultMaxReplicas
if result.Scale.MaxReplicas == 0 {
result.Scale.MaxReplicas = project.DefaultMaxReplicas
}
}

// Update the container settings in the existing config
Expand Down
Loading