Skip to content

Commit

Permalink
Reduce params in metrics.Setup
Browse files Browse the repository at this point in the history
11 params was flagged by Sonar so move the service-related ones
to a ServiceInfo struct to reduce it to 6.

Signed-off-by: Tom Pantelis <[email protected]>
  • Loading branch information
tpantelis committed Jul 25, 2024
1 parent 65b679d commit 56f815f
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 14 deletions.
20 changes: 15 additions & 5 deletions controllers/metrics/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,29 @@ import (
controllerClient "sigs.k8s.io/controller-runtime/pkg/client"
)

func Setup(ctx context.Context, serviceName, namespace, applicationKey, applicationName string, owner metav1.Object, port int32,
client controllerClient.Client, config *rest.Config, scheme *runtime.Scheme, reqLogger logr.Logger,
type ServiceInfo struct {
Name string
Namespace string
ApplicationKey string
ApplicationName string
Owner metav1.Object
Port int32
}

func Setup(ctx context.Context, client controllerClient.Client, config *rest.Config, scheme *runtime.Scheme,
serviceInfo *ServiceInfo, reqLogger logr.Logger,
) error {
metricsService, err := apply.Service(ctx, owner, newMetricsService(serviceName, namespace, applicationKey,
applicationName, port), reqLogger, client, scheme)
metricsService, err := apply.Service(ctx, serviceInfo.Owner,
newMetricsService(serviceInfo.Name, serviceInfo.Namespace, serviceInfo.ApplicationKey,
serviceInfo.ApplicationName, serviceInfo.Port), reqLogger, client, scheme)
if err != nil {
return err //nolint:wrapcheck // No need to wrap here
}

if config != nil {
services := []*corev1.Service{metricsService}

_, err = metrics.CreateServiceMonitors(ctx, config, namespace, services)
_, err = metrics.CreateServiceMonitors(ctx, config, serviceInfo.Namespace, services)
if err != nil {
// If this operator is deployed to a cluster without the prometheus-operator running, it will return
// ErrServiceMonitorNotPresent, which can be used to safely skip ServiceMonitor creation.
Expand Down
22 changes: 18 additions & 4 deletions controllers/servicediscovery/servicediscovery_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -683,8 +683,15 @@ func (r *Reconciler) ensureLightHouseAgent(ctx context.Context, instance *submar
return errors.Wrap(err, "error reconciling agent deployment")
}

err := metrics.Setup(ctx, names.ServiceDiscoveryComponent, instance.Namespace, "app", names.ServiceDiscoveryComponent,
instance, 8082, r.ScopedClient, r.RestConfig, r.Scheme, reqLogger)
err := metrics.Setup(ctx, r.ScopedClient, r.RestConfig, r.Scheme,
&metrics.ServiceInfo{
Name: names.ServiceDiscoveryComponent,
Namespace: instance.Namespace,
ApplicationKey: "app",
ApplicationName: names.ServiceDiscoveryComponent,
Owner: instance,
Port: 8082,
}, reqLogger)
if err != nil {
return errors.Wrap(err, "error setting up metrics")
}
Expand All @@ -702,8 +709,15 @@ func (r *Reconciler) ensureLighthouseCoreDNSDeployment(ctx context.Context, inst
return errors.Wrap(err, "error reconciling coredns deployment")
}

err := metrics.Setup(ctx, names.LighthouseCoreDNSComponent, instance.Namespace, "app", names.LighthouseCoreDNSComponent, instance,
9153, r.ScopedClient, r.RestConfig, r.Scheme, reqLogger)
err := metrics.Setup(ctx, r.ScopedClient, r.RestConfig, r.Scheme,
&metrics.ServiceInfo{
Name: names.LighthouseCoreDNSComponent,
Namespace: instance.Namespace,
ApplicationKey: "app",
ApplicationName: names.LighthouseCoreDNSComponent,
Owner: instance,
Port: 9153,
}, reqLogger)
if err != nil {
return errors.Wrap(err, "error setting up coredns metrics")
}
Expand Down
11 changes: 9 additions & 2 deletions controllers/submariner/gateway_resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,15 @@ func (r *Reconciler) reconcileGatewayDaemonSet(
return nil, err
}

err = metrics.Setup(ctx, names.GatewayComponent, instance.Namespace, "app", names.MetricsProxyComponent, instance,
gatewayMetricsServicePort, r.config.ScopedClient, r.config.RestConfig, r.config.Scheme, reqLogger)
err = metrics.Setup(ctx, r.config.ScopedClient, r.config.RestConfig, r.config.Scheme,
&metrics.ServiceInfo{
Name: names.GatewayComponent,
Namespace: instance.Namespace,
ApplicationKey: "app",
ApplicationName: names.MetricsProxyComponent,
Owner: instance,
Port: gatewayMetricsServicePort,
}, reqLogger)

return daemonSet, err
}
Expand Down
11 changes: 9 additions & 2 deletions controllers/submariner/globalnet_resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,15 @@ func (r *Reconciler) reconcileGlobalnetDaemonSet(ctx context.Context, instance *
return nil, err
}

err = metrics.Setup(ctx, names.GlobalnetComponent, instance.Namespace, "app", names.MetricsProxyComponent,
instance, globalnetMetricsServicePort, r.config.ScopedClient, r.config.RestConfig, r.config.Scheme, reqLogger)
err = metrics.Setup(ctx, r.config.ScopedClient, r.config.RestConfig, r.config.Scheme,
&metrics.ServiceInfo{
Name: names.GlobalnetComponent,
Namespace: instance.Namespace,
ApplicationKey: "app",
ApplicationName: names.MetricsProxyComponent,
Owner: instance,
Port: globalnetMetricsServicePort,
}, reqLogger)

return daemonSet, err
}
Expand Down
9 changes: 8 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,14 @@ func main() {
log.Error(err, "Error obtaining a Kubernetes client")
}

if err := metrics.Setup(ctx, name, namespace, "name", name, nil, metricsPort, metricsClient, cfg, scheme, log); err != nil {
if err := metrics.Setup(ctx, metricsClient, cfg, scheme,
&metrics.ServiceInfo{
Name: name,
Namespace: namespace,
ApplicationKey: "name",
ApplicationName: name,
Port: metricsPort,
}, log); err != nil {
log.Error(err, "Error setting up metrics services and monitors")
}

Expand Down

0 comments on commit 56f815f

Please sign in to comment.