@@ -28,12 +28,14 @@ import (
2828 corev1 "k8s.io/api/core/v1"
2929 apierrors "k8s.io/apimachinery/pkg/api/errors"
3030 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
31+ "k8s.io/apimachinery/pkg/runtime"
3132 "k8s.io/apimachinery/pkg/types"
3233 "sigs.k8s.io/controller-runtime/pkg/client"
3334 "sigs.k8s.io/controller-runtime/pkg/client/fake"
3435 "sigs.k8s.io/controller-runtime/pkg/client/interceptor"
3536 "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3637
38+ "github.com/operator-framework/helm-operator-plugins/pkg/internal/status"
3739 pkgStatus "github.com/operator-framework/helm-operator-plugins/pkg/internal/status"
3840 "github.com/operator-framework/helm-operator-plugins/pkg/reconciler/internal/conditions"
3941)
@@ -230,8 +232,7 @@ var _ = Describe("Updater", func() {
230232 Expect (cl .Get (context .TODO (), types.NamespacedName {Namespace : "testNamespace" , Name : "testDeployment" }, obj )).To (Succeed ())
231233 objConditionsSlice , _ , err := unstructured .NestedSlice (obj .Object , "status" , "conditions" )
232234 Expect (err ).ToNot (HaveOccurred ())
233- objConditions , err := pkgStatus .FromUnstructured (objConditionsSlice )
234- Expect (err ).ToNot (HaveOccurred ())
235+ objConditions := conditionsFromUnstructured (objConditionsSlice )
235236 // Verify both status conditions are present.
236237 Expect (objConditions .IsTrueFor (pkgStatus .ConditionType ("UnknownCondition" ))).To (BeTrue ())
237238 Expect (objConditions .IsTrueFor (pkgStatus .ConditionType ("Deployed" ))).To (BeTrue ())
@@ -417,3 +418,16 @@ var _ = Describe("statusFor", func() {
417418 Expect (status .Conditions .IsTrueFor (pkgStatus .ConditionType ("UnknownCondition" ))).To (BeTrue ())
418419 })
419420})
421+
422+ func conditionsFromUnstructured (conditionsSlice []interface {}) status.Conditions {
423+ conditions := make (status.Conditions , 0 , len (conditionsSlice ))
424+ for _ , c := range conditionsSlice {
425+ condMap , ok := c .(map [string ]interface {})
426+ Expect (ok ).To (BeTrue (), "condition is not a map[string]interface{}" )
427+ cond := status.Condition {}
428+ err := runtime .DefaultUnstructuredConverter .FromUnstructured (condMap , & cond )
429+ Expect (err ).ToNot (HaveOccurred (), "failed to convert status condition from unstructured" )
430+ conditions = append (conditions , cond )
431+ }
432+ return conditions
433+ }
0 commit comments