registry

package
v1.5.7 Latest Latest
Warning

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

Go to latest
Published: Jan 23, 2020 License: Apache-2.0 Imports: 14 Imported by: 32

Documentation

Index

Constants

This section is empty.

Variables

Codecs provides access to encoding and decoding for the scheme

View Source
var Scheme = runtime.NewScheme()

Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered.

Functions

func BundleStringToAPIBundle

func BundleStringToAPIBundle(bundleString string) (*api.Bundle, error)

func BundleStringToObjectStrings

func BundleStringToObjectStrings(bundleString string) ([]string, error)

Bundle strings are appended json objects, we need to split them apart e.g. {"my":"obj"}{"csv":"data"}{"crd":"too"}

func ChannelEntryToAPIChannelEntry

func ChannelEntryToAPIChannelEntry(entry *ChannelEntry) *api.ChannelEntry

func DecodeUnstructured

func DecodeUnstructured(reader io.Reader) (obj *unstructured.Unstructured, err error)

DecodeUnstructured decodes a raw stream into a an unstructured.Unstructured instance.

func DefaultYAMLDecoder

func DefaultYAMLDecoder() runtime.Decoder

func PackageChannelToAPIChannel

func PackageChannelToAPIChannel(channel *PackageChannel) *api.Channel

func PackageManifestToAPIPackage

func PackageManifestToAPIPackage(manifest *PackageManifest) *api.Package

Types

type APIKey

type APIKey struct {
	Group   string
	Version string
	Kind    string
	Plural  string
}

APIKey stores GroupVersionKind for use as map keys

func (APIKey) String

func (k APIKey) String() string

type Annotations

type Annotations struct {
	// PackageName is the name of the overall package, ala `etcd`.
	PackageName string `json:"operators.operatorframework.io.bundle.package.v1" yaml:"operators.operatorframework.io.bundle.package.v1"`

	// Channels are a comma separated list of the declared channels for the bundle, ala `stable` or `alpha`.
	Channels string `json:"operators.operatorframework.io.bundle.channels.v1" yaml:"operators.operatorframework.io.bundle.channels.v1"`

	// DefaultChannelName is, if specified, the name of the default channel for the package. The
	// default channel will be installed if no other channel is explicitly given. If the package
	// has a single channel, then that channel is implicitly the default.
	DefaultChannelName string `` /* 127-byte string literal not displayed */
}

Annotations is a list of annotations for a given bundle

type AnnotationsFile

type AnnotationsFile struct {
	// annotations is a list of annotations for a given bundle
	Annotations Annotations `json:"annotations" yaml:"annotations"`
}

AnnotationsFile holds annotation information about a bundle

func (*AnnotationsFile) GetChannels

func (a *AnnotationsFile) GetChannels() []string

GetChannels returns the channels that this bundle should be added to

func (*AnnotationsFile) GetDefaultChannelName

func (a *AnnotationsFile) GetDefaultChannelName() string

GetDefaultChannelName returns the name of the default channel

func (*AnnotationsFile) GetName

func (a *AnnotationsFile) GetName() string

GetName returns the package name of the bundle

type Bundle

type Bundle struct {
	Name        string
	Objects     []*unstructured.Unstructured
	Package     string
	Channel     string
	BundleImage string
	// contains filtered or unexported fields
}

func NewBundle

func NewBundle(name, pkgName, channelName string, objs ...*unstructured.Unstructured) *Bundle

func NewBundleFromStrings

func NewBundleFromStrings(name, pkgName, channelName string, objs []string) (*Bundle, error)

func (*Bundle) Add

func (b *Bundle) Add(obj *unstructured.Unstructured)

func (*Bundle) AllProvidedAPIsInBundle

func (b *Bundle) AllProvidedAPIsInBundle() error

func (*Bundle) ClusterServiceVersion

func (b *Bundle) ClusterServiceVersion() (*ClusterServiceVersion, error)

func (*Bundle) CustomResourceDefinitions

func (b *Bundle) CustomResourceDefinitions() ([]*v1beta1.CustomResourceDefinition, error)

func (*Bundle) Images

func (b *Bundle) Images() (map[string]struct{}, error)

func (*Bundle) ProvidedAPIs

func (b *Bundle) ProvidedAPIs() (map[APIKey]struct{}, error)

func (*Bundle) RequiredAPIs

func (b *Bundle) RequiredAPIs() (map[APIKey]struct{}, error)

func (*Bundle) Serialize

func (b *Bundle) Serialize() (csvName, bundleImage string, csvBytes []byte, bundleBytes []byte, err error)

func (*Bundle) Size

func (b *Bundle) Size() int

func (*Bundle) SkipRange

func (b *Bundle) SkipRange() (string, error)

func (*Bundle) Version

func (b *Bundle) Version() (string, error)

type ChannelEntry

type ChannelEntry struct {
	PackageName string
	ChannelName string
	BundleName  string
	Replaces    string
}

ChannelEntry is a denormalized node in a channel graph

type ClusterServiceVersion

type ClusterServiceVersion struct {
	// Type metadata.
	metav1.TypeMeta `json:",inline"`

	// Object metadata.
	metav1.ObjectMeta `json:"metadata"`

	// Spec is the raw representation of the 'spec' element of
	// ClusterServiceVersion object. Since we are
	// not interested in the content of spec we are not parsing it.
	Spec json.RawMessage `json:"spec"`
}

ClusterServiceVersion is a structured representation of cluster service version object(s) specified inside the 'clusterServiceVersions' section of an operator manifest.

func (*ClusterServiceVersion) GetApiServiceDefinitions

func (csv *ClusterServiceVersion) GetApiServiceDefinitions() (owned []*DefinitionKey, required []*DefinitionKey, err error)

GetApiServiceDefinitions returns a list of owned and required APISerivces specified inside the 'apiservicedefinitions' section of a ClusterServiceVersion 'spec'.

owned represents the list of apiservices managed by this ClusterServiceVersion object. required represents the list of apiservices that this ClusterServiceVersion object depends on.

If owned or required is not defined in the spec then an empty list is returned respectively.

func (*ClusterServiceVersion) GetCustomResourceDefintions

func (csv *ClusterServiceVersion) GetCustomResourceDefintions() (owned []*DefinitionKey, required []*DefinitionKey, err error)

GetCustomResourceDefintions returns a list of owned and required CustomResourceDefinition object(s) specified inside the 'customresourcedefinitions' section of a ClusterServiceVersion 'spec'.

owned represents the list of CRD(s) managed by this ClusterServiceVersion object. required represents the list of CRD(s) that this ClusterServiceVersion object depends on.

If owned or required is not defined in the spec then an empty list is returned respectively.

func (*ClusterServiceVersion) GetOperatorImages

func (csv *ClusterServiceVersion) GetOperatorImages() (map[string]struct{}, error)

GetOperatorImages returns a list of any images used to run the operator. Currently this pulls any images in the pod specs of operator deployments.

func (*ClusterServiceVersion) GetRelatedImages

func (csv *ClusterServiceVersion) GetRelatedImages() (imageSet map[string]struct{}, err error)

GetRelatedImage returns the list of associated images for the operator

func (*ClusterServiceVersion) GetReplaces

func (csv *ClusterServiceVersion) GetReplaces() (string, error)

GetReplaces returns the name of the older ClusterServiceVersion object that is replaced by this ClusterServiceVersion object.

If not defined, the function returns an empty string.

func (*ClusterServiceVersion) GetSkipRange

func (csv *ClusterServiceVersion) GetSkipRange() string

GetSkipRange returns the skiprange of the CSV

If not defined, the function returns an empty string.

func (*ClusterServiceVersion) GetSkips

func (csv *ClusterServiceVersion) GetSkips() ([]string, error)

GetSkips returns the name of the older ClusterServiceVersion objects that are skipped by this ClusterServiceVersion object.

If not defined, the function returns an empty string.

func (*ClusterServiceVersion) GetVersion

func (csv *ClusterServiceVersion) GetVersion() (string, error)

GetVersion returns the version of the CSV

If not defined, the function returns an empty string.

type DefinitionKey

type DefinitionKey struct {
	Group   string `json:"group"`
	Kind    string `json:"kind"`
	Name    string `json:"name"`
	Version string `json:"version"`
}

DefinitionKey represents the metadata for either an APIservice or a CRD from a CSV spec

type EmptyQuery

type EmptyQuery struct{}

EmptyQuery acts as a "zero value" implementation of the Query interface.

EmptyQuery can be used as a substitute for any operation dependent on Query.

func NewEmptyQuerier

func NewEmptyQuerier() *EmptyQuery

func (EmptyQuery) GetApisForEntry

func (EmptyQuery) GetApisForEntry(ctx context.Context, entryId int64) (provided []*api.GroupVersionKind, required []*api.GroupVersionKind, err error)

func (EmptyQuery) GetBundle

func (EmptyQuery) GetBundle(ctx context.Context, pkgName, channelName, csvName string) (*api.Bundle, error)

func (EmptyQuery) GetBundleForChannel

func (EmptyQuery) GetBundleForChannel(ctx context.Context, pkgName string, channelName string) (*api.Bundle, error)

func (EmptyQuery) GetBundleThatProvides

func (EmptyQuery) GetBundleThatProvides(ctx context.Context, group, version, kind string) (*api.Bundle, error)

func (EmptyQuery) GetBundleThatReplaces

func (EmptyQuery) GetBundleThatReplaces(ctx context.Context, name, pkgName, channelName string) (*api.Bundle, error)

func (EmptyQuery) GetChannelEntriesThatProvide

func (EmptyQuery) GetChannelEntriesThatProvide(ctx context.Context, group, version, kind string) (entries []*ChannelEntry, err error)

func (EmptyQuery) GetChannelEntriesThatReplace

func (EmptyQuery) GetChannelEntriesThatReplace(ctx context.Context, name string) (entries []*ChannelEntry, err error)

func (EmptyQuery) GetImagesForBundle

func (EmptyQuery) GetImagesForBundle(ctx context.Context, bundleName string) ([]string, error)

func (EmptyQuery) GetLatestChannelEntriesThatProvide

func (EmptyQuery) GetLatestChannelEntriesThatProvide(ctx context.Context, group, version, kind string) (entries []*ChannelEntry, err error)

func (EmptyQuery) GetPackage

func (EmptyQuery) GetPackage(ctx context.Context, name string) (*PackageManifest, error)

func (EmptyQuery) ListImages

func (EmptyQuery) ListImages(ctx context.Context) ([]string, error)

func (EmptyQuery) ListPackages

func (EmptyQuery) ListPackages(ctx context.Context) ([]string, error)

func (EmptyQuery) ListTables

func (EmptyQuery) ListTables(ctx context.Context) ([]string, error)

type Load

type Load interface {
	AddOperatorBundle(bundle *Bundle) error
	AddBundlePackageChannels(manifest PackageManifest, bundle Bundle) error
	AddPackageChannels(manifest PackageManifest) error
	RmPackageName(packageName string) error
	ClearNonDefaultBundles(packageName string) error
}

type PackageChannel

type PackageChannel struct {
	// Name is the name of the channel, e.g. `alpha` or `stable`
	Name string `json:"name" yaml:"name"`

	// CurrentCSVName defines a reference to the CSV holding the version of this package currently
	// for the channel.
	CurrentCSVName string `json:"currentCSV" yaml:"currentCSV"`
}

PackageChannel defines a single channel under a package, pointing to a version of that package.

func (PackageChannel) IsDefaultChannel

func (pc PackageChannel) IsDefaultChannel(pm PackageManifest) bool

IsDefaultChannel returns true if the PackageChennel is the default for the PackageManifest

type PackageManifest

type PackageManifest struct {
	// PackageName is the name of the overall package, ala `etcd`.
	PackageName string `json:"packageName" yaml:"packageName"`

	// Channels are the declared channels for the package, ala `stable` or `alpha`.
	Channels []PackageChannel `json:"channels" yaml:"channels"`

	// DefaultChannelName is, if specified, the name of the default channel for the package. The
	// default channel will be installed if no other channel is explicitly given. If the package
	// has a single channel, then that channel is implicitly the default.
	DefaultChannelName string `json:"defaultChannel" yaml:"defaultChannel"`
}

PackageManifest holds information about a package, which is a reference to one (or more) channels under a single package.

func DecodePackageManifest

func DecodePackageManifest(reader io.Reader) (manifest *PackageManifest, err error)

DecodePackageManifest decodes a raw stream into a a PackageManifest instance. If a package name is empty we consider the object invalid!

func (PackageManifest) GetDefaultChannel

func (m PackageManifest) GetDefaultChannel() string

GetDefaultChannel gets the default channel or returns the only one if there's only one. returns empty string if it can't determine the default

type Query

type Query interface {
	ListTables(ctx context.Context) ([]string, error)
	ListPackages(ctx context.Context) ([]string, error)
	GetPackage(ctx context.Context, name string) (*PackageManifest, error)
	GetBundle(ctx context.Context, pkgName, channelName, csvName string) (*api.Bundle, error)
	GetBundleForChannel(ctx context.Context, pkgName string, channelName string) (*api.Bundle, error)
	// Get all channel entries that say they replace this one
	GetChannelEntriesThatReplace(ctx context.Context, name string) (entries []*ChannelEntry, err error)
	// Get the bundle in a package/channel that replace this one
	GetBundleThatReplaces(ctx context.Context, name, pkgName, channelName string) (*api.Bundle, error)
	// Get all channel entries that provide an api
	GetChannelEntriesThatProvide(ctx context.Context, group, version, kind string) (entries []*ChannelEntry, err error)
	// Get latest channel entries that provide an api
	GetLatestChannelEntriesThatProvide(ctx context.Context, group, version, kind string) (entries []*ChannelEntry, err error)
	// Get the the latest bundle that provides the API in a default channel
	GetBundleThatProvides(ctx context.Context, group, version, kind string) (*api.Bundle, error)
	// List all images in the database
	ListImages(ctx context.Context) ([]string, error)
	// List all images for a particular bundle
	GetImagesForBundle(ctx context.Context, bundleName string) ([]string, error)
	// Get Provided and Required APIs for a particular bundle
	GetApisForEntry(ctx context.Context, entryId int64) (provided []*api.GroupVersionKind, required []*api.GroupVersionKind, err error)
}

Jump to

Keyboard shortcuts

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