From 45ae2c7dd4d9bedd9231d07db16ed66e17b70089 Mon Sep 17 00:00:00 2001 From: "Mr. Z" Date: Wed, 3 Dec 2025 15:51:49 -0500 Subject: [PATCH 1/2] refactor(controller): improve error handling in deployment retrieval Updated error variable names for clarity in asset and propagation reconciler methods. --- internal/controller/asset_controller.go | 4 ++-- internal/controller/cluster_asset.go | 2 ++ internal/controller/cluster_helpers.go | 2 ++ internal/controller/cluster_propagation.go | 2 ++ internal/controller/cluster_rpc.go | 1 + internal/controller/cluster_subtreevalidator.go | 2 ++ internal/controller/propagation_controller.go | 4 ++-- internal/controller/subtreevalidator_controller.go | 4 ++-- internal/utils/deployment.go | 3 ++- 9 files changed, 17 insertions(+), 7 deletions(-) diff --git a/internal/controller/asset_controller.go b/internal/controller/asset_controller.go index 7cb71df..da14869 100644 --- a/internal/controller/asset_controller.go +++ b/internal/controller/asset_controller.go @@ -81,10 +81,10 @@ func (r *AssetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl // Update scale status (replicas and selector) from deployment deployment := &appsv1.Deployment{} - if err := r.Get(ctx, types.NamespacedName{ + if getErr := r.Get(ctx, types.NamespacedName{ Name: AssetDeploymentName, Namespace: asset.Namespace, - }, deployment); err == nil { + }, deployment); getErr == nil { replicas, selector := utils.GetScaleStatusFromDeployment(deployment) asset.Status.Replicas = replicas asset.Status.Selector = selector diff --git a/internal/controller/cluster_asset.go b/internal/controller/cluster_asset.go index 04552a8..4657a39 100644 --- a/internal/controller/cluster_asset.go +++ b/internal/controller/cluster_asset.go @@ -50,6 +50,7 @@ func (r *ClusterReconciler) ReconcileAsset(log logr.Logger) (bool, error) { return true, nil } +//nolint:gocognit,gocyclo // Function complexity is inherent to handling multiple override cases func (r *ClusterReconciler) updateAsset(asset *teranodev1alpha1.Asset, cluster *teranodev1alpha1.Cluster) error { err := controllerutil.SetControllerReference(cluster, asset, r.Scheme) if err != nil { @@ -62,6 +63,7 @@ func (r *ClusterReconciler) updateAsset(asset *teranodev1alpha1.Asset, cluster * } // Selectively merge cluster spec - only override fields that are explicitly set + //nolint:nestif // Nested conditions required for selective field merging if cluster.Spec.Asset.Spec != nil { clusterSpec := cluster.Spec.Asset.Spec diff --git a/internal/controller/cluster_helpers.go b/internal/controller/cluster_helpers.go index 9faae29..c29f3ab 100644 --- a/internal/controller/cluster_helpers.go +++ b/internal/controller/cluster_helpers.go @@ -6,6 +6,8 @@ import ( // mergeDeploymentOverrides selectively merges deployment overrides from cluster spec // Only fields explicitly set in clusterOverrides will override the target +// +//nolint:gocognit,gocyclo // Function complexity is inherent to handling multiple override fields func mergeDeploymentOverrides(target *teranodev1alpha1.DeploymentOverrides, clusterOverrides *teranodev1alpha1.DeploymentOverrides) { if clusterOverrides.Replicas != nil { target.Replicas = clusterOverrides.Replicas diff --git a/internal/controller/cluster_propagation.go b/internal/controller/cluster_propagation.go index c703e43..9b7a0bc 100644 --- a/internal/controller/cluster_propagation.go +++ b/internal/controller/cluster_propagation.go @@ -50,6 +50,7 @@ func (r *ClusterReconciler) ReconcilePropagation(log logr.Logger) (bool, error) return true, nil } +//nolint:gocognit,gocyclo // Function complexity is inherent to handling multiple override cases func (r *ClusterReconciler) updatePropagation(propagation *teranodev1alpha1.Propagation, cluster *teranodev1alpha1.Cluster) error { err := controllerutil.SetControllerReference(cluster, propagation, r.Scheme) if err != nil { @@ -62,6 +63,7 @@ func (r *ClusterReconciler) updatePropagation(propagation *teranodev1alpha1.Prop } // Selectively merge cluster spec - only override fields that are explicitly set + //nolint:nestif // Nested conditions required for selective field merging if cluster.Spec.Propagation.Spec != nil { clusterSpec := cluster.Spec.Propagation.Spec diff --git a/internal/controller/cluster_rpc.go b/internal/controller/cluster_rpc.go index c360917..e39d1f0 100644 --- a/internal/controller/cluster_rpc.go +++ b/internal/controller/cluster_rpc.go @@ -50,6 +50,7 @@ func (r *ClusterReconciler) ReconcileRPC(log logr.Logger) (bool, error) { return true, nil } +//nolint:gocognit,gocyclo // Function complexity is inherent to handling multiple override cases func (r *ClusterReconciler) updateRPC(rpc *teranodev1alpha1.RPC, cluster *teranodev1alpha1.Cluster) error { err := controllerutil.SetControllerReference(cluster, rpc, r.Scheme) if err != nil { diff --git a/internal/controller/cluster_subtreevalidator.go b/internal/controller/cluster_subtreevalidator.go index 7b8d558..b50630b 100644 --- a/internal/controller/cluster_subtreevalidator.go +++ b/internal/controller/cluster_subtreevalidator.go @@ -50,6 +50,7 @@ func (r *ClusterReconciler) ReconcileSubtreeValidator(log logr.Logger) (bool, er return true, nil } +//nolint:gocognit,gocyclo // Function complexity is inherent to handling multiple override cases func (r *ClusterReconciler) updateSubtreeValidator(subtreeValidator *teranodev1alpha1.SubtreeValidator, cluster *teranodev1alpha1.Cluster) error { err := controllerutil.SetControllerReference(cluster, subtreeValidator, r.Scheme) if err != nil { @@ -62,6 +63,7 @@ func (r *ClusterReconciler) updateSubtreeValidator(subtreeValidator *teranodev1a } // Selectively merge cluster spec - only override fields that are explicitly set + //nolint:nestif // Nested conditions required for selective field merging if cluster.Spec.SubtreeValidator.Spec != nil { clusterSpec := cluster.Spec.SubtreeValidator.Spec diff --git a/internal/controller/propagation_controller.go b/internal/controller/propagation_controller.go index 3c2fb6c..e60bce8 100644 --- a/internal/controller/propagation_controller.go +++ b/internal/controller/propagation_controller.go @@ -85,10 +85,10 @@ func (r *PropagationReconciler) Reconcile(ctx context.Context, req ctrl.Request) // Update scale status (replicas and selector) from deployment deployment := &appsv1.Deployment{} - if err := r.Get(ctx, types.NamespacedName{ + if getErr := r.Get(ctx, types.NamespacedName{ Name: PropagationDeploymentName, Namespace: propagation.Namespace, - }, deployment); err == nil { + }, deployment); getErr == nil { replicas, selector := utils.GetScaleStatusFromDeployment(deployment) propagation.Status.Replicas = replicas propagation.Status.Selector = selector diff --git a/internal/controller/subtreevalidator_controller.go b/internal/controller/subtreevalidator_controller.go index 7af8ac1..10318a5 100644 --- a/internal/controller/subtreevalidator_controller.go +++ b/internal/controller/subtreevalidator_controller.go @@ -79,10 +79,10 @@ func (r *SubtreeValidatorReconciler) Reconcile(ctx context.Context, req ctrl.Req // Update scale status (replicas and selector) from deployment deployment := &appsv1.Deployment{} - if err := r.Get(ctx, types.NamespacedName{ + if getErr := r.Get(ctx, types.NamespacedName{ Name: SubtreeValidatorDeploymentName, Namespace: req.Namespace, - }, deployment); err == nil { + }, deployment); getErr == nil { replicas, selector := utils.GetScaleStatusFromDeployment(deployment) subtreeValidator.Status.Replicas = replicas subtreeValidator.Status.Selector = selector diff --git a/internal/utils/deployment.go b/internal/utils/deployment.go index 9496559..31a6f6a 100644 --- a/internal/utils/deployment.go +++ b/internal/utils/deployment.go @@ -29,11 +29,11 @@ import ( "github.com/bsv-blockchain/teranode-operator/api/v1alpha1" ) -//nolint:gocognit,gocyclo // Function complexity is inherent to handling multiple override cases func SetDeploymentOverrides(client client.Client, dep *appsv1.Deployment, cr v1alpha1.TeranodeService) { SetDeploymentOverridesWithContext(context.Background(), logr.Logger{}, client, dep, cr, "") } +//nolint:gocognit,gocyclo // Function complexity is inherent to handling multiple override cases func SetDeploymentOverridesWithContext(ctx context.Context, log logr.Logger, client client.Client, dep *appsv1.Deployment, cr v1alpha1.TeranodeService, crKind string) { if cr.DeploymentOverrides() == nil { return @@ -122,6 +122,7 @@ func SetDeploymentOverridesWithContext(ctx context.Context, log logr.Logger, cli } } +//nolint:gocognit,gocyclo // Function complexity is inherent to handling multiple override cases func SetClusterOverrides(client client.Client, dep *appsv1.Deployment, cr v1alpha1.TeranodeService) { // if parent cluster CR has a configmap or env vars set, append it first clusterOwner := GetClusterOwner(client, context.Background(), cr.Metadata()) From 595233b36645ea5ac792e3a9cf63fb1a56c41385 Mon Sep 17 00:00:00 2001 From: "Mr. Z" Date: Wed, 3 Dec 2025 15:56:50 -0500 Subject: [PATCH 2/2] chore(rbac): ensure newline at end of service account file --- config/rbac/teranode_service_runner_service_account.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/rbac/teranode_service_runner_service_account.yaml b/config/rbac/teranode_service_runner_service_account.yaml index a92cf7e..916487a 100644 --- a/config/rbac/teranode_service_runner_service_account.yaml +++ b/config/rbac/teranode_service_runner_service_account.yaml @@ -2,4 +2,4 @@ apiVersion: v1 kind: ServiceAccount metadata: name: service-runner - namespace: system \ No newline at end of file + namespace: system