...
1
16
17 package internal
18
19 import (
20 "fmt"
21
22 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23 "k8s.io/apimachinery/pkg/runtime"
24 "k8s.io/apimachinery/pkg/runtime/schema"
25 )
26
27 type buildManagerInfoManager struct {
28 fieldManager Manager
29 groupVersion schema.GroupVersion
30 subresource string
31 }
32
33 var _ Manager = &buildManagerInfoManager{}
34
35
36
37 func NewBuildManagerInfoManager(f Manager, gv schema.GroupVersion, subresource string) Manager {
38 return &buildManagerInfoManager{
39 fieldManager: f,
40 groupVersion: gv,
41 subresource: subresource,
42 }
43 }
44
45
46 func (f *buildManagerInfoManager) Update(liveObj, newObj runtime.Object, managed Managed, manager string) (runtime.Object, Managed, error) {
47 manager, err := f.buildManagerInfo(manager, metav1.ManagedFieldsOperationUpdate)
48 if err != nil {
49 return nil, nil, fmt.Errorf("failed to build manager identifier: %v", err)
50 }
51 return f.fieldManager.Update(liveObj, newObj, managed, manager)
52 }
53
54
55 func (f *buildManagerInfoManager) Apply(liveObj, appliedObj runtime.Object, managed Managed, manager string, force bool) (runtime.Object, Managed, error) {
56 manager, err := f.buildManagerInfo(manager, metav1.ManagedFieldsOperationApply)
57 if err != nil {
58 return nil, nil, fmt.Errorf("failed to build manager identifier: %v", err)
59 }
60 return f.fieldManager.Apply(liveObj, appliedObj, managed, manager, force)
61 }
62
63 func (f *buildManagerInfoManager) buildManagerInfo(prefix string, operation metav1.ManagedFieldsOperationType) (string, error) {
64 managerInfo := metav1.ManagedFieldsEntry{
65 Manager: prefix,
66 Operation: operation,
67 APIVersion: f.groupVersion.String(),
68 Subresource: f.subresource,
69 }
70 if managerInfo.Manager == "" {
71 managerInfo.Manager = "unknown"
72 }
73 return BuildManagerIdentifier(&managerInfo)
74 }
75
View as plain text