Documentation ¶
Overview ¶
Package results provides a low level API to extract data from a Sonobuoy result archive.
Index ¶
- Constants
- func ConfigFile(version string) string
- func DiscoverVersion(reader io.Reader) (string, error)
- func ExtractBytes(file string, path string, info os.FileInfo, buf *bytes.Buffer) error
- func ExtractConfig(path string, info os.FileInfo, conf *config.Config) error
- func ExtractFileIntoStruct(file, path string, info os.FileInfo, object interface{}) error
- func ExtractIntoStruct(predicate func(string) bool, path string, info os.FileInfo, object interface{}) error
- func Failed(testCase reporters.JUnitTestCase) bool
- func Filter(predicate func(testCase reporters.JUnitTestCase) bool, ...) []reporters.JUnitTestCase
- func Passed(testCase reporters.JUnitTestCase) bool
- func SaveProcessedResults(pluginName, baseDir string, item Item) error
- func Skipped(testCase reporters.JUnitTestCase) bool
- type AlphabetizedTestCases
- type Item
- type Reader
- func (r *Reader) FileReader(filename string) (io.Reader, error)
- func (r *Reader) Metadata() string
- func (r *Reader) NamespacedResources() string
- func (r *Reader) NodesFile() string
- func (r *Reader) NonNamespacedResources() string
- func (r *Reader) PluginResultsItem(plugin string) (*Item, error)
- func (r *Reader) PluginResultsReader(plugin string) (io.Reader, error)
- func (r *Reader) ServerGroupsFile() string
- func (r *Reader) ServerVersionFile() string
- func (r *Reader) WalkFiles(walkfn filepath.WalkFunc) error
Examples ¶
Constants ¶
const ( // StatusFailed is the key we base junit pass/failure off of and save into // our canonical results format. StatusFailed = "failed" // StatusPassed is the key we base junit pass/failure off of and save into // our canonical results format. StatusPassed = "passed" // StatusSkipped is the key we base junit pass/failure off of and save into // our canonical results format. StatusSkipped = "skipped" // StatusUnknown is the key we fallback to in our canonical results format // if another can not be determined. StatusUnknown = "unknown" // PostProcessedResultsFile is the name of the file we create when doing // postprocessing on the plugin results. PostProcessedResultsFile = "sonobuoy_results.yaml" )
const ( ResultFormatJunit = "junit" ResultFormatE2E = "e2e" ResultFormatRaw = "raw" )
ResultFormat constants are the supported values for the resultFormat field which enables post processing.
const ( // PluginsDir defines where in the archive directories for plugin results are. PluginsDir = "plugins/" // ResultsDir defines where in the archive the plugin results are. // Example: plugins/<name>/results ResultsDir = "results/" )
const ( // UnknownVersion lets the consumer know if this client can detect the archive version or not. UnknownVersion = "v?.?" VersionEight = "v0.8" VersionNine = "v0.9" VersionTen = "v0.10" VersionFifteen = "v0.15" )
Versions corresponding to Kubernetes minor version values. We used to roughly version our results tarballs in sync with minor version patches and so checking the server version for one of these prefixes would be sufficient to inform the parser where certain files would be.
Variables ¶
This section is empty.
Functions ¶
func ConfigFile ¶
ConfigFile returns the path to the sonobuoy config file. This is not a method as it is used to determine the version of the archive.
func DiscoverVersion ¶
DiscoverVersion takes a Sonobuoy archive stream and extracts just the version of the archive.
func ExtractBytes ¶
ExtractBytes pulls out bytes into a buffer for any path matching file.
func ExtractConfig ¶
ExtractConfig populates the config object regardless of version.
func ExtractFileIntoStruct ¶
ExtractFileIntoStruct is a helper for a common use case of extracting the contents of one file into the object.
func ExtractIntoStruct ¶
func ExtractIntoStruct(predicate func(string) bool, path string, info os.FileInfo, object interface{}) error
ExtractIntoStruct takes a predicate function and some file information and decodes the contents of the file that matches the predicate into the interface passed in (generally a pointer to a struct/slice).
func Failed ¶
func Failed(testCase reporters.JUnitTestCase) bool
Failed returns true if the test failed.
func Filter ¶
func Filter(predicate func(testCase reporters.JUnitTestCase) bool, testSuite reporters.JUnitTestSuite) []reporters.JUnitTestCase
Filter keeps only the tests that match the predicate function.
func Passed ¶
func Passed(testCase reporters.JUnitTestCase) bool
Passed returns true if the test passed.
func SaveProcessedResults ¶ added in v0.15.1
SaveProcessedResults saves the given item in the predefined location for the postprocessed results (the path base/plugins/plugin_name/sonobuoy_results)
func Skipped ¶
func Skipped(testCase reporters.JUnitTestCase) bool
Skipped returns true if the test was skipped.
Types ¶
type AlphabetizedTestCases ¶
type AlphabetizedTestCases []reporters.JUnitTestCase
AlphabetizedTestCases implements Sort over the list of testCases.
func (AlphabetizedTestCases) Len ¶
func (a AlphabetizedTestCases) Len() int
func (AlphabetizedTestCases) Less ¶
func (a AlphabetizedTestCases) Less(i, j int) bool
func (AlphabetizedTestCases) Swap ¶
func (a AlphabetizedTestCases) Swap(i, j int)
type Item ¶ added in v0.15.1
type Item struct { Name string `json:"name" yaml:"name"` Status string `json:"status" yaml:"status"` Metadata map[string]string `json:"meta,omitempty" yaml:"meta,omitempty"` Items []Item `json:"items,omitempty" yaml:"items,omitempty"` }
Item is the central format for plugin results. Various plugin types can be transformed into this simple format and set at a standard location in our results tarball for simplified processing by any consumer.
func PostProcessPlugin ¶ added in v0.15.1
PostProcessPlugin will inspect the files in the given directory (representing the location of the results directory for a sonobuoy run, not the plugin specific results directory). Based on the type of plugin results, it will record what tests passed/failed (if junit) or record what files were produced (if raw) and return that information in an Item object.
type Reader ¶
Reader holds a reader and a version. It uses the version to know where to find files within the archive.
func NewReaderFromBytes ¶
NewReaderFromBytes is a helper constructor that will discover the version of the archive and return a new Reader with the correct version already populated.
Example ¶
package main import ( "fmt" "io/ioutil" "github.com/heptio/sonobuoy/pkg/client/results" ) func main() { path := "testdata/results-0.8.tar.gz" data, err := ioutil.ReadFile(path) if err != nil { panic(err) } results, err := results.NewReaderFromBytes(data) if err != nil { panic(err) } fmt.Println(results.Version) }
Output: v0.8
func NewReaderWithVersion ¶
NewReaderWithVersion creates a results.Reader that interprets a results archive of the version passed in. Useful if the reader can be read only once and if the version of the data to read is known.
Example ¶
package main import ( "compress/gzip" "fmt" "os" "github.com/heptio/sonobuoy/pkg/client/results" ) func main() { path := "testdata/results-0.9.tar.gz" f, err := os.Open(path) if err != nil { panic(err) } reader, err := gzip.NewReader(f) if err != nil { panic(err) } r := results.NewReaderWithVersion(reader, results.VersionNine) fmt.Println(r.Version) }
Output: v0.9
func (*Reader) FileReader ¶ added in v0.15.1
FileReader returns a reader for a file in the archive.
func (*Reader) Metadata ¶
Metadata is the location of the metadata directory in the results archive.
func (*Reader) NamespacedResources ¶
NamespacedResources returns the path to the directory that contains information about namespaced Kubernetes resources.
func (*Reader) NodesFile ¶
NodesFile returns the path to the file that lists the nodes of the Kubernetes cluster.
func (*Reader) NonNamespacedResources ¶
NonNamespacedResources returns the path to the non-namespaced directory.
func (*Reader) PluginResultsItem ¶ added in v0.15.1
PluginResultsItem returns the results file from the given plugin if found, error otherwise.
func (*Reader) PluginResultsReader ¶ added in v0.15.1
PluginResultsReader returns the results file from the given plugin if found, error otherwise.
func (*Reader) ServerGroupsFile ¶
ServerGroupsFile returns the path to the groups the Kubernetes API supported at the time of the run.
func (*Reader) ServerVersionFile ¶
ServerVersionFile is the location of the file that contains the Kubernetes version Sonobuoy ran on.