cmd

package
v0.0.0-...-8d259ca Latest Latest
Warning

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

Go to latest
Published: Jan 28, 2018 License: Apache-2.0 Imports: 36 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Debug

func Debug(logger log.Logger, msg string, kv ...interface{}) error

Debug log helper

func Error

func Error(logger log.Logger, msg string, kv ...interface{}) error

Error log helper

func Execute

func Execute()

Execute adds all child commands to the root command sets flags appropriately. This is called by main.main(). It only needs to happen once to the rootCmd.

func Fatal

func Fatal(logger log.Logger, msg string, kv ...interface{})

Fatal log helper

func FileExists

func FileExists(filename ...string) bool

FileExists returns true if the path components exist

func Getenv

func Getenv(name, def string) string

Getenv will return an environment variable if exists or default if not

func HashValues

func HashValues(objects ...interface{}) string

HashValues will convert all objects to a string and return a SHA256 of the concatenated values

func Info

func Info(logger log.Logger, msg string, kv ...interface{}) error

Info log helper

func InsideKube

func InsideKube() bool

InsideKube returns true if it looks like we're running inside a pod in kubernetes

func IsNotFoundError

func IsNotFoundError(err error) bool

IsNotFoundError returns true if the error return is a status not found (404) error

func NewEnvClient

func NewEnvClient() (*k.Client, error)

NewEnvClient will return a k8s Client based on environment running

func NewIngress

func NewIngress(name string, namespace string, labels map[string]string, annotations map[string]string, spec *extensions.IngressSpec) *extensions.Ingress

NewIngress is a helper for creating a new Ingress object

func NewIngressSpec

func NewIngressSpec(hostname string, serviceName string, servicePort int32, secretName string) *extensions.IngressSpec

NewIngressSpec will create a new ingress spec

func NewLogger

func NewLogger(cmd *cobra.Command, pkg string) log.Logger

NewLogger returns a new log.Logger for a given command

func NewOutofProcessClient

func NewOutofProcessClient() (*k.Client, error)

NewOutofProcessClient returns a out-of-process k8s Client

func NewSecret

func NewSecret(name string, namespace string, data map[string][]byte, labels map[string]string, annotations map[string]string) *api.Secret

NewSecret is a helper for creating a new Secret object

func NewTLSecret

func NewTLSecret(name string, namespace string, cert []byte, key []byte, labels map[string]string, annotations map[string]string) *api.Secret

NewTLSecret is a helper for creating a new TLS Secret object

func Resolve

func Resolve(filename string) (string, error)

Resolve with resolve a relative file path

func StringPointer

func StringPointer(v string) *string

StringPointer returns a pointer to a string and if blank nil

func Stringify

func Stringify(v interface{}, opts ...interface{}) string

Stringify will return a JSON formatted string. pass an optional second argument to pretty print

func Warn

func Warn(logger log.Logger, msg string, kv ...interface{}) error

Warn log helper

Types

type AuthInfo

type AuthInfo struct {
	// ClientCertificate is the path to a client cert file for TLS.
	// +optional
	ClientCertificate string `json:"client-certificate,omitempty" yaml:"client-certificate,omitempty"`
	// ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate
	// +optional
	ClientCertificateData []byte `json:"client-certificate-data,omitempty" yaml:"client-certificate-data,omitempty"`
	// ClientKey is the path to a client key file for TLS.
	// +optional
	ClientKey string `json:"client-key,omitempty" yaml:"client-key,omitempty"`
	// ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey
	// +optional
	ClientKeyData []byte `json:"client-key-data,omitempty" yaml:"client-key-data,omitempty"`
	// Token is the bearer token for authentication to the kubernetes cluster.
	// +optional
	Token string `json:"token,omitempty" yaml:"token,omitempty"`
	// TokenFile is a pointer to a file that contains a bearer token (as described above).  If both Token and TokenFile are present, Token takes precedence.
	// +optional
	TokenFile string `json:"tokenFile,omitempty" yaml:"tokenFile,omitempty"`
	// Impersonate is the username to imperonate.  The name matches the flag.
	// +optional
	Impersonate string `json:"as,omitempty" yaml:"as,omitempty"`
	// Username is the username for basic authentication to the kubernetes cluster.
	// +optional
	Username string `json:"username,omitempty" yaml:"username,omitempty"`
	// Password is the password for basic authentication to the kubernetes cluster.
	// +optional
	Password string `json:"password,omitempty" yaml:"password,omitempty"`
	// AuthProvider specifies a custom authentication plugin for the kubernetes cluster.
	// +optional
	AuthProvider *AuthProviderConfig `json:"auth-provider,omitempty" yaml:"auth-provider,omitempty"`
	// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
	// +optional
	Extensions []NamedExtension `json:"extensions,omitempty" yaml:"extensions,omitempty"`
}

AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are.

type AuthProviderConfig

type AuthProviderConfig struct {
	Name   string            `json:"name" yaml:"name"`
	Config map[string]string `json:"config" yaml:"config"`
}

AuthProviderConfig holds the configuration for a specified auth provider.

type Cluster

type Cluster struct {
	// Server is the address of the kubernetes cluster (https://hostname:port).
	Server string `json:"server" yaml:"server"`
	// APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
	// +optional
	APIVersion string `json:"api-version,omitempty" yaml:"api-version,omitempty"`
	// InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure.
	// +optional
	InsecureSkipTLSVerify bool `json:"insecure-skip-tls-verify,omitempty" yaml:"insecure-skip-tls-verify,omitempty"`
	// CertificateAuthority is the path to a cert file for the certificate authority.
	// +optional
	CertificateAuthority string `json:"certificate-authority,omitempty" yaml:"certificate-authority,omitempty"`
	// CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority
	// +optional
	CertificateAuthorityData []byte `json:"certificate-authority-data,omitempty" yaml:"certificate-authority-data,omitempty"`
	// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
	// +optional
	Extensions []NamedExtension `json:"extensions,omitempty" yaml:"extensions,omitempty"`
}

Cluster contains information about how to communicate with a kubernetes cluster

type Config

type Config struct {
	// Legacy field from pkg/api/types.go TypeMeta.
	// TODO(jlowdermilk): remove this after eliminating downstream dependencies.
	// +optional
	Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
	// DEPRECATED: APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
	// Because a cluster can run multiple API groups and potentially multiple versions of each, it no longer makes sense to specify
	// a single value for the cluster version.
	// This field isn't really needed anyway, so we are deprecating it without replacement.
	// It will be ignored if it is present.
	// +optional
	APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
	// Preferences holds general information to be use for cli interactions
	Preferences Preferences `json:"preferences" yaml:"preferences"`
	// Clusters is a map of referencable names to cluster configs
	Clusters []NamedCluster `json:"clusters" yaml:"clusters"`
	// AuthInfos is a map of referencable names to user configs
	AuthInfos []NamedAuthInfo `json:"users" yaml:"users"`
	// Contexts is a map of referencable names to context configs
	Contexts []NamedContext `json:"contexts" yaml:"contexts"`
	// CurrentContext is the name of the context that you would like to use by default
	CurrentContext string `json:"current-context" yaml:"current-context"`
	// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
	// +optional
	Extensions []NamedExtension `json:"extensions,omitempty" yaml:"extensions,omitempty"`
}

Config holds the information needed to build connect to remote kubernetes clusters as a given user

type Context

type Context struct {
	// Cluster is the name of the cluster for this context
	Cluster string `json:"cluster" yaml:"cluster"`
	// AuthInfo is the name of the authInfo for this context
	AuthInfo string `json:"user" yaml:"user"`
	// Namespace is the default namespace to use on unspecified requests
	// +optional
	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
	// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
	// +optional
	Extensions []NamedExtension `json:"extensions,omitempty" yaml:"extensions,omitempty"`
}

Context is a tuple of references to a cluster (how do I communicate with a kubernetes cluster), a user (how do I identify myself), and a namespace (what subset of resources do I want to work with)

type LogColorTheme

type LogColorTheme byte

LogColorTheme is the logging color theme

const (
	// DarkLogColorTheme is the default color theme for console logging (if enabled)
	DarkLogColorTheme LogColorTheme = 1 << iota
	// LightLogColorTheme is for consoles that are light (vs dark)
	LightLogColorTheme
	// NoColorTheme will turn off console colors
	NoColorTheme
)

type LogLevel

type LogLevel byte

LogLevel is the minimum logging level

const (
	// InfoLevel will only log level and above (default)
	InfoLevel LogLevel = 1 << iota
	// DebugLevel will log all messages
	DebugLevel
	// WarnLevel will only log warning and above
	WarnLevel
	// ErrorLevel will only log error and above
	ErrorLevel
	// NoneLevel will no log at all
	NoneLevel
)

func LevelFromString

func LevelFromString(level string) LogLevel

LevelFromString will return a LogLevel const from a named string

type LogOutputFormat

type LogOutputFormat byte

LogOutputFormat is the logging output format

const (
	// JSONLogFormat will output JSON formatted logs
	JSONLogFormat LogOutputFormat = 1 << iota
	// LogFmtLogFormat will output logfmt formatted logs
	LogFmtLogFormat
	// ConsoleLogFormat will output logfmt colored logs to console
	ConsoleLogFormat
)

type LoggerCloser

type LoggerCloser interface {
	log.Logger
	Close() error
}

LoggerCloser returns a logger which implements a Close interface

func NewLoggerUtil

func NewLoggerUtil(writer io.Writer, format LogOutputFormat, theme LogColorTheme, minLevel LogLevel, pkg string, opts ...WithLogOptions) LoggerCloser

NewLogger will create a new logger

func NewNoOpTestLogger

func NewNoOpTestLogger() LoggerCloser

NewNoOpTestLogger is a test logger that doesn't log at all

type NamedAuthInfo

type NamedAuthInfo struct {
	// Name is the nickname for this AuthInfo
	Name string `json:"name" yaml:"name"`
	// AuthInfo holds the auth information
	AuthInfo AuthInfo `json:"user" yaml:"user"`
}

NamedAuthInfo relates nicknames to auth information

type NamedCluster

type NamedCluster struct {
	// Name is the nickname for this Cluster
	Name string `json:"name" yaml:"name"`
	// Cluster holds the cluster information
	Cluster Cluster `json:"cluster" yaml:"cluster"`
}

NamedCluster relates nicknames to cluster information

type NamedContext

type NamedContext struct {
	// Name is the nickname for this Context
	Name string `json:"name" yaml:"name"`
	// Context holds the context information
	Context Context `json:"context" yaml:"context"`
}

NamedContext relates nicknames to context information

type NamedExtension

type NamedExtension struct {
	// Name is the nickname for this Extension
	Name string `json:"name" yaml:"name"`
	// Extension holds the extension information
	Extension runtime.RawExtension `json:"extension" yaml:"extension"`
}

NamedExtension relates nicknames to extension information

type Preferences

type Preferences struct {
	// +optional
	Colors bool `json:"colors,omitempty" yaml:"colors,omitempty"`
	// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
	// +optional
	Extensions []NamedExtension `json:"extensions,omitempty" yaml:"extensions,omitempty"`
}

type WithLogOptions

type WithLogOptions func(logger log.Logger) log.Logger

WithLogOptions is a callback for customizing the logger event further before returning

func WithDefaultTimestampLogOption

func WithDefaultTimestampLogOption() WithLogOptions

WithDefaultTimestampLogOption will add the timestamp in UTC to the ts key

func WithOKLogForwarder

func WithOKLogForwarder(u []*url.URL) WithLogOptions

WithOKLogForwarder will attempt to send logs to OKLog

Jump to

Keyboard shortcuts

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