Skip to content

Commit 0c62c7c

Browse files
committed
[feat aga] Implement endpoint group deployer with port override conflict resolution
1 parent 90a664a commit 0c62c7c

15 files changed

+3551
-79
lines changed

controllers/aga/globalaccelerator_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,8 @@ func (r *globalAcceleratorReconciler) reconcileGlobalAcceleratorResources(ctx co
282282
_, fatalErrors := r.endpointLoader.LoadEndpoints(ctx, ga, endpoints)
283283
if len(fatalErrors) > 0 {
284284
err := fmt.Errorf("failed to load endpoints: %v", fatalErrors[0])
285-
r.logger.Error(err, "Fatal error loading endpoints")
286-
285+
r.eventRecorder.Event(ga, corev1.EventTypeWarning, k8s.GlobalAcceleratorEventReasonFailedEndpointLoad, fmt.Sprintf("Failed to reconcile due to %v", err))
286+
r.logger.Error(err, fmt.Sprintf("fatal error loading endpoints for %v", k8s.NamespacedName(ga)))
287287
// Handle other endpoint loading errors
288288
if statusErr := r.statusUpdater.UpdateStatusFailure(ctx, ga, agadeploy.EndpointLoadFailed, err.Error()); statusErr != nil {
289289
r.logger.Error(statusErr, "Failed to update GlobalAccelerator status after endpoint load failure")
@@ -315,7 +315,7 @@ func (r *globalAcceleratorReconciler) reconcileGlobalAcceleratorResources(ctx co
315315
r.metricsCollector.ObserveControllerReconcileLatency(controllerName, MetricStageDeployStack, deployStackFn)
316316
if err != nil {
317317
r.eventRecorder.Event(ga, corev1.EventTypeWarning, k8s.GlobalAcceleratorEventReasonFailedDeploy, fmt.Sprintf("Failed to deploy stack due to %v", err))
318-
318+
r.logger.Error(err, fmt.Sprintf("Failed to deploy stack for: %v", k8s.NamespacedName(ga)))
319319
// Update status to indicate deployment failure
320320
if statusErr := r.statusUpdater.UpdateStatusFailure(ctx, ga, agadeploy.DeploymentFailed, fmt.Sprintf("Failed to deploy stack: %v", err)); statusErr != nil {
321321
r.logger.Error(statusErr, "Failed to update GlobalAccelerator status after deployment failure")

pkg/aws/services/globalaccelerator.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,21 @@ type GlobalAccelerator interface {
4141
// ListListenersForAccelerator lists all listeners for an accelerator.
4242
ListListenersForAcceleratorWithContext(ctx context.Context, input *globalaccelerator.ListListenersInput) (*globalaccelerator.ListListenersOutput, error)
4343

44+
// CreateEndpointGroup creates a new endpoint group.
45+
CreateEndpointGroupWithContext(ctx context.Context, input *globalaccelerator.CreateEndpointGroupInput) (*globalaccelerator.CreateEndpointGroupOutput, error)
46+
47+
// DescribeEndpointGroup describes an endpoint group.
48+
DescribeEndpointGroupWithContext(ctx context.Context, input *globalaccelerator.DescribeEndpointGroupInput) (*globalaccelerator.DescribeEndpointGroupOutput, error)
49+
50+
// UpdateEndpointGroup updates an endpoint group.
51+
UpdateEndpointGroupWithContext(ctx context.Context, input *globalaccelerator.UpdateEndpointGroupInput) (*globalaccelerator.UpdateEndpointGroupOutput, error)
52+
53+
// DeleteEndpointGroup deletes an endpoint group.
54+
DeleteEndpointGroupWithContext(ctx context.Context, input *globalaccelerator.DeleteEndpointGroupInput) (*globalaccelerator.DeleteEndpointGroupOutput, error)
55+
56+
// wrapper to ListEndpointGroups API, which aggregates paged results into list.
57+
ListEndpointGroupsAsList(ctx context.Context, input *globalaccelerator.ListEndpointGroupsInput) ([]types.EndpointGroup, error)
58+
4459
// TagResource tags a resource.
4560
TagResourceWithContext(ctx context.Context, input *globalaccelerator.TagResourceInput) (*globalaccelerator.TagResourceOutput, error)
4661

@@ -192,3 +207,52 @@ func (c *defaultGlobalAccelerator) ListListenersAsList(ctx context.Context, inpu
192207
}
193208
return result, nil
194209
}
210+
211+
func (c *defaultGlobalAccelerator) CreateEndpointGroupWithContext(ctx context.Context, input *globalaccelerator.CreateEndpointGroupInput) (*globalaccelerator.CreateEndpointGroupOutput, error) {
212+
client, err := c.awsClientsProvider.GetGlobalAcceleratorClient(ctx, "CreateEndpointGroup")
213+
if err != nil {
214+
return nil, err
215+
}
216+
return client.CreateEndpointGroup(ctx, input)
217+
}
218+
219+
func (c *defaultGlobalAccelerator) DescribeEndpointGroupWithContext(ctx context.Context, input *globalaccelerator.DescribeEndpointGroupInput) (*globalaccelerator.DescribeEndpointGroupOutput, error) {
220+
client, err := c.awsClientsProvider.GetGlobalAcceleratorClient(ctx, "DescribeEndpointGroup")
221+
if err != nil {
222+
return nil, err
223+
}
224+
return client.DescribeEndpointGroup(ctx, input)
225+
}
226+
227+
func (c *defaultGlobalAccelerator) UpdateEndpointGroupWithContext(ctx context.Context, input *globalaccelerator.UpdateEndpointGroupInput) (*globalaccelerator.UpdateEndpointGroupOutput, error) {
228+
client, err := c.awsClientsProvider.GetGlobalAcceleratorClient(ctx, "UpdateEndpointGroup")
229+
if err != nil {
230+
return nil, err
231+
}
232+
return client.UpdateEndpointGroup(ctx, input)
233+
}
234+
235+
func (c *defaultGlobalAccelerator) DeleteEndpointGroupWithContext(ctx context.Context, input *globalaccelerator.DeleteEndpointGroupInput) (*globalaccelerator.DeleteEndpointGroupOutput, error) {
236+
client, err := c.awsClientsProvider.GetGlobalAcceleratorClient(ctx, "DeleteEndpointGroup")
237+
if err != nil {
238+
return nil, err
239+
}
240+
return client.DeleteEndpointGroup(ctx, input)
241+
}
242+
243+
func (c *defaultGlobalAccelerator) ListEndpointGroupsAsList(ctx context.Context, input *globalaccelerator.ListEndpointGroupsInput) ([]types.EndpointGroup, error) {
244+
var result []types.EndpointGroup
245+
client, err := c.awsClientsProvider.GetGlobalAcceleratorClient(ctx, "ListEndpointGroups")
246+
if err != nil {
247+
return nil, err
248+
}
249+
paginator := globalaccelerator.NewListEndpointGroupsPaginator(client, input)
250+
for paginator.HasMorePages() {
251+
output, err := paginator.NextPage(ctx)
252+
if err != nil {
253+
return nil, err
254+
}
255+
result = append(result, output.EndpointGroups...)
256+
}
257+
return result, nil
258+
}

pkg/aws/services/globalaccelerator_mocks.go

Lines changed: 75 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)