Skip to content

Commit b8191e9

Browse files
Merge pull request #40 from codefly-dev/fix/declared-health-probes
Honor declared endpoint health in Kubernetes probes
2 parents 59c2f0c + 9e58ce8 commit b8191e9

13 files changed

Lines changed: 550 additions & 91 deletions

File tree

‎builder.go‎

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99

1010
"github.com/codefly-dev/core/agents/communicate"
1111
"github.com/codefly-dev/core/agents/services"
12-
"github.com/codefly-dev/core/agents/services/sbom"
1312
"github.com/codefly-dev/core/agents/services/upgrade"
1413
"github.com/codefly-dev/core/companions/proto"
1514
basev0 "github.com/codefly-dev/core/generated/go/codefly/base/v0"
@@ -215,38 +214,10 @@ func (s *Builder) SBOM(ctx context.Context, req *builderv0.SBOMRequest) (*builde
215214
return s.imageSBOM(ctx, req.GetSubjects())
216215
}
217216

218-
// imageSBOM inventories each subject, resolving where the image actually lives.
219-
//
220-
// Neither SBOMRequest nor ImageSubject carries a scanner source, and both
221-
// sources are real for this agent: release paths push, so the registry
222-
// resolves them, while `codefly ci build` builds with --load and leaves an
223-
// image whose only identity is its local image ID. Assuming either one strands
224-
// the other — a registry lookup of a --load image fails with "pull access
225-
// denied" for an image sitting in the daemon, fully scannable.
226-
//
227-
// The registry is tried first so a stale local copy can never shadow what was
228-
// actually published; the daemon answers only for a reference the registry
229-
// cannot serve. When neither resolves, both causes are reported, because the
230-
// registry failure on its own does not explain why the daemon had nothing
231-
// either. Empty subjects are the caller's precondition failure, not a
232-
// resolution failure, so they never reach a scanner.
217+
// imageSBOM preserves each caller-supplied immutable image identity and source.
218+
// Core refuses unpinned subjects and never substitutes another scanner source.
233219
func (s *Builder) imageSBOM(ctx context.Context, subjects []*builderv0.ImageSubject) (*builderv0.SBOMResponse, error) {
234-
if len(subjects) == 0 {
235-
return s.Base.Builder.SBOMImageSubjectsRequired()
236-
}
237-
registry, err := s.Base.Builder.SBOMImages(ctx, subjects, sbom.SourceRegistry)
238-
if err != nil || registry.GetState().GetState() != builderv0.SBOMStatus_ERROR {
239-
return registry, err
240-
}
241-
daemon, err := s.Base.Builder.SBOMImages(ctx, subjects, sbom.SourceDockerDaemon)
242-
if err != nil {
243-
return nil, err
244-
}
245-
if daemon.GetState().GetState() == builderv0.SBOMStatus_ERROR {
246-
return s.Base.Builder.SBOMImageError(fmt.Errorf("registry: %s; docker daemon: %s",
247-
registry.GetState().GetMessage(), daemon.GetState().GetMessage()))
248-
}
249-
return daemon, nil
220+
return s.Base.Builder.SBOMImages(ctx, subjects)
250221
}
251222

252223
// Upgrade bumps Python dependencies in requirements.txt (pip list
@@ -269,6 +240,7 @@ func (s *Builder) Upgrade(ctx context.Context, req *builderv0.UpgradeRequest) (*
269240

270241
// Parameters is the template parameter set for the k8s deployment.
271242
type Parameters struct {
243+
Probes string
272244
// GRPCEnabled adds the gRPC containerPort and Service port to the rendered
273245
// manifests. GRPCPort is the fixed in-cluster port the grpc.aio listener
274246
// binds (the app defaults to it when CODEFLY_GRPC_PORT is unset).
@@ -280,6 +252,21 @@ type Parameters struct {
280252
func (s *Builder) Deploy(ctx context.Context, req *builderv0.DeploymentRequest) (*builderv0.DeploymentResponse, error) {
281253
defer s.Wool.Catch()
282254

255+
// The current Core manifest profile requires all three intents. Require
256+
// an authored startup/restart policy instead of inventing one from readiness.
257+
plan := resources.PlanEndpointProbes(s.FastAPI.RestEndpoint)
258+
if plan.Startup == nil || plan.Liveness == nil {
259+
return nil, fmt.Errorf("the Kubernetes manifest profile requires explicit endpoint health.startup and health.liveness; readiness is not a restart policy")
260+
}
261+
probes, err := deploymentProbes(s.FastAPI.RestEndpoint)
262+
if err != nil {
263+
return nil, err
264+
}
265+
for _, endpoint := range s.Endpoints {
266+
if endpoint.GetName() != s.FastAPI.RestEndpoint.GetName() && endpoint.GetHealth() != nil {
267+
return nil, fmt.Errorf("declared health on additional endpoint %q requires a combined deployment probe; refusing to ignore it", endpoint.GetName())
268+
}
269+
}
283270
return s.Base.Builder.DeployKustomize(ctx, req, services.KustomizeDeployment{
284271
EnvironmentVariables: s.EnvironmentVariables,
285272
Templates: deploymentFS,
@@ -288,6 +275,7 @@ func (s *Builder) Deploy(ctx context.Context, req *builderv0.DeploymentRequest)
288275
DependencyConfigurations: true,
289276
},
290277
Parameters: Parameters{
278+
Probes: probes,
291279
GRPCEnabled: s.FastAPI.Settings.GRPCServer.Enabled,
292280
GRPCPort: int(standards.Port(standards.GRPC)),
293281
},
@@ -373,6 +361,14 @@ func (s *Builder) Create(ctx context.Context, _ *builderv0.CreateRequest) (*buil
373361
func (s *Builder) CreateEndpoints(ctx context.Context) error {
374362
openapiFile := s.Local("openapi/api.swagger.json")
375363
endpoint := s.Base.BaseEndpoint(standards.REST)
364+
// New scaffolds explicitly declare the policy supported by their /version
365+
// route. Existing authored services are loaded, never rewritten by Deploy.
366+
endpoint.Health = &resources.Health{
367+
Readiness: &resources.Probe{Kind: resources.ProbeKindHTTP, Path: "/version", Statuses: []string{"200"}},
368+
Startup: &resources.Probe{Kind: resources.ProbeKindTransport, Period: "2s", FailureThreshold: 30},
369+
Liveness: &resources.Probe{Kind: resources.ProbeKindTransport},
370+
}
371+
376372
if s.FastAPI.Settings.PublicEndpoint {
377373
endpoint.Visibility = resources.VisibilityPublic
378374
}
@@ -390,6 +386,10 @@ func (s *Builder) CreateEndpoints(ctx context.Context) error {
390386
if err != nil {
391387
return s.Wool.Wrapf(err, "cannot create openapi api")
392388
}
389+
api.Health, err = endpoint.Health.Proto(api.GetApi())
390+
if err != nil {
391+
return s.Wool.Wrapf(err, "cannot declare scaffold health")
392+
}
393393
s.FastAPI.RestEndpoint = api
394394
s.Endpoints = []*basev0.Endpoint{s.FastAPI.RestEndpoint}
395395

‎deployment_test.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
)
1111

1212
func TestDeploymentTemplates(t *testing.T) {
13-
destination := agenttesting.AssertKustomizeTemplates(t, deploymentFS, Parameters{})
13+
destination := agenttesting.AssertKustomizeTemplates(t, deploymentFS, deploymentTestParameters(t, Parameters{}))
1414

1515
rendered, err := os.ReadFile(filepath.Join(destination, "base", "deployment.yaml"))
1616
require.NoError(t, err)

‎go.mod‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ module github.com/codefly-dev/service-python-fastapi
33
go 1.27.0
44

55
require (
6-
github.com/codefly-dev/core v0.3.29
6+
github.com/codefly-dev/core v0.3.35
77
github.com/codefly-dev/service-python v0.0.62
88
github.com/stretchr/testify v1.12.1
9-
google.golang.org/grpc v1.83.1
9+
google.golang.org/grpc v1.83.2
1010
gopkg.in/yaml.v3 v3.0.1
1111
)
1212

@@ -119,22 +119,22 @@ require (
119119
github.com/yuin/goldmark v1.8.6 // indirect
120120
github.com/yusufpapurcu/wmi v1.2.4 // indirect
121121
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
122-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.70.0 // indirect
122+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.71.0 // indirect
123123
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0 // indirect
124124
go.opentelemetry.io/otel v1.46.0 // indirect
125125
go.opentelemetry.io/otel/metric v1.46.0 // indirect
126126
go.opentelemetry.io/otel/trace v1.46.0 // indirect
127127
go.yaml.in/yaml/v2 v2.4.4 // indirect
128128
go.yaml.in/yaml/v3 v3.0.5 // indirect
129-
golang.org/x/crypto v0.55.0 // indirect
129+
golang.org/x/crypto v0.57.0 // indirect
130130
golang.org/x/exp v0.0.0-20260820142414-ca536658362e // indirect
131-
golang.org/x/mod v0.40.0 // indirect
132-
golang.org/x/net v0.58.0 // indirect
131+
golang.org/x/mod v0.41.0 // indirect
132+
golang.org/x/net v0.59.0 // indirect
133133
golang.org/x/sys v0.48.0 // indirect
134-
golang.org/x/term v0.45.0 // indirect
135-
golang.org/x/text v0.41.0 // indirect
134+
golang.org/x/term v0.46.0 // indirect
135+
golang.org/x/text v0.42.0 // indirect
136136
google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688 // indirect
137-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688 // indirect
137+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260825221802-da73d73af1c5 // indirect
138138
google.golang.org/protobuf v1.36.12 // indirect
139139
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
140140
gopkg.in/warnings.v0 v0.1.2 // indirect

‎go.sum‎

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJ
4343
github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
4444
github.com/cloudflare/circl v1.6.5 h1:O64F26HEqNhznd/hrC5KZXVKYuKM2rx4deZDTc4ihQA=
4545
github.com/cloudflare/circl v1.6.5/go.mod h1:h5LNyxAc5nTue9DS5jT+48en2PSDYt3zdGnz5OstK6c=
46-
github.com/codefly-dev/core v0.3.29 h1:S4jgxOt5cnPX1zfv1xPheskOjfY2UR5gVQeb+AP1DFY=
47-
github.com/codefly-dev/core v0.3.29/go.mod h1:guGVP8tyWEjpUBwdP588jXb/BwADsrzlhx7WtmZSn20=
46+
github.com/codefly-dev/core v0.3.35 h1:yQxXzNKy4XJ+Odv94pxI1N1sa+wnkuYiICMlJmJe1sc=
47+
github.com/codefly-dev/core v0.3.35/go.mod h1:f5LY9gRu5lpBQ0tNKujP0q6MF9K8fUnbYvItuHaUWlY=
4848
github.com/codefly-dev/gortk v0.2.0 h1:7bOlS5valYz2zil+fZctQNcPCYBcPj86abcw9N8h1hQ=
4949
github.com/codefly-dev/gortk v0.2.0/go.mod h1:dDWUMFgAP063OCGhTEpV7FFUj9+zTcxxO/nV80VKEwg=
5050
github.com/codefly-dev/service-python v0.0.62 h1:quru4JzJi8v5nhiYTzXjl2SswXIasyeYq/iaM6TvN4k=
@@ -307,8 +307,8 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo
307307
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
308308
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
309309
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
310-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.70.0 h1:oECp5f+hN7nkwjU/8BxQ/q23bGPb8FIrD839owX222E=
311-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.70.0/go.mod h1:DqEFwLumhzMBDQv9PcWbyoDxHI/4lAk6CM4nJBH39sc=
310+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.71.0 h1:B2h3uqicet1CT2N5TOFhS+Gq++9i0/CLmaxvhmhtP5s=
311+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.71.0/go.mod h1:dylvB+ZiiwMvsDij9O84Uy7SijLgHMX4mbkncds+4Sw=
312312
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0 h1:LMuyCAyfalSjDyjdC65nK6N0zoTT63+E/u95X0JovZI=
313313
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0/go.mod h1:085m8qbm4hgc8rZWGDEa4vmyyo2c3nPxUslYUKUIU04=
314314
go.opentelemetry.io/otel v1.46.0 h1:FHt5/CDyVxi/8IM1CH7VE/rRgq3kLHa2mSTVMO8AWyc=
@@ -321,8 +321,8 @@ go.opentelemetry.io/otel/metric v1.46.0 h1:yBnkXvgV7AXFILZc5K6IZe/CBFF3OS7BJ8ov6
321321
go.opentelemetry.io/otel/metric v1.46.0/go.mod h1:iPmdWqifKUdzziPkvvzIJXITl56fQx2mGM/DHLB3/2o=
322322
go.opentelemetry.io/otel/sdk v1.46.0 h1:h5CNQQjEbuQXY/JfZtgt3i7HVFV3aHPO2OAwO2eTYPI=
323323
go.opentelemetry.io/otel/sdk v1.46.0/go.mod h1:GAERFXFt5SYCEB+YiKUbMBeza6UaDH7GmGOZEfh2gSM=
324-
go.opentelemetry.io/otel/sdk/metric v1.45.0 h1:oVFszMfyj1Am6s24Vtc7wBb8BKLcwepJjNEYILuiE3o=
325-
go.opentelemetry.io/otel/sdk/metric v1.45.0/go.mod h1:vUWUxDZvu1WVRj8JA8S0AdhsPrZoDpA2DdZauIh4mDA=
324+
go.opentelemetry.io/otel/sdk/metric v1.46.0 h1:0piZ26EG4RBfebb2jhDH6ERCYHoVWduc3kLgPCwSnSE=
325+
go.opentelemetry.io/otel/sdk/metric v1.46.0/go.mod h1:I1PbKrdVc8Qu8HYVDNtqVIwLwjNrhsV/uFuxfwg8mO4=
326326
go.opentelemetry.io/otel/trace v1.46.0 h1:OULy7ccdJnZtJ0UDYFOIGaCmiWzJ8Vi2G/Rsu60qs1c=
327327
go.opentelemetry.io/otel/trace v1.46.0/go.mod h1:J7GAXweO77XSFkB/rmAqk9D6ihszhFjLU+d9WuUxDLI=
328328
go.opentelemetry.io/proto/otlp v1.11.0 h1:5rrYs0Ykyj50sdU/JU0x8etU+LubXWb+gED6TbEdMIk=
@@ -334,15 +334,15 @@ go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ=
334334
go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw=
335335
go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg=
336336
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
337-
golang.org/x/crypto v0.55.0 h1:+KWHjbgOaAQ66dh/YlkZKHlz9ZUlq61AFirAR9ntP8M=
338-
golang.org/x/crypto v0.55.0/go.mod h1:uq0V9dE/fzQuJtbnL+2EhWOE63vo164FY8xqEnV9xis=
337+
golang.org/x/crypto v0.57.0 h1:3ZVCjf8Ggz7zneR/EHRVx68Ctf+2pmIMP2UFhh9cC6M=
338+
golang.org/x/crypto v0.57.0/go.mod h1:Fdz0i5U6CoizGwLda9DttjSk6qlZo25zYNtR+ycvuZA=
339339
golang.org/x/exp v0.0.0-20260820142414-ca536658362e h1:01Ju2A/fZKkci4zqx0eZxw//DnRYOnBiGJG14hFBhO8=
340340
golang.org/x/exp v0.0.0-20260820142414-ca536658362e/go.mod h1:zeBbvyFKDaLwa7CH/zI8KXt7gTl14SF7sO08Pl5jBCM=
341-
golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=
342-
golang.org/x/mod v0.40.0/go.mod h1:0/weTWkPWGBikyTWAX3dkjVztMmBA5hM0DH6BElSupE=
341+
golang.org/x/mod v0.41.0 h1:qJmnOUb4YB+FsEuM3HcWucdZASCPGhsX6uljO6pog0c=
342+
golang.org/x/mod v0.41.0/go.mod h1:Ek9pY8RKWXwsWvd3rQiHYtMqkjSUV+s1Rj7j4H5Ur6o=
343343
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
344-
golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
345-
golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
344+
golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues=
345+
golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg=
346346
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
347347
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
348348
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -355,22 +355,22 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
355355
golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo=
356356
golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
357357
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
358-
golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0=
359-
golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w=
358+
golang.org/x/term v0.46.0 h1:3+OXuTbaKDgwk8jTi3aSLHRlmWqHEUDUtxnbFigO4YE=
359+
golang.org/x/term v0.46.0/go.mod h1:+K02xbkittuwc0Am4abfA3Fc+XRGXkvBXNO88NCXPoc=
360360
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
361-
golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
362-
golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
361+
golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
362+
golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
363363
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
364364
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
365365
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
366366
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
367367
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
368368
google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688 h1:ax2KzoSRIZU/M0cIxri3pKxy99vniH1PVxWC6si/eZI=
369369
google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688/go.mod h1:1RJ9BQGyNdZwkGc1eTqkErfRZ6RJyYPHZo73BZ1vQqI=
370-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688 h1:cYNAzI2sUwhmCcoj9TxvihSrqsxt6uIkj3rDRhSDmW4=
371-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688/go.mod h1:DjtHYE8FKJLivXcBEjGwndXfIC23G0VpXiXKqG179uA=
372-
google.golang.org/grpc v1.83.1 h1:HIO0+BEtBP6soyqvqC8sNUjZ7bTs+0hFQuFF+RAy++Y=
373-
google.golang.org/grpc v1.83.1/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ=
370+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260825221802-da73d73af1c5 h1:1VUiZAXyC+zmiFYi+WLtBzr68Cj8wOofHjjrA/kkizc=
371+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260825221802-da73d73af1c5/go.mod h1:DjtHYE8FKJLivXcBEjGwndXfIC23G0VpXiXKqG179uA=
372+
google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU=
373+
google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8=
374374
google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc=
375375
google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
376376
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

‎grpc_test.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ func TestGRPCEndpointReloadsContract(t *testing.T) {
193193
// TestDeploymentRendersGRPCPort proves the gRPC container/service ports appear
194194
// only when the deployment parameters opt in.
195195
func TestDeploymentRendersGRPCPort(t *testing.T) {
196-
enabled := agenttesting.AssertKustomizeTemplates(t, deploymentFS, Parameters{GRPCEnabled: true, GRPCPort: 9090})
196+
enabled := agenttesting.AssertKustomizeTemplates(t, deploymentFS, deploymentTestParameters(t, Parameters{GRPCEnabled: true, GRPCPort: 9090}))
197197
svc, err := os.ReadFile(filepath.Join(enabled, "base", "service.yaml"))
198198
require.NoError(t, err)
199199
require.Contains(t, string(svc), "grpc-port")
@@ -203,7 +203,7 @@ func TestDeploymentRendersGRPCPort(t *testing.T) {
203203
require.NoError(t, err)
204204
require.Contains(t, string(deployment), "containerPort: 9090")
205205

206-
disabled := agenttesting.AssertKustomizeTemplates(t, deploymentFS, Parameters{})
206+
disabled := agenttesting.AssertKustomizeTemplates(t, deploymentFS, deploymentTestParameters(t, Parameters{}))
207207
svc, err = os.ReadFile(filepath.Join(disabled, "base", "service.yaml"))
208208
require.NoError(t, err)
209209
require.NotContains(t, string(svc), "grpc-port")

0 commit comments

Comments
 (0)