Skip to content

Commit

Permalink
Apply schema v4 to data source
Browse files Browse the repository at this point in the history
Refactor schema creation
  • Loading branch information
alexhung committed Aug 21, 2024
1 parent 220ddcf commit a42c950
Show file tree
Hide file tree
Showing 16 changed files with 65 additions and 58 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedAlpineRepository() *schema.Resource {

alpineFederatedSchema := utilsdk.MergeMaps(
local.AlpineLocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedAnsibleRepository() *schema.Resource {

ansibleFederatedSchema := utilsdk.MergeMaps(
local.AnsibleLocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedCargoRepository() *schema.Resource {

cargoFederatedSchema := utilsdk.MergeMaps(
local.CargoLocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
func DataSourceArtifactoryFederatedConanRepository() *schema.Resource {
conanSchema := utilsdk.MergeMaps(
local.ConanSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, resource_repository.ConanPackageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedDebianRepository() *schema.Resource {

debianFederatedSchema := utilsdk.MergeMaps(
local.DebianLocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedDockerV2Repository() *schema.Resource {

dockerV2FederatedSchema := utilsdk.MergeMaps(
local.DockerV2LocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down Expand Up @@ -58,7 +58,7 @@ func DataSourceArtifactoryFederatedDockerV1Repository() *schema.Resource {

dockerFederatedSchema := utilsdk.MergeMaps(
local.DockerV1LocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
func DataSourceArtifactoryFederatedHelmOciRepository() *schema.Resource {
ociFederatedSchema := utilsdk.MergeMaps(
local.HelmOciLocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, local.HelmOciPackageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func DataSourceArtifactoryFederatedJavaRepository(packageType string, suppressPo

javaFederatedSchema := utilsdk.MergeMaps(
local.GetJavaRepoSchema(packageType, suppressPom),
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema("federated", packageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedNugetRepository() *schema.Resource {

nugetFederatedSchema := utilsdk.MergeMaps(
local.NugetLocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedOciRepository() *schema.Resource {

ociFederatedSchema := utilsdk.MergeMaps(
local.OciLocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func DataSourceArtifactoryFederatedRpmRepository() *schema.Resource {

rpmFederatedSchema := utilsdk.MergeMaps(
local.RpmLocalSchema,
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func DataSourceArtifactoryFederatedTerraformRepository(registryType string) *sch

terraformFederatedSchema := utilsdk.MergeMaps(
local.GetTerraformLocalSchema(registryType),
federatedSchemaV3,
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down
6 changes: 4 additions & 2 deletions pkg/artifactory/datasource/repository/federated/federated.go
Original file line number Diff line number Diff line change
@@ -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)
87 changes: 46 additions & 41 deletions pkg/artifactory/resource/repository/federated/federated.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{
Expand Down Expand Up @@ -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}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func ResourceArtifactoryFederatedDockerV1Repository() *schema.Resource {

dockerFederatedSchema := utilsdk.MergeMaps(
local.DockerV1LocalSchema,
federatedSchemaV3,
federatedSchemaV4,
repository.RepoLayoutRefSchema(rclass, packageType),
)

Expand Down

0 comments on commit a42c950

Please sign in to comment.