...
1
16
17 package cached
18
19 import (
20 "sync"
21
22 "k8s.io/client-go/openapi"
23 )
24
25 type client struct {
26 delegate openapi.Client
27
28 once sync.Once
29 result map[string]openapi.GroupVersion
30 err error
31 }
32
33 func NewClient(other openapi.Client) openapi.Client {
34 return &client{
35 delegate: other,
36 }
37 }
38
39 func (c *client) Paths() (map[string]openapi.GroupVersion, error) {
40 c.once.Do(func() {
41 uncached, err := c.delegate.Paths()
42 if err != nil {
43 c.err = err
44 return
45 }
46
47 result := make(map[string]openapi.GroupVersion, len(uncached))
48 for k, v := range uncached {
49 result[k] = newGroupVersion(v)
50 }
51 c.result = result
52 })
53 return c.result, c.err
54 }
55
View as plain text