registryproviders

package
v1.18.0-rc.1 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2024 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const ArtifactRegistryReaderName = "e2e-test-ar-reader"

ArtifactRegistryReaderName is the name of the google service account with permission to read from Artifact Registry.

View Source
const DefaultLocation = "us"

DefaultLocation is the default location in which to host Artifact Registry repositories. In this case, `us`, which is a multi-region location.

Variables

This section is empty.

Functions

func ArtifactRegistryReaderEmail

func ArtifactRegistryReaderEmail() string

ArtifactRegistryReaderEmail returns the email of the google service account with permission to read from Artifact Registry.

func HelmChartObjects

func HelmChartObjects(scheme *runtime.Scheme, objs ...client.Object) func(options *helmOptions)

HelmChartObjects builds the chart with the specified objects. A scheme must be provided to encode the object.

func HelmChartVersion

func HelmChartVersion(version string) func(options *helmOptions)

HelmChartVersion builds the chart with the specified version.

func HelmSourceChart

func HelmSourceChart(chart string) func(options *helmOptions)

HelmSourceChart builds the chart with the specified source chart. It should be a subfolder under '../testdata/helm-charts'.

func ImageInputObjects

func ImageInputObjects(scheme *runtime.Scheme, objs ...client.Object) func(options *imageOptions)

ImageInputObjects builds the image with the specified objects. A scheme must be provided to encode the object.

func ImageSourcePackage

func ImageSourcePackage(sourcePackage string) func(options *imageOptions)

ImageSourcePackage builds the image with the specified package name. It should be a subfolder under '../testdata/'.

func ImageVersion

func ImageVersion(version string) func(options *imageOptions)

ImageVersion builds the image with the specified version.

Types

type ArtifactRegistryHelmProvider

type ArtifactRegistryHelmProvider struct {
	ArtifactRegistryProvider

	HelmClient *testshell.HelmClient
	// contains filtered or unexported fields
}

ArtifactRegistryHelmProvider provides methods for interacting with the test registry-server using the helm-sync interface.

func (*ArtifactRegistryHelmProvider) Client

Client for executing helm and crane commands.

func (*ArtifactRegistryHelmProvider) DeletePackage

func (a *ArtifactRegistryHelmProvider) DeletePackage(chartName, digest string) error

DeletePackage deletes the helm chart OCI image from the remote registry, including all versions and tags.

func (*ArtifactRegistryHelmProvider) Login

Login to the registry with the HelmClient

func (*ArtifactRegistryHelmProvider) Logout

func (a *ArtifactRegistryHelmProvider) Logout() error

Logout of the registry with the HelmClient

func (*ArtifactRegistryHelmProvider) PushPackage

func (a *ArtifactRegistryHelmProvider) PushPackage(localChartTgzPath string) (*HelmPackage, error)

PushPackage pushes the local helm chart as an OCI image to the remote registry.

func (*ArtifactRegistryHelmProvider) RepositoryLocalURL

func (a *ArtifactRegistryHelmProvider) RepositoryLocalURL() (string, error)

RepositoryLocalURL is the repositoryLocalAddress prepended with oci:// For pushing with the local helm client.

func (*ArtifactRegistryHelmProvider) RepositoryRemoteURL

func (a *ArtifactRegistryHelmProvider) RepositoryRemoteURL() (string, error)

RepositoryRemoteURL is the repositoryRemoteAddress prepended with oci:// For pulling with RSync's `.spec.helm.repo`

func (*ArtifactRegistryHelmProvider) Reset

Reset the state of the registry by deleting images pushed during the test.

func (*ArtifactRegistryHelmProvider) Setup

Setup performs required setup for the helm AR provider. This requires setting up authentication for the helm CLI.

type ArtifactRegistryOCIProvider

type ArtifactRegistryOCIProvider struct {
	ArtifactRegistryProvider

	OCIClient *testshell.OCIClient
	// contains filtered or unexported fields
}

ArtifactRegistryOCIProvider provides methods for interacting with the test registry-server using the oci-sync interface.

func (*ArtifactRegistryOCIProvider) Client

Client for executing crane commands.

func (*ArtifactRegistryOCIProvider) DeleteImage

func (a *ArtifactRegistryOCIProvider) DeleteImage(imageName, digest string) error

DeleteImage deletes the OCI image from the remote registry, including all versions and tags.

func (*ArtifactRegistryOCIProvider) Login

Login to the registry with the crane client

func (*ArtifactRegistryOCIProvider) Logout

func (a *ArtifactRegistryOCIProvider) Logout() error

Logout of the registry with the crane client

func (*ArtifactRegistryOCIProvider) PushImage

func (a *ArtifactRegistryOCIProvider) PushImage(imageName, tag, localSourceTgzPath string) (*OCIImage, error)

PushImage pushes the local tarball as an OCI image to the remote registry.

func (*ArtifactRegistryOCIProvider) Reset

Reset the state of the registry by deleting images pushed during the test.

func (*ArtifactRegistryOCIProvider) Setup

Setup performs setup

type ArtifactRegistryProvider

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

ArtifactRegistryProvider is the provider type for Google Artifact Registry

func (*ArtifactRegistryProvider) ImageLocalAddress

func (a *ArtifactRegistryProvider) ImageLocalAddress(imageName string) (string, error)

ImageLocalAddress returns the address of the image in the registry for use by local clients, like the helm or crane clients.

func (*ArtifactRegistryProvider) ImageRemoteAddress

func (a *ArtifactRegistryProvider) ImageRemoteAddress(imageName string) (string, error)

ImageRemoteAddress returns the address of the image in the registry for use by remote clients, like Kubernetes or Config Sync.

func (*ArtifactRegistryProvider) Teardown

func (a *ArtifactRegistryProvider) Teardown() error

Teardown preforms teardown Does nothing currently. We may want to have this delete the repository to minimize side effects.

func (*ArtifactRegistryProvider) Type

func (a *ArtifactRegistryProvider) Type() string

Type returns the provider type.

type CraneClient

type CraneClient interface {
	Crane(args ...string) ([]byte, error)
}

CraneClient executes commands with crane

type GcloudClient

type GcloudClient interface {
	Gcloud(args ...string) ([]byte, error)
}

GcloudClient executes commands with gcloud

type HelmClient

type HelmClient interface {
	Helm(args ...string) ([]byte, error)
	Crane(args ...string) ([]byte, error)
}

HelmClient executes commands with crane or helm

type HelmOption

type HelmOption func(options *helmOptions)

HelmOption is an optional parameter when building a helm chart.

type HelmPackage

type HelmPackage struct {
	LocalChartTgzPath string
	Name              string
	Version           string
	Digest            string
	Provider          HelmRegistryProvider
}

HelmPackage represents a helm package that is pushed to a remote registry by the test scaffolding. It uses git references as version tags to enable straightforward integration with the git e2e tooling and to mimic how a user might leverage git and helm.

func BuildHelmPackage

func BuildHelmPackage(artifactDir string, provider HelmRegistryProvider, rsRef types.NamespacedName, opts ...HelmOption) (*HelmPackage, error)

BuildHelmPackage creates a new helm chart using the RSync NAMESPACE-NAME as the name of the chart. Chart version defaults to "v1.0.0-latest" if not specified. The resulting HelmPackage will only exist locally.

func (*HelmPackage) Delete

func (h *HelmPackage) Delete() error

Delete the image from the remote registry.

type HelmRegistryProvider

type HelmRegistryProvider interface {
	RegistryProvider

	// RepositoryRemoteURL is the RepositoryRemoteAddress prepended with oci://
	// For pulling with RSync's `.spec.helm.repo`
	RepositoryRemoteURL() (string, error)

	// PushPackage pushes a local helm chart as an OCI image to the remote registry.
	PushPackage(localChartTgzPath string) (*HelmPackage, error)
	// DeletePackage deletes the helm chart OCI image from the remote registry,
	// including all versions and tags.
	DeletePackage(imageName, digest string) error

	// Client for executing helm and crane commands.
	Client() HelmClient
}

HelmRegistryProvider abstracts remote OCI registry providers for use by Helm clients.

func NewHelmProvider

func NewHelmProvider(provider, repoName string, gcloudClient GcloudClient, helmClient *testshell.HelmClient) HelmRegistryProvider

NewHelmProvider creates a RegistryProvider for the specific helm provider type. This enables writing tests that can run against multiple types of registries.

type ImageOption

type ImageOption func(options *imageOptions)

ImageOption is an optional parameter when building an OCI image.

type LocalHelmProvider

type LocalHelmProvider struct {
	LocalProvider

	HelmClient *testshell.HelmClient
	// contains filtered or unexported fields
}

LocalHelmProvider provides methods for interacting with the test registry-server using the oci-sync interface.

func (*LocalHelmProvider) Client

func (l *LocalHelmProvider) Client() HelmClient

Client for executing helm and crane commands.

func (*LocalHelmProvider) DeletePackage

func (l *LocalHelmProvider) DeletePackage(chartName, digest string) error

DeletePackage deletes the helm chart OCI image from the remote registry, including all versions and tags.

func (*LocalHelmProvider) PushPackage

func (l *LocalHelmProvider) PushPackage(localChartTgzPath string) (*HelmPackage, error)

PushPackage pushes the local helm chart as an OCI image to the remote registry.

func (*LocalHelmProvider) RepositoryLocalURL

func (l *LocalHelmProvider) RepositoryLocalURL() (string, error)

RepositoryLocalURL is the repositoryLocalAddress prepended with oci:// For pushing with the local helm client.

func (*LocalHelmProvider) RepositoryLocalURLWithPort

func (l *LocalHelmProvider) RepositoryLocalURLWithPort(localPort int) string

RepositoryLocalURLWithPort returns a URL for pushing images to the remote registry. localPort refers to the local port the PortForwarder is listening on. The name parameter is ignored because helm CLI appends the chart name to the image.

func (*LocalHelmProvider) RepositoryRemoteURL

func (l *LocalHelmProvider) RepositoryRemoteURL() (string, error)

RepositoryRemoteURL is the repositoryRemoteAddress prepended with oci:// For pulling with RSync's `.spec.helm.repo`

func (*LocalHelmProvider) Reset

func (l *LocalHelmProvider) Reset() error

Reset the state of the registry by deleting images pushed during the test.

func (*LocalHelmProvider) Restore

func (l *LocalHelmProvider) Restore(proxyAddress string) error

Restore the proxy and re-push any previously pushed images.

type LocalOCIProvider

type LocalOCIProvider struct {
	LocalProvider

	OCIClient *testshell.OCIClient
	// contains filtered or unexported fields
}

LocalOCIProvider provides methods for interacting with the test registry-server using the oci-sync interface.

func (*LocalOCIProvider) Client

func (l *LocalOCIProvider) Client() CraneClient

Client for executing helm and crane commands.

func (*LocalOCIProvider) DeleteImage

func (l *LocalOCIProvider) DeleteImage(imageName, digest string) error

DeleteImage deletes the OCI image from the remote registry, including all versions and tags.

func (*LocalOCIProvider) PushImage

func (l *LocalOCIProvider) PushImage(imageName, tag, localSourceTgzPath string) (*OCIImage, error)

PushImage pushes the local tarball as an OCI image to the remote registry.

func (*LocalOCIProvider) Reset

func (l *LocalOCIProvider) Reset() error

Reset the state of the registry by deleting images pushed during the test.

func (*LocalOCIProvider) Restore

func (l *LocalOCIProvider) Restore(proxyAddress string) error

Restore the proxy and re-push any previously pushed images.

type LocalProvider

type LocalProvider struct {
	// PortForwarder is a port forwarder to the in-cluster registry server.
	// This is used to communicate from the tests to the in-cluster registry server.
	PortForwarder *portforwarder.PortForwarder
	// contains filtered or unexported fields
}

LocalProvider refers to the test registry-server running on the same test cluster.

func (*LocalProvider) ImageLocalAddress

func (l *LocalProvider) ImageLocalAddress(imageName string) (string, error)

ImageLocalAddress returns the local port forwarded address that proxies to the in-cluster git server. For use from the test framework to push to the registry.

func (*LocalProvider) ImageRemoteAddress

func (l *LocalProvider) ImageRemoteAddress(imageName string) (string, error)

ImageRemoteAddress returns the address of the registry service from within the cluster. Fit for use from the *-sync containers inside the cluster.

func (*LocalProvider) Login

func (l *LocalProvider) Login() error

Login to the local registry (no-op)

func (*LocalProvider) Logout

func (l *LocalProvider) Logout() error

Logout of the local registry (no-op)

func (*LocalProvider) ProxyAddress

func (l *LocalProvider) ProxyAddress(localPort int) string

ProxyAddress returns the localhost address of the proxy with the specified port.

func (*LocalProvider) Setup

func (l *LocalProvider) Setup() error

Setup performs setup for LocalProvider (no-op)

func (*LocalProvider) Teardown

func (l *LocalProvider) Teardown() error

Teardown performs teardown for LocalProvider (no-op)

func (*LocalProvider) Type

func (l *LocalProvider) Type() string

Type returns the provider type.

type OCIImage

type OCIImage struct {
	LocalSourceTgzPath string
	Tag                string // aka Version
	Name               string
	Digest             string
	Provider           OCIRegistryProvider
}

OCIImage represents an OCI image that is pushed to a remote registry by the test scaffolding. It uses git references as version tags to enable straightforward integration with the git e2e tooling and to mimic how a user might leverage git and OCI.

func BuildImage

func BuildImage(artifactDir string, shell *testshell.TestShell, provider OCIRegistryProvider, rsRef types.NamespacedName, opts ...ImageOption) (*OCIImage, error)

BuildImage creates a new OCIImage object and associated tarball using the provided Repository. The contents of the git repository will be bundled into a tarball at the artifactDir. The resulting OCIImage object can be pushed to a remote registry using its Push method.

func (*OCIImage) Delete

func (o *OCIImage) Delete() error

Delete the image from the remote registry using the provided registry endpoint.

func (*OCIImage) RemoteAddressWithDigest

func (o *OCIImage) RemoteAddressWithDigest() (string, error)

RemoteAddressWithDigest returns the image address with digest. For pulling with RSync's `.spec.oci.image`

func (*OCIImage) RemoteAddressWithTag

func (o *OCIImage) RemoteAddressWithTag() (string, error)

RemoteAddressWithTag returns the image address with version tag. For pulling with RSync's `.spec.oci.image`

type OCIRegistryProvider

type OCIRegistryProvider interface {
	RegistryProvider

	// ImageRemoteAddress returns the address of the image in the registry.
	// For pulling with RSync's `.spec.oci.image`
	ImageRemoteAddress(imageName string) (string, error)

	// PushImage pushes a local tarball as an OCI image to the remote registry.
	PushImage(imageName, tag, localSourceTgzPath string) (*OCIImage, error)
	// DeleteImage deletes the OCI image from the remote registry, including all
	// versions and tags.
	DeleteImage(imageName, digest string) error

	// Client for executing crane commands.
	Client() CraneClient
}

OCIRegistryProvider abstracts remote OCI registry providers for use by OCI clients.

func NewOCIProvider

func NewOCIProvider(provider, repoName string, gcloudClient GcloudClient, ociClient *testshell.OCIClient) OCIRegistryProvider

NewOCIProvider creates a RegistryProvider for the specific OCI provider type. This enables writing tests that can run against multiple types of registries.

type ProxiedRegistryProvider

type ProxiedRegistryProvider interface {
	RegistryProvider

	// ProxyAddress returns the address of the proxy with the specified port.
	ProxyAddress(localPort int) string
	// Restore the proxy and re-push any previously pushed images.
	//
	// Restore takes the new proxy address to avoid deadlocks trying to ask
	// PortForwarder.LocalPort(), which blocks until after restore is done.
	Restore(proxyAddress string) error
}

ProxiedRegistryProvider is a registry provider with a proxy that needs to do extra work when the remote server is stopped and started to hide the downtime from the client.

type RegistryProvider

type RegistryProvider interface {
	Type() string

	// Setup the RegistryProvider for a new test environment.
	Setup() error
	// Teardown the RegistryProvider when stopping a test environment.
	Teardown() error

	// Login to the registry with the client
	Login() error
	// Logout of the registry with the client
	Logout() error

	// Reset the state of the registry by deleting images pushed during the test.
	Reset() error
}

RegistryProvider is an interface for remote OCI registry providers. This base interface is common form both OCIRegistryProvider & HelmRegistryProvider.

Jump to

Keyboard shortcuts

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