mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-13 05:46:16 +00:00
client-go: add missing template functions and types
Now that imports aren't automatically added, the client-go generator produces broken code for extensions since it references a few functions and types directly without declaring them properly (klog.Warningf, time.Duration, time.Second). The generated code also references c.client and c.ns which are no longer accessible following the generic refactor. This fixes both issues by adding missing template functions and types, and going through the appropriate getters. Signed-off-by: Stephen Kitt <skitt@redhat.com>
This commit is contained in:
parent
06f072b009
commit
7313fec892
@ -141,7 +141,7 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
|
|||||||
"ApplyOptions": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ApplyOptions"}),
|
"ApplyOptions": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ApplyOptions"}),
|
||||||
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "PatchType"}),
|
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/types", Name: "PatchType"}),
|
||||||
"PatchOptions": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "PatchOptions"}),
|
"PatchOptions": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "PatchOptions"}),
|
||||||
"jsonMarshal": c.Universe.Type(types.Name{Package: "encoding/json", Name: "Marshal"}),
|
"jsonMarshal": c.Universe.Function(types.Name{Package: "encoding/json", Name: "Marshal"}),
|
||||||
"context": c.Universe.Type(types.Name{Package: "context", Name: "Context"}),
|
"context": c.Universe.Type(types.Name{Package: "context", Name: "Context"}),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -174,9 +174,12 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
|
|||||||
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/watch", Name: "Interface"}),
|
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/watch", Name: "Interface"}),
|
||||||
"RESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
|
"RESTClientInterface": c.Universe.Type(types.Name{Package: "k8s.io/client-go/rest", Name: "Interface"}),
|
||||||
"schemeParameterCodec": c.Universe.Variable(types.Name{Package: path.Join(g.clientsetPackage, "scheme"), Name: "ParameterCodec"}),
|
"schemeParameterCodec": c.Universe.Variable(types.Name{Package: path.Join(g.clientsetPackage, "scheme"), Name: "ParameterCodec"}),
|
||||||
"jsonMarshal": c.Universe.Type(types.Name{Package: "encoding/json", Name: "Marshal"}),
|
"jsonMarshal": c.Universe.Function(types.Name{Package: "encoding/json", Name: "Marshal"}),
|
||||||
"fmtErrorf": c.Universe.Type(types.Name{Package: "fmt", Name: "Errorf"}),
|
"fmtErrorf": c.Universe.Function(types.Name{Package: "fmt", Name: "Errorf"}),
|
||||||
|
"klogWarningf": c.Universe.Function(types.Name{Package: "k8s.io/klog/v2", Name: "Warningf"}),
|
||||||
"context": c.Universe.Type(types.Name{Package: "context", Name: "Context"}),
|
"context": c.Universe.Type(types.Name{Package: "context", Name: "Context"}),
|
||||||
|
"timeDuration": c.Universe.Type(types.Name{Package: "time", Name: "Duration"}),
|
||||||
|
"timeSecond": c.Universe.Type(types.Name{Package: "time", Name: "Second"}),
|
||||||
"resourceVersionMatchNotOlderThan": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ResourceVersionMatchNotOlderThan"}),
|
"resourceVersionMatchNotOlderThan": c.Universe.Type(types.Name{Package: "k8s.io/apimachinery/pkg/apis/meta/v1", Name: "ResourceVersionMatchNotOlderThan"}),
|
||||||
"CheckListFromCacheDataConsistencyIfRequested": c.Universe.Function(types.Name{Package: "k8s.io/client-go/util/consistencydetector", Name: "CheckListFromCacheDataConsistencyIfRequested"}),
|
"CheckListFromCacheDataConsistencyIfRequested": c.Universe.Function(types.Name{Package: "k8s.io/client-go/util/consistencydetector", Name: "CheckListFromCacheDataConsistencyIfRequested"}),
|
||||||
"CheckWatchListFromCacheDataConsistencyIfRequested": c.Universe.Function(types.Name{Package: "k8s.io/client-go/util/consistencydetector", Name: "CheckWatchListFromCacheDataConsistencyIfRequested"}),
|
"CheckWatchListFromCacheDataConsistencyIfRequested": c.Universe.Function(types.Name{Package: "k8s.io/client-go/util/consistencydetector", Name: "CheckWatchListFromCacheDataConsistencyIfRequested"}),
|
||||||
@ -581,14 +584,14 @@ var listTemplate = `
|
|||||||
// $.verb$ takes label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
|
// $.verb$ takes label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
|
||||||
func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, opts $.ListOptions|raw$) (*$.resultType|raw$List, error) {
|
func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, opts $.ListOptions|raw$) (*$.resultType|raw$List, error) {
|
||||||
if watchListOptions, hasWatchListOptionsPrepared, watchListOptionsErr := $.PrepareWatchListOptionsFromListOptions|raw$(opts); watchListOptionsErr != nil {
|
if watchListOptions, hasWatchListOptionsPrepared, watchListOptionsErr := $.PrepareWatchListOptionsFromListOptions|raw$(opts); watchListOptionsErr != nil {
|
||||||
klog.Warningf("Failed preparing watchlist options for $.type|resource$, falling back to the standard LIST semantics, err = %v", watchListOptionsErr )
|
$.klogWarningf|raw$("Failed preparing watchlist options for $.type|resource$, falling back to the standard LIST semantics, err = %v", watchListOptionsErr )
|
||||||
} else if hasWatchListOptionsPrepared {
|
} else if hasWatchListOptionsPrepared {
|
||||||
result, err := c.watchList(ctx, watchListOptions)
|
result, err := c.watchList(ctx, watchListOptions)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
$.CheckWatchListFromCacheDataConsistencyIfRequested|raw$(ctx, "watchlist request for $.type|resource$", c.list, opts, result)
|
$.CheckWatchListFromCacheDataConsistencyIfRequested|raw$(ctx, "watchlist request for $.type|resource$", c.list, opts, result)
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
klog.Warningf("The watchlist request for $.type|resource$ ended with an error, falling back to the standard LIST semantics, err = %v", err)
|
$.klogWarningf|raw$("The watchlist request for $.type|resource$ ended with an error, falling back to the standard LIST semantics, err = %v", err)
|
||||||
}
|
}
|
||||||
result, err := c.list(ctx, opts)
|
result, err := c.list(ctx, opts)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@ -601,9 +604,9 @@ func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, opts $.ListOptions|r
|
|||||||
var privateListTemplate = `
|
var privateListTemplate = `
|
||||||
// list takes label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
|
// list takes label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
|
||||||
func (c *$.type|privatePlural$) list(ctx $.context|raw$, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
|
func (c *$.type|privatePlural$) list(ctx $.context|raw$, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
|
||||||
var timeout time.Duration
|
var timeout $.timeDuration|raw$
|
||||||
if opts.TimeoutSeconds != nil{
|
if opts.TimeoutSeconds != nil{
|
||||||
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
timeout = $.timeDuration|raw$(*opts.TimeoutSeconds) * $.timeSecond|raw$
|
||||||
}
|
}
|
||||||
result = &$.resultType|raw$List{}
|
result = &$.resultType|raw$List{}
|
||||||
err = c.GetClient().Get().
|
err = c.GetClient().Get().
|
||||||
@ -620,9 +623,9 @@ func (c *$.type|privatePlural$) list(ctx $.context|raw$, opts $.ListOptions|raw$
|
|||||||
var listSubresourceTemplate = `
|
var listSubresourceTemplate = `
|
||||||
// $.verb$ takes $.type|raw$ name, label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
|
// $.verb$ takes $.type|raw$ name, label and field selectors, and returns the list of $.resultType|publicPlural$ that match those selectors.
|
||||||
func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.type|private$Name string, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
|
func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.type|private$Name string, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
|
||||||
var timeout time.Duration
|
var timeout $.timeDuration|raw$
|
||||||
if opts.TimeoutSeconds != nil{
|
if opts.TimeoutSeconds != nil{
|
||||||
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
timeout = $.timeDuration|raw$(*opts.TimeoutSeconds) * $.timeSecond|raw$
|
||||||
}
|
}
|
||||||
result = &$.resultType|raw$List{}
|
result = &$.resultType|raw$List{}
|
||||||
err = c.GetClient().Get().
|
err = c.GetClient().Get().
|
||||||
@ -750,9 +753,9 @@ func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, $.inputType|private$
|
|||||||
var watchTemplate = `
|
var watchTemplate = `
|
||||||
// $.verb$ returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
|
// $.verb$ returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
|
||||||
func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
|
func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
|
||||||
var timeout time.Duration
|
var timeout $.timeDuration|raw$
|
||||||
if opts.TimeoutSeconds != nil{
|
if opts.TimeoutSeconds != nil{
|
||||||
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
timeout = $.timeDuration|raw$(*opts.TimeoutSeconds) * $.timeSecond|raw$
|
||||||
}
|
}
|
||||||
opts.Watch = true
|
opts.Watch = true
|
||||||
return c.GetClient().Get().
|
return c.GetClient().Get().
|
||||||
@ -766,13 +769,13 @@ func (c *$.type|privatePlural$) $.verb$(ctx $.context|raw$, opts $.ListOptions|r
|
|||||||
var watchListTemplate = `
|
var watchListTemplate = `
|
||||||
// watchList establishes a watch stream with the server and returns the list of $.resultType|publicPlural$
|
// watchList establishes a watch stream with the server and returns the list of $.resultType|publicPlural$
|
||||||
func (c *$.type|privatePlural$) watchList(ctx $.context|raw$, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
|
func (c *$.type|privatePlural$) watchList(ctx $.context|raw$, opts $.ListOptions|raw$) (result *$.resultType|raw$List, err error) {
|
||||||
var timeout time.Duration
|
var timeout $.timeDuration|raw$
|
||||||
if opts.TimeoutSeconds != nil{
|
if opts.TimeoutSeconds != nil{
|
||||||
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
timeout = $.timeDuration|raw$(*opts.TimeoutSeconds) * $.timeSecond|raw$
|
||||||
}
|
}
|
||||||
result = &$.resultType|raw$List{}
|
result = &$.resultType|raw$List{}
|
||||||
err = c.client.Get().
|
err = c.GetClient().Get().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.GetNamespace()).$end$
|
||||||
Resource("$.type|resource$").
|
Resource("$.type|resource$").
|
||||||
VersionedParams(&opts, $.schemeParameterCodec|raw$).
|
VersionedParams(&opts, $.schemeParameterCodec|raw$).
|
||||||
Timeout(timeout).
|
Timeout(timeout).
|
||||||
|
Loading…
Reference in New Issue
Block a user