...
1
16
17 package internal
18
19 import (
20 "fmt"
21
22 "k8s.io/apimachinery/pkg/api/errors"
23 "k8s.io/apimachinery/pkg/runtime"
24 "k8s.io/apimachinery/pkg/runtime/schema"
25 )
26
27 type versionCheckManager struct {
28 fieldManager Manager
29 gvk schema.GroupVersionKind
30 }
31
32 var _ Manager = &versionCheckManager{}
33
34
35
36 func NewVersionCheckManager(fieldManager Manager, gvk schema.GroupVersionKind) Manager {
37 return &versionCheckManager{fieldManager: fieldManager, gvk: gvk}
38 }
39
40
41 func (f *versionCheckManager) Update(liveObj, newObj runtime.Object, managed Managed, manager string) (runtime.Object, Managed, error) {
42
43 return f.fieldManager.Update(liveObj, newObj, managed, manager)
44 }
45
46
47 func (f *versionCheckManager) Apply(liveObj, appliedObj runtime.Object, managed Managed, fieldManager string, force bool) (runtime.Object, Managed, error) {
48 if gvk := appliedObj.GetObjectKind().GroupVersionKind(); gvk != f.gvk {
49 return nil, nil, errors.NewBadRequest(fmt.Sprintf("invalid object type: %v", gvk))
50 }
51 return f.fieldManager.Apply(liveObj, appliedObj, managed, fieldManager, force)
52 }
53
View as plain text