kudo

package
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: May 14, 2020 License: Apache-2.0 Imports: 28 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InstallPackage added in v0.8.0

func InstallPackage(kc *Client, resources *packages.Resources, skipInstance bool, instanceName, namespace string, parameters map[string]string, w bool, waitTime time.Duration) error

InstallPackage installs package resources. If skipInstance is set to true, only a package's Operator and OperatorVersion is installed.

func UpgradeOperatorVersion added in v0.8.0

func UpgradeOperatorVersion(kc *Client, newOv *v1beta1.OperatorVersion, instanceName, namespace string, parameters map[string]string) error

UpgradeOperatorVersion upgrades an OperatorVersion and its Instance. For the updated Instance, new parameters can be provided.

Types

type Client

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

Client is a KUDO Client providing access to a clientset

func NewClient added in v0.3.0

func NewClient(kubeConfigPath string, requestTimeout int64, validateInstall bool) (*Client, error)

NewClient creates new KUDO Client

func NewClientFromK8s added in v0.3.2

func NewClientFromK8s(client versioned.Interface) *Client

NewClientFromK8s creates KUDO client from kubernetes client interface

func (*Client) DeleteInstance added in v0.8.0

func (c *Client) DeleteInstance(instanceName, namespace string) error

DeleteInstance deletes an instance.

func (*Client) GetInstance added in v0.5.0

func (c *Client) GetInstance(name, namespace string) (*v1beta1.Instance, error)

GetInstance queries kubernetes api for instance of given name in given namespace returns error for error conditions. Instance not found is not considered an error and will result in 'nil, nil'

func (*Client) GetOperatorVersion added in v0.5.0

func (c *Client) GetOperatorVersion(name, namespace string) (*v1beta1.OperatorVersion, error)

GetOperatorVersion queries kubernetes api for operatorversion of given name in given namespace returns error for all other errors that not found, not found is treated as result being 'nil, nil'

func (*Client) InstallInstanceObjToCluster

func (c *Client) InstallInstanceObjToCluster(obj *v1beta1.Instance, namespace string) (*v1beta1.Instance, error)

InstallInstanceObjToCluster expects a valid Instance obj to install

func (*Client) InstallOperatorObjToCluster added in v0.3.0

func (c *Client) InstallOperatorObjToCluster(obj *v1beta1.Operator, namespace string) (*v1beta1.Operator, error)

InstallOperatorObjToCluster expects a valid Operator obj to install

func (*Client) InstallOperatorVersionObjToCluster added in v0.3.0

func (c *Client) InstallOperatorVersionObjToCluster(obj *v1beta1.OperatorVersion, namespace string) (*v1beta1.OperatorVersion, error)

InstallOperatorVersionObjToCluster expects a valid Operator obj to install

func (*Client) InstanceExistsInCluster added in v0.3.0

func (c *Client) InstanceExistsInCluster(operatorName, namespace, version, instanceName string) (bool, error)

InstanceExistsInCluster checks if any OperatorVersion object matches to the given Operator name in the cluster. An Instance has two identifiers:

  1. Spec.OperatorVersion.Name spec: operatorVersion: name: kafka-2.11-2.4.0
  2. LabelSelector metadata: creationTimestamp: "2019-02-28T14:39:20Z" generation: 1 labels: kudo.dev/operator: kafka

This function also just returns true if the Instance matches a specific OperatorVersion of an Operator

func (*Client) IsInstanceByNameDone added in v0.13.0

func (c *Client) IsInstanceByNameDone(name string, namespace string, oldInstance *v1beta1.Instance) (bool, error)

IsInstanceByNameDone provides a check on instance based on name to see if it is "finished" without retries returns true if finished otherwise false oldInstance is nil if there is no previous instance

func (*Client) IsInstanceDone added in v0.13.0

func (c *Client) IsInstanceDone(instance, oldInstance *v1beta1.Instance) (bool, error)

IsInstanceDone provides a check on instance to see if it is "finished" without retries oldInstance is nil if there is no previous instance

func (*Client) ListInstances added in v0.3.2

func (c *Client) ListInstances(namespace string) ([]string, error)

ListInstances lists all instances of given operator installed in the cluster in a given ns

func (*Client) OperatorExistsInCluster added in v0.3.0

func (c *Client) OperatorExistsInCluster(name, namespace string) bool

OperatorExistsInCluster checks if a given Operator object is installed on the current k8s cluster

func (*Client) OperatorVersionsInstalled added in v0.4.0

func (c *Client) OperatorVersionsInstalled(operatorName, namespace string) ([]string, error)

OperatorVersionsInstalled lists all the versions of given operator installed in the cluster in given ns

func (*Client) UpdateInstance added in v0.5.0

func (c *Client) UpdateInstance(instanceName, namespace string, operatorVersion *string, parameters map[string]string, triggeredPlan *string) error

UpdateInstance updates operatorversion on instance

func (*Client) ValidateServerForOperator added in v0.7.0

func (c *Client) ValidateServerForOperator(operator *v1beta1.Operator) error

ValidateServerForOperator validates that the k8s server version and kudo version are valid for operator error message will provide detail of failure, otherwise nil

func (*Client) WaitForInstance added in v0.13.0

func (c *Client) WaitForInstance(name, namespace string, oldInstance *v1beta1.Instance, timeout time.Duration) error

WaitForInstance waits for instance to be "complete". It uses controller-runtime `wait.PollImmediate`, the function passed to it returns done==false if it isn't done. For a situation where there is no previous state (like install), the "lastPlanStatus" will be nil until the manager sets it, then it's state will be watched (see InInstanceDone for more detail) For a situation where there is previous state (like update, upgrade, plan trigger) than it is important AND required that the "oldInstance" be provided. Without it, it is possible for this function to be "racy" and "flaky" meaning the "current" status could be the old "done" status or the new status... it's hard to know. If the oldInstance is provided the wait will then initially wait for the "new" plan to activate then return when completed. The error is either an error in working with kubernetes or a wait.ErrWaitTimeout

Jump to

Keyboard shortcuts

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