@@ -41,12 +41,12 @@ func (s *Updater) EnableUnionFeature() {
41
41
s .enableUnions = true
42
42
}
43
43
44
- func (s * Updater ) update (oldObject , newObject * typed.TypedValue , version fieldpath.APIVersion , managers fieldpath.ManagedFields , workflow string , force bool ) (fieldpath.ManagedFields , error ) {
44
+ func (s * Updater ) update (oldObject , newObject * typed.TypedValue , version fieldpath.APIVersion , managers fieldpath.ManagedFields , workflow string , force bool ) (fieldpath.ManagedFields , * typed. Comparison , error ) {
45
45
conflicts := fieldpath.ManagedFields {}
46
46
removed := fieldpath.ManagedFields {}
47
47
compare , err := oldObject .Compare (newObject )
48
48
if err != nil {
49
- return nil , fmt .Errorf ("failed to compare objects: %v" , err )
49
+ return nil , nil , fmt .Errorf ("failed to compare objects: %v" , err )
50
50
}
51
51
52
52
versions := map [fieldpath.APIVersion ]* typed.Comparison {
@@ -66,19 +66,19 @@ func (s *Updater) update(oldObject, newObject *typed.TypedValue, version fieldpa
66
66
delete (managers , manager )
67
67
continue
68
68
}
69
- return nil , fmt .Errorf ("failed to convert old object: %v" , err )
69
+ return nil , nil , fmt .Errorf ("failed to convert old object: %v" , err )
70
70
}
71
71
versionedNewObject , err := s .Converter .Convert (newObject , managerSet .APIVersion ())
72
72
if err != nil {
73
73
if s .Converter .IsMissingVersionError (err ) {
74
74
delete (managers , manager )
75
75
continue
76
76
}
77
- return nil , fmt .Errorf ("failed to convert new object: %v" , err )
77
+ return nil , nil , fmt .Errorf ("failed to convert new object: %v" , err )
78
78
}
79
79
compare , err = versionedOldObject .Compare (versionedNewObject )
80
80
if err != nil {
81
- return nil , fmt .Errorf ("failed to compare objects: %v" , err )
81
+ return nil , nil , fmt .Errorf ("failed to compare objects: %v" , err )
82
82
}
83
83
versions [managerSet .APIVersion ()] = compare
84
84
}
@@ -94,7 +94,7 @@ func (s *Updater) update(oldObject, newObject *typed.TypedValue, version fieldpa
94
94
}
95
95
96
96
if ! force && len (conflicts ) != 0 {
97
- return nil , ConflictsFromManagers (conflicts )
97
+ return nil , nil , ConflictsFromManagers (conflicts )
98
98
}
99
99
100
100
for manager , conflictSet := range conflicts {
@@ -111,7 +111,7 @@ func (s *Updater) update(oldObject, newObject *typed.TypedValue, version fieldpa
111
111
}
112
112
}
113
113
114
- return managers , nil
114
+ return managers , compare , nil
115
115
}
116
116
117
117
// Update is the method you should call once you've merged your final
@@ -128,14 +128,10 @@ func (s *Updater) Update(liveObject, newObject *typed.TypedValue, version fieldp
128
128
}
129
129
}
130
130
managers = shallowCopyManagers (managers )
131
- managers , err = s .update (liveObject , newObject , version , managers , manager , true )
131
+ managers , compare , err : = s .update (liveObject , newObject , version , managers , manager , true )
132
132
if err != nil {
133
133
return nil , fieldpath.ManagedFields {}, err
134
134
}
135
- compare , err := liveObject .Compare (newObject )
136
- if err != nil {
137
- return nil , fieldpath.ManagedFields {}, fmt .Errorf ("failed to compare live and new objects: %v" , err )
138
- }
139
135
if _ , ok := managers [manager ]; ! ok {
140
136
managers [manager ] = fieldpath .NewVersionedSet (fieldpath .NewSet (), version , false )
141
137
}
@@ -182,7 +178,7 @@ func (s *Updater) Apply(liveObject, configObject *typed.TypedValue, version fiel
182
178
if err != nil {
183
179
return nil , fieldpath.ManagedFields {}, fmt .Errorf ("failed to prune fields: %v" , err )
184
180
}
185
- managers , err = s .update (liveObject , newObject , version , managers , manager , force )
181
+ managers , _ , err = s .update (liveObject , newObject , version , managers , manager , force )
186
182
if err != nil {
187
183
return nil , fieldpath.ManagedFields {}, err
188
184
}
0 commit comments