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 = "-"

	// NotNamespaced designates a non resource namespace.
	NotNamespaced = "*"
)
View Source
const (

	// CallTimeout represents api call timeout limit.
	CallTimeout = 30 * time.Second
)

Variables

View Source
var Resources = newMeta()

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 Load

func Load(f types.Factory) error

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 types.Config) (*APIClient, error)

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

func NewTestClient

func NewTestClient() *APIClient

NewTestClient 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() (status bool)

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

func (*APIClient) Config

func (a *APIClient) Config() types.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) Dial

func (a *APIClient) Dial() (kubernetes.Interface, error)

Dial returns a handle to api server or an error

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 and user is authorized to use 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) ValidNamespaces

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

ValidNamespaces returns all available namespaces.

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(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) ImpersonateGroups

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

ImpersonateGroups retrieves the active groupsif 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) 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.

type ContainerMetrics

type ContainerMetrics map[string]Metrics

ContainerMetrics tracks container metrics

type Factory

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

Factory tracks various resource informers.

func NewFactory

func NewFactory(client types.Connection) *Factory

NewFactory returns a new informers factory.

func (*Factory) CanForResource

func (f *Factory) CanForResource(ns, gvr string, verbs []string) (informers.GenericInformer, error)

CanForResource return an informer is user has access.

func (*Factory) Client

func (f *Factory) Client() types.Connection

Client return the factory connection.

func (*Factory) FactoryFor

func (f *Factory) FactoryFor(ns string) di.DynamicSharedInformerFactory

FactoryFor returns a factory for a given namespace.

func (*Factory) ForResource

func (f *Factory) ForResource(ns, gvr string) (informers.GenericInformer, error)

ForResource returns an informer for a given resource.

func (*Factory) Get

func (f *Factory) Get(gvr, path string, wait bool, sel labels.Selector) (runtime.Object, error)

Get retrieves a given resource.

func (*Factory) List

func (f *Factory) List(gvr, ns string, wait bool, labels labels.Selector) ([]runtime.Object, error)

List returns a resource collection.

func (*Factory) SetActiveNS

func (f *Factory) SetActiveNS(ns string) error

SetActiveNS sets the active namespace.

func (*Factory) Start

func (f *Factory) Start(ns string)

Start initializes the informers until caller cancels the context.

func (*Factory) Terminate

func (f *Factory) Terminate()

Terminate stops the factory.

func (*Factory) WaitForCacheSync

func (f *Factory) WaitForCacheSync()

WaitForCacheSync waits for all factories to update their cache.

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

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 Meta

type Meta map[string][]Schema

type Metrics

type Metrics struct {
	CurrentCPU resource.Quantity
	CurrentMEM resource.Quantity
}

Metrics represent an aggregation of all pod containers metrics.

func (Metrics) Empty

func (m Metrics) Empty() bool

Empty checks if we have any metrics.

type NodeMetrics

type NodeMetrics struct {
	CurrentCPU   resource.Quantity
	CurrentMEM   resource.Quantity
	AvailableCPU resource.Quantity
	AvailableMEM resource.Quantity
	TotalCPU     resource.Quantity
	TotalMEM     resource.Quantity
}

NodeMetrics describes raw node metrics.

func (NodeMetrics) Empty

func (n NodeMetrics) Empty() bool

Empty checks if we have any metrics.

type NodesMetrics

type NodesMetrics map[string]NodeMetrics

NodesMetrics tracks usage metrics per nodes.

type PodsMetrics

type PodsMetrics map[string]ContainerMetrics

PodsMetrics tracks usage metrics per pods.

type Schema

type Schema struct {
	GVR       GVR
	Preferred bool
}