Skip to content

Commit

Permalink
Merge pull request #1082 from jfrog/repo-refactoring-and-cleanup
Browse files Browse the repository at this point in the history
Refactor all repository resources
  • Loading branch information
alexhung authored Sep 25, 2024
2 parents bd97ed6 + 8ac7e45 commit b0152ef
Show file tree
Hide file tree
Showing 138 changed files with 2,274 additions and 1,894 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 12.0.0 (September 16, 2024). Tested on Artifactory 7.90.10 with Terraform 1.9.5 and OpenTofu 1.8.2
## 12.0.0 (September 16, 2024). Tested on Artifactory 7.90.10 with Terraform 1.9.6 and OpenTofu 1.8.2

BREAKING CHANGES:

Expand Down
7 changes: 5 additions & 2 deletions docs/resources/local.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ The following arguments are supported:
Before Artifactory 7.53.1, up to 2 values (`DEV` and `PROD`) are allowed. From 7.53.1 onward, only one value is allowed.
The attribute should only be used if the repository is already assigned to the existing project. If not, the attribute will be ignored by Artifactory, but will remain in the Terraform state, which will create state drift during the update.
* `includes_pattern` - (Optional) List of artifact patterns to include when evaluating artifact requests in the form
of x/y/**/z/\*. When used, only artifacts matching one of the include patterns are served. By default, all artifacts are included (\*\*/*).
of `x/y/**/z/\*`. When used, only artifacts matching one of the include patterns are served. By default, all artifacts are included (`**/*`).
* `excludes_pattern` - (Optional) List of artifact patterns to exclude when evaluating artifact requests, in the form
of x/y/**/z/*. By default no artifacts are excluded.
of `x/y/**/z/*`. By default no artifacts are excluded.
* `repo_layout_ref` - (Optional) Sets the layout that the repository should use for storing and identifying modules.
A recommended layout that corresponds to the package type defined is suggested, and index packages uploaded and calculate metadata accordingly.
* `blacked_out` - (Optional, Default: `false`) When set, the repository does not participate in artifact resolution and
Expand All @@ -47,3 +47,6 @@ uploading content that may compromise security (e.g., cross-site scripting attac
the artifact directly from the cloud storage provider. Available in Enterprise+ and Edge licenses only.
* `cdn_redirect` - (Optional) When set, download requests to this repository will redirect the client to download
the artifact directly from AWS CloudFront. Available in Enterprise+ and Edge licenses only.
* `allow_delete` - (Optional) When unset or set to `true`, provider will delete the repository even if it contains artifacts. Must be set to `false` for the provider to return error when destroying the resource.

~>To maintain backward compatibility with provider version 12.0.0 and earlier, the state value for `allow_delete` is automatically set to `true` for existing resources.
9 changes: 6 additions & 3 deletions docs/resources/remote.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ All generic repo arguments are supported, in addition to:
* `password` - (Optional)
* `proxy` - (Optional) Proxy key from Artifactory Proxies settings. Default is empty field. Can't be set if `disable_proxy = true`.
* `disable_proxy` - (Optional, Default: `false`) When set to `true`, the proxy is disabled, and not returned in the API response body. If there is a default proxy set for the Artifactory instance, it will be ignored, too. Introduced since Artifactory 7.41.7.
* `includes_pattern` - (Optional, Default: `**/*`) List of comma-separated artifact patterns to include when evaluating artifact requests in the form of x/y/**/z/*. When used, only artifacts matching one of the include patterns are served. By default, all artifacts are included.
* `excludes_pattern` - (Optional) List of comma-separated artifact patterns to exclude when evaluating artifact requests, in the form of x/y/**/z/*. By default, no artifacts are excluded.
* `includes_pattern` - (Optional, Default: `**/*`) List of comma-separated artifact patterns to include when evaluating artifact requests in the form of `x/y/**/z/*`. When used, only artifacts matching one of the include patterns are served. By default, all artifacts are included.
* `excludes_pattern` - (Optional) List of comma-separated artifact patterns to exclude when evaluating artifact requests, in the form of `x/y/**/z/*`. By default, no artifacts are excluded.
* `repo_layout_ref` - (Optional) Sets the layout that the repository should use for storing and identifying modules. A recommended layout that corresponds to the package type defined is suggested, and index packages uploaded and calculate metadata accordingly.
* `remote_repo_layout_ref` - (Optional) Repository layout key for the remote layout mapping. Repository can be created without this attribute (or set to an empty string). Once it's set, it can't be removed by passing an empty string or removing the attribute. UI shows an error message, if the user tries to remove the value, the provider mimics this behavior and errors out.
* `hard_fail` - (Optional, Default: `false`) When set, Artifactory will return an error to the client that causes the build to fail if there is a failure to communicate with this repository.
Expand Down Expand Up @@ -83,4 +83,7 @@ the artifact directly from the cloud storage provider. Available in Enterprise+
* `cdn_redirect` - (Optional) When set, download requests to this repository will redirect the client to download
the artifact directly from AWS CloudFront. Available in Enterprise+ and Edge licenses only.
* `disable_url_normalization` - (Optional) Whether to disable URL normalization, default is `false`.
* `archive_browsing_enabled` - (Optional) When set, you may view content such as HTML or Javadoc files directly from Artifactory. This may not be safe and therefore requires strict content moderation to prevent malicious users from uploading content that may compromise security (e.g., cross-site scripting attacks).
* `archive_browsing_enabled` - (Optional) When set, you may view content such as HTML or Javadoc files directly from Artifactory. This may not be safe and therefore requires strict content moderation to prevent malicious users from uploading content that may compromise security (e.g., cross-site scripting attacks).
* `allow_delete` - (Optional) When unset or set to `true`, provider will delete the repository even if it contains artifacts. Must be set to `false` for the provider to return error when destroying the resource.

~>To maintain backward compatibility with provider version 12.0.0 and earlier, the state value for `allow_delete` is automatically set to `true` for existing resources.
7 changes: 5 additions & 2 deletions docs/resources/virtual.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,14 @@ The following arguments are supported:
The attribute should only be used if the repository is already assigned to the existing project. If not, the attribute will be ignored by Artifactory, but will remain in the Terraform state, which will create state drift during the update.
* `description` - (Optional)
* `notes` - (Optional)
* `includes_pattern` - (Optional) List of artifact patterns to include when evaluating artifact requests in the form of x/y/\*\*/z/\*. When used, only artifacts matching one of the include patterns are served. By default, all artifacts are included (**/\*).
* `excludes_pattern` - (Optional) List of artifact patterns to exclude when evaluating artifact requests, in the form of x/y/*\*/z/\*. By default no artifacts are excluded.
* `includes_pattern` - (Optional) List of artifact patterns to include when evaluating artifact requests in the form of `x/y/**/z/\*`. When used, only artifacts matching one of the include patterns are served. By default, all artifacts are included (`**/*`).
* `excludes_pattern` - (Optional) List of artifact patterns to exclude when evaluating artifact requests, in the form of `x/y/**/z/*`. By default no artifacts are excluded.
* `repo_layout_ref` - (Optional) Repository layout key for the virtual repository.
* `artifactory_requests_can_retrieve_remote_artifacts` - (Optional, Default: `false`) Whether the virtual repository should search through remote repositories when trying to resolve an artifact requested by another Artifactory instance.
* `default_deployment_repo` - (Optional) Default repository to deploy artifacts.
* `allow_delete` - (Optional) When unset or set to `true`, provider will delete the repository even if it contains artifacts. Must be set to `false` for the provider to return error when destroying the resource.

~>To maintain backward compatibility with provider version 12.0.0 and earlier, the state value for `allow_delete` is automatically set to `true` for existing resources.

## Import

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,14 @@ import (
"github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local"
"github.com/jfrog/terraform-provider-shared/packer"
"github.com/jfrog/terraform-provider-shared/predicate"
utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk"
"github.com/samber/lo"
)

func DataSourceArtifactoryFederatedAlpineRepository() *schema.Resource {
packageType := "alpine"

alpineFederatedSchema := utilsdk.MergeMaps(
local.AlpineLocalSchema,
alpineFederatedSchema := lo.Assign(
local.AlpineLocalSchemas[local.CurrentSchemaVersion],
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.AlpinePackageType),
)

var packAlpineMembers = func(repo interface{}, d *schema.ResourceData) error {
Expand All @@ -39,8 +37,8 @@ func DataSourceArtifactoryFederatedAlpineRepository() *schema.Resource {
return &federated.AlpineRepositoryParams{
AlpineLocalRepoParams: local.AlpineLocalRepoParams{
RepositoryBaseParams: local.RepositoryBaseParams{
PackageType: packageType,
Rclass: rclass,
PackageType: resource_repository.AlpinePackageType,
Rclass: federated.Rclass,
},
},
}, nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,14 @@ import (
"github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local"
"github.com/jfrog/terraform-provider-shared/packer"
"github.com/jfrog/terraform-provider-shared/predicate"
utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk"
"github.com/samber/lo"
)

func DataSourceArtifactoryFederatedAnsibleRepository() *schema.Resource {
packageType := "ansible"

ansibleFederatedSchema := utilsdk.MergeMaps(
local.AnsibleLocalSchema,
ansibleFederatedSchema := lo.Assign(
local.AnsibleSchemas[local.CurrentSchemaVersion],
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.AnsiblePackageType),
)

var packMembers = func(repo interface{}, d *schema.ResourceData) error {
Expand All @@ -38,8 +36,8 @@ func DataSourceArtifactoryFederatedAnsibleRepository() *schema.Resource {
constructor := func() (interface{}, error) {
return &federated.AnsibleRepositoryParams{
RepositoryBaseParams: local.RepositoryBaseParams{
PackageType: packageType,
Rclass: rclass,
PackageType: resource_repository.AnsiblePackageType,
Rclass: federated.Rclass,
},
}, nil
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,14 @@ import (
"github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local"
"github.com/jfrog/terraform-provider-shared/packer"
"github.com/jfrog/terraform-provider-shared/predicate"
utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk"
"github.com/samber/lo"
)

func DataSourceArtifactoryFederatedCargoRepository() *schema.Resource {
packageType := "cargo"

cargoFederatedSchema := utilsdk.MergeMaps(
local.CargoLocalSchema,
cargoFederatedSchema := lo.Assign(
local.CargoSchemas[local.CurrentSchemaVersion],
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.CargoPackageType),
)

var packCargoMembers = func(repo interface{}, d *schema.ResourceData) error {
Expand All @@ -39,8 +37,8 @@ func DataSourceArtifactoryFederatedCargoRepository() *schema.Resource {
return &federated.CargoFederatedRepositoryParams{
CargoLocalRepoParams: local.CargoLocalRepoParams{
RepositoryBaseParams: local.RepositoryBaseParams{
PackageType: packageType,
Rclass: rclass,
PackageType: resource_repository.CargoPackageType,
Rclass: federated.Rclass,
},
},
}, nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ import (
"github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local"
"github.com/jfrog/terraform-provider-shared/packer"
"github.com/jfrog/terraform-provider-shared/predicate"
utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk"
"github.com/samber/lo"
)

func DataSourceArtifactoryFederatedConanRepository() *schema.Resource {
conanSchema := utilsdk.MergeMaps(
local.ConanSchema,
conanSchema := lo.Assign(
local.ConanSchemas[local.CurrentSchemaVersion],
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, resource_repository.ConanPackageType),
resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.ConanPackageType),
)

var packConanMembers = func(repo interface{}, d *schema.ResourceData) error {
Expand All @@ -38,7 +38,7 @@ func DataSourceArtifactoryFederatedConanRepository() *schema.Resource {
ConanRepoParams: local.ConanRepoParams{
RepositoryBaseParams: local.RepositoryBaseParams{
PackageType: resource_repository.ConanPackageType,
Rclass: rclass,
Rclass: federated.Rclass,
},
},
}, nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,14 @@ import (
"github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local"
"github.com/jfrog/terraform-provider-shared/packer"
"github.com/jfrog/terraform-provider-shared/predicate"
utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk"
"github.com/samber/lo"
)

func DataSourceArtifactoryFederatedDebianRepository() *schema.Resource {
packageType := "debian"

debianFederatedSchema := utilsdk.MergeMaps(
local.DebianLocalSchema,
debianFederatedSchema := lo.Assign(
local.DebianSchemas[local.CurrentSchemaVersion],
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.DebianPackageType),
)

var packDebianMembers = func(repo interface{}, d *schema.ResourceData) error {
Expand All @@ -39,8 +37,8 @@ func DataSourceArtifactoryFederatedDebianRepository() *schema.Resource {
return &federated.DebianFederatedRepositoryParams{
DebianLocalRepositoryParams: local.DebianLocalRepositoryParams{
RepositoryBaseParams: local.RepositoryBaseParams{
PackageType: packageType,
Rclass: rclass,
PackageType: resource_repository.DebianPackageType,
Rclass: federated.Rclass,
},
},
}, nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,14 @@ import (
"github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local"
"github.com/jfrog/terraform-provider-shared/packer"
"github.com/jfrog/terraform-provider-shared/predicate"
utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk"
"github.com/samber/lo"
)

func DataSourceArtifactoryFederatedDockerV2Repository() *schema.Resource {
packageType := "docker"

dockerV2FederatedSchema := utilsdk.MergeMaps(
local.DockerV2LocalSchema,
dockerV2FederatedSchema := lo.Assign(
local.DockerV2Schemas[local.CurrentSchemaVersion],
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.DockerPackageType),
)

var packDockerMembers = func(repo interface{}, d *schema.ResourceData) error {
Expand All @@ -39,8 +37,8 @@ func DataSourceArtifactoryFederatedDockerV2Repository() *schema.Resource {
return &federated.DockerFederatedRepositoryParams{
DockerLocalRepositoryParams: local.DockerLocalRepositoryParams{
RepositoryBaseParams: local.RepositoryBaseParams{
PackageType: packageType,
Rclass: rclass,
PackageType: resource_repository.DockerPackageType,
Rclass: federated.Rclass,
},
},
}, nil
Expand All @@ -54,12 +52,10 @@ func DataSourceArtifactoryFederatedDockerV2Repository() *schema.Resource {
}

func DataSourceArtifactoryFederatedDockerV1Repository() *schema.Resource {
packageType := "docker"

dockerFederatedSchema := utilsdk.MergeMaps(
local.DockerV1LocalSchema,
dockerFederatedSchema := lo.Assign(
local.DockerV1Schemas[local.CurrentSchemaVersion],
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.DockerPackageType),
)

var packDockerMembers = func(repo interface{}, d *schema.ResourceData) error {
Expand All @@ -78,8 +74,8 @@ func DataSourceArtifactoryFederatedDockerV1Repository() *schema.Resource {
return &federated.DockerFederatedRepositoryParams{
DockerLocalRepositoryParams: local.DockerLocalRepositoryParams{
RepositoryBaseParams: local.RepositoryBaseParams{
PackageType: packageType,
Rclass: rclass,
PackageType: resource_repository.DockerPackageType,
Rclass: federated.Rclass,
},
},
}, nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ import (
"github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local"
"github.com/jfrog/terraform-provider-shared/packer"
"github.com/jfrog/terraform-provider-shared/predicate"
utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk"
"github.com/samber/lo"
)

func DataSourceArtifactoryFederatedGenericRepository(packageType string) *schema.Resource {
var genericSchema = utilsdk.MergeMaps(
local.GetGenericRepoSchema(packageType),
var genericSchema = lo.Assign(
local.GetGenericSchemas(packageType)[local.CurrentSchemaVersion],
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, packageType),
resource_repository.RepoLayoutRefSchema(federated.Rclass, packageType),
)

var packGenericMembers = func(repo interface{}, d *schema.ResourceData) error {
Expand All @@ -39,7 +39,7 @@ func DataSourceArtifactoryFederatedGenericRepository(packageType string) *schema
return &federated.GenericRepositoryParams{
RepositoryBaseParams: local.RepositoryBaseParams{
PackageType: local.GetPackageType(packageType),
Rclass: rclass,
Rclass: federated.Rclass,
},
}, nil
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ import (
"github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local"
"github.com/jfrog/terraform-provider-shared/packer"
"github.com/jfrog/terraform-provider-shared/predicate"
utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk"
"github.com/samber/lo"
)

func DataSourceArtifactoryFederatedHelmOciRepository() *schema.Resource {
ociFederatedSchema := utilsdk.MergeMaps(
local.HelmOciLocalSchema,
ociFederatedSchema := lo.Assign(
local.HelmOCISchemas[local.CurrentSchemaVersion],
federatedSchemaV4,
resource_repository.RepoLayoutRefSchema(rclass, local.HelmOciPackageType),
resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.HelmOCIPackageType),
)

var packOciMembers = func(repo interface{}, d *schema.ResourceData) error {
Expand All @@ -37,8 +37,8 @@ func DataSourceArtifactoryFederatedHelmOciRepository() *schema.Resource {
return &federated.HelmOciFederatedRepositoryParams{
HelmOciLocalRepositoryParams: local.HelmOciLocalRepositoryParams{
RepositoryBaseParams: local.RepositoryBaseParams{
PackageType: local.HelmOciPackageType,
Rclass: rclass,
PackageType: resource_repository.HelmOCIPackageType,
Rclass: federated.Rclass,
},
},
}, nil
Expand Down
Loading

0 comments on commit b0152ef

Please sign in to comment.