Skip to content

Commit 965f497

Browse files
authored
Merge pull request #76 from kubernetes-sigs/feat/support-storage-provider-subresource
Feat: Support storage provider with subresource
2 parents 3f43b5f + 0dc9a4d commit 965f497

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

pkg/builder/builder_resource.go

+15-2
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,11 @@ func (a *Server) WithResourceAndStrategy(obj resource.Object, strategy rest.Stra
9898
_ = a.forGroupVersionResource(gvr, parentStorageProvider)
9999

100100
// automatically create status subresource if the object implements the status interface
101-
a.withSubResourceIfExists(obj, parentStorageProvider)
101+
102+
defer func() {
103+
// automatically create status subresource if the object implements the status interface
104+
a.withSubResourceIfExists(obj, parentStorageProvider)
105+
}()
102106
return a
103107
}
104108

@@ -112,6 +116,10 @@ func (a *Server) WithResourceAndStrategy(obj resource.Object, strategy rest.Stra
112116
func (a *Server) WithResourceAndHandler(obj resource.Object, sp rest.ResourceHandlerProvider) *Server {
113117
gvr := obj.GetGroupVersionResource()
114118
a.schemeBuilder.Register(resource.AddToScheme(obj))
119+
defer func() {
120+
// automatically create status subresource if the object implements the status interface
121+
a.withSubResourceIfExists(obj, sp)
122+
}()
115123
return a.forGroupVersionResource(gvr, sp)
116124
}
117125

@@ -126,7 +134,12 @@ func (a *Server) WithResourceAndHandler(obj resource.Object, sp rest.ResourceHan
126134
func (a *Server) WithResourceAndStorage(obj resource.Object, fn rest.StoreFn) *Server {
127135
gvr := obj.GetGroupVersionResource()
128136
a.schemeBuilder.Register(resource.AddToScheme(obj))
129-
return a.forGroupVersionResource(gvr, rest.NewWithFn(obj, fn))
137+
sp := rest.NewWithFn(obj, fn)
138+
defer func() {
139+
// automatically create status subresource if the object implements the status interface
140+
a.withSubResourceIfExists(obj, sp)
141+
}()
142+
return a.forGroupVersionResource(gvr, sp)
130143
}
131144

132145
// forGroupVersionResource manually registers storage for a specific resource.

0 commit comments

Comments
 (0)