client

package
v0.13.8 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2020 License: Apache-2.0, Apache-2.0 Imports: 28 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 = ""

	// ClusterScope designates a resource is not namespaced.
	ClusterScope = "-"
)
View Source
const (
	// 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"
)

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

func Namespaced(p string) (string, string)

Namespaced converts a resource path to namespace and resource name.

Types

type APIClient

type APIClient struct {
	// contains filtered or unexported fields
}

APIClient represents a Kubernetes api client.

func InitConnectionOrDie

func InitConnectionOrDie(config *Config) *APIClient

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

func (*APIClient) CachedDiscoveryOrDie

func (a *APIClient) CachedDiscoveryOrDie() *disk.CachedDiscoveryClient

CachedDiscoveryOrDie 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 added in v0.13.4

func (a *APIClient) CheckConnectivity() (status bool)

CheckConnectivity return true if api server is cool or false otherwise. BOZO!! No super sure about this approach either??

func (*APIClient) Config

func (a *APIClient) Config() *Config

Config return a kubernetes configuration.

func (*APIClient) CurrentNamespaceName

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

CurrentNamespaceName return namespace name set via either cli arg or cluster config.

func (*APIClient) DialOrDie

func (a *APIClient) DialOrDie() kubernetes.Interface

DialOrDie returns a handle to api server or die.

func (*APIClient) DynDialOrDie

func (a *APIClient) DynDialOrDie() dynamic.Interface

DynDialOrDie returns a handle to a dynamic interface.

func (*APIClient) HasMetrics

func (a *APIClient) HasMetrics() bool

HasMetrics returns true if the cluster supports metrics.

func (*APIClient) MXDial

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

MXDial returns a handle to the metrics server.

func (*APIClient) RestConfigOrDie

func (a *APIClient) RestConfigOrDie() *restclient.Config

RestConfigOrDie returns a rest api client.

func (*APIClient) ServerVersion

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

ServerVersion returns the current server version info.

func (*APIClient) SwitchContextOrDie

func (a *APIClient) SwitchContextOrDie(ctx string)

SwitchContextOrDie 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 float64
	PercMEM float64
}

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) ClusterNameFromContext

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

ClusterNameFromContext returns the cluster associated with the given context.

func (*Config) ClusterNames

func (c *Config) ClusterNames() ([]string, 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) NamespaceNames

func (c *Config) NamespaceNames(nns []v1.Namespace) []string

NamespaceNames fetch all available namespaces on current cluster.

func (*Config) RESTConfig

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

RESTConfig fetch the current REST api service connection.

func (*Config) RawConfig

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

RawConfig fetch the current kubeconfig with no overrides.

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() *Config
	DialOrDie() kubernetes.Interface
	SwitchContextOrDie(ctx string)
	CachedDiscoveryOrDie() *disk.CachedDiscoveryClient
	RestConfigOrDie() *restclient.Config
	MXDial() (*versioned.Clientset, error)
	DynDialOrDie() dynamic.Interface
	HasMetrics() bool
	ValidNamespaces() ([]v1.Namespace, error)
	ServerVersion() (*version.Info, error)
	CheckConnectivity() bool
}

Connection represents a Kubenetes apiserver connection.

type CurrentMetrics added in v0.13.3

type CurrentMetrics struct {
	CurrentCPU int64
	CurrentMEM float64
}

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

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) G added in v0.13.1

func (g GVR) G() string

G returns the resource group name.

func (GVR) GR added in v0.13.1

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

GR returns a a full schema representation.

func (GVR) GV added in v0.13.1

func (g GVR) GV() schema.GroupVersion

GV returns the group version scheme representation.

func (GVR) GVR added in v0.13.1

GVR returns a a full schema representation.

func (GVR) R added in v0.13.1

func (g GVR) R() string

R returns the resource name.

func (GVR) RG added in v0.13.1

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 added in v0.13.1

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
}

MetricsServer serves cluster metrics for nodes and pods.

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) FetchNodesMetrics

func (m *MetricsServer) FetchNodesMetrics() (*mv1beta1.NodeMetricsList, error)

FetchNodesMetrics return all metrics for pods in a given namespace.

func (*MetricsServer) FetchPodMetrics

func (m *MetricsServer) FetchPodMetrics(fqn string) (*mv1beta1.PodMetrics, error)

FetchPodMetrics return all metrics for pods in a given namespace.

func (*MetricsServer) FetchPodsMetrics

func (m *MetricsServer) FetchPodsMetrics(ns string) (*mv1beta1.PodMetricsList, error)

FetchPodsMetrics return all metrics for pods in a given namespace.

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
	AvailCPU int64
	AvailMEM float64
	TotalCPU int64
	TotalMEM float64
}

NodeMetrics describes raw node metrics.

type NodesMetrics

type NodesMetrics map[string]NodeMetrics

NodesMetrics tracks usage metrics per nodes.

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.

Jump to

Keyboard shortcuts

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