Skip to content

Commit

Permalink
Remove json.Marshal and json.Unmarshal since it's expensive to perfor…
Browse files Browse the repository at this point in the history
…m constantly
  • Loading branch information
jonathan-innis committed Feb 8, 2025
1 parent 5fbad4f commit 8fea4e0
Showing 1 changed file with 33 additions and 6 deletions.
39 changes: 33 additions & 6 deletions status/unstructured_adapter.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package status

import (
"encoding/json"
"time"

"github.com/awslabs/operatorpkg/object"
"github.com/samber/lo"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
Expand Down Expand Up @@ -39,16 +40,42 @@ func (u *unstructuredAdapter[T]) GetConditions() []Condition {
return lo.Map(conditions, func(condition interface{}, _ int) Condition {
var newCondition Condition
cond := condition.(map[string]interface{})
jsonStr, _ := json.Marshal(cond)
json.Unmarshal(jsonStr, &newCondition)
newCondition.Type, _, _ = unstructured.NestedString(cond, "type")
newCondition.Reason, _, _ = unstructured.NestedString(cond, "reason")
status, _, _ := unstructured.NestedString(cond, "status")
if status != "" {
newCondition.Status = metav1.ConditionStatus(status)
}
newCondition.Message, _, _ = unstructured.NestedString(cond, "message")
transitionTime, _, _ := unstructured.NestedString(cond, "lastTransitionTime")
if transitionTime != "" {
newCondition.LastTransitionTime = metav1.Time{Time: lo.Must(time.Parse(time.RFC3339, transitionTime))}
}
newCondition.ObservedGeneration, _, _ = unstructured.NestedInt64(cond, "observedGeneration")
return newCondition
})
}
func (u *unstructuredAdapter[T]) SetConditions(conditions []Condition) {
unstructured.SetNestedSlice(u.Object, lo.Map(conditions, func(condition Condition, _ int) interface{} {
var b map[string]interface{}
j, _ := json.Marshal(&condition)
json.Unmarshal(j, &b)
b := map[string]interface{}{}
if condition.Type != "" {
b["type"] = condition.Type
}
if condition.Reason != "" {
b["reason"] = condition.Reason
}
if condition.Status != "" {
b["status"] = string(condition.Status)
}
if condition.Message != "" {
b["message"] = condition.Message
}
if !condition.LastTransitionTime.IsZero() {
b["lastTransitionTime"] = condition.LastTransitionTime.Format(time.RFC3339)
}
if condition.ObservedGeneration != 0 {
b["observedGeneration"] = condition.ObservedGeneration
}
return b
}), "status", "conditions")
}
Expand Down

0 comments on commit 8fea4e0

Please sign in to comment.