let apiserver support api discovery
This commit is contained in:
@@ -22,16 +22,64 @@ import (
|
||||
|
||||
// This file contains API types that are unversioned.
|
||||
|
||||
// APIVersions lists the api versions that are available, to allow
|
||||
// version negotiation. APIVersions isn't just an unnamed array of
|
||||
// strings in order to allow for future evolution, though unversioned
|
||||
// APIVersions lists the versions that are available, to allow clients to
|
||||
// discover the API at /api, which is the root path of the legacy v1 API.
|
||||
type APIVersions struct {
|
||||
// versions are the api versions that are available.
|
||||
Versions []string `json:"versions"`
|
||||
}
|
||||
|
||||
// APIGroupList is a list of APIGroup, to allow clients to discover the API at
|
||||
// /apis.
|
||||
type APIGroupList struct {
|
||||
// groups is a list of APIGroup.
|
||||
Groups []APIGroup `json:"groups"`
|
||||
}
|
||||
|
||||
// APIGroup contains the name, the supported versions, and the preferred version
|
||||
// of a group.
|
||||
type APIGroup struct {
|
||||
// name is the name of the group.
|
||||
Name string `json:"name"`
|
||||
// versions are the versions supported in this group.
|
||||
Versions []GroupVersion `json:"versions"`
|
||||
// preferredVersion is the version preferred by the API server, which
|
||||
// probably is the storage version.
|
||||
PreferredVersion GroupVersion `json:"preferredVersion,omitempty"`
|
||||
}
|
||||
|
||||
// GroupVersion contains the "group/version" and "version" string of a version.
|
||||
// It is made a struct to keep extensiblity.
|
||||
type GroupVersion struct {
|
||||
// groupVersion specifies the API group and version in the form "group/version"
|
||||
GroupVersion string `json:"groupVersion"`
|
||||
// version specifies the version in the form of "version". This is to save
|
||||
// the clients the trouble of splitting the GroupVersion.
|
||||
Version string `json:"version"`
|
||||
}
|
||||
|
||||
// APIResource specifies the name of a resource and whether it is namespaced.
|
||||
type APIResource struct {
|
||||
// name is the name of the resource.
|
||||
Name string `json:"name"`
|
||||
// namespaced indicates if a resource is namespaced or not.
|
||||
Namespaced bool `json:"namespaced"`
|
||||
}
|
||||
|
||||
// APIResourceList is a list of APIResource, it is used to expose the name of the
|
||||
// resources supported in a specific group and version, and if the resource
|
||||
// is namespaced.
|
||||
type APIResourceList struct {
|
||||
// groupVersion is the group and version this APIResourceList is for.
|
||||
GroupVersion string `json:"groupVersion"`
|
||||
// resources contains the name of the resources and if they are namespaced.
|
||||
APIResources []APIResource `json:"resources"`
|
||||
}
|
||||
|
||||
// RootPaths lists the paths available at root.
|
||||
// For example: "/healthz", "/api".
|
||||
// For example: "/healthz", "/apis".
|
||||
type RootPaths struct {
|
||||
// paths are the paths available at root.
|
||||
Paths []string `json:"paths"`
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user