client

package
v0.0.0-...-f4f837b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 31, 2022 License: Apache-2.0, Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// NA Not available.
	NA = "n/a"

	// NamespaceAll designates the fictional all namespace.
	NamespaceAll = "all"

	// AllNamespaces designates all namespaces.
	AllNamespaces = ""

	// 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"
)
View Source
const MegaByte = 1024 * 1024

MegaByte represents a megabyte.

View Source
const (

	// UsePersistentConfig caches client config to avoid reloads.
	UsePersistentConfig = true
)

Variables

View Source
var (
	// 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}
)

Functions

func Can

func Can(verbs []string, v string) bool

Can determines the available actions for a given resource.

func CleanseNamespace

func CleanseNamespace(ns string) string

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 FQN

func FQN(ns, n string) string

FQN returns a fully qualified resource name.

func IsAllNamespace

func IsAllNamespace(ns string) bool

IsAllNamespace returns true if ns == all.

func IsAllNamespaces

func IsAllNamespaces(ns string) bool

IsAllNamespaces returns true if all namespaces, false otherwise.

func IsClusterScoped

func IsClusterScoped(ns string) bool

IsClusterScoped returns true if resource is not namespaced.

func IsClusterWide

func IsClusterWide(ns string) bool

IsClusterWide returns true if ns designates cluster scope, false otherwise.

func IsNamespaced

func IsNamespaced(ns string) bool

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 NamespaceNames

func NamespaceNames(nns []v1.Namespace) []string

NamespaceNames fetch all available namespaces on current cluster.

func Namespaced

func Namespaced(p string) (string, string)

Namespaced converts a resource path to namespace and resource name.

func ResetMetrics

func ResetMetrics()

ResetMetrics resets the metric server handle.

func ToMB

func ToMB(v int64) int64

ToMB converts bytes to megabytes.

func ToPercentage

func ToPercentage(v1, v2 int64) int

ToPercentage computes percentage as string otherwise n/aa.

func ToPercentageStr

func ToPercentageStr(v1, v2 int64) string

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

func InitConnection(config *Config) (*APIClient, error)

InitConnection initialize connection from command line args. Checks for connectivity with the api server.

func NewTestAPIClient

func NewTestAPIClient() *APIClient

NewTestAPIClient for testing ONLY!!

func (*APIClient) ActiveCluster

func (a *APIClient) ActiveCluster() string

ActiveCluster returns the current cluster name.

func (*APIClient) ActiveNamespace

func (a *APIClient) ActiveNamespace() string

ActiveNamespace returns the current namespace.

func (*APIClient) CachedDiscovery

func (a *APIClient) CachedDiscovery() (*disk.CachedDiscoveryClient, error)

CachedDiscovery returns a cached discovery client.

func (*APIClient) CanI

func (a *APIClient) CanI(ns, gvr string, verbs []string) (auth bool, err error)

CanI checks if user has access to a certain resource.

func (*APIClient) CheckConnectivity

func (a *APIClient) CheckConnectivity() bool

CheckConnectivity return true if api server is cool or false otherwise.

func (*APIClient) Config

func (a *APIClient) Config() *Config

Config return a kubernetes configuration.

func (*APIClient) ConnectionOK

func (a *APIClient) ConnectionOK() bool

ConnectionOK returns connection status.

func (*APIClient) CurrentNamespaceName

func (a *APIClient) CurrentNamespaceName() (string, error)

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)

LogDial returns a handle to api server for logs.

func (*APIClient) DynDial

func (a *APIClient) DynDial() (dynamic.Interface, error)

DynDial returns a handle to a dynamic interface.

func (*APIClient) HasMetrics

func (a *APIClient) HasMetrics() bool

HasMetrics checks if the cluster supports metrics.

func (*APIClient) IsActiveNamespace

func (a *APIClient) IsActiveNamespace(ns string) bool

IsActiveNamespace returns true if namespaces matches.

func (*APIClient) MXDial

func (a *APIClient) MXDial() (*versioned.Clientset, error)

MXDial returns a handle to the metrics server.

func (*APIClient) RestConfig

func (a *APIClient) RestConfig() (*restclient.Config, error)

RestConfig returns a rest api client.

func (*APIClient) ServerVersion

func (a *APIClient) ServerVersion() (*version.Info, error)

ServerVersion returns the current server version info.

func (*APIClient) SwitchContext

func (a *APIClient) SwitchContext(name string) error

SwitchContext handles kubeconfig context switches.

func (*APIClient) ValidNamespaces

func (a *APIClient) ValidNamespaces() ([]v1.Namespace, error)

ValidNamespaces 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 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

func (c *Config) CallTimeout() time.Duration

CallTimeout returns the call timeout if set or the default if not set.

func (*Config) ClusterNameFromContext

func (c *Config) ClusterNameFromContext(context string) (string, error)

ClusterNameFromContext returns the cluster associated with the given context.

func (*Config) ClusterNames

func (c *Config) ClusterNames() (map[string]struct{}, error)

ClusterNames fetch all kubeconfig defined clusters.

func (*Config) ConfigAccess

func (c *Config) ConfigAccess() (clientcmd.ConfigAccess, error)

ConfigAccess return the current kubeconfig api server access configuration.

func (*Config) ContextNames

func (c *Config) ContextNames() ([]string, error)

ContextNames fetch all available contexts.

func (*Config) Contexts

func (c *Config) Contexts() (map[string]*clientcmdapi.Context, error)

Contexts fetch all available contexts.

func (*Config) CurrentClusterName

func (c *Config) CurrentClusterName() (string, error)

CurrentClusterName returns the active cluster name.

func (*Config) CurrentContextName

func (c *Config) CurrentContextName() (string, error)

CurrentContextName returns the currently active config context.

func (*Config) CurrentGroupNames

func (c *Config) CurrentGroupNames() ([]string, error)

CurrentGroupNames retrieves the active group names.

func (*Config) CurrentNamespaceName

func (c *Config) CurrentNamespaceName() (string, error)

CurrentNamespaceName retrieves the active namespace.

func (*Config) CurrentUserName

func (c *Config) CurrentUserName() (string, error)

CurrentUserName retrieves the active user name.

func (*Config) DelContext

func (c *Config) DelContext(n string) error

DelContext remove a given context from the configuration.

func (*Config) Flags

func (c *Config) Flags() *genericclioptions.ConfigFlags

Flags returns configuration flags.

func (*Config) GetContext

func (c *Config) GetContext(n string) (*clientcmdapi.Context, error)

GetContext fetch a given context or error if it does not exists.

func (*Config) ImpersonateGroups

func (c *Config) ImpersonateGroups() (string, error)

ImpersonateGroups retrieves the active groups if set on the CLI.

func (*Config) ImpersonateUser

func (c *Config) ImpersonateUser() (string, error)

ImpersonateUser retrieves the active user name if set on the CLI.

func (*Config) RESTConfig

func (c *Config) RESTConfig() (*restclient.Config, error)

func (*Config) RawConfig

func (c *Config) RawConfig() (clientcmdapi.Config, error)

func (*Config) SwitchContext

func (c *Config) SwitchContext(name string) error

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

	// ValidNamespaces returns all available namespaces.
	ValidNamespaces() ([]v1.Namespace, error)

	// ServerVersion returns current server version.
	ServerVersion() (*version.Info, error)

	// CheckConnectivity checks if api server connection is happy or not.
	CheckConnectivity() bool

	// ActiveCluster returns the current cluster name.
	ActiveCluster() 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 Error

type Error string

Error represents an error.

func (Error) Error

func (e Error) Error() string

Error returns the error text.

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

func FromGVAndR(gv, r string) GVR

FromGVAndR builds a gvr from a group/version and resource.

func NewGVR

func NewGVR(gvr string) GVR

NewGVR builds a new gvr from a group, version, resource.

func NewGVRFromMeta

func NewGVRFromMeta(a metav1.APIResource) GVR

NewGVRFromMeta builds a gvr from resource metadata.

func (GVR) AsResourceName

func (g GVR) AsResourceName() string

AsResourceName returns a resource . separated descriptor in the shape of kind.version.group.

func (GVR) FQN

func (g GVR) FQN(n string) string

FQN returns a fully qualified resource name.

func (GVR) G

func (g GVR) G() string

G returns the resource group name.

func (GVR) GR

func (g GVR) GR() *schema.GroupResource

GR returns a full schema representation.

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

GVR returns a full schema representation.

func (GVR) R

func (g GVR) R() string

R returns the resource name.

func (GVR) RG

func (g GVR) RG() (string, string)

RG returns the resource and group.

func (GVR) String

func (g GVR) String() string

String returns gvr as string.

func (GVR) SubResource

func (g GVR) SubResource() string

SubResource returns a sub resource if available.

func (GVR) V

func (g GVR) V() string

V returns the resource version.

type GVRs

type GVRs []GVR

GVRs represents a collection of gvr.

func (GVRs) Len

func (g GVRs) Len() int

Len returns the list size.

func (GVRs) Less

func (g GVRs) Less(i, j int) bool

Less returns true if i < j.

func (GVRs) Swap

func (g GVRs) Swap(i, j int)

Swap swaps list values.

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 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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL