providermirror

package
v0.23.0 Latest Latest
Warning

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

Go to latest
Published: Jan 22, 2025 License: MPL-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package providermirror contains functionalities related to resolving provider packages for the Tharsis Provider Network Mirror.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ListVersionsResponse

type ListVersionsResponse struct {
	Versions []struct {
		Version   string `json:"version"`
		Platforms []struct {
			OS   string `json:"os"`
			Arch string `json:"arch"`
		} `json:"platforms"`
	} `json:"versions"`
	Warnings []string `json:"warnings"`
}

ListVersionsResponse is the response returned from the Terraform Registry API when querying for supported versions for a provider. https://developer.hashicorp.com/terraform/internals/provider-registry-protocol#list-available-versions

type PackageQueryResponse

type PackageQueryResponse struct {
	DownloadURL string `json:"download_url"` // Only used to find the provider download URL.
}

PackageQueryResponse is the response returned when querying for a particular installation package. https://developer.hashicorp.com/terraform/internals/provider-registry-protocol#find-a-provider-package

type TerraformProviderPackageResolver

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

TerraformProviderPackageResolver encapsulates the logic to resolve and download provider packages from the Terraform Registry.

func NewTerraformProviderPackageResolver

func NewTerraformProviderPackageResolver(
	logger logger.Logger,
	serviceURL *url.URL,
	httpClient *http.Client,
) *TerraformProviderPackageResolver

NewTerraformProviderPackageResolver returns an instance of TerraformProviderPackageResolver.

func (*TerraformProviderPackageResolver) DownloadProviderPlatformPackage

func (m *TerraformProviderPackageResolver) DownloadProviderPlatformPackage(
	ctx context.Context,
	endpoint,
	dir string,
) (string, error)

DownloadProviderPlatformPackage downloads the actual provider package.

func (*TerraformProviderPackageResolver) FilterMissingPlatforms

func (m *TerraformProviderPackageResolver) FilterMissingPlatforms(
	targetVersion string,
	resp *ListVersionsResponse,
	existingPlatforms map[string]struct{},
) (map[string]struct{}, error)

FilterMissingPlatforms filters for platforms that are currently not mirrored.

func (*TerraformProviderPackageResolver) FindLatestVersion

func (m *TerraformProviderPackageResolver) FindLatestVersion(resp *ListVersionsResponse) (string, error)

FindLatestVersion finds the latest version a provider supports.

func (*TerraformProviderPackageResolver) FindProviderPackage

func (m *TerraformProviderPackageResolver) FindProviderPackage(
	ctx context.Context,
	platform string,
	versionMirror *sdktypes.TerraformProviderVersionMirror,
) (*PackageQueryResponse, error)

FindProviderPackage locates the provider package at the Terraform Registry API. It is only used to find the package download endpoint since it's generally different from the registry API.

func (*TerraformProviderPackageResolver) ListAvailableProviderVersions

func (m *TerraformProviderPackageResolver) ListAvailableProviderVersions(
	ctx context.Context,
	namespace,
	providerType string,
) (*ListVersionsResponse, error)

ListAvailableProviderVersions lists the available provider versions and platforms they support by contacting the Terraform Registry API the provider is associated with.

Jump to

Keyboard shortcuts

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