Documentation
¶
Overview ¶
Package providermirror contains functionalities related to resolving provider packages for the Tharsis Provider Network Mirror.
Index ¶
- type ListVersionsResponse
- type PackageQueryResponse
- type TerraformProviderPackageResolver
- func (m *TerraformProviderPackageResolver) DownloadProviderPlatformPackage(ctx context.Context, endpoint, dir string) (string, error)
- func (m *TerraformProviderPackageResolver) FilterMissingPlatforms(targetVersion string, resp *ListVersionsResponse, ...) (map[string]struct{}, error)
- func (m *TerraformProviderPackageResolver) FindLatestVersion(resp *ListVersionsResponse) (string, error)
- func (m *TerraformProviderPackageResolver) FindProviderPackage(ctx context.Context, platform string, ...) (*PackageQueryResponse, error)
- func (m *TerraformProviderPackageResolver) ListAvailableProviderVersions(ctx context.Context, namespace, providerType string) (*ListVersionsResponse, error)
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.