Skip to content

Commit 726a7f7

Browse files
authored
chore: adapt API for sidecar image and tag restriction (#552)
Signed-off-by: odubajDT <[email protected]>
1 parent 61c77c0 commit 726a7f7

File tree

2 files changed

+2
-162
lines changed

2 files changed

+2
-162
lines changed

apis/core/v1beta1/featureflagsource_types.go

Lines changed: 2 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ package v1beta1
1818

1919
import (
2020
"fmt"
21-
"os"
22-
"strconv"
23-
"strings"
2421

2522
"github.com/open-feature/open-feature-operator/apis/core/v1beta1/common"
2623
corev1 "k8s.io/api/core/v1"
@@ -45,11 +42,8 @@ const (
4542
defaultPort int32 = 8013
4643
defaultSocketPath string = ""
4744
defaultEvaluator string = "json"
48-
defaultImage string = "ghcr.io/open-feature/flagd"
49-
// renovate: datasource=github-tags depName=open-feature/flagd/flagd
50-
defaultTag string = "v0.7.0"
51-
defaultLogFormat string = "json"
52-
defaultProbesEnabled bool = true
45+
defaultLogFormat string = "json"
46+
defaultProbesEnabled bool = true
5347
)
5448

5549
// FeatureFlagSourceSpec defines the desired state of FeatureFlagSource
@@ -70,14 +64,6 @@ type FeatureFlagSourceSpec struct {
7064
// +optional
7165
Evaluator string `json:"evaluator"`
7266

73-
// Image allows for the sidecar image to be overridden, defaults to 'ghcr.io/open-feature/flagd'
74-
// +optional
75-
Image string `json:"image"`
76-
77-
// Tag to be appended to the sidecar image, defaults to 'main'
78-
// +optional
79-
Tag string `json:"tag"`
80-
8167
// SyncProviders define the syncProviders and associated configuration to be applied to the sidecar
8268
// +kubebuilder:validation:MinItems=1
8369
Sources []Source `json:"sources"`
@@ -185,89 +171,6 @@ func init() {
185171
SchemeBuilder.Register(&FeatureFlagSource{}, &FeatureFlagSourceList{})
186172
}
187173

188-
//nolint:gocyclo
189-
func NewFeatureFlagSourceSpec() (*FeatureFlagSourceSpec, error) {
190-
fsc := &FeatureFlagSourceSpec{
191-
ManagementPort: DefaultMetricPort,
192-
Port: defaultPort,
193-
SocketPath: defaultSocketPath,
194-
Evaluator: defaultEvaluator,
195-
Image: defaultImage,
196-
Tag: defaultTag,
197-
Sources: []Source{},
198-
EnvVars: []corev1.EnvVar{},
199-
SyncProviderArgs: []string{},
200-
DefaultSyncProvider: common.SyncProviderKubernetes,
201-
EnvVarPrefix: defaultSidecarEnvVarPrefix,
202-
LogFormat: defaultLogFormat,
203-
RolloutOnChange: nil,
204-
DebugLogging: common.FalseVal(),
205-
OtelCollectorUri: "",
206-
}
207-
208-
// set default value derived from constant default
209-
probes := defaultProbesEnabled
210-
fsc.ProbesEnabled = &probes
211-
212-
if managementPort := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarMetricPortEnvVar)); managementPort != "" {
213-
managementPortI, err := strconv.Atoi(managementPort)
214-
if err != nil {
215-
return fsc, fmt.Errorf("unable to parse management port value %s to int32: %w", managementPort, err)
216-
}
217-
fsc.ManagementPort = int32(managementPortI)
218-
}
219-
220-
if port := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarPortEnvVar)); port != "" {
221-
portI, err := strconv.Atoi(port)
222-
if err != nil {
223-
return fsc, fmt.Errorf("unable to parse sidecar port value %s to int32: %w", port, err)
224-
}
225-
fsc.Port = int32(portI)
226-
}
227-
228-
if socketPath := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarSocketPathEnvVar)); socketPath != "" {
229-
fsc.SocketPath = socketPath
230-
}
231-
232-
if evaluator := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarEvaluatorEnvVar)); evaluator != "" {
233-
fsc.Evaluator = evaluator
234-
}
235-
236-
if image := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarImageEnvVar)); image != "" {
237-
fsc.Image = image
238-
}
239-
240-
if tag := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarVersionEnvVar)); tag != "" {
241-
fsc.Tag = tag
242-
}
243-
244-
if syncProviderArgs := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarProviderArgsEnvVar)); syncProviderArgs != "" {
245-
fsc.SyncProviderArgs = strings.Split(syncProviderArgs, ",") // todo: add documentation for this
246-
}
247-
248-
if syncProvider := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarDefaultSyncProviderEnvVar)); syncProvider != "" {
249-
fsc.DefaultSyncProvider = common.SyncProviderType(syncProvider)
250-
}
251-
252-
if logFormat := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarLogFormatEnvVar)); logFormat != "" {
253-
fsc.LogFormat = logFormat
254-
}
255-
256-
if envVarPrefix := os.Getenv(SidecarEnvVarPrefix); envVarPrefix != "" {
257-
fsc.EnvVarPrefix = envVarPrefix
258-
}
259-
260-
if probesEnabled := os.Getenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarProbesEnabledVar)); probesEnabled != "" {
261-
b, err := strconv.ParseBool(probesEnabled)
262-
if err != nil {
263-
return fsc, fmt.Errorf("unable to parse sidecar probes enabled %s to boolean: %w", probesEnabled, err)
264-
}
265-
fsc.ProbesEnabled = &b
266-
}
267-
268-
return fsc, nil
269-
}
270-
271174
//nolint:gocyclo
272175
func (fc *FeatureFlagSourceSpec) Merge(new *FeatureFlagSourceSpec) {
273176
if new == nil {
@@ -285,12 +188,6 @@ func (fc *FeatureFlagSourceSpec) Merge(new *FeatureFlagSourceSpec) {
285188
if new.Evaluator != "" {
286189
fc.Evaluator = new.Evaluator
287190
}
288-
if new.Image != "" {
289-
fc.Image = new.Image
290-
}
291-
if new.Tag != "" {
292-
fc.Tag = new.Tag
293-
}
294191
if len(new.Sources) != 0 {
295192
fc.Sources = append(fc.Sources, new.Sources...)
296193
}

apis/core/v1beta1/featureflagsource_types_test.go

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ func Test_FLagSourceConfiguration_Merge(t *testing.T) {
2727
Evaluator: "evaluator",
2828
SocketPath: "socket-path",
2929
LogFormat: "log",
30-
Image: "img",
31-
Tag: "tag",
3230
Sources: []Source{
3331
{
3432
Source: "src1",
@@ -68,8 +66,6 @@ func Test_FLagSourceConfiguration_Merge(t *testing.T) {
6866
Evaluator: "evaluator",
6967
SocketPath: "socket-path",
7068
LogFormat: "log",
71-
Image: "img",
72-
Tag: "tag",
7369
Sources: []Source{
7470
{
7571
Source: "src1",
@@ -107,8 +103,6 @@ func Test_FLagSourceConfiguration_Merge(t *testing.T) {
107103
Evaluator: "evaluator1",
108104
SocketPath: "socket-path1",
109105
LogFormat: "log1",
110-
Image: "img1",
111-
Tag: "tag1",
112106
Sources: []Source{
113107
{
114108
Source: "src2",
@@ -152,8 +146,6 @@ func Test_FLagSourceConfiguration_Merge(t *testing.T) {
152146
Evaluator: "evaluator1",
153147
SocketPath: "socket-path1",
154148
LogFormat: "log1",
155-
Image: "img1",
156-
Tag: "tag1",
157149
Sources: []Source{
158150
{
159151
Source: "src1",
@@ -178,55 +170,6 @@ func Test_FLagSourceConfiguration_Merge(t *testing.T) {
178170
}, ff_old)
179171
}
180172

181-
func Test_FLagSourceConfiguration_NewFeatureFlagSourceSpec(t *testing.T) {
182-
//happy path
183-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarMetricPortEnvVar), "22")
184-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarPortEnvVar), "33")
185-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarSocketPathEnvVar), "val1")
186-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarEvaluatorEnvVar), "val2")
187-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarImageEnvVar), "val3")
188-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarVersionEnvVar), "val4")
189-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarProviderArgsEnvVar), "val11,val22")
190-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarDefaultSyncProviderEnvVar), "kubernetes")
191-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarLogFormatEnvVar), "val5")
192-
t.Setenv(SidecarEnvVarPrefix, "val6")
193-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarProbesEnabledVar), "true")
194-
195-
fs, err := NewFeatureFlagSourceSpec()
196-
197-
require.Nil(t, err)
198-
require.Equal(t, &FeatureFlagSourceSpec{
199-
ManagementPort: 22,
200-
Port: 33,
201-
SocketPath: "val1",
202-
Evaluator: "val2",
203-
Image: "val3",
204-
Tag: "val4",
205-
Sources: []Source{},
206-
EnvVars: []v1.EnvVar{},
207-
SyncProviderArgs: []string{"val11", "val22"},
208-
DefaultSyncProvider: common.SyncProviderKubernetes,
209-
EnvVarPrefix: "val6",
210-
LogFormat: "val5",
211-
ProbesEnabled: common.TrueVal(),
212-
DebugLogging: common.FalseVal(),
213-
OtelCollectorUri: "",
214-
}, fs)
215-
216-
//error paths
217-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarProbesEnabledVar), "blah")
218-
_, err = NewFeatureFlagSourceSpec()
219-
require.NotNil(t, err)
220-
221-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarPortEnvVar), "blah")
222-
_, err = NewFeatureFlagSourceSpec()
223-
require.NotNil(t, err)
224-
225-
t.Setenv(common.EnvVarKey(InputConfigurationEnvVarPrefix, SidecarMetricPortEnvVar), "blah")
226-
_, err = NewFeatureFlagSourceSpec()
227-
require.NotNil(t, err)
228-
}
229-
230173
func Test_FLagSourceConfiguration_ToEnvVars(t *testing.T) {
231174
ff := FeatureFlagSource{
232175
Spec: FeatureFlagSourceSpec{

0 commit comments

Comments
 (0)