@@ -36,45 +36,43 @@ type Updater struct {
36
36
func (s * Updater ) update (oldObject , newObject * typed.TypedValue , version fieldpath.APIVersion , managers fieldpath.ManagedFields , workflow string , force bool ) (fieldpath.ManagedFields , error ) {
37
37
conflicts := fieldpath.ManagedFields {}
38
38
removed := fieldpath.ManagedFields {}
39
- type Versioned struct {
40
- oldObject * typed. TypedValue
41
- newObject * typed. TypedValue
39
+ compare , err := oldObject . Compare ( newObject )
40
+ if err != nil {
41
+ return nil , fmt . Errorf ( "failed to compare objects: %v" , err )
42
42
}
43
- versions := map [fieldpath.APIVersion ]Versioned {
44
- version : {
45
- oldObject : oldObject ,
46
- newObject : newObject ,
47
- },
43
+
44
+ versions := map [fieldpath.APIVersion ]* typed.Comparison {
45
+ version : compare ,
48
46
}
49
47
50
48
for manager , managerSet := range managers {
51
49
if manager == workflow {
52
50
continue
53
51
}
54
- versioned , ok := versions [managerSet .APIVersion ]
52
+ compare , ok := versions [managerSet .APIVersion ]
55
53
if ! ok {
56
54
var err error
57
- versioned . oldObject , err = s .Converter .Convert (oldObject , managerSet .APIVersion )
55
+ versionedOldObject , err : = s .Converter .Convert (oldObject , managerSet .APIVersion )
58
56
if err != nil {
59
57
if s .Converter .IsMissingVersionError (err ) {
60
58
delete (managers , manager )
61
59
continue
62
60
}
63
61
return nil , fmt .Errorf ("failed to convert old object: %v" , err )
64
62
}
65
- versioned . newObject , err = s .Converter .Convert (newObject , managerSet .APIVersion )
63
+ versionedNewObject , err : = s .Converter .Convert (newObject , managerSet .APIVersion )
66
64
if err != nil {
67
65
if s .Converter .IsMissingVersionError (err ) {
68
66
delete (managers , manager )
69
67
continue
70
68
}
71
69
return nil , fmt .Errorf ("failed to convert new object: %v" , err )
72
70
}
73
- versions [ managerSet . APIVersion ] = versioned
74
- }
75
- compare , err := versioned . oldObject . Compare ( versioned . newObject )
76
- if err != nil {
77
- return nil , fmt . Errorf ( "failed to compare objects: %v" , err )
71
+ compare , err = versionedOldObject . Compare ( versionedNewObject )
72
+ if err != nil {
73
+ return nil , fmt . Errorf ( "failed to compare objects: %v" , err )
74
+ }
75
+ versions [ managerSet . APIVersion ] = compare
78
76
}
79
77
80
78
conflictSet := managerSet .Intersection (compare .Modified .Union (compare .Added ))
0 commit comments