diff --git a/cli/azd/pkg/apphost/aca_ingress.go b/cli/azd/pkg/apphost/aca_ingress.go index 00464b398f1..c16217ad5e4 100644 --- a/cli/azd/pkg/apphost/aca_ingress.go +++ b/cli/azd/pkg/apphost/aca_ingress.go @@ -251,6 +251,7 @@ func pickIngress(endpointByTargetPortProperties map[string]*acaPort, httpIngress finalIngress.TargetPort = props.port if finalIngress.TargetPort == 0 { finalIngress.TargetPort = defaultPort + finalIngress.UsingDefaultPort = true } finalIngress.Transport = acaIngressSchemaHttp if props.hasHttp2 { diff --git a/cli/azd/pkg/apphost/aca_ingress_test.go b/cli/azd/pkg/apphost/aca_ingress_test.go index 3971adb4f21..19e6fd95d79 100644 --- a/cli/azd/pkg/apphost/aca_ingress_test.go +++ b/cli/azd/pkg/apphost/aca_ingress_test.go @@ -41,6 +41,7 @@ func TestBuildAcaIngress(t *testing.T) { Transport: acaIngressTransportHttp2, AllowInsecure: true, AdditionalPortMappings: []genContainerAppIngressAdditionalPortMappings(nil), + UsingDefaultPort: true, } ingress, ingressBinding, err := buildAcaIngress(bindings, 8080) assert.NoError(t, err) @@ -176,6 +177,7 @@ func TestBuildAcaIngress(t *testing.T) { }, }, }, + UsingDefaultPort: true, } ingress, ingressBinding, err := buildAcaIngress(bindings, 8080) assert.NoError(t, err) diff --git a/cli/azd/pkg/apphost/generate.go b/cli/azd/pkg/apphost/generate.go index 0141da80315..536aee712d2 100644 --- a/cli/azd/pkg/apphost/generate.go +++ b/cli/azd/pkg/apphost/generate.go @@ -178,7 +178,19 @@ func ContainerAppManifestTemplateForProject( var buf bytes.Buffer - tmplCtx := generator.containerAppTemplateContexts[projectName] + type yamlTemplateCtx struct { + genContainerAppManifestTemplateContext + TargetPortExpression string + } + tCtx := generator.containerAppTemplateContexts[projectName] + tmplCtx := yamlTemplateCtx{ + genContainerAppManifestTemplateContext: tCtx, + TargetPortExpression: fmt.Sprintf("{{ targetPortOrDefault %d }}", tCtx.Ingress.TargetPort), + } + if tCtx.Ingress.TargetPort != 0 && !tCtx.Ingress.UsingDefaultPort { + // not using default port makes this to be a non-changing value + tmplCtx.TargetPortExpression = fmt.Sprintf("%d", tCtx.Ingress.TargetPort) + } err := genTemplates.ExecuteTemplate(&buf, "containerApp.tmpl.yaml", tmplCtx) if err != nil { diff --git a/cli/azd/pkg/apphost/generate_types.go b/cli/azd/pkg/apphost/generate_types.go index 328703087b0..cdd8eae7fca 100644 --- a/cli/azd/pkg/apphost/generate_types.go +++ b/cli/azd/pkg/apphost/generate_types.go @@ -49,6 +49,7 @@ type genContainerAppIngress struct { genContainerAppIngressPort Transport string AllowInsecure bool + UsingDefaultPort bool AdditionalPortMappings []genContainerAppIngressAdditionalPortMappings } diff --git a/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-kafka.snap b/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-kafka.snap index 1ad9c25dddc..4aa86219d30 100644 --- a/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-kafka.snap +++ b/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-kafka.snap @@ -14,7 +14,7 @@ properties: autoConfigureDataProtection: true ingress: external: false - targetPort: {{ targetPortOrDefault 9092 }} + targetPort: 9092 exposedPort: 6000 transport: tcp allowInsecure: false diff --git a/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-my-sql-abstract.snap b/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-my-sql-abstract.snap index 0f3a0932268..32f741b9eb1 100644 --- a/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-my-sql-abstract.snap +++ b/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-my-sql-abstract.snap @@ -14,7 +14,7 @@ properties: autoConfigureDataProtection: true ingress: external: false - targetPort: {{ targetPortOrDefault 3306 }} + targetPort: 3306 transport: tcp allowInsecure: false registries: diff --git a/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-noVolume.snap b/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-noVolume.snap index c5473480c96..b8cc2a4690c 100644 --- a/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-noVolume.snap +++ b/cli/azd/pkg/apphost/testdata/TestAspireContainerGeneration-noVolume.snap @@ -14,7 +14,7 @@ properties: autoConfigureDataProtection: true ingress: external: false - targetPort: {{ targetPortOrDefault 3306 }} + targetPort: 3306 transport: tcp allowInsecure: false registries: diff --git a/cli/azd/pkg/apphost/testdata/TestAspireDockerGeneration-nodeapp.snap b/cli/azd/pkg/apphost/testdata/TestAspireDockerGeneration-nodeapp.snap index 65565585a02..a4c05edb20b 100644 --- a/cli/azd/pkg/apphost/testdata/TestAspireDockerGeneration-nodeapp.snap +++ b/cli/azd/pkg/apphost/testdata/TestAspireDockerGeneration-nodeapp.snap @@ -14,7 +14,7 @@ properties: autoConfigureDataProtection: true ingress: external: true - targetPort: {{ targetPortOrDefault 3000 }} + targetPort: 3000 transport: http allowInsecure: false registries: diff --git a/cli/azd/resources/apphost/templates/containerApp.tmpl.yamlt b/cli/azd/resources/apphost/templates/containerApp.tmpl.yamlt index 1a9f6ea027a..411e1bc4670 100644 --- a/cli/azd/resources/apphost/templates/containerApp.tmpl.yamlt +++ b/cli/azd/resources/apphost/templates/containerApp.tmpl.yamlt @@ -46,7 +46,7 @@ properties: {{- end}} {{- end}} external: {{ .Ingress.External }} - targetPort: {{ "{{ targetPortOrDefault " }}{{ .Ingress.TargetPort }}{{ " }}" }} + targetPort: {{ .TargetPortExpression }} {{- if gt .Ingress.ExposedPort 0 }} exposedPort: {{ .Ingress.ExposedPort }} {{- end}} diff --git a/cli/azd/test/functional/testdata/snaps/aspire-full/AspireAzdTests.AppHost/infra/pubsub.tmpl.yaml b/cli/azd/test/functional/testdata/snaps/aspire-full/AspireAzdTests.AppHost/infra/pubsub.tmpl.yaml index 5ab8afb66e1..0a8f0404fb1 100644 --- a/cli/azd/test/functional/testdata/snaps/aspire-full/AspireAzdTests.AppHost/infra/pubsub.tmpl.yaml +++ b/cli/azd/test/functional/testdata/snaps/aspire-full/AspireAzdTests.AppHost/infra/pubsub.tmpl.yaml @@ -14,7 +14,7 @@ properties: autoConfigureDataProtection: true ingress: external: false - targetPort: {{ targetPortOrDefault 6379 }} + targetPort: 6379 transport: tcp allowInsecure: false registries: