Documentation

Overview

    Package client provides primitives for interacting with Sonobuoy and the results archive.

    Example

      Example shows how to create a client and run Sonobuoy.

      Output:
      
      

      Index

      Examples

      Constants

      This section is empty.

      Variables

      This section is empty.

      Functions

      func Focus

      func Focus(testCases []results.JUnitTestCase) string

        Focus returns a value to be used in the E2E_FOCUS variable that is representative of the test cases in the struct.

        func GetModes

        func GetModes() []string

          GetModes gets a list of all available modes.

          func UntarAll

          func UntarAll(reader io.Reader, destFile, prefix string) (filenames []string, returnErr error)

            UntarAll expects a reader that contains tar'd data. It will untar the contents of the reader and write the output into destFile under the prefix, prefix. It returns a list of all the files it created.

            Types

            type DeleteConfig

            type DeleteConfig struct {
            	Namespace  string
            	EnableRBAC bool
            	DeleteAll  bool
            	Wait       time.Duration
            	WaitOutput string
            }

              DeleteConfig are the input options for cleaning up a Sonobuoy run.

              func NewDeleteConfig

              func NewDeleteConfig() *DeleteConfig

                NewDeleteConfig is a DeleteConfig using default images, RBAC enabled, and DeleteAll enabled.

                func (*DeleteConfig) Validate

                func (dc *DeleteConfig) Validate() error

                  Validate checks the config to determine if it is valid.

                  type E2EConfig

                  type E2EConfig struct {
                  	Focus    string
                  	Skip     string
                  	Parallel string
                  
                  	// CustomRegistries is the contents of a yaml file which will be
                  	// used as KUBE_TEST_REPO_LIST which overrides which registries
                  	// e2e tests use.
                  	CustomRegistries string
                  }

                    E2EConfig is the configuration of the E2E tests.

                    type GenConfig

                    type GenConfig struct {
                    	E2EConfig            *E2EConfig
                    	Config               *config.Config
                    	EnableRBAC           bool
                    	ImagePullPolicy      string
                    	KubeConformanceImage string
                    	SSHKeyPath           string
                    	SSHUser              string
                    
                    	// DynamicPlugins are plugins which we know by name and whose manifest
                    	// YAML are generated dynamically using the GenConfig settings.
                    	DynamicPlugins []string
                    
                    	// StaticPlugins are plugins whose manifest YAML has been provided
                    	// explicitly and will be written without further consideration of other
                    	// GenConfig settings.
                    	StaticPlugins []*manifest.Manifest
                    
                    	// PluginEnvOverrides are mappings between plugin name and k-v pairs to be
                    	// set as env vars on the given plugin. If a plugin has overrides set, it
                    	// will completely override all other env vars set on the plugin. Provided
                    	// out of band from the plugins because of how the dynamic plugins are not
                    	// yet able to be manipulated in this way.
                    	PluginEnvOverrides map[string]map[string]string
                    
                    	// ShowDefaultPodSpec determines whether or not the default pod spec for
                    	// the plugin should be incuded in the output.
                    	ShowDefaultPodSpec bool
                    }

                      GenConfig are the input options for generating a Sonobuoy manifest.

                      func NewGenConfig

                      func NewGenConfig() *GenConfig

                        NewGenConfig is a GenConfig using the default config and NonDisruptiveConformance mode

                        func (*GenConfig) Validate

                        func (gc *GenConfig) Validate() error

                          Validate checks the config to determine if it is valid.

                          type Interface

                          type Interface interface {
                          	// Run generates the manifest, then tries to apply it to the cluster.
                          	// returns created resources or an error
                          	Run(cfg *RunConfig) error
                          	// GenerateManifest fills in a template with a Sonobuoy config
                          	GenerateManifest(cfg *GenConfig) ([]byte, error)
                          	// RetrieveResults copies results from a sonobuoy run into a Reader in tar format.
                          	RetrieveResults(cfg *RetrieveConfig) (io.Reader, <-chan error, error)
                          	// GetStatus determines the status of the sonobuoy run in order to assist the user.
                          	GetStatus(cfg *StatusConfig) (*aggregation.Status, error)
                          	// LogReader returns a reader that contains a merged stream of sonobuoy logs.
                          	LogReader(cfg *LogConfig) (*Reader, error)
                          	// Delete removes a sonobuoy run, namespace, and all associated resources.
                          	Delete(cfg *DeleteConfig) error
                          	// PreflightChecks runs a number of preflight checks to confirm the environment is good for Sonobuoy
                          	PreflightChecks(cfg *PreflightConfig) []error
                          }

                            Interface is the main contract that we will give to external consumers of this library This will provide a consistent look/feel to upstream and allow us to expose sonobuoy behavior to other automation systems.

                            type LogConfig

                            type LogConfig struct {
                            	// Follow determines if the logs should be followed or not (tail -f).
                            	Follow bool
                            	// Namespace is the namespace the sonobuoy aggregator is running in.
                            	Namespace string
                            	// Plugin is the name of the plugin to show the logs of.
                            	Plugin string
                            	// Out is the writer to write to.
                            	Out io.Writer
                            }

                              LogConfig are the input options for viewing a Sonobuoy run's logs.

                              func NewLogConfig

                              func NewLogConfig() *LogConfig

                                NewLogConfig is a LogConfig with follow disabled and default images.

                                func (*LogConfig) Validate

                                func (lc *LogConfig) Validate() error

                                  Validate checks the config to determine if it is valid.

                                  type Mode

                                  type Mode string

                                    Mode identifies a specific mode of running Sonobuoy. A mode is a defined configuration of plugins and E2E Focus and Config. Modes form the base level defaults, which can then be overriden by the e2e flags and the config flag.

                                    const (
                                    	// Quick runs a single E2E test and the systemd log tests.
                                    	Quick Mode = "quick"
                                    
                                    	// NonDisruptiveConformance runs all of the `Conformance` E2E tests which are not marked as disuprtive and the systemd log tests.
                                    	NonDisruptiveConformance Mode = "non-disruptive-conformance"
                                    
                                    	// CertifiedConformance runs all of the `Conformance` E2E tests and the systemd log tests.
                                    	CertifiedConformance Mode = "certified-conformance"
                                    )

                                    func (*Mode) Get

                                    func (m *Mode) Get() *ModeConfig

                                      Get returns the ModeConfig associated with a mode name, or nil if there's no associated mode

                                      func (*Mode) Set

                                      func (m *Mode) Set(str string) error

                                        Set the name with a given string. Returns error on unknown mode.

                                        func (*Mode) String

                                        func (m *Mode) String() string

                                          String needed for pflag.Value

                                          func (*Mode) Type

                                          func (m *Mode) Type() string

                                            Type needed for pflag.Value

                                            type ModeConfig

                                            type ModeConfig struct {
                                            	// E2EConfig is the focus and skip vars for the conformance tests.
                                            	E2EConfig E2EConfig
                                            	// Selectors are the plugins selected by this mode.
                                            	Selectors []plugin.Selection
                                            }

                                              ModeConfig represents the sonobuoy configuration for a given mode.

                                              type PreflightConfig

                                              type PreflightConfig struct {
                                              	Namespace string
                                              }

                                                PreflightConfig are the options passed to PreflightChecks.

                                                func (*PreflightConfig) Validate

                                                func (pfc *PreflightConfig) Validate() error

                                                  Validate checks the config to determine if it is valid.

                                                  type PrintableTestCases

                                                  type PrintableTestCases []results.JUnitTestCase

                                                    PrintableTestCases nicely strings a []results.JUnitTestCase

                                                    func (PrintableTestCases) String

                                                    func (p PrintableTestCases) String() string

                                                    type Reader

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

                                                      Reader provides an io.Reader interface to a channel of bytes. The first error received on the error channel will be returned by Read after the bytestream is drained and on all subsequent calls to Read. It is the responsibility of the program writing to bytestream to write an io.EOF to the error stream when it is done and close all channels.

                                                      func NewReader

                                                      func NewReader(bytestream chan []byte, errc chan error) *Reader

                                                        NewReader returns a configured Reader.

                                                        func (*Reader) Read

                                                        func (r *Reader) Read(p []byte) (int, error)

                                                          Read tries to fill up the passed in byte slice with messages from the channel. Read manages the message overflow ensuring no bytes are missed. If an error is set on the reader it will return the error immediately.

                                                          type RetrieveConfig

                                                          type RetrieveConfig struct {
                                                          	// Namespace is the namespace the sonobuoy aggregator is running in.
                                                          	Namespace string
                                                          }

                                                            RetrieveConfig are the input options for retrieving a Sonobuoy run's results.

                                                            func (*RetrieveConfig) Validate

                                                            func (rc *RetrieveConfig) Validate() error

                                                              Validate checks the config to determine if it is valid.

                                                              type RunConfig

                                                              type RunConfig struct {
                                                              	GenConfig
                                                              	Wait       time.Duration
                                                              	WaitOutput string
                                                              }

                                                                RunConfig are the input options for running Sonobuoy.

                                                                func NewRunConfig

                                                                func NewRunConfig() *RunConfig

                                                                  NewRunConfig is a RunConfig with DefaultGenConfig and and preflight checks enabled.

                                                                  func (*RunConfig) Validate

                                                                  func (rc *RunConfig) Validate() error

                                                                    Validate checks the config to determine if it is valid.

                                                                    type SonobuoyClient

                                                                    type SonobuoyClient struct {
                                                                    	RestConfig *rest.Config
                                                                    	// contains filtered or unexported fields
                                                                    }

                                                                      SonobuoyClient is a high-level interface to Sonobuoy operations.

                                                                      func NewSonobuoyClient

                                                                      func NewSonobuoyClient(restConfig *rest.Config, skc SonobuoyKubeAPIClient) (*SonobuoyClient, error)

                                                                        NewSonobuoyClient creates a new SonobuoyClient

                                                                        func (*SonobuoyClient) Client

                                                                        func (s *SonobuoyClient) Client() (kubernetes.Interface, error)

                                                                          Client creates or retrieves an existing kubernetes client from the SonobuoyClient's RESTConfig.

                                                                          func (*SonobuoyClient) Delete

                                                                          func (c *SonobuoyClient) Delete(cfg *DeleteConfig) error

                                                                            Delete removes all the resources that Sonobuoy had created including its own namespace, cluster roles/bindings, and optionally e2e scoped namespaces.

                                                                            func (*SonobuoyClient) GenerateManifest

                                                                            func (*SonobuoyClient) GenerateManifest(cfg *GenConfig) ([]byte, error)

                                                                              GenerateManifest fills in a template with a Sonobuoy config

                                                                              func (*SonobuoyClient) GetStatus

                                                                              func (c *SonobuoyClient) GetStatus(cfg *StatusConfig) (*aggregation.Status, error)

                                                                              func (*SonobuoyClient) GetTests

                                                                              func (*SonobuoyClient) GetTests(reader io.Reader, show string) ([]results.JUnitTestCase, error)

                                                                                GetTests extracts the junit results from a sonobuoy archive and returns the requested tests.

                                                                                func (*SonobuoyClient) LogReader

                                                                                func (s *SonobuoyClient) LogReader(cfg *LogConfig) (*Reader, error)

                                                                                  LogReader configures a Reader that provides an io.Reader interface to a merged stream of logs from various containers.

                                                                                  func (*SonobuoyClient) PreflightChecks

                                                                                  func (c *SonobuoyClient) PreflightChecks(cfg *PreflightConfig) []error

                                                                                    PreflightChecks runs all preflight checks in order, returning the first error encountered.

                                                                                    func (*SonobuoyClient) RetrieveResults

                                                                                    func (c *SonobuoyClient) RetrieveResults(cfg *RetrieveConfig) (io.Reader, <-chan error, error)

                                                                                      RetrieveResults copies results from a sonobuoy run into a Reader in tar format. It also returns a channel of errors, where any errors encountered when writing results will be sent, and an error in the case where the config validation fails.

                                                                                      func (*SonobuoyClient) Run

                                                                                      func (c *SonobuoyClient) Run(cfg *RunConfig) error

                                                                                      func (*SonobuoyClient) Version

                                                                                      func (c *SonobuoyClient) Version() (string, error)

                                                                                        Version gets the Kubernetes API version

                                                                                        type SonobuoyKubeAPIClient

                                                                                        type SonobuoyKubeAPIClient interface {
                                                                                        	CreateObject(*unstructured.Unstructured) (*unstructured.Unstructured, error)
                                                                                        	Name(*unstructured.Unstructured) (string, error)
                                                                                        	Namespace(*unstructured.Unstructured) (string, error)
                                                                                        	ResourceVersion(*unstructured.Unstructured) (string, error)
                                                                                        }

                                                                                          SonobuoyKubeAPIClient is the interface Sonobuoy uses to communicate with a kube-apiserver.

                                                                                          type StatusConfig

                                                                                          type StatusConfig struct {
                                                                                          	// Namespace is the namespace the sonobuoy aggregator is running in.
                                                                                          	Namespace string
                                                                                          }

                                                                                            StatusConfig is the input options for retrieving a Sonobuoy run's results.

                                                                                            func (*StatusConfig) Validate

                                                                                            func (sc *StatusConfig) Validate() error

                                                                                              Validate checks the config to determine if it is valid.

                                                                                              Directories

                                                                                              Path Synopsis
                                                                                              Package results provides a low level API to extract data from a Sonobuoy result archive.
                                                                                              Package results provides a low level API to extract data from a Sonobuoy result archive.
                                                                                              e2e
                                                                                              package e2e defines files and directories found in the e2e plugin results.
                                                                                              package e2e defines files and directories found in the e2e plugin results.