Documentation ¶
Overview ¶
Package discovery provides ways to discover server-supported API groups, versions and resources.
Index ¶
- func FilteredBy(pred ResourcePredicate, rls []*metav1.APIResourceList) []*metav1.APIResourceList
- func GroupVersionResources(rls []*metav1.APIResourceList) (map[schema.GroupVersionResource]struct{}, error)
- func IsGroupDiscoveryFailedError(err error) bool
- func MatchesServerVersion(clientVersion apimachineryversion.Info, client DiscoveryInterface) error
- func ServerPreferredNamespacedResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error)
- func ServerPreferredResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error)
- func ServerResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error)
- func ServerSupportsVersion(client DiscoveryInterface, requiredGV schema.GroupVersion) error
- type CachedDiscoveryClient
- func (d *CachedDiscoveryClient) Fresh() bool
- func (d *CachedDiscoveryClient) Invalidate()
- func (d *CachedDiscoveryClient) OpenAPISchema() (*openapi_v2.Document, error)
- func (d *CachedDiscoveryClient) RESTClient() restclient.Interface
- func (d *CachedDiscoveryClient) ServerGroups() (*metav1.APIGroupList, error)
- func (d *CachedDiscoveryClient) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error)
- func (d *CachedDiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, error)
- func (d *CachedDiscoveryClient) ServerResources() ([]*metav1.APIResourceList, error)
- func (d *CachedDiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error)
- func (d *CachedDiscoveryClient) ServerVersion() (*version.Info, error)
- type CachedDiscoveryInterface
- type DiscoveryClient
- func (d *DiscoveryClient) OpenAPISchema() (*openapi_v2.Document, error)
- func (d *DiscoveryClient) RESTClient() restclient.Interface
- func (d *DiscoveryClient) ServerGroups() (apiGroupList *metav1.APIGroupList, err error)
- func (d *DiscoveryClient) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error)
- func (d *DiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, error)
- func (d *DiscoveryClient) ServerResources() ([]*metav1.APIResourceList, error)
- func (d *DiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (resources *metav1.APIResourceList, err error)
- func (d *DiscoveryClient) ServerVersion() (*version.Info, error)
- type DiscoveryInterface
- type ErrGroupDiscoveryFailed
- type OpenAPISchemaInterface
- type ResourcePredicate
- type ResourcePredicateFunc
- type ServerGroupsInterface
- type ServerResourcesInterface
- type ServerVersionInterface
- type SupportsAllVerbs
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FilteredBy ¶
func FilteredBy(pred ResourcePredicate, rls []*metav1.APIResourceList) []*metav1.APIResourceList
FilteredBy filters by the given predicate. Empty APIResourceLists are dropped.
func GroupVersionResources ¶
func GroupVersionResources(rls []*metav1.APIResourceList) (map[schema.GroupVersionResource]struct{}, error)
GroupVersionResources converts APIResourceLists to the GroupVersionResources.
func IsGroupDiscoveryFailedError ¶
IsGroupDiscoveryFailedError returns true if the provided error indicates the server was unable to discover a complete list of APIs for the client to use.
func MatchesServerVersion ¶
func MatchesServerVersion(clientVersion apimachineryversion.Info, client DiscoveryInterface) error
MatchesServerVersion queries the server to compares the build version (git hash) of the client with the server's build version. It returns an error if it failed to contact the server or if the versions are not an exact match.
func ServerPreferredNamespacedResources ¶
func ServerPreferredNamespacedResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error)
ServerPreferredNamespacedResources uses the provided discovery interface to look up preferred namespaced resources
func ServerPreferredResources ¶
func ServerPreferredResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error)
ServerPreferredResources uses the provided discovery interface to look up preferred resources
func ServerResources ¶
func ServerResources(d DiscoveryInterface) ([]*metav1.APIResourceList, error)
ServerResources uses the provided discovery interface to look up supported resources for all groups and versions.
func ServerSupportsVersion ¶
func ServerSupportsVersion(client DiscoveryInterface, requiredGV schema.GroupVersion) error
ServerSupportsVersion returns an error if the server doesn't have the required version
Types ¶
type CachedDiscoveryClient ¶
type CachedDiscoveryClient struct {
// contains filtered or unexported fields
}
CachedDiscoveryClient implements the functions that discovery server-supported API groups, versions and resources.
func NewCachedDiscoveryClientForConfig ¶
func NewCachedDiscoveryClientForConfig(config *restclient.Config, discoveryCacheDir, httpCacheDir string, ttl time.Duration) (*CachedDiscoveryClient, error)
NewCachedDiscoveryClientForConfig creates a new DiscoveryClient for the given config, and wraps the created client in a CachedDiscoveryClient. The provided configuration is updated with a custom transport that understands cache responses. We receive two distinct cache directories for now, in order to preserve old behavior which makes use of the --cache-dir flag value for storing cache data from the CacheRoundTripper, and makes use of the hardcoded destination (~/.kube/cache/discovery/...) for storing CachedDiscoveryClient cache data. If httpCacheDir is empty, the restconfig's transport will not be updated with a roundtripper that understands cache responses. If discoveryCacheDir is empty, cached server resource data will be looked up in the current directory. TODO(juanvallejo): the value of "--cache-dir" should be honored. Consolidate discoveryCacheDir with httpCacheDir so that server resources and http-cache data are stored in the same location, provided via config flags.
func (*CachedDiscoveryClient) Fresh ¶
func (d *CachedDiscoveryClient) Fresh() bool
Fresh is supposed to tell the caller whether or not to retry if the cache fails to find something (false = retry, true = no need to retry).
func (*CachedDiscoveryClient) Invalidate ¶
func (d *CachedDiscoveryClient) Invalidate()
Invalidate enforces that no cached data is used in the future that is older than the current time.
func (*CachedDiscoveryClient) OpenAPISchema ¶
func (d *CachedDiscoveryClient) OpenAPISchema() (*openapi_v2.Document, error)
OpenAPISchema retrieves and parses the swagger API schema the server supports.
func (*CachedDiscoveryClient) RESTClient ¶
func (d *CachedDiscoveryClient) RESTClient() restclient.Interface
RESTClient returns a RESTClient that is used to communicate with API server by this client implementation.
func (*CachedDiscoveryClient) ServerGroups ¶
func (d *CachedDiscoveryClient) ServerGroups() (*metav1.APIGroupList, error)
ServerGroups returns the supported groups, with information like supported versions and the preferred version.
func (*CachedDiscoveryClient) ServerPreferredNamespacedResources ¶
func (d *CachedDiscoveryClient) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error)
ServerPreferredNamespacedResources returns the supported namespaced resources with the version preferred by the server.
func (*CachedDiscoveryClient) ServerPreferredResources ¶
func (d *CachedDiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, error)
ServerPreferredResources returns the supported resources with the version preferred by the server.
func (*CachedDiscoveryClient) ServerResources ¶
func (d *CachedDiscoveryClient) ServerResources() ([]*metav1.APIResourceList, error)
ServerResources returns the supported resources for all groups and versions.
func (*CachedDiscoveryClient) ServerResourcesForGroupVersion ¶
func (d *CachedDiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error)
ServerResourcesForGroupVersion returns the supported resources for a group and version.
func (*CachedDiscoveryClient) ServerVersion ¶
func (d *CachedDiscoveryClient) ServerVersion() (*version.Info, error)
ServerVersion retrieves and parses the server's version (git version).
type CachedDiscoveryInterface ¶
type CachedDiscoveryInterface interface { DiscoveryInterface // Fresh is supposed to tell the caller whether or not to retry if the cache // fails to find something (false = retry, true = no need to retry). // // TODO: this needs to be revisited, this interface can't be locked properly // and doesn't make a lot of sense. Fresh() bool // Invalidate enforces that no cached data that is older than the current time // is used. Invalidate() }
CachedDiscoveryInterface is a DiscoveryInterface with cache invalidation and freshness. Note that If the ServerResourcesForGroupVersion method returns a cache miss error, the user needs to explicitly call Invalidate to clear the cache, otherwise the same cache miss error will be returned next time.
type DiscoveryClient ¶
type DiscoveryClient struct { LegacyPrefix string // contains filtered or unexported fields }
DiscoveryClient implements the functions that discover server-supported API groups, versions and resources.
func NewDiscoveryClient ¶
func NewDiscoveryClient(c restclient.Interface) *DiscoveryClient
NewDiscoveryClient returns a new DiscoveryClient for the given RESTClient.
func NewDiscoveryClientForConfig ¶
func NewDiscoveryClientForConfig(c *restclient.Config) (*DiscoveryClient, error)
NewDiscoveryClientForConfig creates a new DiscoveryClient for the given config. This client can be used to discover supported resources in the API server.
func NewDiscoveryClientForConfigOrDie ¶
func NewDiscoveryClientForConfigOrDie(c *restclient.Config) *DiscoveryClient
NewDiscoveryClientForConfigOrDie creates a new DiscoveryClient for the given config. If there is an error, it panics.
func (*DiscoveryClient) OpenAPISchema ¶
func (d *DiscoveryClient) OpenAPISchema() (*openapi_v2.Document, error)
OpenAPISchema fetches the open api schema using a rest client and parses the proto.
func (*DiscoveryClient) RESTClient ¶
func (d *DiscoveryClient) RESTClient() restclient.Interface
RESTClient returns a RESTClient that is used to communicate with API server by this client implementation.
func (*DiscoveryClient) ServerGroups ¶
func (d *DiscoveryClient) ServerGroups() (apiGroupList *metav1.APIGroupList, err error)
ServerGroups returns the supported groups, with information like supported versions and the preferred version.
func (*DiscoveryClient) ServerPreferredNamespacedResources ¶
func (d *DiscoveryClient) ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error)
ServerPreferredNamespacedResources returns the supported namespaced resources with the version preferred by the server.
func (*DiscoveryClient) ServerPreferredResources ¶
func (d *DiscoveryClient) ServerPreferredResources() ([]*metav1.APIResourceList, error)
ServerPreferredResources returns the supported resources with the version preferred by the server.
func (*DiscoveryClient) ServerResources ¶
func (d *DiscoveryClient) ServerResources() ([]*metav1.APIResourceList, error)
ServerResources returns the supported resources for all groups and versions.
func (*DiscoveryClient) ServerResourcesForGroupVersion ¶
func (d *DiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (resources *metav1.APIResourceList, err error)
ServerResourcesForGroupVersion returns the supported resources for a group and version.
func (*DiscoveryClient) ServerVersion ¶
func (d *DiscoveryClient) ServerVersion() (*version.Info, error)
ServerVersion retrieves and parses the server's version (git version).
type DiscoveryInterface ¶
type DiscoveryInterface interface { RESTClient() restclient.Interface ServerGroupsInterface ServerResourcesInterface ServerVersionInterface OpenAPISchemaInterface }
DiscoveryInterface holds the methods that discover server-supported API groups, versions and resources.
type ErrGroupDiscoveryFailed ¶
type ErrGroupDiscoveryFailed struct { // Groups is a list of the groups that failed to load and the error cause Groups map[schema.GroupVersion]error }
ErrGroupDiscoveryFailed is returned if one or more API groups fail to load.
func (*ErrGroupDiscoveryFailed) Error ¶
func (e *ErrGroupDiscoveryFailed) Error() string
Error implements the error interface
type OpenAPISchemaInterface ¶
type OpenAPISchemaInterface interface { // OpenAPISchema retrieves and parses the swagger API schema the server supports. OpenAPISchema() (*openapi_v2.Document, error) }
OpenAPISchemaInterface has a method to retrieve the open API schema.
type ResourcePredicate ¶
type ResourcePredicate interface {
Match(groupVersion string, r *metav1.APIResource) bool
}
ResourcePredicate has a method to check if a resource matches a given condition.
type ResourcePredicateFunc ¶
type ResourcePredicateFunc func(groupVersion string, r *metav1.APIResource) bool
ResourcePredicateFunc returns true if it matches a resource based on a custom condition.
func (ResourcePredicateFunc) Match ¶
func (fn ResourcePredicateFunc) Match(groupVersion string, r *metav1.APIResource) bool
Match is a wrapper around ResourcePredicateFunc.
type ServerGroupsInterface ¶
type ServerGroupsInterface interface { // ServerGroups returns the supported groups, with information like supported versions and the // preferred version. ServerGroups() (*metav1.APIGroupList, error) }
ServerGroupsInterface has methods for obtaining supported groups on the API server
type ServerResourcesInterface ¶
type ServerResourcesInterface interface { // ServerResourcesForGroupVersion returns the supported resources for a group and version. ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error) // ServerResources returns the supported resources for all groups and versions. ServerResources() ([]*metav1.APIResourceList, error) // ServerPreferredResources returns the supported resources with the version preferred by the // server. ServerPreferredResources() ([]*metav1.APIResourceList, error) // ServerPreferredNamespacedResources returns the supported namespaced resources with the // version preferred by the server. ServerPreferredNamespacedResources() ([]*metav1.APIResourceList, error) }
ServerResourcesInterface has methods for obtaining supported resources on the API server
type ServerVersionInterface ¶
type ServerVersionInterface interface { // ServerVersion retrieves and parses the server's version (git version). ServerVersion() (*version.Info, error) }
ServerVersionInterface has a method for retrieving the server's version.
type SupportsAllVerbs ¶
type SupportsAllVerbs struct {
Verbs []string
}
SupportsAllVerbs is a predicate matching a resource iff all given verbs are supported.
func (SupportsAllVerbs) Match ¶
func (p SupportsAllVerbs) Match(groupVersion string, r *metav1.APIResource) bool
Match checks if a resource contains all the given verbs.