MCPcopy
hub / github.com/kubernetes/client-go / ObjectReaction

Function ObjectReaction

testing/fixture.go:75–186  ·  view source on GitHub ↗

ObjectReaction returns a ReactionFunc that applies core.Action to the given tracker.

(tracker ObjectTracker)

Source from the content-addressed store, hash-verified

73// ObjectReaction returns a ReactionFunc that applies core.Action to
74// the given tracker.
75func ObjectReaction(tracker ObjectTracker) ReactionFunc {
76 return func(action Action) (bool, runtime.Object, error) {
77 ns := action.GetNamespace()
78 gvr := action.GetResource()
79 // Here and below we need to switch on implementation types,
80 // not on interfaces, as some interfaces are identical
81 // (e.g. UpdateAction and CreateAction), so if we use them,
82 // updates and creates end up matching the same case branch.
83 switch action := action.(type) {
84
85 case ListActionImpl:
86 obj, err := tracker.List(gvr, action.GetKind(), ns)
87 return true, obj, err
88
89 case GetActionImpl:
90 obj, err := tracker.Get(gvr, ns, action.GetName())
91 return true, obj, err
92
93 case CreateActionImpl:
94 objMeta, err := meta.Accessor(action.GetObject())
95 if err != nil {
96 return true, nil, err
97 }
98 if action.GetSubresource() == "" {
99 err = tracker.Create(gvr, action.GetObject(), ns)
100 } else {
101 // TODO: Currently we're handling subresource creation as an update
102 // on the enclosing resource. This works for some subresources but
103 // might not be generic enough.
104 err = tracker.Update(gvr, action.GetObject(), ns)
105 }
106 if err != nil {
107 return true, nil, err
108 }
109 obj, err := tracker.Get(gvr, ns, objMeta.GetName())
110 return true, obj, err
111
112 case UpdateActionImpl:
113 objMeta, err := meta.Accessor(action.GetObject())
114 if err != nil {
115 return true, nil, err
116 }
117 err = tracker.Update(gvr, action.GetObject(), ns)
118 if err != nil {
119 return true, nil, err
120 }
121 obj, err := tracker.Get(gvr, ns, objMeta.GetName())
122 return true, obj, err
123
124 case DeleteActionImpl:
125 err := tracker.Delete(gvr, ns, action.GetName())
126 if err != nil {
127 return true, nil, err
128 }
129 return true, nil, nil
130
131 case PatchActionImpl:
132 obj, err := tracker.Get(gvr, ns, action.GetName())

Callers 3

NewSimpleClientsetFunction · 0.92
NewSimpleDynamicClientFunction · 0.92

Calls 14

GetKindMethod · 0.80
GetNamespaceMethod · 0.65
GetResourceMethod · 0.65
ListMethod · 0.65
GetMethod · 0.65
GetNameMethod · 0.65
GetObjectMethod · 0.65
GetSubresourceMethod · 0.65
CreateMethod · 0.65
UpdateMethod · 0.65
DeleteMethod · 0.65
GetPatchTypeMethod · 0.65

Tested by 1