Skip to content

Commit 086855b

Browse files
committed
Review feedback
1 parent 0d0cd31 commit 086855b

File tree

3 files changed

+45
-16
lines changed

3 files changed

+45
-16
lines changed

apis/v1alpha2/nginxproxy_types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,7 @@ type Patch struct {
401401
// For StrategicMerge and Merge patches, this should be a JSON object.
402402
// For JSONPatch patches, this should be a JSON array of patch operations.
403403
//
404+
// +optional
404405
// +kubebuilder:validation:XPreserveUnknownFields
405406
Value *apiextv1.JSON `json:"value"`
406407
}

internal/controller/provisioner/objects.go

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,7 @@ func (p *NginxProvisioner) buildNginxResourceObjects(
180180
}
181181
objects = append(objects, service, deployment)
182182

183-
if len(errs) > 0 {
184-
return objects, errors.Join(errs...)
185-
}
186-
187-
return objects, nil
183+
return objects, errors.Join(errs...)
188184
}
189185

190186
func (p *NginxProvisioner) buildNginxSecrets(
@@ -570,10 +566,8 @@ func (p *NginxProvisioner) buildNginxDeployment(
570566
}
571567

572568
// Apply DaemonSet patches
573-
if nProxyCfg.Kubernetes.DaemonSet != nil {
574-
if err := applyPatches(daemonSet, nProxyCfg.Kubernetes.DaemonSet.Patches); err != nil {
575-
return daemonSet, fmt.Errorf("failed to apply daemonset patches: %w", err)
576-
}
569+
if err := applyPatches(daemonSet, nProxyCfg.Kubernetes.DaemonSet.Patches); err != nil {
570+
return daemonSet, fmt.Errorf("failed to apply daemonset patches: %w", err)
577571
}
578572

579573
return daemonSet, nil
@@ -592,19 +586,16 @@ func (p *NginxProvisioner) buildNginxDeployment(
592586
var deploymentCfg ngfAPIv1alpha2.DeploymentSpec
593587
if nProxyCfg != nil && nProxyCfg.Kubernetes != nil && nProxyCfg.Kubernetes.Deployment != nil {
594588
deploymentCfg = *nProxyCfg.Kubernetes.Deployment
589+
// Apply Deployment patches
590+
if err := applyPatches(deployment, nProxyCfg.Kubernetes.Deployment.Patches); err != nil {
591+
return deployment, fmt.Errorf("failed to apply deployment patches: %w", err)
592+
}
595593
}
596594

597595
if deploymentCfg.Replicas != nil {
598596
deployment.Spec.Replicas = deploymentCfg.Replicas
599597
}
600598

601-
// Apply Deployment patches
602-
if nProxyCfg != nil && nProxyCfg.Kubernetes != nil && nProxyCfg.Kubernetes.Deployment != nil {
603-
if err := applyPatches(deployment, nProxyCfg.Kubernetes.Deployment.Patches); err != nil {
604-
return deployment, fmt.Errorf("failed to apply deployment patches: %w", err)
605-
}
606-
}
607-
608599
return deployment, nil
609600
}
610601

internal/controller/provisioner/objects_test.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,6 +1273,43 @@ func TestBuildNginxResourceObjects_Patches(t *testing.T) {
12731273
g.Expect(dep.Labels).To(HaveKeyWithValue("dep-patched", "true"))
12741274
g.Expect(dep.Spec.Replicas).To(Equal(helpers.GetPointer(int32(3))))
12751275

1276+
// Test that a later patch overrides a field set by an earlier patch
1277+
nProxyCfg = &graph.EffectiveNginxProxy{
1278+
Kubernetes: &ngfAPIv1alpha2.KubernetesSpec{
1279+
Service: &ngfAPIv1alpha2.ServiceSpec{
1280+
Patches: []ngfAPIv1alpha2.Patch{
1281+
{
1282+
Type: helpers.GetPointer(ngfAPIv1alpha2.PatchTypeStrategicMerge),
1283+
Value: &apiextv1.JSON{
1284+
Raw: []byte(`{"metadata":{"labels":{"override-label":"first"}}}`),
1285+
},
1286+
},
1287+
{
1288+
Type: helpers.GetPointer(ngfAPIv1alpha2.PatchTypeStrategicMerge),
1289+
Value: &apiextv1.JSON{
1290+
Raw: []byte(`{"metadata":{"labels":{"override-label":"second"}}}`),
1291+
},
1292+
},
1293+
},
1294+
},
1295+
},
1296+
}
1297+
1298+
objects, err = provisioner.buildNginxResourceObjects("gw-nginx", gateway, nProxyCfg)
1299+
g.Expect(err).ToNot(HaveOccurred())
1300+
g.Expect(objects).To(HaveLen(6))
1301+
1302+
// Find and validate service label override
1303+
svc = nil
1304+
for _, obj := range objects {
1305+
if s, ok := obj.(*corev1.Service); ok {
1306+
svc = s
1307+
break
1308+
}
1309+
}
1310+
g.Expect(svc).ToNot(BeNil())
1311+
g.Expect(svc.Labels).To(HaveKeyWithValue("override-label", "second"))
1312+
12761313
// Test successful daemonset patch
12771314
nProxyCfg = &graph.EffectiveNginxProxy{
12781315
Kubernetes: &ngfAPIv1alpha2.KubernetesSpec{

0 commit comments

Comments
 (0)