From 8e55e8c7f64973c659cc80e2754f494705585140 Mon Sep 17 00:00:00 2001 From: Amund Tenstad Date: Mon, 10 Jan 2022 11:35:35 +0100 Subject: [PATCH] Add external dependencies fields to helm remote --- .../artifactory_remote_helm_repository.md | 10 +++++-- ...urce_artifactory_remote_helm_repository.go | 27 ++++++++++++++++--- ...urce_artifactory_remote_repository_test.go | 6 +++-- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/docs/resources/artifactory_remote_helm_repository.md b/docs/resources/artifactory_remote_helm_repository.md index 91acc4e8e..e095035d4 100644 --- a/docs/resources/artifactory_remote_helm_repository.md +++ b/docs/resources/artifactory_remote_helm_repository.md @@ -4,8 +4,6 @@ Provides an Artifactory remote `helm` repository resource. This provides helm sp Official documentation can be found [here](https://www.jfrog.com/confluence/display/JFROG/Package+Management), although helm is (currently) not listed as a supported format - -## Example Usage ## Example Usage Includes only new and relevant fields, for anything else, see: [generic repo](artifactory_remote_docker_repository.md). ```hcl @@ -14,6 +12,10 @@ resource "artifactory_remote_helm_repository" "helm-remote" { key = "helm-remote-foo25" url = "https://repo.chartcenter.io/" helm_charts_base_url = "https://foo.com" + external_dependencies_enabled = true + external_dependencies_patterns = [ + "**/github.com/**" + ] } ``` @@ -24,3 +26,7 @@ All generic repo arguments are supported, in addition to: * `key` - (Required) The repository identifier. Must be unique system-wide * `helm_charts_base_url` - (Optional) - No documentation is available. Hopefully you know what this means +* `external_dependencies_enabled` - (Optional) When set, external dependencies are rewritten. +* `external_dependencies_patterns` - (Optional) An Allow List of Ant-style path expressions that specify where external + dependencies may be downloaded from. By default, this is set to ** which means that dependencies may be downloaded + from any external source. diff --git a/pkg/artifactory/resource_artifactory_remote_helm_repository.go b/pkg/artifactory/resource_artifactory_remote_helm_repository.go index d97309759..433712b8e 100644 --- a/pkg/artifactory/resource_artifactory_remote_helm_repository.go +++ b/pkg/artifactory/resource_artifactory_remote_helm_repository.go @@ -13,11 +13,30 @@ var helmRemoteSchema = mergeSchema(baseRemoteSchema, map[string]*schema.Schema{ Description: "Base URL for the translation of chart source URLs in the index.yaml of virtual repos. " + "Artifactory will only translate URLs matching the index.yamls hostname or URLs starting with this base url.", }, + "external_dependencies_enabled": { + Type: schema.TypeBool, + Default: false, + Optional: true, + Description: "When set, external dependencies are rewritten.", + }, + "external_dependencies_patterns": { + Type: schema.TypeList, + Optional: true, + ForceNew: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + RequiredWith: []string{"external_dependencies_enabled"}, + Description: "An Allow List of Ant-style path expressions that specify where external dependencies may be downloaded from. " + + "By default, this is set to ** which means that dependencies may be downloaded from any external source.", + }, }) type HelmRemoteRepo struct { RemoteRepositoryBaseParams - HelmChartsBaseURL string `hcl:"helm_charts_base_url" json:"chartsBaseUrl,omitempty"` + HelmChartsBaseURL string `hcl:"helm_charts_base_url" json:"chartsBaseUrl,omitempty"` + ExternalDependenciesEnabled bool `hcl:"external_dependencies_enabled" json:"externalDependenciesEnabled,omitempty"` + ExternalDependenciesPatterns []string `hcl:"external_dependencies_patterns" json:"externalDependenciesPatterns,omitempty"` } func resourceArtifactoryRemoteHelmRepository() *schema.Resource { @@ -34,8 +53,10 @@ func resourceArtifactoryRemoteHelmRepository() *schema.Resource { func unpackhelmRemoteRepo(s *schema.ResourceData) (interface{}, string, error) { d := &ResourceData{s} repo := HelmRemoteRepo{ - RemoteRepositoryBaseParams: unpackBaseRemoteRepo(s, "helm"), - HelmChartsBaseURL: d.getString("helm_charts_base_url", false), + RemoteRepositoryBaseParams: unpackBaseRemoteRepo(s, "helm"), + HelmChartsBaseURL: d.getString("helm_charts_base_url", false), + ExternalDependenciesEnabled: d.getBool("external_dependencies_enabled", false), + ExternalDependenciesPatterns: d.getList("external_dependencies_patterns"), } return repo, repo.Id(), nil } diff --git a/pkg/artifactory/resource_artifactory_remote_repository_test.go b/pkg/artifactory/resource_artifactory_remote_repository_test.go index d810e8416..3bb4ae7c6 100644 --- a/pkg/artifactory/resource_artifactory_remote_repository_test.go +++ b/pkg/artifactory/resource_artifactory_remote_repository_test.go @@ -86,8 +86,10 @@ func TestAccRemoteCargoRepository(t *testing.T) { func TestAccRemoteHelmRepository(t *testing.T) { resource.Test(mkNewRemoteTestCase("helm", t, map[string]interface{}{ - "helm_charts_base_url": "https://github.com/rust-lang/foo.index", - "missed_cache_period_seconds": 1800, // https://github.com/jfrog/terraform-provider-artifactory/issues/225 + "helm_charts_base_url": "https://github.com/rust-lang/foo.index", + "missed_cache_period_seconds": 1800, // https://github.com/jfrog/terraform-provider-artifactory/issues/225 + "external_dependencies_enabled": true, + "external_dependencies_patterns": []interface{}{"**/github.com/**"}, })) }