in controllers/manager/staticgatewayconfiguration_controller.go [125:183]
func (r *StaticGatewayConfigurationReconciler) reconcile(
ctx context.Context,
gwConfig *egressgatewayv1alpha1.StaticGatewayConfiguration,
) error {
log := log.FromContext(ctx)
log.Info(fmt.Sprintf("Reconciling staticGatewayConfiguration %s/%s", gwConfig.Namespace, gwConfig.Name))
mc := metrics.NewMetricsContext(
os.Getenv(consts.PodNamespaceEnvKey),
"reconcile_static_gateway_configuration",
"n/a",
"n/a",
strings.ToLower(fmt.Sprintf("%s/%s", gwConfig.Namespace, gwConfig.Name)),
) // no subscription_id/resource_group for SGC reconciler
succeeded := false
defer func() { mc.ObserveControllerReconcileMetrics(succeeded) }()
if err := validate(gwConfig); err != nil {
r.Recorder.Event(gwConfig, corev1.EventTypeWarning, "InvalidSpec", err.Error())
return err
}
if !controllerutil.ContainsFinalizer(gwConfig, consts.SGCFinalizerName) {
log.Info("Adding finalizer")
controllerutil.AddFinalizer(gwConfig, consts.SGCFinalizerName)
err := r.Update(ctx, gwConfig)
if err != nil {
log.Error(err, "failed to add finalizer")
return err
}
}
_, err := controllerutil.CreateOrPatch(ctx, r, gwConfig, func() error {
// reconcile wireguard keypair
if err := r.reconcileWireguardKey(ctx, gwConfig); err != nil {
log.Error(err, "failed to reconcile wireguard key")
r.Recorder.Event(gwConfig, corev1.EventTypeWarning, "ReconcileError", err.Error())
return err
}
// reconcile lbconfig
if err := r.reconcileGatewayLBConfig(ctx, gwConfig); err != nil {
log.Error(err, "failed to reconcile gateway LB configuration")
r.Recorder.Event(gwConfig, corev1.EventTypeWarning, "ReconcileError", err.Error())
return err
}
return nil
})
prefix, reconcileStatus := "<pending>", "Reconciling"
if gwConfig.Status.EgressIpPrefix != "" {
prefix, reconcileStatus = gwConfig.Status.EgressIpPrefix, "Reconciled"
}
r.Recorder.Eventf(gwConfig, corev1.EventTypeNormal, reconcileStatus, "StaticGatewayConfiguration provisioned with egress prefix %s", prefix)
log.Info("staticGatewayConfiguration reconciled")
succeeded = true
return err
}