From 20ae1e2f5d0a0f9e3c6f8410fde12ad290985e82 Mon Sep 17 00:00:00 2001 From: "Kwiatosz, Krzysztof" Date: Fri, 19 Apr 2024 12:37:28 +0200 Subject: [PATCH 1/2] Warn if dead fields are used --- .../state/controller_configuration.go | 13 ++++++++++ .../state/controller_configuration_test.go | 24 ++++++++++++++----- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/components/operator/internal/state/controller_configuration.go b/components/operator/internal/state/controller_configuration.go index 84cb2f8fd..eb3c2fe15 100644 --- a/components/operator/internal/state/controller_configuration.go +++ b/components/operator/internal/state/controller_configuration.go @@ -14,6 +14,8 @@ const ( slowRuntimePreset = "XS" fastBuildPreset = "fast" fastRuntimePreset = "L" + functionTimeoutDepreciationMessage = "spec.functionTimeoutSec is unused and will be removed. Remove it from your Serverless CR." + functionRequestBodyLimitDepreciationMessage = "spec.functionRequestBodyLimitMb is unused and will be removed. Remove it from your Serverless CR." ) func sFnControllerConfiguration(ctx context.Context, r *reconciler, s *systemState) (stateFn, *controllerruntime.Result, error) { @@ -23,6 +25,7 @@ func sFnControllerConfiguration(ctx context.Context, r *reconciler, s *systemSta } configureControllerConfigurationFlags(s) + warnAboutDeadFields(s) s.setState(v1alpha1.StateProcessing) s.instance.UpdateConditionTrue( @@ -34,6 +37,16 @@ func sFnControllerConfiguration(ctx context.Context, r *reconciler, s *systemSta return nextState(sFnApplyResources) } +func warnAboutDeadFields(s *systemState) error { + if s.instance.Spec.FunctionTimeoutSec != "" { + s.warningBuilder.With(functionTimeoutDepreciationMessage) + } + if s.instance.Spec.FunctionRequestBodyLimitMb != "" { + s.warningBuilder.With(functionRequestBodyLimitDepreciationMessage) + } + return nil +} + func updateControllerConfigurationStatus(ctx context.Context, r *reconciler, instance *v1alpha1.Serverless) error { nodesLen, err := getNodesLen(ctx, r.client) if err != nil { diff --git a/components/operator/internal/state/controller_configuration_test.go b/components/operator/internal/state/controller_configuration_test.go index b35459499..1f333070e 100644 --- a/components/operator/internal/state/controller_configuration_test.go +++ b/components/operator/internal/state/controller_configuration_test.go @@ -3,9 +3,11 @@ package state import ( "context" "testing" + "fmt" "github.com/kyma-project/serverless/components/operator/api/v1alpha1" "github.com/kyma-project/serverless/components/operator/internal/chart" + "github.com/kyma-project/serverless/components/operator/internal/warning" "github.com/stretchr/testify/require" "go.uber.org/zap" corev1 "k8s.io/api/core/v1" @@ -127,8 +129,6 @@ func Test_sFnControllerConfiguration(t *testing.T) { FunctionBuildExecutorArgs: executorArgsTest, FunctionBuildMaxSimultaneousJobs: maxSimultaneousJobsTest, HealthzLivenessTimeout: healthzLivenessTimeoutTest, - FunctionRequestBodyLimitMb: requestBodyLimitMbTest, - FunctionTimeoutSec: timeoutSecTest, DefaultBuildJobPreset: buildJobPresetTest, DefaultRuntimePodPreset: runtimePodPresetTest, }, @@ -150,8 +150,6 @@ func Test_sFnControllerConfiguration(t *testing.T) { require.Equal(t, executorArgsTest, status.BuildExecutorArgs) require.Equal(t, maxSimultaneousJobsTest, status.BuildMaxSimultaneousJobs) require.Equal(t, healthzLivenessTimeoutTest, status.HealthzLivenessTimeout) - require.Equal(t, requestBodyLimitMbTest, status.RequestBodyLimitMb) - require.Equal(t, timeoutSecTest, status.TimeoutSec) require.Equal(t, buildJobPresetTest, status.DefaultBuildJobPreset) require.Equal(t, runtimePodPresetTest, status.DefaultRuntimePodPreset) @@ -169,8 +167,6 @@ func Test_sFnControllerConfiguration(t *testing.T) { "Normal Configuration Function build executor args set from '' to 'test-build-executor-args'", "Normal Configuration Max number of simultaneous jobs set from '' to 'test-max-simultaneous-jobs'", "Normal Configuration Duration of health check set from '' to 'test-healthz-liveness-timeout'", - "Normal Configuration Max size of request body set from '' to 'test-request-body-limit-mb'", - "Normal Configuration Timeout set from '' to 'test-timeout-sec'", "Normal Configuration Default build job preset set from '' to 'test=default-build-job-preset'", "Normal Configuration Default runtime pod preset set from '' to 'test-default-runtime-pod-preset'", } @@ -238,8 +234,24 @@ func Test_sFnControllerConfiguration(t *testing.T) { configurationReadyMsg) require.Equal(t, v1alpha1.StateProcessing, s.instance.Status.State) }) + + t.Run("enable dead fields", func(t *testing.T) { + s := &systemState{ + warningBuilder: warning.NewBuilder(), + instance: v1alpha1.Serverless{ + Spec: v1alpha1.ServerlessSpec{ + FunctionRequestBodyLimitMb: requestBodyLimitMbTest, + FunctionTimeoutSec: timeoutSecTest, + }, + }, + } + warnAboutDeadFields(s) + require.Equal(t, fmt.Sprintf("Warning: %s; %s", functionTimeoutDepreciationMessage, functionRequestBodyLimitDepreciationMessage), s.warningBuilder.Build()) + }) } + + func fixTestNode(name string) *corev1.Node { return &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ From bccd256d9aab5b85112a0ed37951bc8c9c0e2c89 Mon Sep 17 00:00:00 2001 From: "Kwiatosz, Krzysztof" Date: Fri, 19 Apr 2024 15:02:12 +0200 Subject: [PATCH 2/2] linting issue --- components/operator/internal/state/controller_configuration.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/operator/internal/state/controller_configuration.go b/components/operator/internal/state/controller_configuration.go index eb3c2fe15..1e5b281c5 100644 --- a/components/operator/internal/state/controller_configuration.go +++ b/components/operator/internal/state/controller_configuration.go @@ -37,14 +37,13 @@ func sFnControllerConfiguration(ctx context.Context, r *reconciler, s *systemSta return nextState(sFnApplyResources) } -func warnAboutDeadFields(s *systemState) error { +func warnAboutDeadFields(s *systemState) { if s.instance.Spec.FunctionTimeoutSec != "" { s.warningBuilder.With(functionTimeoutDepreciationMessage) } if s.instance.Spec.FunctionRequestBodyLimitMb != "" { s.warningBuilder.With(functionRequestBodyLimitDepreciationMessage) } - return nil } func updateControllerConfigurationStatus(ctx context.Context, r *reconciler, instance *v1alpha1.Serverless) error {