Files
terraform-provider-artifactapi/internal/provider/models.go
T
unkin-agent c69c3d9f74
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
resource_remote: add mirror_strategy attribute
The provider exposed mirrorlist but not mirror_strategy, so the API's
mirror load-balancing strategy (round_robin/least_conn) was unreachable
via Terraform. Add mirror_strategy the same way mirrorlist was added,
scoped to rpm/deb/alpine remotes.

- schema: optional string mirror_strategy on the remote resource
- ValidateConfig: reject on non-rpm/deb/alpine types and validate the
  round_robin/least_conn enum at plan time
- wire model + modelToAPI/apiToModel (empty->null to avoid perpetual diff)
- datasource (computed) + README + rpm example
- unit tests: modelToAPI/apiToModel round-trip and ValidateConfig matrix
2026-08-13 17:50:52 +10:00

40 lines
1.7 KiB
Go

package provider
type remoteAPI struct {
Name string `json:"name"`
PackageType string `json:"package_type"`
RepoType string `json:"repo_type,omitempty"`
BaseURL string `json:"base_url"`
Mirrorlist []string `json:"mirrorlist,omitempty"`
MirrorStrategy string `json:"mirror_strategy,omitempty"`
Description string `json:"description,omitempty"`
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
ImmutableTTL int64 `json:"immutable_ttl"`
MutableTTL int64 `json:"mutable_ttl"`
CheckMutable bool `json:"check_mutable"`
Patterns []string `json:"patterns"`
Blocklist []string `json:"blocklist"`
MutablePatterns []string `json:"mutable_patterns"`
ImmutablePatterns []string `json:"immutable_patterns"`
BanTagsEnabled bool `json:"ban_tags_enabled"`
BanTags []string `json:"ban_tags"`
QuarantineEnabled bool `json:"quarantine_enabled"`
QuarantineDays int64 `json:"quarantine_days"`
StaleOnError bool `json:"stale_on_error"`
ReleasesRemote string `json:"releases_remote,omitempty"`
ManagedBy string `json:"managed_by,omitempty"`
UpstreamDialTimeout int64 `json:"upstream_dial_timeout"`
UpstreamTLSTimeout int64 `json:"upstream_tls_timeout"`
UpstreamResponseHeaderTimeout int64 `json:"upstream_response_header_timeout"`
}
type virtualAPI struct {
Name string `json:"name"`
PackageType string `json:"package_type"`
Description string `json:"description,omitempty"`
Members []string `json:"members"`
ManagedBy string `json:"managed_by,omitempty"`
}