Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor all repository resources #1082

Merged
merged 3 commits into from
Sep 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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