Documentation ¶
Index ¶
- Constants
- Variables
- func Can(verbs []string, v string) bool
- func CleanseNamespace(ns string) string
- func CoFQN(m metav1.ObjectMeta, co string) string
- func FQN(ns, n string) string
- func IsAllNamespace(ns string) bool
- func IsAllNamespaces(ns string) bool
- func IsClusterScoped(ns string) bool
- func IsClusterWide(ns string) bool
- func IsNamespaced(ns string) bool
- func MetaFQN(m metav1.ObjectMeta) string
- func Namespaced(p string) (string, string)
- func ResetMetrics()
- func ToMB(v int64) int64
- func ToPercentage(v1, v2 int64) int
- func ToPercentageStr(v1, v2 int64) string
- type APIClient
- func (a *APIClient) ActiveContext() string
- func (a *APIClient) ActiveNamespace() string
- func (a *APIClient) CachedDiscovery() (*disk.CachedDiscoveryClient, error)
- func (a *APIClient) CanI(ns, gvr, name string, verbs []string) (auth bool, err error)
- func (a *APIClient) CheckConnectivity() bool
- func (a *APIClient) Config() *Config
- func (a *APIClient) ConnectionOK() bool
- func (a *APIClient) CurrentNamespaceName() (string, error)
- func (a *APIClient) Dial() (kubernetes.Interface, error)
- func (a *APIClient) DialLogs() (kubernetes.Interface, error)
- func (a *APIClient) DynDial() (dynamic.Interface, error)
- func (a *APIClient) HasMetrics() bool
- func (a *APIClient) IsActiveNamespace(ns string) bool
- func (a *APIClient) IsValidNamespace(ns string) bool
- func (a *APIClient) MXDial() (*versioned.Clientset, error)
- func (a *APIClient) RestConfig() (*restclient.Config, error)
- func (a *APIClient) ServerVersion() (*version.Info, error)
- func (a *APIClient) SwitchContext(name string) error
- func (a *APIClient) ValidNamespaceNames() (NamespaceNames, error)
- type Authorizer
- type ClusterMetrics
- type Config
- func (c *Config) CallTimeout() time.Duration
- func (c *Config) Clone(ns string) (*genericclioptions.ConfigFlags, error)
- func (c *Config) ConfigAccess() (clientcmd.ConfigAccess, error)
- func (c *Config) ContextNames() (map[string]struct{}, error)
- func (c *Config) Contexts() (map[string]*api.Context, error)
- func (c *Config) CurrentClusterName() (string, error)
- func (c *Config) CurrentContext() (*api.Context, error)
- func (c *Config) CurrentContextName() (string, error)
- func (c *Config) CurrentContextNamespace() (string, error)
- func (c *Config) CurrentGroupNames() ([]string, error)
- func (c *Config) CurrentNamespaceName() (string, error)
- func (c *Config) CurrentUserName() (string, error)
- func (c *Config) DelContext(n string) error
- func (c *Config) Flags() *genericclioptions.ConfigFlags
- func (c *Config) GetContext(n string) (*api.Context, error)
- func (c *Config) ImpersonateGroups() (string, error)
- func (c *Config) ImpersonateUser() (string, error)
- func (c *Config) RESTConfig() (*restclient.Config, error)
- func (c *Config) RawConfig() (api.Config, error)
- func (c *Config) RenameContext(old string, new string) error
- func (c *Config) SwitchContext(name string) error
- type Connection
- type ContainersMetrics
- type CurrentMetrics
- type Error
- type GVR
- func (g GVR) AsResourceName() string
- func (g GVR) FQN(n string) string
- func (g GVR) G() string
- func (g GVR) GR() *schema.GroupResource
- func (g GVR) GV() schema.GroupVersion
- func (g GVR) GVK() schema.GroupVersionKind
- func (g GVR) GVR() schema.GroupVersionResource
- func (g GVR) IsDecodable() bool
- func (g GVR) R() string
- func (g GVR) RG() (string, string)
- func (g GVR) String() string
- func (g GVR) SubResource() string
- func (g GVR) V() string
- type GVRs
- type MetricsServer
- func (m *MetricsServer) ClusterLoad(nos *v1.NodeList, nmx *mv1beta1.NodeMetricsList, mx *ClusterMetrics) error
- func (m *MetricsServer) FetchContainersMetrics(ctx context.Context, fqn string) (ContainersMetrics, error)
- func (m *MetricsServer) FetchNodeMetrics(ctx context.Context, n string) (*mv1beta1.NodeMetrics, error)
- func (m *MetricsServer) FetchNodesMetrics(ctx context.Context) (*mv1beta1.NodeMetricsList, error)
- func (m *MetricsServer) FetchNodesMetricsMap(ctx context.Context) (NodesMetricsMap, error)
- func (m *MetricsServer) FetchPodMetrics(ctx context.Context, fqn string) (*mv1beta1.PodMetrics, error)
- func (m *MetricsServer) FetchPodsMetrics(ctx context.Context, ns string) (*mv1beta1.PodMetricsList, error)
- func (m *MetricsServer) FetchPodsMetricsMap(ctx context.Context, ns string) (PodsMetricsMap, error)
- func (m *MetricsServer) NodesMetrics(nodes *v1.NodeList, metrics *mv1beta1.NodeMetricsList, mmx NodesMetrics)
- func (m *MetricsServer) PodsMetrics(pods *mv1beta1.PodMetricsList, mmx PodsMetrics)
- type NamespaceNames
- type NodeMetrics
- type NodesMetrics
- type NodesMetricsMap
- type PodMetrics
- type PodsMetrics
- type PodsMetricsMap
Constants ¶
const ( // NA Not available. NA = "n/a" // NamespaceAll designates the fictional all namespace. NamespaceAll = "all" // BlankNamespace designates no namespace. BlankNamespace = "" // DefaultNamespace designates the default namespace. DefaultNamespace = "default" // ClusterScope designates a resource is not namespaced. ClusterScope = "-" // NotNamespaced designates a non resource namespace. NotNamespaced = "*" // CreateVerb represents create access on a resource. CreateVerb = "create" // UpdateVerb represents an update access on a resource. UpdateVerb = "update" // PatchVerb represents a patch access on a resource. PatchVerb = "patch" // DeleteVerb represents a delete access on a resource. DeleteVerb = "delete" // GetVerb represents a get access on a resource. GetVerb = "get" // ListVerb represents a list access on a resource. ListVerb = "list" // WatchVerb represents a watch access on a resource. WatchVerb = "watch" )
const MegaByte = 1024 * 1024
MegaByte represents a megabyte.
const ( // UsePersistentConfig caches client config to avoid reloads. UsePersistentConfig = true )
Variables ¶
var ( // PatchAccess patch a resource. PatchAccess = []string{PatchVerb} // GetAccess reads a resource. GetAccess = []string{GetVerb} // ListAccess list resources. ListAccess = []string{ListVerb} // MonitorAccess monitors a collection of resources. MonitorAccess = []string{ListVerb, WatchVerb} // ReadAllAccess represents an all read access to a resource. ReadAllAccess = []string{GetVerb, ListVerb, WatchVerb} )
var NoGVR = GVR{}
Functions ¶
func CleanseNamespace ¶
CleanseNamespace ensures all ns maps to blank.
func CoFQN ¶
func CoFQN(m metav1.ObjectMeta, co string) string
CoFQN returns a fully qualified container name.
func IsAllNamespaces ¶
IsAllNamespaces returns true if all namespaces, false otherwise.
func IsClusterScoped ¶
IsClusterScoped returns true if resource is not namespaced.
func IsClusterWide ¶
IsClusterWide returns true if ns designates cluster scope, false otherwise.
func IsNamespaced ¶
IsNamespaced returns true if a specific ns is given.
func MetaFQN ¶
func MetaFQN(m metav1.ObjectMeta) string
MetaFQN returns a fully qualified resource name.
func Namespaced ¶
Namespaced converts a resource path to namespace and resource name.
func ToPercentage ¶
ToPercentage computes percentage as string otherwise n/aa.
func ToPercentageStr ¶
ToPercentageStr computes percentage, but if v2 is 0, it will return NAValue instead of 0.
Types ¶
type APIClient ¶
type APIClient struct {
// contains filtered or unexported fields
}
APIClient represents a Kubernetes api client.
func InitConnection ¶
InitConnection initialize connection from command line args. Checks for connectivity with the api server.
func (*APIClient) ActiveContext ¶
ActiveContext returns the current context name.
func (*APIClient) ActiveNamespace ¶
ActiveNamespace returns the current namespace.
func (*APIClient) CachedDiscovery ¶
func (a *APIClient) CachedDiscovery() (*disk.CachedDiscoveryClient, error)
CachedDiscovery returns a cached discovery client.
func (*APIClient) CheckConnectivity ¶
CheckConnectivity return true if api server is cool or false otherwise.
func (*APIClient) ConnectionOK ¶
ConnectionOK returns connection status.
func (*APIClient) CurrentNamespaceName ¶
CurrentNamespaceName return namespace name set via either cli arg or cluster config.
func (*APIClient) Dial ¶
func (a *APIClient) Dial() (kubernetes.Interface, error)
Dial returns a handle to api server or die.
func (*APIClient) DialLogs ¶
func (a *APIClient) DialLogs() (kubernetes.Interface, error)
DialLogs returns a handle to api server for logs.
func (*APIClient) HasMetrics ¶
HasMetrics checks if the cluster supports metrics.
func (*APIClient) IsActiveNamespace ¶
IsActiveNamespace returns true if namespaces matches.
func (*APIClient) IsValidNamespace ¶
func (*APIClient) RestConfig ¶
func (a *APIClient) RestConfig() (*restclient.Config, error)
RestConfig returns a rest api client.
func (*APIClient) ServerVersion ¶
ServerVersion returns the current server version info.
func (*APIClient) SwitchContext ¶
SwitchContext handles kubeconfig context switches.
func (*APIClient) ValidNamespaceNames ¶
func (a *APIClient) ValidNamespaceNames() (NamespaceNames, error)
ValidNamespaceNames returns all available namespaces.
type Authorizer ¶
type Authorizer interface { // CanI returns true if the user can use these actions for a given resource. CanI(ns, gvr, n string, verbs []string) (bool, error) }
Authorizer checks what a user can or cannot do to a resource.
type ClusterMetrics ¶
type ClusterMetrics struct {
PercCPU, PercMEM, PercEphemeral int
}
ClusterMetrics summarizes total node metrics as percentages.
type Config ¶
type Config struct {
// contains filtered or unexported fields
}
Config tracks a kubernetes configuration.
func NewConfig ¶
func NewConfig(f *genericclioptions.ConfigFlags) *Config
NewConfig returns a new k8s config or an error if the flags are invalid.
func (*Config) CallTimeout ¶
CallTimeout returns the call timeout if set or the default if not set.
func (*Config) Clone ¶
func (c *Config) Clone(ns string) (*genericclioptions.ConfigFlags, error)
func (*Config) ConfigAccess ¶
func (c *Config) ConfigAccess() (clientcmd.ConfigAccess, error)
ConfigAccess return the current kubeconfig api server access configuration.
func (*Config) ContextNames ¶
ContextNames fetch all available contexts.
func (*Config) CurrentClusterName ¶
CurrentClusterName returns the currently active cluster name.
func (*Config) CurrentContext ¶
CurrentContext returns the current context configuration.
func (*Config) CurrentContextName ¶
CurrentContextName returns the currently active config context.
func (*Config) CurrentContextNamespace ¶
func (*Config) CurrentGroupNames ¶
CurrentGroupNames retrieves the active group names.
func (*Config) CurrentNamespaceName ¶
CurrentNamespaceName retrieves the active namespace.
func (*Config) CurrentUserName ¶
CurrentUserName retrieves the active user name.
func (*Config) DelContext ¶
DelContext remove a given context from the configuration.
func (*Config) Flags ¶
func (c *Config) Flags() *genericclioptions.ConfigFlags
Flags returns configuration flags.
func (*Config) GetContext ¶
GetContext fetch a given context or error if it does not exists.
func (*Config) ImpersonateGroups ¶
ImpersonateGroups retrieves the active groups if set on the CLI.
func (*Config) ImpersonateUser ¶
ImpersonateUser retrieves the active user name if set on the CLI.
func (*Config) RESTConfig ¶
func (c *Config) RESTConfig() (*restclient.Config, error)
func (*Config) RenameContext ¶
RenameContext renames a context.
func (*Config) SwitchContext ¶
SwitchContext changes the kubeconfig context to a new cluster.
type Connection ¶
type Connection interface { Authorizer // Config returns current config. Config() *Config // ConnectionOK checks api server connection status. ConnectionOK() bool // Dial connects to api server. Dial() (kubernetes.Interface, error) // DialLogs connects to api server for logs. DialLogs() (kubernetes.Interface, error) // SwitchContext switches cluster based on context. SwitchContext(ctx string) error // CachedDiscovery connects to discovery client. CachedDiscovery() (*disk.CachedDiscoveryClient, error) // RestConfig connects to rest client. RestConfig() (*restclient.Config, error) // MXDial connects to metrics server. MXDial() (*versioned.Clientset, error) // DynDial connects to dynamic client. DynDial() (dynamic.Interface, error) // HasMetrics checks if metrics server is available. HasMetrics() bool // ValidNamespaceNames returns all available namespace names. ValidNamespaceNames() (NamespaceNames, error) // IsValidNamespace checks if given namespace is known. IsValidNamespace(string) bool // ServerVersion returns current server version. ServerVersion() (*version.Info, error) // CheckConnectivity checks if api server connection is happy or not. CheckConnectivity() bool // ActiveContext returns the current context name. ActiveContext() string // ActiveNamespace returns the current namespace. ActiveNamespace() string // IsActiveNamespace checks if given ns is active. IsActiveNamespace(string) bool }
Connection represents a Kubernetes apiserver connection.
type ContainersMetrics ¶
type ContainersMetrics map[string]*mv1beta1.ContainerMetrics
ContainersMetrics tracks containers metrics.
type CurrentMetrics ¶
type CurrentMetrics struct {
CurrentCPU, CurrentMEM, CurrentEphemeral int64
}
CurrentMetrics tracks current cpu/mem.
type GVR ¶
type GVR struct {
// contains filtered or unexported fields
}
GVR represents a kubernetes resource schema as a string. Format is group/version/resources:subresource.
func FromGVAndR ¶
FromGVAndR builds a gvr from a group/version and resource.
func NewGVRFromMeta ¶
func NewGVRFromMeta(a metav1.APIResource) GVR
NewGVRFromMeta builds a gvr from resource metadata.
func (GVR) AsResourceName ¶
AsResourceName returns a resource . separated descriptor in the shape of kind.version.group.
func (GVR) GV ¶
func (g GVR) GV() schema.GroupVersion
GV returns the group version scheme representation.
func (GVR) GVK ¶
func (g GVR) GVK() schema.GroupVersionKind
GVK returns a full schema representation.
func (GVR) GVR ¶
func (g GVR) GVR() schema.GroupVersionResource
GVR returns a full schema representation.
func (GVR) IsDecodable ¶
IsDecodable checks if the k8s resource has a decodable view
func (GVR) SubResource ¶
SubResource returns a sub resource if available.
type MetricsServer ¶
type MetricsServer struct { Connection // contains filtered or unexported fields }
MetricsServer serves cluster metrics for nodes and pods.
var MetricsDial *MetricsServer
MetricsDial tracks global metric server handle.
func DialMetrics ¶
func DialMetrics(c Connection) *MetricsServer
DialMetrics dials the metrics server.
func NewMetricsServer ¶
func NewMetricsServer(c Connection) *MetricsServer
NewMetricsServer return a metric server instance.
func (*MetricsServer) ClusterLoad ¶
func (m *MetricsServer) ClusterLoad(nos *v1.NodeList, nmx *mv1beta1.NodeMetricsList, mx *ClusterMetrics) error
ClusterLoad retrieves all cluster nodes metrics.
func (*MetricsServer) FetchContainersMetrics ¶
func (m *MetricsServer) FetchContainersMetrics(ctx context.Context, fqn string) (ContainersMetrics, error)
FetchContainersMetrics returns a pod's containers metrics.
func (*MetricsServer) FetchNodeMetrics ¶
func (m *MetricsServer) FetchNodeMetrics(ctx context.Context, n string) (*mv1beta1.NodeMetrics, error)
FetchNodeMetrics return all metrics for nodes.
func (*MetricsServer) FetchNodesMetrics ¶
func (m *MetricsServer) FetchNodesMetrics(ctx context.Context) (*mv1beta1.NodeMetricsList, error)
FetchNodesMetrics return all metrics for nodes.
func (*MetricsServer) FetchNodesMetricsMap ¶
func (m *MetricsServer) FetchNodesMetricsMap(ctx context.Context) (NodesMetricsMap, error)
FetchNodesMetricsMap fetch node metrics as a map.
func (*MetricsServer) FetchPodMetrics ¶
func (m *MetricsServer) FetchPodMetrics(ctx context.Context, fqn string) (*mv1beta1.PodMetrics, error)
FetchPodMetrics return all metrics for pods in a given namespace.
func (*MetricsServer) FetchPodsMetrics ¶
func (m *MetricsServer) FetchPodsMetrics(ctx context.Context, ns string) (*mv1beta1.PodMetricsList, error)
FetchPodsMetrics return all metrics for pods in a given namespace.
func (*MetricsServer) FetchPodsMetricsMap ¶
func (m *MetricsServer) FetchPodsMetricsMap(ctx context.Context, ns string) (PodsMetricsMap, error)
FetchPodsMetricsMap fetch pods metrics as a map.
func (*MetricsServer) NodesMetrics ¶
func (m *MetricsServer) NodesMetrics(nodes *v1.NodeList, metrics *mv1beta1.NodeMetricsList, mmx NodesMetrics)
NodesMetrics retrieves metrics for a given set of nodes.
func (*MetricsServer) PodsMetrics ¶
func (m *MetricsServer) PodsMetrics(pods *mv1beta1.PodMetricsList, mmx PodsMetrics)
PodsMetrics retrieves metrics for all pods in a given namespace.
type NamespaceNames ¶
type NamespaceNames map[string]struct{}
NamespaceNames tracks a collection of namespace names.
type NodeMetrics ¶
type NodeMetrics struct { CurrentMetrics AllocatableCPU, AllocatableMEM, AllocatableEphemeral int64 AvailableCPU, AvailableMEM, AvailableEphemeral int64 TotalCPU, TotalMEM, TotalEphemeral int64 }
NodeMetrics describes raw node metrics.
type NodesMetrics ¶
type NodesMetrics map[string]NodeMetrics
NodesMetrics tracks usage metrics per nodes.
type NodesMetricsMap ¶
type NodesMetricsMap map[string]*mv1beta1.NodeMetrics
NodesMetricsMap tracks node metrics.
type PodMetrics ¶
type PodMetrics CurrentMetrics
PodMetrics represent an aggregation of all pod containers metrics.
type PodsMetrics ¶
type PodsMetrics map[string]PodMetrics
PodsMetrics tracks usage metrics per pods.
type PodsMetricsMap ¶
type PodsMetricsMap map[string]*mv1beta1.PodMetrics
PodsMetricsMap tracks pod metrics.