From a42c95006ecd9d57c0ca11fa9952de8f6e797d26 Mon Sep 17 00:00:00 2001 From: Alex Hung Date: Wed, 21 Aug 2024 15:32:42 -0700 Subject: [PATCH] Apply schema v4 to data source Refactor schema creation --- ...artifactory_federated_alpine_repository.go | 2 +- ...rtifactory_federated_ansible_repository.go | 2 +- ..._artifactory_federated_cargo_repository.go | 2 +- ..._artifactory_federated_conan_repository.go | 2 +- ...artifactory_federated_debian_repository.go | 2 +- ...artifactory_federated_docker_repository.go | 4 +- ...rtifactory_federated_generic_repository.go | 2 +- ...rtifactory_federated_helmoci_repository.go | 2 +- ...e_artifactory_federated_java_repository.go | 2 +- ..._artifactory_federated_nuget_repository.go | 2 +- ...ce_artifactory_federated_oci_repository.go | 2 +- ...ce_artifactory_federated_rpm_repository.go | 2 +- ...ifactory_federated_terraform_repository.go | 2 +- .../repository/federated/federated.go | 6 +- .../repository/federated/federated.go | 87 ++++++++++--------- ...artifactory_federated_docker_repository.go | 2 +- 16 files changed, 65 insertions(+), 58 deletions(-) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_alpine_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_alpine_repository.go index f651cbd6..321fe7ec 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_alpine_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_alpine_repository.go @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedAlpineRepository() *schema.Resource { alpineFederatedSchema := utilsdk.MergeMaps( local.AlpineLocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_ansible_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_ansible_repository.go index a79459bc..a7fad757 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_ansible_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_ansible_repository.go @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedAnsibleRepository() *schema.Resource { ansibleFederatedSchema := utilsdk.MergeMaps( local.AnsibleLocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_cargo_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_cargo_repository.go index 7249292c..de2851ce 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_cargo_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_cargo_repository.go @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedCargoRepository() *schema.Resource { cargoFederatedSchema := utilsdk.MergeMaps( local.CargoLocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_conan_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_conan_repository.go index e3895732..185cbf8b 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_conan_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_conan_repository.go @@ -14,7 +14,7 @@ import ( func DataSourceArtifactoryFederatedConanRepository() *schema.Resource { conanSchema := utilsdk.MergeMaps( local.ConanSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, resource_repository.ConanPackageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_debian_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_debian_repository.go index 3038e827..778ec882 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_debian_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_debian_repository.go @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedDebianRepository() *schema.Resource { debianFederatedSchema := utilsdk.MergeMaps( local.DebianLocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_docker_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_docker_repository.go index ffdb688b..d1756db9 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_docker_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_docker_repository.go @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedDockerV2Repository() *schema.Resource { dockerV2FederatedSchema := utilsdk.MergeMaps( local.DockerV2LocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) @@ -58,7 +58,7 @@ func DataSourceArtifactoryFederatedDockerV1Repository() *schema.Resource { dockerFederatedSchema := utilsdk.MergeMaps( local.DockerV1LocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_generic_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_generic_repository.go index b9357bf0..3ed7f31e 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_generic_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_generic_repository.go @@ -16,7 +16,7 @@ import ( func DataSourceArtifactoryFederatedGenericRepository(packageType string) *schema.Resource { var genericSchema = utilsdk.MergeMaps( local.GetGenericRepoSchema(packageType), - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_helmoci_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_helmoci_repository.go index 4e15354c..eda7bb1b 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_helmoci_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_helmoci_repository.go @@ -14,7 +14,7 @@ import ( func DataSourceArtifactoryFederatedHelmOciRepository() *schema.Resource { ociFederatedSchema := utilsdk.MergeMaps( local.HelmOciLocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, local.HelmOciPackageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_java_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_java_repository.go index 67fb9b65..e152ec00 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_java_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_java_repository.go @@ -17,7 +17,7 @@ func DataSourceArtifactoryFederatedJavaRepository(packageType string, suppressPo javaFederatedSchema := utilsdk.MergeMaps( local.GetJavaRepoSchema(packageType, suppressPom), - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema("federated", packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_nuget_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_nuget_repository.go index d752f374..51ea1770 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_nuget_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_nuget_repository.go @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedNugetRepository() *schema.Resource { nugetFederatedSchema := utilsdk.MergeMaps( local.NugetLocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_oci_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_oci_repository.go index ae21828f..2cde490e 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_oci_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_oci_repository.go @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedOciRepository() *schema.Resource { ociFederatedSchema := utilsdk.MergeMaps( local.OciLocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_rpm_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_rpm_repository.go index f4c1ebf7..5c9a1a95 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_rpm_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_rpm_repository.go @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedRpmRepository() *schema.Resource { rpmFederatedSchema := utilsdk.MergeMaps( local.RpmLocalSchema, - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_terraform_repository.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_terraform_repository.go index a811b235..a3442146 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_terraform_repository.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_terraform_repository.go @@ -18,7 +18,7 @@ func DataSourceArtifactoryFederatedTerraformRepository(registryType string) *sch terraformFederatedSchema := utilsdk.MergeMaps( local.GetTerraformLocalSchema(registryType), - federatedSchemaV3, + federatedSchemaV4, resource_repository.RepoLayoutRefSchema(rclass, packageType), ) diff --git a/pkg/artifactory/datasource/repository/federated/federated.go b/pkg/artifactory/datasource/repository/federated/federated.go index 67988dca..0e8de26b 100644 --- a/pkg/artifactory/datasource/repository/federated/federated.go +++ b/pkg/artifactory/datasource/repository/federated/federated.go @@ -1,7 +1,9 @@ package federated -import "github.com/jfrog/terraform-provider-artifactory/v11/pkg/artifactory/resource/repository/federated" +import ( + "github.com/jfrog/terraform-provider-artifactory/v11/pkg/artifactory/resource/repository/federated" +) const rclass = "federated" -var federatedSchemaV3 = federated.SchemaGenerator(false) +var federatedSchemaV4 = federated.SchemaGeneratorV4(false) diff --git a/pkg/artifactory/resource/repository/federated/federated.go b/pkg/artifactory/resource/repository/federated/federated.go index 4ba0992d..2457f8b3 100644 --- a/pkg/artifactory/resource/repository/federated/federated.go +++ b/pkg/artifactory/resource/repository/federated/federated.go @@ -53,7 +53,7 @@ type Member struct { Enabled bool `json:"enabled"` } -var SchemaGenerator = func(isRequired bool) map[string]*schema.Schema { +var SchemaGeneratorV3 = func(isRequired bool) map[string]*schema.Schema { return utilsdk.MergeMaps( repository.ProxySchema, map[string]*schema.Schema{ @@ -93,51 +93,56 @@ var SchemaGenerator = func(isRequired bool) map[string]*schema.Schema { ) } -var federatedSchemaV3 = SchemaGenerator(true) +var federatedSchemaV3 = SchemaGeneratorV3(true) -var federatedSchemaV4 = utilsdk.MergeMaps( - federatedSchemaV3, - map[string]*schema.Schema{ - "cleanup_on_delete": { - Type: schema.TypeBool, - Optional: true, - Default: false, - Description: "Delete all federated members on `terraform destroy` if set to `true`. Caution: it will delete all the repositories in the federation on other Artifactory instances. Set `access_token` attribute if Access Federation for access tokens is not enabled.", - }, - "member": { - Type: schema.TypeSet, - Required: true, - Description: "The list of Federated members. If a Federated member receives a request that does not include the repository URL, it will " + - "automatically be added with the combination of the configured base URL and `key` field value. " + - "Note that each of the federated members will need to have a base URL set. Please follow the [instruction](https://www.jfrog.com/confluence/display/JFROG/Working+with+Federated+Repositories#WorkingwithFederatedRepositories-SettingUpaFederatedRepository)" + - " to set up Federated repositories correctly.", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "url": { - Type: schema.TypeString, - Required: true, - Description: "Full URL to ending with the repositoryName", - ValidateDiagFunc: validation.ToDiagFunc(validation.IsURLWithHTTPorHTTPS), - }, - "enabled": { - Type: schema.TypeBool, - Required: true, - Description: "Represents the active state of the federated member. It is supported to " + - "change the enabled status of my own member. The config will be updated on the other " + - "federated members automatically.", - }, - "access_token": { - Type: schema.TypeString, - Optional: true, - Sensitive: true, - ValidateDiagFunc: validation.ToDiagFunc(validation.StringIsNotEmpty), - Description: "Admin access token for this member Artifactory instance. Used in conjunction with `cleanup_on_delete` attribute when Access Federation for access tokens is not enabled.", +var SchemaGeneratorV4 = func(isRequired bool) map[string]*schema.Schema { + return utilsdk.MergeMaps( + federatedSchemaV3, + map[string]*schema.Schema{ + "cleanup_on_delete": { + Type: schema.TypeBool, + Optional: true, + Default: false, + Description: "Delete all federated members on `terraform destroy` if set to `true`. Caution: it will delete all the repositories in the federation on other Artifactory instances. Set `access_token` attribute if Access Federation for access tokens is not enabled.", + }, + "member": { + Type: schema.TypeSet, + Required: isRequired, + Optional: !isRequired, + Description: "The list of Federated members. If a Federated member receives a request that does not include the repository URL, it will " + + "automatically be added with the combination of the configured base URL and `key` field value. " + + "Note that each of the federated members will need to have a base URL set. Please follow the [instruction](https://www.jfrog.com/confluence/display/JFROG/Working+with+Federated+Repositories#WorkingwithFederatedRepositories-SettingUpaFederatedRepository)" + + " to set up Federated repositories correctly.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "url": { + Type: schema.TypeString, + Required: true, + Description: "Full URL to ending with the repositoryName", + ValidateDiagFunc: validation.ToDiagFunc(validation.IsURLWithHTTPorHTTPS), + }, + "enabled": { + Type: schema.TypeBool, + Required: true, + Description: "Represents the active state of the federated member. It is supported to " + + "change the enabled status of my own member. The config will be updated on the other " + + "federated members automatically.", + }, + "access_token": { + Type: schema.TypeString, + Optional: true, + Sensitive: true, + ValidateDiagFunc: validation.ToDiagFunc(validation.StringIsNotEmpty), + Description: "Admin access token for this member Artifactory instance. Used in conjunction with `cleanup_on_delete` attribute when Access Federation for access tokens is not enabled.", + }, }, }, }, }, - }, -) + ) +} + +var federatedSchemaV4 = SchemaGeneratorV4(true) func unpackMembers(data *schema.ResourceData) []Member { d := &utilsdk.ResourceData{ResourceData: data} diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_docker_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_docker_repository.go index e07cd5eb..90eafe8d 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_docker_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_docker_repository.go @@ -67,7 +67,7 @@ func ResourceArtifactoryFederatedDockerV1Repository() *schema.Resource { dockerFederatedSchema := utilsdk.MergeMaps( local.DockerV1LocalSchema, - federatedSchemaV3, + federatedSchemaV4, repository.RepoLayoutRefSchema(rclass, packageType), )