utils

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2019 License: Apache-2.0 Imports: 52 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CleanObjectForMarshalling added in v0.4.0

func CleanObjectForMarshalling(o runtime.Object) (runtime.Object, error)

CleanObjectForMarshalling removes unnecessary object metadata that should not be included in serialization and diffs.

func ConvertUnstructured

func ConvertUnstructured(in runtime.Object) (runtime.Object, error)

ConvertUnstructured converts an unstructured object to the known struct. If the type is not known, then the unstructured object is returned unmodified.

func CreateOrUpdate

func CreateOrUpdate(ctx context.Context, cl client.Client, obj runtime.Object, retryOnError bool) (updated bool, err error)

CreateOrUpdate will create obj if it does not exist and update if it it does. retryonerror indicates whether we retry in case of conflict Returns true if the object was updated and false if it was created.

func FakeDiscoveryClient

func FakeDiscoveryClient() discovery.DiscoveryInterface

FakeDiscoveryClient returns a fake discovery client that is populated with some types for use in unit tests.

func GetAPIResource

GetAPIResource returns the APIResource object for a specific GroupVersionKind.

func GetArgs added in v0.7.0

func GetArgs(ctx context.Context, command string, cmd kudo.Command, namespace string) (*exec.Cmd, error)

GetArgs parses a command line string into its arguments and appends a namespace if it is not already set.

func InstallManifests

func InstallManifests(ctx context.Context, client client.Client, dClient discovery.DiscoveryInterface, manifestsDir string, kinds ...runtime.Object) ([]runtime.Object, error)

InstallManifests recurses over ManifestsDir to install all resources defined in YAML manifests.

func IsJSONSyntaxError added in v0.4.0

func IsJSONSyntaxError(err error) bool

IsJSONSyntaxError returns true if the error is a JSON syntax error.

func IsSubset

func IsSubset(expected, actual interface{}) error

IsSubset checks to see if `expected` is a subset of `actual`. A "subset" is an object that is equivalent to the other object, but where map keys found in actual that are not defined in expected are ignored.

func Kubeconfig added in v0.5.0

func Kubeconfig(cfg *rest.Config, w io.Writer) error

Kubeconfig converts a rest.Config into a YAML kubeconfig and writes it to w

func LoadYAML

func LoadYAML(path string) ([]runtime.Object, error)

LoadYAML loads all objects from a YAML file.

func MarshalObject

func MarshalObject(o runtime.Object, w io.Writer) error

MarshalObject marshals a Kubernetes object to a YAML string.

func MarshalObjectJSON added in v0.4.0

func MarshalObjectJSON(o runtime.Object, w io.Writer) error

MarshalObjectJSON marshals a Kubernetes object to a JSON string.

func MatchesKind added in v0.4.0

func MatchesKind(obj runtime.Object, kinds ...runtime.Object) bool

MatchesKind returns true if the Kubernetes kind of obj matches any of kinds.

func Namespaced

func Namespaced(dClient discovery.DiscoveryInterface, obj runtime.Object, namespace string) (string, string, error)

Namespaced sets the namespace on an object to namespace, if it is a namespace scoped resource. If the resource is cluster scoped, then it is ignored and the namespace is not set. If it is a namespaced resource and a namespace is already set, then the namespace is unchanged.

func NewDynamicRESTMapper added in v0.4.0

func NewDynamicRESTMapper(cfg *rest.Config) (meta.RESTMapper, error)

NewDynamicRESTMapper returns a RESTMapper that dynamically discovers resource types at runtime. This is in contrast to controller-manager's default RESTMapper, which only checks resource types at startup, and so can't handle the case of first creating a CRD and then creating an instance of that CRD.

func NewPod

func NewPod(name, namespace string) runtime.Object

NewPod creates a new pod object.

func NewResource

func NewResource(apiVersion, kind, name, namespace string) runtime.Object

NewResource generates a Kubernetes object using the provided apiVersion, kind, name, and namespace.

func ObjectKey

func ObjectKey(obj runtime.Object) client.ObjectKey

ObjectKey returns an instantiated ObjectKey for the provided object.

func PatchObject

func PatchObject(actual, expected runtime.Object) error

PatchObject updates expected with the Resource Version from actual. In the future, PatchObject may perform a strategic merge of actual into expected.

func PrettyDiff

func PrettyDiff(expected runtime.Object, actual runtime.Object) (string, error)

PrettyDiff creates a unified diff highlighting the differences between two Kubernetes resources

func ResourceID

func ResourceID(obj runtime.Object) string

ResourceID returns a human readable identifier indicating the object kind, name, and namespace.

func Retry

func Retry(ctx context.Context, fn func(context.Context) error, errValidationFuncs ...func(error) bool) error

Retry retries a method until the context expires or the method returns an unvalidated error.

func RunCommand added in v0.7.0

func RunCommand(ctx context.Context, namespace string, command string, cmd kudo.Command, cwd string, stdout io.Writer, stderr io.Writer) error

RunCommand runs a command with args. args gets split on spaces (respecting quoted strings).

func RunCommands added in v0.7.0

func RunCommands(logger Logger, namespace string, command string, commands []kudo.Command, workdir string) []error

RunCommands runs a set of commands, returning any errors. If `command` is set, then `command` will be the command that is invoked (if a command specifies it already, it will not be prepended again).

func RunKubectlCommands added in v0.5.0

func RunKubectlCommands(logger Logger, namespace string, commands []string, workdir string) []error

RunKubectlCommands runs a set of kubectl commands, returning any errors.

func RunTests

func RunTests(testName string, testToRun string, parallelism int, testFunc func(*testing.T))

RunTests runs a Go test method without requiring the Go compiler. This does not currently support test caching. If testToRun is set to a non-empty string, it is passed as a `-run` argument to the go test harness. If paralellism is set, it limits the number of concurrently running tests.

func Scheme

func Scheme() *runtime.Scheme

Scheme returns an initialized Kubernetes Scheme.

func SetAnnotation

func SetAnnotation(obj runtime.Object, key, value string) runtime.Object

SetAnnotation sets the given key and value in the object's annotations, returning a copy.

func ValidateErrors

func ValidateErrors(err error, errValidationFuncs ...func(error) bool) error

ValidateErrors accepts an error as its first argument and passes it to each function in the errValidationFuncs slice, if any of the methods returns true, the method returns nil, otherwise it returns the original error.

func WaitForCRDs

func WaitForCRDs(dClient discovery.DiscoveryInterface, crds []runtime.Object) error

WaitForCRDs waits for the provided CRD types to be available in the Kubernetes API.

func WaitForDelete added in v0.6.0

func WaitForDelete(c *RetryClient, objs []runtime.Object) error

WaitForDelete waits for the provide runtime objects to be deleted from cluster

func WithAnnotations

func WithAnnotations(obj runtime.Object, annotations map[string]string) runtime.Object

WithAnnotations sets the annotations on an object.

func WithKeyValue

func WithKeyValue(obj runtime.Object, key string, value map[string]interface{}) runtime.Object

WithKeyValue sets key in the provided object to value.

func WithLabels

func WithLabels(obj runtime.Object, labels map[string]string) runtime.Object

WithLabels sets the labels on an object.

func WithNamespace

func WithNamespace(obj runtime.Object, namespace string) runtime.Object

WithNamespace naively applies the namespace to the object. Used mainly in tests, otherwise use Namespaced.

func WithSpec

func WithSpec(obj runtime.Object, spec map[string]interface{}) runtime.Object

WithSpec applies the provided spec to the Kubernetes object.

func WithStatus

func WithStatus(obj runtime.Object, status map[string]interface{}) runtime.Object

WithStatus applies the provided status to the Kubernetes object.

Types

type Client added in v0.4.0

type Client interface {
	client.Client
	// Watch watches a specific object and returns all events for it.
	Watch(ctx context.Context, obj runtime.Object) (watch.Interface, error)
}

Client is the controller-runtime Client interface with an added Watch method.

type DockerClient added in v0.7.0

type DockerClient interface {
	NegotiateAPIVersion(context.Context)
	VolumeCreate(context.Context, volumetypes.VolumeCreateBody) (dockertypes.Volume, error)
}

DockerClient is a wrapper interface for the Docker library to support unit testing.

type DynamicRESTMapper added in v0.4.0

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

DynamicRESTMapper dynamically discovers resource types at runtime.

func (*DynamicRESTMapper) KindFor added in v0.4.0

KindFor takes a partial resource and returns the single match. Returns an error if there are multiple matches

func (*DynamicRESTMapper) KindsFor added in v0.4.0

KindsFor takes a partial resource and returns the list of potential kinds in priority order

func (*DynamicRESTMapper) RESTMapping added in v0.4.0

func (drm *DynamicRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*meta.RESTMapping, error)

RESTMapping identifies a preferred resource mapping for the provided group kind.

func (*DynamicRESTMapper) RESTMappings added in v0.4.0

func (drm *DynamicRESTMapper) RESTMappings(gk schema.GroupKind, versions ...string) ([]*meta.RESTMapping, error)

RESTMappings returns all resource mappings for the provided group kind if no version search is provided. Otherwise identifies a preferred resource mapping for the provided version(s).

func (*DynamicRESTMapper) ResourceFor added in v0.4.0

ResourceFor takes a partial resource and returns the single match. Returns an error if there are multiple matches

func (*DynamicRESTMapper) ResourceSingularizer added in v0.4.0

func (drm *DynamicRESTMapper) ResourceSingularizer(resource string) (singular string, err error)

ResourceSingularizer converts a resource from its plural name to its singular form.

func (*DynamicRESTMapper) ResourcesFor added in v0.4.0

ResourcesFor takes a partial resource and returns the list of potential resource in priority order

type Logger

type Logger interface {
	Log(args ...interface{})
	Logf(format string, args ...interface{})
	WithPrefix(string) Logger
}

Logger is an interface used by the KUDO test operator to provide logging of tests.

type RetryClient added in v0.4.0

type RetryClient struct {
	Client client.Client
	// contains filtered or unexported fields
}

RetryClient implements the Client interface, with retries built in.

func NewRetryClient added in v0.4.0

func NewRetryClient(cfg *rest.Config, opts client.Options) (*RetryClient, error)

NewRetryClient initializes a new Kubernetes client that automatically retries on network-related errors.

func (*RetryClient) Create added in v0.4.0

func (r *RetryClient) Create(ctx context.Context, obj runtime.Object, opts ...client.CreateOption) error

Create saves the object obj in the Kubernetes cluster.

func (*RetryClient) Delete added in v0.4.0

func (r *RetryClient) Delete(ctx context.Context, obj runtime.Object, opts ...client.DeleteOption) error

Delete deletes the given obj from Kubernetes cluster.

func (*RetryClient) DeleteAllOf added in v0.6.0

func (r *RetryClient) DeleteAllOf(ctx context.Context, obj runtime.Object, opts ...client.DeleteAllOfOption) error

DeleteAllOf deletes the given obj from Kubernetes cluster.

func (*RetryClient) Get added in v0.4.0

Get retrieves an obj for the given object key from the Kubernetes Cluster. obj must be a struct pointer so that obj can be updated with the response returned by the Server.

func (*RetryClient) List added in v0.4.0

func (r *RetryClient) List(ctx context.Context, list runtime.Object, opts ...client.ListOption) error

List retrieves list of objects for a given namespace and list options. On a successful call, Items field in the list will be populated with the result returned from the server.

func (*RetryClient) Patch added in v0.4.0

func (r *RetryClient) Patch(ctx context.Context, obj runtime.Object, patch client.Patch, opts ...client.PatchOption) error

Patch patches the given obj in the Kubernetes cluster. obj must be a struct pointer so that obj can be updated with the content returned by the Server.

func (*RetryClient) Status added in v0.4.0

func (r *RetryClient) Status() client.StatusWriter

Status returns a client which can update status subresource for kubernetes objects.

func (*RetryClient) Update added in v0.4.0

func (r *RetryClient) Update(ctx context.Context, obj runtime.Object, opts ...client.UpdateOption) error

Update updates the given obj in the Kubernetes cluster. obj must be a struct pointer so that obj can be updated with the content returned by the Server.

func (*RetryClient) Watch added in v0.4.0

func (r *RetryClient) Watch(ctx context.Context, obj runtime.Object) (watch.Interface, error)

Watch watches a specific object and returns all events for it.

type RetryStatusWriter added in v0.4.0

type RetryStatusWriter struct {
	StatusWriter client.StatusWriter
}

RetryStatusWriter implements the StatusWriter interface, with retries built in.

func (*RetryStatusWriter) Patch added in v0.4.0

func (r *RetryStatusWriter) Patch(ctx context.Context, obj runtime.Object, patch client.Patch, opts ...client.PatchOption) error

Patch patches the given obj in the Kubernetes cluster. obj must be a struct pointer so that obj can be updated with the content returned by the Server.

func (*RetryStatusWriter) Update added in v0.4.0

func (r *RetryStatusWriter) Update(ctx context.Context, obj runtime.Object, opts ...client.UpdateOption) error

Update updates the given obj in the Kubernetes cluster. obj must be a struct pointer so that obj can be updated with the content returned by the Server.

type SubsetError

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

SubsetError is an error type used by IsSubset for tracking the path in the struct.

func (*SubsetError) AppendPath

func (e *SubsetError) AppendPath(key string)

AppendPath appends key to the existing struct path. For example, in struct member `a.Key1.Key2`, the path would be ["Key1", "Key2"]

func (*SubsetError) Error

func (e *SubsetError) Error() string

Error implements the error interface.

type TestEnvironment added in v0.4.0

type TestEnvironment struct {
	Environment     *envtest.Environment
	Config          *rest.Config
	Client          Client
	DiscoveryClient discovery.DiscoveryInterface
}

TestEnvironment is a struct containing the envtest environment, Kubernetes config and clients.

func StartTestEnvironment added in v0.4.0

func StartTestEnvironment() (env TestEnvironment, err error)

StartTestEnvironment is a wrapper for controller-runtime's envtest that creates a Kubernetes API server and etcd suitable for use in tests.

type TestLogger

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

TestLogger implements the Logger interface to be compatible with the go test operator's output buffering (without this, the use of Parallel tests combined with subtests causes test output to be mixed).

func NewTestLogger

func NewTestLogger(test *testing.T, prefix string) *TestLogger

NewTestLogger creates a new test logger.

func (*TestLogger) Log

func (t *TestLogger) Log(args ...interface{})

Log logs the provided arguments with the logger's prefix. See testing.Log for more details.

func (*TestLogger) Logf

func (t *TestLogger) Logf(format string, args ...interface{})

Logf logs the provided arguments with the logger's prefix. See testing.Logf for more details.

func (*TestLogger) WithPrefix

func (t *TestLogger) WithPrefix(prefix string) Logger

WithPrefix returns a new TestLogger with the provided prefix appended to the current prefix.

Jump to

Keyboard shortcuts

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