Skip to content

Commit 3b9036d

Browse files
Merge pull request #656 from mbaldessari/fix-argo
Robustness fixes
2 parents a4fcbaf + ab3dbdd commit 3b9036d

2 files changed

Lines changed: 13 additions & 7 deletions

File tree

internal/controller/argo.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,9 @@ func createOrUpdateArgoCD(client dynamic.Interface, fullClient kubernetes.Interf
473473
if errGet != nil {
474474
return fmt.Errorf("failed to get existing ArgoCD %s/%s: %v", namespace, name, errGet)
475475
}
476+
if oldArgo == nil || oldUnstructured == nil {
477+
return fmt.Errorf("getArgoCD returned nil ArgoCD object for %s/%s", namespace, name)
478+
}
476479
argo.SetResourceVersion(oldArgo.GetResourceVersion())
477480
obj, errConvert := runtime.DefaultUnstructuredConverter.ToUnstructured(argo)
478481
if errConvert != nil {
@@ -560,7 +563,10 @@ func getArgoCD(client dynamic.Interface, name, namespace string) (*argooperator.
560563
return nil, nil, err
561564
}
562565
err = runtime.DefaultUnstructuredConverter.FromUnstructured(unstructuredArgo.UnstructuredContent(), argo)
563-
return argo, unstructuredArgo, err
566+
if err != nil {
567+
return nil, nil, err
568+
}
569+
return argo, unstructuredArgo, nil
564570
}
565571

566572
func newApplicationParameters(p *api.Pattern) []argoapi.HelmParameter {

internal/controller/argo_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,7 @@ var _ = Describe("CreateOrUpdateArgoCD", func() {
10321032
"resourceVersion": "1",
10331033
},
10341034
"spec": map[string]any{
1035-
"networkPolicy": map[string]any{
1035+
"someCustomPlugin": map[string]any{
10361036
"enabled": true,
10371037
},
10381038
"imageUpdater": map[string]any{
@@ -1052,12 +1052,12 @@ var _ = Describe("CreateOrUpdateArgoCD", func() {
10521052
argoCD, err := dynamicClient.Resource(gvr).Namespace(namespace).Get(context.TODO(), name, metav1.GetOptions{})
10531053
Expect(err).ToNot(HaveOccurred())
10541054

1055-
// networkPolicy should be preserved — it is managed by gitops-operator
1056-
// not by patterns-operator, so the update must not strip it
1057-
networkPolicy, found, err := unstructured.NestedMap(argoCD.Object, "spec", "networkPolicy")
1055+
// someCustomPlugin should be preserved — it is not managed by
1056+
// patterns-operator, so the update must not strip it
1057+
someCustomPlugin, found, err := unstructured.NestedMap(argoCD.Object, "spec", "someCustomPlugin")
10581058
Expect(err).ToNot(HaveOccurred())
1059-
Expect(found).To(BeTrue(), "networkPolicy should be preserved after update")
1060-
Expect(networkPolicy["enabled"]).To(BeTrue())
1059+
Expect(found).To(BeTrue(), "someCustomPlugin should be preserved after update")
1060+
Expect(someCustomPlugin["enabled"]).To(BeTrue())
10611061

10621062
// imageUpdater should also be preserved
10631063
imageUpdater, found, err := unstructured.NestedMap(argoCD.Object, "spec", "imageUpdater")

0 commit comments

Comments
 (0)