Skip to content

Commit abc4071

Browse files
mclasmeierMoritz Clasmeier
andauthored
fix: Make EarlyReadiness field *bool (#208)
Co-authored-by: Moritz Clasmeier <mclasmeier@redhat.com>
1 parent b1a4841 commit abc4071

3 files changed

Lines changed: 37 additions & 16 deletions

File tree

cmd/deploy.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,8 @@ Examples:
228228
registerFlag(cmd, settings, "early-readiness", "Only wait for essential workloads (central/sensor) to be ready",
229229
withNoOptDefVal("true"),
230230
withApplyFnBool(func(config *deployer.Config, val bool) error {
231-
config.Central.EarlyReadiness = val
232-
config.SecuredCluster.EarlyReadiness = val
231+
config.Central.EarlyReadiness = new(val)
232+
config.SecuredCluster.EarlyReadiness = new(val)
233233
return nil
234234
}),
235235
)
@@ -282,7 +282,7 @@ func runDeploy(cmd *cobra.Command, args []string) error {
282282
return err
283283
}
284284

285-
if !deploySettings.Central.EarlyReadiness || !deploySettings.SecuredCluster.EarlyReadiness {
285+
if !deploySettings.Central.EarlyReadinessEnabled() || !deploySettings.SecuredCluster.EarlyReadinessEnabled() {
286286
// Explanation on the versions involved here:
287287
// Deploying StackRox begins with picking a "main image tag" -- this is a version identifier, which cannot be reliably parsed as a semver.
288288
// But there is a derived version from that -- the operator version -- which can be parsed as a semver.

cmd/deploy_test.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,16 @@ func TestNewDeployCmd_Flags(t *testing.T) {
9494
name: "early-readiness",
9595
args: []string{"--early-readiness"},
9696
assert: func(t *testing.T, cfg deployer.Config) {
97-
assert.True(t, cfg.Central.EarlyReadiness, "Central.EarlyReadiness mismatch")
98-
assert.True(t, cfg.SecuredCluster.EarlyReadiness, "SecuredCluster.EarlyReadiness mismatch")
97+
assert.True(t, cfg.Central.EarlyReadinessEnabled(), "Central.EarlyReadiness mismatch")
98+
assert.True(t, cfg.SecuredCluster.EarlyReadinessEnabled(), "SecuredCluster.EarlyReadiness mismatch")
9999
},
100100
},
101101
{
102102
name: "disable early-readiness",
103103
args: []string{"--early-readiness=false"},
104104
assert: func(t *testing.T, cfg deployer.Config) {
105-
assert.False(t, cfg.Central.EarlyReadiness, "Central.EarlyReadiness mismatch")
106-
assert.False(t, cfg.SecuredCluster.EarlyReadiness, "SecuredCluster.EarlyReadiness mismatch")
105+
assert.False(t, cfg.Central.EarlyReadinessEnabled(), "Central.EarlyReadiness mismatch")
106+
assert.False(t, cfg.SecuredCluster.EarlyReadinessEnabled(), "SecuredCluster.EarlyReadiness mismatch")
107107
},
108108
},
109109
{
@@ -135,7 +135,8 @@ func TestNewDeployCmd_Flags(t *testing.T) {
135135
assert.Equal(t, "4.7.0", cfg.Roxie.Version, "Roxie.Version mismatch")
136136
require.NotNil(t, cfg.Central.Exposure, "Central.Exposure should be set")
137137
assert.Equal(t, types.ExposureLoadBalancer, *cfg.Central.Exposure, "Central.Exposure mismatch")
138-
assert.True(t, cfg.Central.EarlyReadiness, "Central.EarlyReadiness mismatch")
138+
assert.True(t, cfg.Central.EarlyReadinessEnabled(), "Central.EarlyReadiness mismatch")
139+
assert.True(t, cfg.SecuredCluster.EarlyReadinessEnabled(), "SecuredCluster.EarlyReadiness mismatch")
139140
assert.Equal(t, types.ResourceProfileSmall, cfg.Central.ResourceProfile, "Central.ResourceProfile mismatch")
140141
},
141142
},
@@ -161,6 +162,18 @@ securedCluster:
161162
},
162163
},
163164

165+
{
166+
name: "config file can disable early-readiness",
167+
config: `
168+
central:
169+
earlyReadiness: false
170+
`,
171+
args: []string{"--config", configFilePath},
172+
assert: func(t *testing.T, cfg deployer.Config) {
173+
assert.False(t, cfg.Central.EarlyReadinessEnabled(), "Central.EarlyReadiness should be false")
174+
},
175+
},
176+
164177
{
165178
name: "flags can override earlier specified config file",
166179
config: `

internal/deployer/config.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,20 @@ type CentralConfig struct {
8686
Exposure *types.Exposure `yaml:"exposure,omitempty"`
8787
DeployTimeout time.Duration `yaml:"deployTimeout,omitempty"`
8888
PortForwarding *bool `yaml:"portForwarding,omitempty"`
89-
EarlyReadiness bool `yaml:"earlyReadiness,omitempty"`
89+
EarlyReadiness *bool `yaml:"earlyReadiness,omitempty"`
9090
Spec map[string]interface{} `yaml:"spec,omitempty"`
9191
}
9292

93+
func (c *CentralConfig) EarlyReadinessEnabled() bool {
94+
return c.EarlyReadiness != nil && *c.EarlyReadiness
95+
}
96+
9397
// DefaultCentralConfig returns a CentralConfig with sensible defaults.
9498
func DefaultCentralConfig() CentralConfig {
9599
return CentralConfig{
96100
DeployTimeout: DefaultCentralWaitTimeout,
97101
Namespace: "acs-central",
98-
EarlyReadiness: true,
102+
EarlyReadiness: new(true),
99103
Spec: map[string]interface{}{
100104
"central": map[string]interface{}{
101105
"telemetry": map[string]interface{}{
@@ -112,12 +116,12 @@ func (c *CentralConfig) GetWaitConfig() WaitConfig {
112116
// With earlyReadiness we just wait for the Available condition of that component's core
113117
// Deployment to be True.
114118
waitFor := "central/" + centralCrName
115-
if c.EarlyReadiness {
119+
if c.EarlyReadinessEnabled() {
116120
waitFor = "deployment/central"
117121
}
118122
return WaitConfig{
119123
Namespace: c.Namespace,
120-
EarlyReadiness: c.EarlyReadiness,
124+
EarlyReadiness: c.EarlyReadinessEnabled(),
121125
WaitFor: waitFor,
122126
Timeout: c.DeployTimeout,
123127
}
@@ -204,28 +208,32 @@ type SecuredClusterConfig struct {
204208
ResourceProfile types.ResourceProfile `yaml:"resourceProfile,omitempty"`
205209
PauseReconciliation bool `yaml:"pauseReconciliation,omitempty"`
206210
DeployTimeout time.Duration `yaml:"deployTimeout,omitempty"`
207-
EarlyReadiness bool `yaml:"earlyReadiness,omitempty"`
211+
EarlyReadiness *bool `yaml:"earlyReadiness,omitempty"`
208212
Spec map[string]interface{} `yaml:"spec,omitempty"`
209213
}
210214

215+
func (s *SecuredClusterConfig) EarlyReadinessEnabled() bool {
216+
return s.EarlyReadiness != nil && *s.EarlyReadiness
217+
}
218+
211219
// DefaultSecuredClusterConfig returns a SecuredClusterConfig with sensible defaults.
212220
func DefaultSecuredClusterConfig() SecuredClusterConfig {
213221
return SecuredClusterConfig{
214222
DeployTimeout: DefaultSecuredClusterWaitTimeout,
215223
Namespace: "acs-sensor",
216-
EarlyReadiness: true,
224+
EarlyReadiness: new(true),
217225
Spec: make(map[string]interface{}),
218226
}
219227
}
220228

221229
func (s *SecuredClusterConfig) GetWaitConfig() WaitConfig {
222230
waitFor := "securedcluster/" + securedClusterCrName
223-
if s.EarlyReadiness {
231+
if s.EarlyReadinessEnabled() {
224232
waitFor = "deployment/sensor"
225233
}
226234
return WaitConfig{
227235
Namespace: s.Namespace,
228-
EarlyReadiness: s.EarlyReadiness,
236+
EarlyReadiness: s.EarlyReadinessEnabled(),
229237
WaitFor: waitFor,
230238
Timeout: s.DeployTimeout,
231239
}

0 commit comments

Comments
 (0)