diff --git a/CHANGELOG.md b/CHANGELOG.md index d696ec5d1..82b5d4938 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +## 12.7.0 (December 17, 2024). Tested on Artifactory 7.98.11 with Terraform 1.10.2 and OpenTofu 1.8.7 + +FEATURES: + +**New Resource:** `artifactory_local_machinelearning_repository` to support local Machine Learning repository. PR: [#1152](https://github.com/jfrog/terraform-provider-artifactory/pull/1152) + +IMPROVEMENTS: + +* resource/artifactory_local_bower_repository, resource/artifactory_local_chef_repository, resource/artifactory_local_cocoapods_repository, resource/artifactory_local_composer_repository, resource/artifactory_local_conda_repository, resource/artifactory_local_cran_repository, resource/artifactory_local_gems_repository, resource/artifactory_local_generic_repository, resource/artifactory_local_gitlfs_repository, resource/artifactory_local_go_repository, resource/artifactory_local_helm_repository, resource/artifactory_local_hunggingfaceml_repository, resource/artifactory_local_npm_repository, resource/artifactory_local_opkg_repository, resource/artifactory_local_pup_repository, resource/artifactory_local_puppet_repository, resource/artifactory_local_pypi_repository, resource/artifactory_local_swift_repository, resource/artifactory_local_terraformbackend_repository, resource/artifactory_local_vagrant_repository are migrated to Plugin Framework. PR: [#1152](https://github.com/jfrog/terraform-provider-artifactory/pull/1152) + ## 12.6.0 (December 13, 2024). Tested on Artifactory 7.98.10 with Terraform 1.10.2 and OpenTofu 1.8.7 FEATURES: diff --git a/docs/resources/local_machinelearning_repository.md b/docs/resources/local_machinelearning_repository.md new file mode 100644 index 000000000..05737d978 --- /dev/null +++ b/docs/resources/local_machinelearning_repository.md @@ -0,0 +1,53 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "artifactory_local_machinelearning_repository Resource - terraform-provider-artifactory" +subcategory: "Local Repositories" +description: |- + Provides a resource to creates a local Machine Learning repository. + Official documentation can be found here https://jfrog.com/help/r/jfrog-artifactory-documentation/machine-learning-repositories. +--- + +# artifactory_local_machinelearning_repository (Resource) + +Provides a resource to creates a local Machine Learning repository. + +Official documentation can be found [here](https://jfrog.com/help/r/jfrog-artifactory-documentation/machine-learning-repositories). + +## Example Usage + +```terraform +resource "artifactory_local_machinelearning_repository" "my-machinelearning-local" { + key = "my-machinelearning-local" +} +``` + + +## Schema + +### Required + +- `key` (String) A mandatory identifier for the repository that must be unique. Must be 1 - 64 alphanumeric and hyphen characters. It cannot contain spaces or special characters. + +### Optional + +- `archive_browsing_enabled` (Boolean) 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). +- `blacked_out` (Boolean) When set, the repository does not participate in artifact resolution and new artifacts cannot be deployed. +- `description` (String) Public description. +- `download_direct` (Boolean) When set, download requests to this repository will redirect the client to download the artifact directly from the cloud storage provider. Available in Enterprise+ and Edge licenses only. +- `excludes_pattern` (String) 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` (String) 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 (`**/*`). +- `notes` (String) Internal description. +- `priority_resolution` (Boolean) Setting repositories with priority will cause metadata to be merged only from repositories set with this field +- `project_environments` (Set of String) Project environment for assigning this repository to. Allow values: "DEV", "PROD", or one of custom environment. 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. +- `project_key` (String) Project key for assigning this repository to. Must be 2 - 32 lowercase alphanumeric and hyphen characters. When assigning repository to a project, repository key must be prefixed with project key, separated by a dash. +- `property_sets` (Set of String) List of property set name +- `xray_index` (Boolean) Enable Indexing In Xray. Repository will be indexed with the default retention period. You will be able to change it via Xray settings. + +## Import + +Import is supported using the following syntax: + +```shell +terraform import artifactory_local_machinelearning_repository.my-machinelearning-local my-machinelearning-local +``` diff --git a/examples/resources/artifactory_local_machinelearning_repository/import.sh b/examples/resources/artifactory_local_machinelearning_repository/import.sh new file mode 100644 index 000000000..0afd130cf --- /dev/null +++ b/examples/resources/artifactory_local_machinelearning_repository/import.sh @@ -0,0 +1 @@ +terraform import artifactory_local_machinelearning_repository.my-machinelearning-local my-machinelearning-local \ No newline at end of file diff --git a/examples/resources/artifactory_local_machinelearning_repository/resource.tf b/examples/resources/artifactory_local_machinelearning_repository/resource.tf new file mode 100644 index 000000000..da9650975 --- /dev/null +++ b/examples/resources/artifactory_local_machinelearning_repository/resource.tf @@ -0,0 +1,3 @@ +resource "artifactory_local_machinelearning_repository" "my-machinelearning-local" { + key = "my-machinelearning-local" +} \ No newline at end of file diff --git a/pkg/acctest/test.go b/pkg/acctest/test.go index a96debd8c..00ed73be2 100644 --- a/pkg/acctest/test.go +++ b/pkg/acctest/test.go @@ -118,7 +118,7 @@ func GetArtifactoryUrl(t *testing.T) string { type CheckFun func(id string, request *resty.Request) (*resty.Response, error) -func VerifyDeleted(id, identifierAttribute string, check CheckFun) func(*terraform.State) error { +func VerifyDeleted(t *testing.T, id, identifierAttribute string, check CheckFun) func(*terraform.State) error { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[id] if !ok { @@ -129,14 +129,13 @@ func VerifyDeleted(id, identifierAttribute string, check CheckFun) func(*terrafo return fmt.Errorf("provider is not initialized. Please PreCheck() is included in your acceptance test") } - providerMeta := Provider.Meta().(util.ProviderMetadata) - identifier := rs.Primary.ID if identifierAttribute != "" { identifier = rs.Primary.Attributes[identifierAttribute] } - resp, err := check(identifier, providerMeta.Client.R()) + client := GetTestResty(t) + resp, err := check(identifier, client.R()) if err != nil { return err } @@ -374,8 +373,10 @@ func CompareArtifactoryVersions(t *testing.T, instanceVersions string) (bool, er return false, err } - meta := Provider.Meta().(util.ProviderMetadata) - runtimeVersion, err := version.NewVersion(meta.ArtifactoryVersion) + client := GetTestResty(t) + artifactoryVersion, err := util.GetArtifactoryVersion(client) + + runtimeVersion, err := version.NewVersion(artifactoryVersion) if err != nil { return false, err } @@ -386,3 +387,24 @@ func CompareArtifactoryVersions(t *testing.T, instanceVersions string) (bool, er } return skipTest, nil } + +func SkipIfNotSupportedVersion(t *testing.T, supportedVersion string) error { + supported, err := version.NewVersion(supportedVersion) + if err != nil { + return err + } + + client := GetTestResty(t) + artifactoryVersion, err := util.GetArtifactoryVersion(client) + + current, err := version.NewVersion(artifactoryVersion) + if err != nil { + return err + } + + skipTest := current.LessThan(supported) + if skipTest { + t.Skipf("Test skip because: current version %s is earlier than %s\n", current.String(), supported.String()) + } + return nil +} 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 3f4644805..79692134d 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedAlpineRepository() *schema.Resource { alpineFederatedSchema := lo.Assign( local.AlpineLocalSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.AlpinePackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.AlpinePackageType), ) var packAlpineMembers = func(repo interface{}, d *schema.ResourceData) error { 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 e333effd1..d800058cb 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedAnsibleRepository() *schema.Resource { ansibleFederatedSchema := lo.Assign( local.AnsibleSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.AnsiblePackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.AnsiblePackageType), ) var packMembers = func(repo interface{}, d *schema.ResourceData) error { 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 1071c2342..e74f9760c 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedCargoRepository() *schema.Resource { cargoFederatedSchema := lo.Assign( local.CargoSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.CargoPackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.CargoPackageType), ) var packCargoMembers = func(repo interface{}, d *schema.ResourceData) error { 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 53e4345b1..fe0f33187 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedConanRepository() *schema.Resource { conanSchema := lo.Assign( local.ConanSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.ConanPackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.ConanPackageType), ) var packConanMembers = func(repo interface{}, d *schema.ResourceData) error { 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 e20699d3a..ae818a571 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedDebianRepository() *schema.Resource { debianFederatedSchema := lo.Assign( local.DebianSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.DebianPackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.DebianPackageType), ) var packDebianMembers = func(repo interface{}, d *schema.ResourceData) error { 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 c0ad1e4f1..51b08ead3 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedDockerV2Repository() *schema.Resource { dockerV2FederatedSchema := lo.Assign( local.DockerV2Schemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.DockerPackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.DockerPackageType), ) var packDockerMembers = func(repo interface{}, d *schema.ResourceData) error { @@ -55,7 +55,7 @@ func DataSourceArtifactoryFederatedDockerV1Repository() *schema.Resource { dockerFederatedSchema := lo.Assign( local.DockerV1Schemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.DockerPackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.DockerPackageType), ) var packDockerMembers = func(repo interface{}, d *schema.ResourceData) error { 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 552775092..ef0d5c33e 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 @@ -17,7 +17,7 @@ func DataSourceArtifactoryFederatedGenericRepository(packageType string) *schema var genericSchema = lo.Assign( local.GetGenericSchemas(packageType)[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, packageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, packageType), ) var packGenericMembers = func(repo interface{}, d *schema.ResourceData) error { 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 95fffecd7..76f19f716 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedHelmOciRepository() *schema.Resource { ociFederatedSchema := lo.Assign( local.HelmOCISchemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.HelmOCIPackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.HelmOCIPackageType), ) var packOciMembers = func(repo interface{}, d *schema.ResourceData) error { 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 f15e995cf..53fea3ecf 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 @@ -18,7 +18,7 @@ func DataSourceArtifactoryFederatedJavaRepository(packageType string, suppressPo javaFederatedSchema := lo.Assign( local.GetJavaSchemas(packageType, suppressPom)[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema("federated", packageType), + resource_repository.RepoLayoutRefSDKv2Schema("federated", packageType), ) var packJavaMembers = func(repo interface{}, d *schema.ResourceData) error { 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 d0a34802e..446eee51c 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedNugetRepository() *schema.Resource { nugetFederatedSchema := lo.Assign( local.NugetSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.NugetPackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.NugetPackageType), ) var packNugetMembers = func(repo interface{}, d *schema.ResourceData) error { 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 c8bcc5031..afd76c16b 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedOciRepository() *schema.Resource { ociFederatedSchema := lo.Assign( local.OCILocalSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.OCIPackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.OCIPackageType), ) var packOciMembers = func(repo interface{}, d *schema.ResourceData) error { diff --git a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_repository_test.go b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_repository_test.go index f7a95479b..0683e5448 100644 --- a/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_repository_test.go +++ b/pkg/artifactory/datasource/repository/federated/datasource_artifactory_federated_repository_test.go @@ -66,7 +66,7 @@ func federatedTestCase(repoType string, t *testing.T) (*testing.T, resource.Test return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(resourceName, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, resourceName, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryConfig, @@ -80,7 +80,7 @@ func federatedTestCase(repoType string, t *testing.T) (*testing.T, resource.Test resource.TestCheckResourceAttr(resourceName, "member.#", "1"), resource.TestCheckResourceAttr(resourceName, "member.0.url", federatedMemberUrl), resource.TestCheckResourceAttr(resourceName, "member.0.enabled", "true"), - resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", repoType)(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", repoType); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -180,8 +180,8 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -190,7 +190,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "alpine"), resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "alpine")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "alpine"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -281,8 +281,8 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -291,7 +291,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "ansible"), resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "ansible")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "ansible"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -342,7 +342,7 @@ func TestAccDataSourceFederatedCargoRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -350,7 +350,7 @@ func TestAccDataSourceFederatedCargoRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "anonymous_access", fmt.Sprintf("%t", anonAccess)), resource.TestCheckResourceAttr(fqrn, "enable_sparse_index", fmt.Sprintf("%t", enabledSparseIndex)), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "cargo")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "cargo"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -359,7 +359,7 @@ func TestAccDataSourceFederatedCargoRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "anonymous_access", fmt.Sprintf("%t", !anonAccess)), resource.TestCheckResourceAttr(fqrn, "enable_sparse_index", fmt.Sprintf("%t", !enabledSparseIndex)), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "cargo")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "cargo"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -409,14 +409,14 @@ func TestAccDataSourceFederatedConanRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "force_conan_authentication", fmt.Sprintf("%t", forceConanAuthentication)), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "conan")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "conan"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -424,7 +424,7 @@ func TestAccDataSourceFederatedConanRepository(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "force_conan_authentication", fmt.Sprintf("%t", !forceConanAuthentication)), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "conan")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "conan"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -576,9 +576,9 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), - acctest.VerifyDeleted(kpFqrn2, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, kpFqrn2, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -592,7 +592,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "index_compression_formats.0", "bz2"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.1", "lzma"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.2", "xz"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "debian")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "debian"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -606,7 +606,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "index_compression_formats.0", "bz2"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.1", "lzma"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.2", "xz"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "debian")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "debian"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -655,7 +655,7 @@ func TestAccDataSourceFederatedDockerV2Repository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -664,7 +664,7 @@ func TestAccDataSourceFederatedDockerV2Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", params["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -674,7 +674,7 @@ func TestAccDataSourceFederatedDockerV2Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", updated["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", updated["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", updated["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -724,7 +724,7 @@ func TestAccDataSourceFederatedDockerRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -733,7 +733,7 @@ func TestAccDataSourceFederatedDockerRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", params["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -743,7 +743,7 @@ func TestAccDataSourceFederatedDockerRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", updated["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", updated["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", updated["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -777,7 +777,7 @@ func TestAccDataSourceFederatedDockerV1Repository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -786,7 +786,7 @@ func TestAccDataSourceFederatedDockerV1Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", "false"), resource.TestCheckResourceAttr(fqrn, "tag_retention", "1"), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", "0"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -825,7 +825,7 @@ const federatedJavaRepositoryBasic = ` func TestAccDataSourceFederatedMavenRepository(t *testing.T) { _, fqrn, name := testutil.MkNames("maven-federated", "artifactory_federated_maven_repository") - repoLayoutRef := func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "maven")(); return r.(string) }() + repoLayoutRef := func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "maven"); return r }() tempStruct := utilsdk.MergeMaps(commonJavaParams) tempStruct["name"] = name tempStruct["resource_name"] = strings.Split(fqrn, ".")[0] @@ -842,7 +842,7 @@ func TestAccDataSourceFederatedMavenRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate(fqrn, federatedJavaRepositoryBasic, tempStruct), @@ -896,7 +896,7 @@ func makeFederatedGradleLikeRepoTestCase(repoType string, t *testing.T) (*testin return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(resourceFqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, resourceFqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate(resourceFqrn, federatedJavaRepositoryBasic, tempStruct), @@ -973,7 +973,7 @@ func TestAccDataSourceFederatedHelmOciRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -981,7 +981,7 @@ func TestAccDataSourceFederatedHelmOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "helmoci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "helmoci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -990,7 +990,7 @@ func TestAccDataSourceFederatedHelmOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", updated["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", updated["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "helmoci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "helmoci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -1037,7 +1037,7 @@ func TestAccDataSourceFederatedNugetRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(tempFqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, tempFqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -1045,7 +1045,7 @@ func TestAccDataSourceFederatedNugetRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "max_unique_snapshots", fmt.Sprintf("%d", params["max_unique_snapshots"])), resource.TestCheckResourceAttr(fqrn, "force_nuget_authentication", fmt.Sprintf("%t", params["force_nuget_authentication"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "nuget")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "nuget"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1054,7 +1054,7 @@ func TestAccDataSourceFederatedNugetRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "max_unique_snapshots", fmt.Sprintf("%d", updates["max_unique_snapshots"])), resource.TestCheckResourceAttr(fqrn, "force_nuget_authentication", fmt.Sprintf("%t", updates["force_nuget_authentication"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "nuget")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "nuget"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -1100,7 +1100,7 @@ func TestAccDataSourceFederatedOciRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -1108,7 +1108,7 @@ func TestAccDataSourceFederatedOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "oci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "oci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1117,7 +1117,7 @@ func TestAccDataSourceFederatedOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", updated["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", updated["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "oci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "oci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -1273,9 +1273,9 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(tempFqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), - acctest.VerifyDeleted(kpFqrn2, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, tempFqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, kpFqrn2, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -1288,7 +1288,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "enable_file_lists_indexing", "true"), resource.TestCheckResourceAttr(fqrn, "calculate_yum_metadata", "true"), resource.TestCheckResourceAttr(fqrn, "yum_root_depth", "1"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "rpm")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "rpm"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1301,7 +1301,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "enable_file_lists_indexing", "false"), resource.TestCheckResourceAttr(fqrn, "calculate_yum_metadata", "true"), resource.TestCheckResourceAttr(fqrn, "yum_root_depth", "2"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "rpm")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "rpm"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -1340,7 +1340,7 @@ func makeFederatedTerraformRepoTestCase(registryType string, t *testing.T) (*tes return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(tempFqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, tempFqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -1348,8 +1348,8 @@ func makeFederatedTerraformRepoTestCase(registryType string, t *testing.T) (*tes resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "terraform"), resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { - r, _ := repository.GetDefaultRepoLayoutRef("federated", "terraform_"+registryType)() - return r.(string) + r, _ := repository.GetDefaultRepoLayoutRef("federated", "terraform_"+registryType) + return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, 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 bd208057a..671ea81ef 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 @@ -15,7 +15,7 @@ func DataSourceArtifactoryFederatedRpmRepository() *schema.Resource { rpmFederatedSchema := lo.Assign( local.RPMSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, resource_repository.RPMPackageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, resource_repository.RPMPackageType), ) var packRpmMembers = func(repo interface{}, d *schema.ResourceData) error { 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 52e6b9e65..fbcd80dbf 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 @@ -19,7 +19,7 @@ func DataSourceArtifactoryFederatedTerraformRepository(registryType string) *sch terraformFederatedSchema := lo.Assign( local.GetTerraformSchemas(registryType)[local.CurrentSchemaVersion], federatedSchemaV4, - resource_repository.RepoLayoutRefSchema(federated.Rclass, packageType), + resource_repository.RepoLayoutRefSDKv2Schema(federated.Rclass, packageType), ) var packTerraformMembers = func(repo interface{}, d *schema.ResourceData) error { diff --git a/pkg/artifactory/datasource/repository/local/datasource_artifactory_local_repository_test.go b/pkg/artifactory/datasource/repository/local/datasource_artifactory_local_repository_test.go index 69c2be92b..d7ada5104 100644 --- a/pkg/artifactory/datasource/repository/local/datasource_artifactory_local_repository_test.go +++ b/pkg/artifactory/datasource/repository/local/datasource_artifactory_local_repository_test.go @@ -49,7 +49,7 @@ func mkTestCase(packageType string, t *testing.T) (*testing.T, resource.TestCase PreCheck: func() { acctest.PreCheck(t) }, - ProviderFactories: acctest.ProviderFactories, + ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, Steps: []resource.TestStep{ { Config: config, @@ -144,7 +144,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "alpine"), resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "alpine")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "alpine"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -231,7 +231,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "ansible"), resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "ansible")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "ansible"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -264,7 +264,7 @@ func TestAccDataSourceLocalCargoRepository(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "anonymous_access", fmt.Sprintf("%t", params["anonymous_access"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "cargo")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "cargo"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. resource.TestCheckResourceAttr(fqrn, "enable_sparse_index", "false"), ), }, @@ -298,7 +298,7 @@ func TestAccDataSourceLocalConanRepository(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "force_conan_authentication", fmt.Sprintf("%t", params["force_conan_authentication"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "conan")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "conan"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -438,7 +438,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "index_compression_formats.0", "bz2"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.1", "lzma"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.2", "xz"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "debian")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "debian"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -477,7 +477,7 @@ func TestAccDataSourceLocalDockerV2Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", params["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -509,7 +509,7 @@ func TestAccDataSourceLocalDockerV1Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", "false"), resource.TestCheckResourceAttr(fqrn, "tag_retention", "1"), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", "0"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -564,7 +564,7 @@ func TestAccDataSourceLocalMavenRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "handle_releases", fmt.Sprintf("%v", tempStruct["handle_releases"])), resource.TestCheckResourceAttr(fqrn, "handle_snapshots", fmt.Sprintf("%v", tempStruct["handle_snapshots"])), resource.TestCheckResourceAttr(fqrn, "suppress_pom_consistency_checks", fmt.Sprintf("%v", tempStruct["suppress_pom_consistency_checks"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "maven")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "maven"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -586,7 +586,7 @@ func makeDataSourceLocalGradleLikeRepoTestCase(repoType string, t *testing.T) (* return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate(fqrn, localJavaRepositoryBasic, tempStruct), @@ -633,7 +633,7 @@ func TestAccDataSourceLocalHelmOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "helmoci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "helmoci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -669,7 +669,7 @@ func TestAccDataSourceLocalNugetRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -677,7 +677,7 @@ func TestAccDataSourceLocalNugetRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "max_unique_snapshots", fmt.Sprintf("%d", params["max_unique_snapshots"])), resource.TestCheckResourceAttr(fqrn, "force_nuget_authentication", fmt.Sprintf("%t", params["force_nuget_authentication"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "nuget")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "nuget"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -713,7 +713,7 @@ func TestAccDataSourceLocalOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "oci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "oci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -843,9 +843,9 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), - acctest.VerifyDeleted(kpFqrn2, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, kpFqrn2, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -858,7 +858,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "enable_file_lists_indexing", "true"), resource.TestCheckResourceAttr(fqrn, "calculate_yum_metadata", "true"), resource.TestCheckResourceAttr(fqrn, "yum_root_depth", "1"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "rpm")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "rpm"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, }, @@ -885,7 +885,7 @@ func TestAccDataSourceLocalTerraformModuleRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -919,7 +919,7 @@ func TestAccDataSourceLocalTerraformProviderRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_ansible_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_ansible_repository.go index df62a6662..d5971d3e2 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_ansible_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_ansible_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteAnsibleRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.AnsiblePackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.AnsiblePackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteAnsibleRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.AnsiblePackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_basic_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_basic_repository.go index 2b1419d84..591d28f48 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_basic_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_basic_repository.go @@ -12,7 +12,7 @@ import ( func DataSourceArtifactoryRemoteBasicRepository(packageType string) *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, packageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, packageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DataSourceArtifactoryRemoteBasicRepository(packageType string) *schema.Reso return &remote.RepositoryRemoteBaseParams{ PackageType: packageType, Rclass: remote.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_bower_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_bower_repository.go index 8bd525685..ed0055eff 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_bower_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_bower_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteBowerRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.BowerPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.BowerPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteBowerRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.BowerPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_cargo_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_cargo_repository.go index 3ab16323b..050c6cbe2 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_cargo_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_cargo_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteCargoRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.CargoPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.CargoPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteCargoRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.CargoPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_cocoapods_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_cocoapods_repository.go index 855d268af..26bb84f41 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_cocoapods_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_cocoapods_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteCoapodsRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.CocoapodsPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.CocoapodsPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteCoapodsRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.CocoapodsPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_composer_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_composer_repository.go index 109fb60ed..2ccfbf3c4 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_composer_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_composer_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteComposerRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.ComposerPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.ComposerPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteComposerRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.ComposerPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_conan_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_conan_repository.go index c0940d829..f29f72218 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_conan_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_conan_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteConanRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.ConanPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.ConanPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteConanRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.ConanPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_docker_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_docker_repository.go index 8a78649b3..fda64c0a8 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_docker_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_docker_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteDockerRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.DockerPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.DockerPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteDockerRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.DockerPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_generic_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_generic_repository.go index ac956b6b1..1aeee48b4 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_generic_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_generic_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteGenericRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.GenericPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.GenericPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteGenericRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.GenericPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_go_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_go_repository.go index 448afc936..dfce0385f 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_go_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_go_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteGoRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.GoPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.GoPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteGoRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.GoPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_helm_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_helm_repository.go index 02d9ea1d4..c1dc734e6 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_helm_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_helm_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteHelmRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.HelmPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.HelmPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteHelmRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.HelmPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_helmoci_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_helmoci_repository.go index b91617786..1ed98da62 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_helmoci_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_helmoci_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteHelmOciRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.HelmOCIPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.HelmOCIPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteHelmOciRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.HelmOCIPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_java_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_java_repository.go index 9ac8bea83..a4894e4ae 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_java_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_java_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteJavaRepository(packageType string, suppressPom bool) *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, packageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, packageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteJavaRepository(packageType string, suppressPom b RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: packageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, SuppressPomConsistencyChecks: suppressPom, }, nil diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_maven_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_maven_repository.go index 9bfcbaa66..92e3a6f5b 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_maven_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_maven_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteMavenRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.MavenPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.MavenPackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DataSourceArtifactoryRemoteMavenRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.MavenPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, SuppressPomConsistencyChecks: false, }, diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_npm_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_npm_repository.go index 17c95dee4..fb1a20c1d 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_npm_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_npm_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteNpmRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.NPMPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.NPMPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteNpmRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.NPMPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_nuget_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_nuget_repository.go index 12cd73a26..c01b1cfaa 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_nuget_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_nuget_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteNugetRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.NugetPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.NugetPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteNugetRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.NugetPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_oci_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_oci_repository.go index 9fd45fb45..8b14a2557 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_oci_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_oci_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteOciRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.OCIPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.OCIPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteOciRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.OCIPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_pypi_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_pypi_repository.go index a26489add..265736429 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_pypi_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_pypi_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemotePypiRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.PyPiPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.PyPiPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemotePypiRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.PyPiPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_repository_test.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_repository_test.go index 5945c22c7..bc0a772ae 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_repository_test.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_repository_test.go @@ -82,7 +82,7 @@ func TestAccDataSourceRemoteAnsibleRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -118,7 +118,7 @@ func TestAccDataSourceRemoteBowerRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -158,7 +158,7 @@ func TestAccDataSourceRemoteCargoRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -198,7 +198,7 @@ func TestAccDataSourceRemoteCocoaPodsRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -236,7 +236,7 @@ func TestAccDataSourceRemoteComposerRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -274,7 +274,7 @@ func TestAccDataSourceRemoteConanRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -316,7 +316,7 @@ func TestAccDataSourceRemoteDockerRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -358,7 +358,7 @@ func TestAccDataSourceRemoteGenericRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -395,7 +395,7 @@ func TestAccDataSourceRemoteGoRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -435,7 +435,7 @@ func TestAccDataSourceRemoteHelmRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -500,7 +500,7 @@ func makeDataSourceRemoteGradleLikeRepoTestCase(packageType string, t *testing.T return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate(fqrn, javaRepositoryBasic, params), @@ -552,7 +552,7 @@ func TestAccDataSourceRemoteHelmOciRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -626,7 +626,7 @@ func TestAccDataSourceRemoteNugetRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -670,7 +670,7 @@ func TestAccDataSourceRemoteOciRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -711,7 +711,7 @@ func TestAccDataSourceRemotePypiRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -751,7 +751,7 @@ func TestAccDataSourceRemoteTerraformRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -791,7 +791,7 @@ func TestAccDataSourceRemoteVcsRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_terraform_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_terraform_repository.go index 4bfb5b090..12a2c2895 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_terraform_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_terraform_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteTerraformRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.TerraformPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.TerraformPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteTerraformRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.TerraformPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_vcs_repository.go b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_vcs_repository.go index 4d06ecebe..ba26d4abe 100644 --- a/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_vcs_repository.go +++ b/pkg/artifactory/datasource/repository/remote/datasource_artifactory_remote_vcs_repository.go @@ -10,7 +10,7 @@ import ( func DataSourceArtifactoryRemoteVcsRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.VCSPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(remote.Rclass, resource_repository.VCSPackageType) if err != nil { return nil, err } @@ -19,7 +19,7 @@ func DataSourceArtifactoryRemoteVcsRepository() *schema.Resource { RepositoryRemoteBaseParams: remote.RepositoryRemoteBaseParams{ Rclass: remote.Rclass, PackageType: resource_repository.VCSPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_alpine_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_alpine_repository.go index c93257e51..08e6197ba 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_alpine_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_alpine_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualAlpineRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.AlpinePackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.AlpinePackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DatasourceArtifactoryVirtualAlpineRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.AlpinePackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_bower_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_bower_repository.go index 1a4928594..2a87adaa6 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_bower_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_bower_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualBowerRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.BowerPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.BowerPackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DatasourceArtifactoryVirtualBowerRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.BowerPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_conan_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_conan_repository.go index 302414826..484ac68ef 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_conan_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_conan_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualConanRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.ConanPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.ConanPackageType) if err != nil { return nil, err } @@ -22,7 +22,7 @@ func DatasourceArtifactoryVirtualConanRepository() *schema.Resource { RepositoryBaseParams: virtual.RepositoryBaseParams{ Rclass: virtual.Rclass, PackageType: resource_repository.ConanPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, ConanBaseParams: resource_repository.ConanBaseParams{ diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_debian_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_debian_repository.go index 7168da598..bf393caf4 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_debian_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_debian_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualDebianRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.DebianPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.DebianPackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DatasourceArtifactoryVirtualDebianRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.DebianPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_docker_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_docker_repository.go index 96f9f19c9..defa33530 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_docker_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_docker_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualDockerRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.DockerPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.DockerPackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DatasourceArtifactoryVirtualDockerRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.DockerPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_generic_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_generic_repository.go index ee8df99e7..6b537e57e 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_generic_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_generic_repository.go @@ -12,7 +12,7 @@ import ( func DataSourceArtifactoryVirtualGenericRepository(packageType string) *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType) if err != nil { return nil, err } @@ -20,11 +20,11 @@ func DataSourceArtifactoryVirtualGenericRepository(packageType string) *schema.R return &virtual.RepositoryBaseParams{ PackageType: packageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } - genericSchemas := virtual.GetSchemas(resource_repository.RepoLayoutRefSchema(virtual.Rclass, packageType)) + genericSchemas := virtual.GetSchemas(resource_repository.RepoLayoutRefSDKv2Schema(virtual.Rclass, packageType)) return &schema.Resource{ Schema: genericSchemas[virtual.CurrentSchemaVersion], @@ -35,7 +35,7 @@ func DataSourceArtifactoryVirtualGenericRepository(packageType string) *schema.R func DataSourceArtifactoryVirtualRepositoryWithRetrievalCachePeriodSecs(packageType string) *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType) if err != nil { return nil, err } @@ -43,7 +43,7 @@ func DataSourceArtifactoryVirtualRepositoryWithRetrievalCachePeriodSecs(packageT RepositoryBaseParams: virtual.RepositoryBaseParams{ Rclass: virtual.Rclass, PackageType: packageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_go_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_go_repository.go index 83d4f4c33..4e86bfe7b 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_go_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_go_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualGoRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.GoPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.GoPackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DatasourceArtifactoryVirtualGoRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.GoPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_helm_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_helm_repository.go index 9c2e6eae6..76a65e3e7 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_helm_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_helm_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualHelmRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.HelmPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.HelmPackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DatasourceArtifactoryVirtualHelmRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.HelmPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_helmoci_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_helmoci_repository.go index 928c46c33..da4a38856 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_helmoci_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_helmoci_repository.go @@ -10,7 +10,7 @@ import ( func DatasourceArtifactoryVirtualHelmOciRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.HelmOCIPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.HelmOCIPackageType) if err != nil { return nil, err } @@ -18,7 +18,7 @@ func DatasourceArtifactoryVirtualHelmOciRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.HelmOCIPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_java_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_java_repository.go index 4412af14e..684226bd0 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_java_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_java_repository.go @@ -13,7 +13,7 @@ import ( func DataSourceArtifactoryVirtualJavaRepository(packageType string) *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType) if err != nil { return nil, err } @@ -21,12 +21,12 @@ func DataSourceArtifactoryVirtualJavaRepository(packageType string) *schema.Reso return &virtual.RepositoryBaseParams{ PackageType: packageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } var mavenSchema = lo.Assign( virtual.JavaSchema, - resource_repository.RepoLayoutRefSchema(virtual.Rclass, packageType), + resource_repository.RepoLayoutRefSDKv2Schema(virtual.Rclass, packageType), ) var mavenSchemas = virtual.GetSchemas(mavenSchema) diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_npm_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_npm_repository.go index fcaa7c524..11d767dde 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_npm_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_npm_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualNpmRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.NPMPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.NPMPackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DatasourceArtifactoryVirtualNpmRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.NPMPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_nuget_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_nuget_repository.go index bf4654ea3..371fd27f3 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_nuget_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_nuget_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualNugetRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.NugetPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.NugetPackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DatasourceArtifactoryVirtualNugetRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.NugetPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_oci_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_oci_repository.go index 67f415311..2d74b0a71 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_oci_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_oci_repository.go @@ -10,7 +10,7 @@ import ( func DatasourceArtifactoryVirtualOciRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.OCIPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.OCIPackageType) if err != nil { return nil, err } @@ -18,7 +18,7 @@ func DatasourceArtifactoryVirtualOciRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.OCIPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_repository_test.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_repository_test.go index 3d421e8f3..52be2d193 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_repository_test.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_repository_test.go @@ -262,9 +262,9 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), - acctest.VerifyDeleted(kpFqrn2, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, kpFqrn2, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -275,8 +275,8 @@ EOF resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), resource.TestCheckResourceAttr(fqrn, "secondary_keypair_ref", kpName2), resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { - r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType)() - return r.(string) + r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType) + return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, @@ -321,7 +321,7 @@ func mkNewVirtualTestCase(packageType string, t *testing.T, extraFields map[stri return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, diff --git a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_rpm_repository.go b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_rpm_repository.go index 95d387cb0..dd14b69c7 100644 --- a/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_rpm_repository.go +++ b/pkg/artifactory/datasource/repository/virtual/datasource_artifactory_virtual_rpm_repository.go @@ -12,7 +12,7 @@ import ( func DatasourceArtifactoryVirtualRpmRepository() *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.RPMPackageType)() + repoLayout, err := resource_repository.GetDefaultRepoLayoutRef(virtual.Rclass, resource_repository.RPMPackageType) if err != nil { return nil, err } @@ -20,7 +20,7 @@ func DatasourceArtifactoryVirtualRpmRepository() *schema.Resource { return &virtual.RepositoryBaseParams{ PackageType: resource_repository.RPMPackageType, Rclass: virtual.Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/provider/framework.go b/pkg/artifactory/provider/framework.go index fb9507578..caae857c4 100644 --- a/pkg/artifactory/provider/framework.go +++ b/pkg/artifactory/provider/framework.go @@ -20,12 +20,14 @@ import ( "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/configuration" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/lifecycle" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/replication" + "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/security" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/user" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/webhook" "github.com/jfrog/terraform-provider-shared/client" "github.com/jfrog/terraform-provider-shared/util" validatorfw_string "github.com/jfrog/terraform-provider-shared/validator/fw/string" + "github.com/samber/lo" ) // Ensure the implementation satisfies the provider.Provider interface. @@ -203,62 +205,74 @@ func (p *ArtifactoryProvider) Configure(ctx context.Context, req provider.Config // Resources satisfies the provider.Provider interface for ArtifactoryProvider. func (p *ArtifactoryProvider) Resources(ctx context.Context) []func() resource.Resource { - return []func() resource.Resource{ - artifact.NewArtifactResource, - artifact.NewItemPropertiesResource, - user.NewAnonymousUserResource, - user.NewManagedUserResource, - user.NewUnmanagedUserResource, - user.NewUserResource, - security.NewGroupResource, - security.NewScopedTokenResource, - security.NewGlobalEnvironmentResource, - security.NewDistributionPublicKeyResource, - security.NewCertificateResource, - security.NewKeyPairResource, - security.NewPasswordExpirationPolicyResource, - security.NewUserLockPolicyResource, - security.NewVaultConfigurationResource, - configuration.NewArchivePolicyResource, - configuration.NewLdapSettingResource, - configuration.NewLdapGroupSettingResource, - configuration.NewBackupResource, - configuration.NewGeneralSecurityResource, - configuration.NewMailServerResource, - configuration.NewPackageCleanupPolicyResource, - configuration.NewPropertySetResource, - configuration.NewProxyResource, - configuration.NewRepositoryLayoutResource, - lifecycle.NewReleaseBundleV2Resource, - lifecycle.NewReleaseBundleV2PromotionResource, - replication.NewLocalRepositorySingleReplicationResource, - replication.NewLocalRepositoryMultiReplicationResource, - replication.NewRemoteRepositoryReplicationResource, - webhook.NewArtifactWebhookResource, - webhook.NewArtifactCustomWebhookResource, - webhook.NewArtifactLifecycleWebhookResource, - webhook.NewArtifactLifecycleCustomWebhookResource, - webhook.NewArtifactPropertyWebhookResource, - webhook.NewArtifactPropertyCustomWebhookResource, - webhook.NewArtifactoryReleaseBundleWebhookResource, - webhook.NewArtifactoryReleaseBundleCustomWebhookResource, - webhook.NewBuildWebhookResource, - webhook.NewBuildCustomWebhookResource, - webhook.NewDestinationWebhookResource, - webhook.NewDestinationCustomWebhookResource, - webhook.NewDistributionWebhookResource, - webhook.NewDistributionCustomWebhookResource, - webhook.NewDockerWebhookResource, - webhook.NewDockerCustomWebhookResource, - webhook.NewReleaseBundleWebhookResource, - webhook.NewReleaseBundleCustomWebhookResource, - webhook.NewReleaseBundleV2WebhookResource, - webhook.NewReleaseBundleV2CustomWebhookResource, - webhook.NewReleaseBundleV2PromotionWebhookResource, - webhook.NewReleaseBundleV2PromotionCustomWebhookResource, - webhook.NewUserWebhookResource, - webhook.NewUserCustomWebhookResource, - } + + localGenericLikeRepositoryResources := lo.Map( + local.PackageTypesLikeGeneric, + func(packageType string, _ int) func() resource.Resource { + return local.NewGenericLocalRepositoryResource(packageType) + }, + ) + + return append( + localGenericLikeRepositoryResources, + []func() resource.Resource{ + artifact.NewArtifactResource, + artifact.NewItemPropertiesResource, + user.NewAnonymousUserResource, + user.NewManagedUserResource, + user.NewUnmanagedUserResource, + user.NewUserResource, + security.NewGroupResource, + security.NewScopedTokenResource, + security.NewGlobalEnvironmentResource, + security.NewDistributionPublicKeyResource, + security.NewCertificateResource, + security.NewKeyPairResource, + security.NewPasswordExpirationPolicyResource, + security.NewUserLockPolicyResource, + security.NewVaultConfigurationResource, + configuration.NewArchivePolicyResource, + configuration.NewLdapSettingResource, + configuration.NewLdapGroupSettingResource, + configuration.NewBackupResource, + configuration.NewGeneralSecurityResource, + configuration.NewMailServerResource, + configuration.NewPackageCleanupPolicyResource, + configuration.NewPropertySetResource, + configuration.NewProxyResource, + configuration.NewRepositoryLayoutResource, + lifecycle.NewReleaseBundleV2Resource, + lifecycle.NewReleaseBundleV2PromotionResource, + replication.NewLocalRepositorySingleReplicationResource, + replication.NewLocalRepositoryMultiReplicationResource, + replication.NewRemoteRepositoryReplicationResource, + local.NewMachineLearningLocalRepositoryResource, + webhook.NewArtifactWebhookResource, + webhook.NewArtifactCustomWebhookResource, + webhook.NewArtifactLifecycleWebhookResource, + webhook.NewArtifactLifecycleCustomWebhookResource, + webhook.NewArtifactPropertyWebhookResource, + webhook.NewArtifactPropertyCustomWebhookResource, + webhook.NewArtifactoryReleaseBundleWebhookResource, + webhook.NewArtifactoryReleaseBundleCustomWebhookResource, + webhook.NewBuildWebhookResource, + webhook.NewBuildCustomWebhookResource, + webhook.NewDestinationWebhookResource, + webhook.NewDestinationCustomWebhookResource, + webhook.NewDistributionWebhookResource, + webhook.NewDistributionCustomWebhookResource, + webhook.NewDockerWebhookResource, + webhook.NewDockerCustomWebhookResource, + webhook.NewReleaseBundleWebhookResource, + webhook.NewReleaseBundleCustomWebhookResource, + webhook.NewReleaseBundleV2WebhookResource, + webhook.NewReleaseBundleV2CustomWebhookResource, + webhook.NewReleaseBundleV2PromotionWebhookResource, + webhook.NewReleaseBundleV2PromotionCustomWebhookResource, + webhook.NewUserWebhookResource, + webhook.NewUserCustomWebhookResource, + }..., + ) } // DataSources satisfies the provider.Provider interface for ArtifactoryProvider. diff --git a/pkg/artifactory/provider/resources.go b/pkg/artifactory/provider/resources.go index 066165250..c6aa0dacd 100644 --- a/pkg/artifactory/provider/resources.go +++ b/pkg/artifactory/provider/resources.go @@ -92,11 +92,6 @@ func resourcesMap() map[string]*schema.Resource { "artifactory_ldap_group_setting": configuration.ResourceArtifactoryLdapGroupSetting(), } - for _, packageType := range local.PackageTypesLikeGeneric { - localResourceName := fmt.Sprintf("artifactory_local_%s_repository", packageType) - resourcesMap[localResourceName] = local.ResourceArtifactoryLocalGenericRepository(packageType) - } - for _, packageType := range remote.PackageTypesLikeBasic { remoteResourceName := fmt.Sprintf("artifactory_remote_%s_repository", packageType) resourcesMap[remoteResourceName] = remote.ResourceArtifactoryRemoteBasicRepository(packageType) diff --git a/pkg/artifactory/resource/configuration/resource_artifactory_backup_test.go b/pkg/artifactory/resource/configuration/resource_artifactory_backup_test.go index 05e2fa881..5a71ec9ae 100644 --- a/pkg/artifactory/resource/configuration/resource_artifactory_backup_test.go +++ b/pkg/artifactory/resource/configuration/resource_artifactory_backup_test.go @@ -199,7 +199,7 @@ func cronTestCase(cronExpression string, t *testing.T) (*testing.T, resource.Tes return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate("backup", BackupTemplateFull, fields), diff --git a/pkg/artifactory/resource/configuration/resource_artifactory_repository_layout_test.go b/pkg/artifactory/resource/configuration/resource_artifactory_repository_layout_test.go index 2f5f55587..a1b60a790 100644 --- a/pkg/artifactory/resource/configuration/resource_artifactory_repository_layout_test.go +++ b/pkg/artifactory/resource/configuration/resource_artifactory_repository_layout_test.go @@ -211,7 +211,7 @@ func TestAccRepositoryLayout_validate_distinctive_descriptor_path_pattern(t *tes resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { diff --git a/pkg/artifactory/resource/repository/default_repo_layout_map.go b/pkg/artifactory/resource/repository/default_repo_layout_map.go index 1ac7d3ca6..ca211fc53 100644 --- a/pkg/artifactory/resource/repository/default_repo_layout_map.go +++ b/pkg/artifactory/resource/repository/default_repo_layout_map.go @@ -190,6 +190,15 @@ var defaultRepoLayoutMap = map[string]SupportedRepoClasses{ "federated": true, }, }, + MachineLearningType: { + RepoLayoutRef: "simple-default", + SupportedRepoTypes: map[string]bool{ + "local": true, + "remote": false, + "virtual": false, + "federated": true, + }, + }, MavenPackageType: { RepoLayoutRef: "maven-2-default", SupportedRepoTypes: map[string]bool{ diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_alpine_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_alpine_repository.go index 5121ed1dd..a7b892c8c 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_alpine_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_alpine_repository.go @@ -19,7 +19,7 @@ func ResourceArtifactoryFederatedAlpineRepository() *schema.Resource { alpineFederatedSchema := utilsdk.MergeMaps( local.AlpineLocalSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.AlpinePackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.AlpinePackageType), ) var unpackFederatedAlpineRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_ansible_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_ansible_repository.go index 75a3725a0..faca450c8 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_ansible_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_ansible_repository.go @@ -22,7 +22,7 @@ func ResourceArtifactoryFederatedAnsibleRepository() *schema.Resource { local.GetGenericSchemas(repository.AnsiblePackageType)[local.CurrentSchemaVersion], federatedSchemaV4, repository.AlpinePrimaryKeyPairRef, - repository.RepoLayoutRefSchema(Rclass, repository.AnsiblePackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.AnsiblePackageType), ) var unpackFederatedRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_cargo_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_cargo_repository.go index 39ede7c6c..b1d180806 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_cargo_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_cargo_repository.go @@ -19,7 +19,7 @@ func ResourceArtifactoryFederatedCargoRepository() *schema.Resource { cargoFederatedSchema := lo.Assign( local.CargoSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.CargoPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.CargoPackageType), ) var unpackFederatedCargoRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_conan_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_conan_repository.go index 9841e9ace..898d6012d 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_conan_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_conan_repository.go @@ -20,7 +20,7 @@ func ResourceArtifactoryFederatedConanRepository() *schema.Resource { conanSchema := lo.Assign( local.ConanSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.ConanPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.ConanPackageType), ) var unpackConanRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_debian_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_debian_repository.go index 328de3440..d84b01d63 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_debian_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_debian_repository.go @@ -19,7 +19,7 @@ func ResourceArtifactoryFederatedDebianRepository() *schema.Resource { debianFederatedSchema := utilsdk.MergeMaps( local.DebianSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.DebianPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.DebianPackageType), ) var unpackFederatedDebianRepository = func(data *schema.ResourceData) (interface{}, string, error) { 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 9351cef4b..650466fa9 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 @@ -19,7 +19,7 @@ func ResourceArtifactoryFederatedDockerV2Repository() *schema.Resource { dockerV2FederatedSchema := lo.Assign( local.DockerV2Schemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.DockerPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.DockerPackageType), ) var unpackFederatedDockerRepository = func(data *schema.ResourceData) (interface{}, string, error) { @@ -64,7 +64,7 @@ func ResourceArtifactoryFederatedDockerV1Repository() *schema.Resource { dockerFederatedSchema := lo.Assign( local.DockerV1Schemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.DockerPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.DockerPackageType), ) var unpackFederatedDockerRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_generic_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_generic_repository.go index 1873698a9..b637c55eb 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_generic_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_generic_repository.go @@ -19,7 +19,7 @@ func ResourceArtifactoryFederatedGenericRepository(packageType string) *schema.R var genericSchema = lo.Assign( local.GetGenericSchemas(packageType)[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, packageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, packageType), ) var unpackFederatedRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_helmoci_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_helmoci_repository.go index 3a8008f72..25ea0fd42 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_helmoci_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_helmoci_repository.go @@ -19,7 +19,7 @@ func ResourceArtifactoryFederatedHelmOciRepository() *schema.Resource { helmociSchema := lo.Assign( local.HelmOCISchemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.HelmOCIPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.HelmOCIPackageType), ) var unpackRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_java_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_java_repository.go index 3625ae418..eef631aaa 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_java_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_java_repository.go @@ -20,7 +20,7 @@ func ResourceArtifactoryFederatedJavaRepository(packageType string, suppressPom javaFederatedSchema := lo.Assign( local.GetJavaSchemas(packageType, suppressPom)[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema("federated", packageType), + repository.RepoLayoutRefSDKv2Schema("federated", packageType), ) var unpackFederatedJavaRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_nuget_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_nuget_repository.go index 3703cdb08..73f4c0c3c 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_nuget_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_nuget_repository.go @@ -19,7 +19,7 @@ func ResourceArtifactoryFederatedNugetRepository() *schema.Resource { nugetFederatedSchema := lo.Assign( local.NugetSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.NugetPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.NugetPackageType), ) var unpackFederatedNugetRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_oci_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_oci_repository.go index 343af5291..1f8329bc0 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_oci_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_oci_repository.go @@ -19,7 +19,7 @@ func ResourceArtifactoryFederatedOciRepository() *schema.Resource { ociFederatedSchema := lo.Assign( local.OCILocalSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.OCIPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.OCIPackageType), ) var unpackFederatedOciRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_repository_test.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_repository_test.go index 8d65d700f..c4eed8a8f 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_repository_test.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_repository_test.go @@ -84,7 +84,7 @@ func TestAccFederatedRepoWithMembers(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -197,7 +197,7 @@ func genericTestCase(repoType string, t *testing.T) (*testing.T, resource.TestCa return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -213,7 +213,7 @@ func genericTestCase(repoType string, t *testing.T) (*testing.T, resource.TestCa resource.TestCheckResourceAttr(fqrn, "member.#", "1"), resource.TestCheckResourceAttr(fqrn, "member.0.url", federatedMemberUrl), resource.TestCheckResourceAttr(fqrn, "member.0.enabled", "true"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", repoType)(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", repoType); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -230,7 +230,7 @@ func genericTestCase(repoType string, t *testing.T) (*testing.T, resource.TestCa resource.TestCheckResourceAttr(fqrn, "member.#", "1"), resource.TestCheckResourceAttr(fqrn, "member.0.url", federatedMemberUrl), resource.TestCheckResourceAttr(fqrn, "member.0.enabled", "true"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", repoType)(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", repoType); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -278,7 +278,7 @@ func TestAccFederatedRepo_DisableDefaultProxyConflictAttr(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -321,7 +321,7 @@ func TestAccFederatedRepoWithProjectAttributesGH318(t *testing.T) { acctest.CreateProject(t, projectKey) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { acctest.DeleteProject(t, projectKey) return acctest.CheckRepo(id, request) }), @@ -378,7 +378,7 @@ func TestAccFederatedRepositoryWithInvalidProjectKeyGH318(t *testing.T) { acctest.CreateProject(t, projectKey) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { acctest.DeleteProject(t, projectKey) return acctest.CheckRepo(id, request) }), @@ -472,8 +472,8 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -482,7 +482,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "alpine"), resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "alpine")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "alpine"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -575,8 +575,8 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -585,7 +585,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "ansible"), resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "ansible")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "ansible"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -638,7 +638,7 @@ func TestAccFederatedCargoRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -646,7 +646,7 @@ func TestAccFederatedCargoRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "anonymous_access", fmt.Sprintf("%t", anonAccess)), resource.TestCheckResourceAttr(fqrn, "enable_sparse_index", fmt.Sprintf("%t", enabledSparseIndex)), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "cargo")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "cargo"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -655,7 +655,7 @@ func TestAccFederatedCargoRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "anonymous_access", fmt.Sprintf("%t", !anonAccess)), resource.TestCheckResourceAttr(fqrn, "enable_sparse_index", fmt.Sprintf("%t", !enabledSparseIndex)), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "cargo")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "cargo"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -706,14 +706,14 @@ func TestAccFederatedConanRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "force_conan_authentication", fmt.Sprintf("%t", forceConanAuthentication)), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "conan")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "conan"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -721,7 +721,7 @@ func TestAccFederatedConanRepository(t *testing.T) { Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "force_conan_authentication", fmt.Sprintf("%t", !forceConanAuthentication)), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "conan")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "conan"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -876,9 +876,9 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), - acctest.VerifyDeleted(kpFqrn2, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, kpFqrn2, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -892,7 +892,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "index_compression_formats.0", "bz2"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.1", "lzma"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.2", "xz"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "debian")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "debian"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -906,7 +906,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "index_compression_formats.0", "bz2"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.1", "lzma"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.2", "xz"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "debian")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "debian"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -959,7 +959,7 @@ func TestAccFederatedDockerV2Repository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -968,7 +968,7 @@ func TestAccFederatedDockerV2Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", params["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -978,7 +978,7 @@ func TestAccFederatedDockerV2Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", updated["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", updated["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", updated["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1032,7 +1032,7 @@ func TestAccFederatedDockerRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -1041,7 +1041,7 @@ func TestAccFederatedDockerRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", params["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1051,7 +1051,7 @@ func TestAccFederatedDockerRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", updated["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", updated["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", updated["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1094,7 +1094,7 @@ func TestAccFederatedDockerV1Repository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -1103,7 +1103,7 @@ func TestAccFederatedDockerV1Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", "false"), resource.TestCheckResourceAttr(fqrn, "tag_retention", "1"), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", "0"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1152,7 +1152,7 @@ func TestAccFederatedHelmOciRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -1160,7 +1160,7 @@ func TestAccFederatedHelmOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "helmoci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "helmoci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1169,7 +1169,7 @@ func TestAccFederatedHelmOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", updated["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", updated["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "helmoci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "helmoci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1218,7 +1218,7 @@ func TestAccFederatedNugetRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -1226,7 +1226,7 @@ func TestAccFederatedNugetRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "max_unique_snapshots", fmt.Sprintf("%d", params["max_unique_snapshots"])), resource.TestCheckResourceAttr(fqrn, "force_nuget_authentication", fmt.Sprintf("%t", params["force_nuget_authentication"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "nuget")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "nuget"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1235,7 +1235,7 @@ func TestAccFederatedNugetRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "max_unique_snapshots", fmt.Sprintf("%d", updates["max_unique_snapshots"])), resource.TestCheckResourceAttr(fqrn, "force_nuget_authentication", fmt.Sprintf("%t", updates["force_nuget_authentication"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "nuget")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "nuget"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1278,7 +1278,7 @@ const federatedJavaRepositoryBasic = ` func TestAccFederatedMavenRepository(t *testing.T) { _, fqrn, name := testutil.MkNames("maven-federated", "artifactory_federated_maven_repository") - repoLayoutRef := func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "maven")(); return r.(string) }() + repoLayoutRef := func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "maven"); return r }() tempStruct := utilsdk.MergeMaps(commonJavaParams) tempStruct["name"] = name tempStruct["resource_name"] = strings.Split(fqrn, ".")[0] @@ -1294,7 +1294,7 @@ func TestAccFederatedMavenRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate(fqrn, federatedJavaRepositoryBasic, tempStruct), @@ -1353,7 +1353,7 @@ func makeFederatedGradleLikeRepoTestCase(repoType string, t *testing.T) (*testin return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate(fqrn, federatedJavaRepositoryBasic, tempStruct), @@ -1433,7 +1433,7 @@ func TestAccFederatedOciRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -1441,7 +1441,7 @@ func TestAccFederatedOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "oci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "oci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1450,7 +1450,7 @@ func TestAccFederatedOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", updated["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", updated["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "oci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "oci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1608,9 +1608,9 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), - acctest.VerifyDeleted(kpFqrn2, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, kpFqrn2, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -1623,7 +1623,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "enable_file_lists_indexing", "true"), resource.TestCheckResourceAttr(fqrn, "calculate_yum_metadata", "true"), resource.TestCheckResourceAttr(fqrn, "yum_root_depth", "1"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "rpm")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "rpm"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1636,7 +1636,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "enable_file_lists_indexing", "false"), resource.TestCheckResourceAttr(fqrn, "calculate_yum_metadata", "true"), resource.TestCheckResourceAttr(fqrn, "yum_root_depth", "2"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "rpm")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("federated", "rpm"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1677,7 +1677,7 @@ func makeFederatedTerraformRepoTestCase(registryType string, t *testing.T) (*tes return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: federatedRepositoryBasic, @@ -1685,8 +1685,8 @@ func makeFederatedTerraformRepoTestCase(registryType string, t *testing.T) (*tes resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "terraform"), resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { - r, _ := repository.GetDefaultRepoLayoutRef("federated", "terraform_"+registryType)() - return r.(string) + r, _ := repository.GetDefaultRepoLayoutRef("federated", "terraform_"+registryType) + return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_rpm_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_rpm_repository.go index 3a13ff73f..5379edaae 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_rpm_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_rpm_repository.go @@ -19,7 +19,7 @@ func ResourceArtifactoryFederatedRpmRepository() *schema.Resource { rpmFederatedSchema := lo.Assign( local.RPMSchemas[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, repository.RPMPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.RPMPackageType), ) var unpackFederatedRpmRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_terraform_repository.go b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_terraform_repository.go index dd3505654..1f5ce3bfa 100644 --- a/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_terraform_repository.go +++ b/pkg/artifactory/resource/repository/federated/resource_artifactory_federated_terraform_repository.go @@ -21,7 +21,7 @@ func ResourceArtifactoryFederatedTerraformRepository(registryType string) *schem terraformFederatedSchema := lo.Assign( local.GetTerraformSchemas(registryType)[local.CurrentSchemaVersion], federatedSchemaV4, - repository.RepoLayoutRefSchema(Rclass, packageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, packageType), ) var unpackFederatedTerraformRepository = func(data *schema.ResourceData) (interface{}, string, error) { diff --git a/pkg/artifactory/resource/repository/local/local.go b/pkg/artifactory/resource/repository/local/local.go index 3b982c128..53de3ffbe 100644 --- a/pkg/artifactory/resource/repository/local/local.go +++ b/pkg/artifactory/resource/repository/local/local.go @@ -1,9 +1,17 @@ package local import ( + "context" "strings" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + sdkv2_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository" utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk" "github.com/samber/lo" @@ -14,29 +22,164 @@ const ( CurrentSchemaVersion = 1 ) -var PackageTypesLikeGeneric = []string{ - repository.BowerPackageType, - repository.ChefPackageType, - repository.CocoapodsPackageType, - repository.ComposerPackageType, - repository.CondaPackageType, - repository.CranPackageType, - repository.GemsPackageType, - repository.GenericPackageType, - repository.GitLFSPackageType, - repository.GoPackageType, - repository.HelmPackageType, - repository.HuggingFacePackageType, - repository.NPMPackageType, - repository.OpkgPackageType, - repository.PubPackageType, - repository.PuppetPackageType, - repository.PyPiPackageType, - repository.SwiftPackageType, - repository.TerraformBackendPackageType, - repository.VagrantPackageType, +type localResource struct { + repository.BaseResource } +type LocalResourceModel struct { + repository.BaseResourceModel + BlackedOut types.Bool `tfsdk:"blacked_out"` + XrayIndex types.Bool `tfsdk:"xray_index"` + PropertySets types.Set `tfsdk:"property_sets"` + ArchiveBrowsingEnabled types.Bool `tfsdk:"archive_browsing_enabled"` + DownloadDirect types.Bool `tfsdk:"download_direct"` + PriorityResolution types.Bool `tfsdk:"priority_resolution"` +} + +func (r *LocalResourceModel) GetCreateResourcePlanData(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, r)...) +} + +func (r LocalResourceModel) SetCreateResourceStateData(ctx context.Context, resp *resource.CreateResponse) { + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &r)...) +} + +func (r *LocalResourceModel) GetReadResourceStateData(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // Read Terraform state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, r)...) +} + +func (r LocalResourceModel) SetReadResourceStateData(ctx context.Context, resp *resource.ReadResponse) { + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &r)...) +} + +func (r *LocalResourceModel) GetUpdateResourcePlanData(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + // Read Terraform state data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, r)...) +} + +func (r *LocalResourceModel) GetUpdateResourceStateData(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + // Read Terraform state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, r)...) +} + +func (r LocalResourceModel) SetUpdateResourceStateData(ctx context.Context, resp *resource.UpdateResponse) { + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &r)...) +} + +func (r LocalResourceModel) ToAPIModel(ctx context.Context, packageType string) (interface{}, diag.Diagnostics) { + diags := diag.Diagnostics{} + + model, d := r.BaseResourceModel.ToAPIModel(ctx, Rclass, packageType) + if d != nil { + diags.Append(d...) + } + baseRepositoryAPIModel := model.(repository.BaseAPIModel) + + var propertySets []string + d = r.PropertySets.ElementsAs(ctx, &propertySets, false) + if d != nil { + diags.Append(d...) + } + + return LocalAPIModel{ + BaseAPIModel: baseRepositoryAPIModel, + BlackedOut: r.BlackedOut.ValueBoolPointer(), + XrayIndex: r.XrayIndex.ValueBool(), + PropertySets: propertySets, + ArchiveBrowsingEnabled: r.ArchiveBrowsingEnabled.ValueBoolPointer(), + DownloadRedirect: r.DownloadDirect.ValueBoolPointer(), + PriorityResolution: r.PriorityResolution.ValueBool(), + }, diags +} + +func (r *LocalResourceModel) FromAPIModel(ctx context.Context, apiModel interface{}) diag.Diagnostics { + diags := diag.Diagnostics{} + + model := apiModel.(LocalAPIModel) + + r.BaseResourceModel.FromAPIModel(ctx, model.BaseAPIModel) + + r.BlackedOut = types.BoolPointerValue(model.BlackedOut) + r.XrayIndex = types.BoolValue(model.XrayIndex) + r.ArchiveBrowsingEnabled = types.BoolPointerValue(model.ArchiveBrowsingEnabled) + r.DownloadDirect = types.BoolPointerValue(model.DownloadRedirect) + r.PriorityResolution = types.BoolValue(model.PriorityResolution) + + var propertySets = types.SetNull(types.StringType) + if len(model.PropertySets) > 0 { + ps, ds := types.SetValueFrom(ctx, types.StringType, model.PropertySets) + if ds.HasError() { + diags.Append(ds...) + return diags + } + + propertySets = ps + } + + r.PropertySets = propertySets + + return diags +} + +type LocalAPIModel struct { + repository.BaseAPIModel + BlackedOut *bool `json:"blackedOut"` + XrayIndex bool `json:"xrayIndex"` + PropertySets []string `json:"propertySets,omitempty"` + ArchiveBrowsingEnabled *bool `json:"archiveBrowsingEnabled"` + DownloadRedirect *bool `json:"downloadRedirect"` + PriorityResolution bool `json:"priorityResolution"` +} + +var LocalAttributes = lo.Assign( + repository.BaseAttributes, + map[string]schema.Attribute{ + "blacked_out": schema.BoolAttribute{ + Optional: true, + Computed: true, + Default: booldefault.StaticBool(false), + MarkdownDescription: "When set, the repository does not participate in artifact resolution and new artifacts cannot be deployed.", + }, + "xray_index": schema.BoolAttribute{ + Optional: true, + Computed: true, + Default: booldefault.StaticBool(false), + MarkdownDescription: "Enable Indexing In Xray. Repository will be indexed with the default retention period. You will be able to change it via Xray settings.", + }, + "priority_resolution": schema.BoolAttribute{ + Optional: true, + Computed: true, + Default: booldefault.StaticBool(false), + MarkdownDescription: "Setting repositories with priority will cause metadata to be merged only from repositories set with this field", + }, + "property_sets": schema.SetAttribute{ + ElementType: types.StringType, + Optional: true, + Validators: []validator.Set{ + setvalidator.SizeAtLeast(1), + }, + MarkdownDescription: "List of property set name", + }, + "archive_browsing_enabled": schema.BoolAttribute{ + Optional: true, + Computed: true, + Default: booldefault.StaticBool(false), + MarkdownDescription: "When set, you may view content such as HTML or Javadoc files directly from Artifactory.\nThis 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).", + }, + "download_direct": schema.BoolAttribute{ + Optional: true, + Computed: true, + Default: booldefault.StaticBool(false), + MarkdownDescription: "When set, download requests to this repository will redirect the client to download the artifact directly from the cloud storage provider. Available in Enterprise+ and Edge licenses only.", + }, + }, +) + type RepositoryBaseParams struct { Key string `hcl:"key" json:"key,omitempty"` ProjectKey string `json:"projectKey"` @@ -62,44 +205,44 @@ func (bp RepositoryBaseParams) Id() string { return bp.Key } -var baseSchema = map[string]*schema.Schema{ +var baseSchema = map[string]*sdkv2_schema.Schema{ "blacked_out": { - Type: schema.TypeBool, + Type: sdkv2_schema.TypeBool, Optional: true, Default: false, Description: "When set, the repository does not participate in artifact resolution and new artifacts cannot be deployed.", }, "xray_index": { - Type: schema.TypeBool, + Type: sdkv2_schema.TypeBool, Optional: true, Default: false, Description: "Enable Indexing In Xray. Repository will be indexed with the default retention period. You will be able to change it via Xray settings.", }, "priority_resolution": { - Type: schema.TypeBool, + Type: sdkv2_schema.TypeBool, Optional: true, Default: false, Description: "Setting repositories with priority will cause metadata to be merged only from repositories set with this field", }, "property_sets": { - Type: schema.TypeSet, - Elem: &schema.Schema{Type: schema.TypeString}, - Set: schema.HashString, + Type: sdkv2_schema.TypeSet, + Elem: &sdkv2_schema.Schema{Type: sdkv2_schema.TypeString}, + Set: sdkv2_schema.HashString, Optional: true, Description: "List of property set name", }, "archive_browsing_enabled": { - Type: schema.TypeBool, + Type: sdkv2_schema.TypeBool, Optional: true, Description: "When set, you may view content such as HTML or Javadoc files directly from Artifactory.\nThis 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).", }, "download_direct": { - Type: schema.TypeBool, + Type: sdkv2_schema.TypeBool, Optional: true, Description: "When set, download requests to this repository will redirect the client to download the artifact directly from the cloud storage provider. Available in Enterprise+ and Edge licenses only.", }, "cdn_redirect": { - Type: schema.TypeBool, + Type: sdkv2_schema.TypeBool, Optional: true, Default: false, Description: "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. Default value is 'false'", @@ -111,8 +254,8 @@ var BaseSchemaV1 = lo.Assign( baseSchema, ) -var GetSchemas = func(s map[string]*schema.Schema) map[int16]map[string]*schema.Schema { - return map[int16]map[string]*schema.Schema{ +var GetSchemas = func(s map[string]*sdkv2_schema.Schema) map[int16]map[string]*sdkv2_schema.Schema { + return map[int16]map[string]*sdkv2_schema.Schema{ 0: lo.Assign( BaseSchemaV1, s, @@ -133,7 +276,7 @@ func GetPackageType(packageType string) string { return packageType } -func UnpackBaseRepo(rclassType string, s *schema.ResourceData, packageType string) RepositoryBaseParams { +func UnpackBaseRepo(rclassType string, s *sdkv2_schema.ResourceData, packageType string) RepositoryBaseParams { d := &utilsdk.ResourceData{ResourceData: s} return RepositoryBaseParams{ Rclass: rclassType, diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_alpine_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_alpine_repository.go index 5013ffc8e..dacc2c793 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_alpine_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_alpine_repository.go @@ -9,7 +9,7 @@ import ( ) var alpineSchema = lo.Assign( - repository.RepoLayoutRefSchema(Rclass, repository.AlpinePackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.AlpinePackageType), repository.AlpinePrimaryKeyPairRef, repository.CompressionFormats, ) diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_ansible_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_ansible_repository.go index 166fe8320..1c4dc6591 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_ansible_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_ansible_repository.go @@ -9,7 +9,7 @@ import ( ) var ansibleSchema = lo.Assign( - repository.RepoLayoutRefSchema(Rclass, repository.AnsiblePackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.AnsiblePackageType), repository.AlpinePrimaryKeyPairRef, ) diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_cargo_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_cargo_repository.go index f2af8e8e7..30921dc63 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_cargo_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_cargo_repository.go @@ -9,7 +9,7 @@ import ( ) var cargoSchema = lo.Assign( - repository.RepoLayoutRefSchema(Rclass, repository.CargoPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.CargoPackageType), map[string]*schema.Schema{ "anonymous_access": { Type: schema.TypeBool, diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_conan_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_conan_repository.go index 08ab7eb0d..27a8d0542 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_conan_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_conan_repository.go @@ -10,7 +10,7 @@ import ( var conanSchema = lo.Assign( repository.ConanBaseSchema, - repository.RepoLayoutRefSchema(Rclass, repository.ConanPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.ConanPackageType), ) var ConanSchemas = GetSchemas(conanSchema) diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_debian_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_debian_repository.go index 9d83213b4..19492f8b3 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_debian_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_debian_repository.go @@ -20,7 +20,7 @@ var debianSchema = lo.Assign( Deprecated: "You shouldn't be using this", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.DebianPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.DebianPackageType), repository.CompressionFormats, ) diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_docker_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_docker_repository.go index f58d2e384..2c1de8f13 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_docker_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_docker_repository.go @@ -47,7 +47,7 @@ var dockerV2Schema = lo.Assign( Description: "The Docker API version to use. This cannot be set", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.DockerPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.DockerPackageType), ) var DockerV2Schemas = GetSchemas(dockerV2Schema) @@ -112,7 +112,7 @@ var dockerV1Schema = utilsdk.MergeMaps( Computed: true, }, }, - repository.RepoLayoutRefSchema(Rclass, repository.DockerPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.DockerPackageType), ) var DockerV1Schemas = GetSchemas(dockerV1Schema) diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_generic_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_generic_repository.go index 30de2367b..bed43f83b 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_generic_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_generic_repository.go @@ -1,44 +1,175 @@ package local import ( - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "context" + "fmt" + "reflect" + + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault" + "github.com/hashicorp/terraform-plugin-framework/types" + sdkv2_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository" - "github.com/jfrog/terraform-provider-shared/packer" + "github.com/jfrog/terraform-provider-shared/util" "github.com/samber/lo" ) -func GetGenericSchemas(packageType string) map[int16]map[string]*schema.Schema { - return map[int16]map[string]*schema.Schema{ - 0: lo.Assign( - BaseSchemaV1, - repository.RepoLayoutRefSchema(Rclass, packageType), - ), - 1: lo.Assign( - BaseSchemaV1, - repository.RepoLayoutRefSchema(Rclass, packageType), - ), - } +var PackageTypesLikeGeneric = []string{ + repository.BowerPackageType, + repository.ChefPackageType, + repository.CocoapodsPackageType, + repository.ComposerPackageType, + repository.CondaPackageType, + repository.CranPackageType, + repository.GemsPackageType, + repository.GenericPackageType, + repository.GitLFSPackageType, + repository.GoPackageType, + repository.HelmPackageType, + repository.HuggingFacePackageType, + repository.NPMPackageType, + repository.OpkgPackageType, + repository.PubPackageType, + repository.PuppetPackageType, + repository.PyPiPackageType, + repository.SwiftPackageType, + repository.TerraformBackendPackageType, + repository.VagrantPackageType, } -func ResourceArtifactoryLocalGenericRepository(packageType string) *schema.Resource { - constructor := func() (interface{}, error) { - return &RepositoryBaseParams{ - PackageType: packageType, - Rclass: Rclass, - }, nil +func NewGenericLocalRepositoryResource(packageType string) func() resource.Resource { + return func() resource.Resource { + return &localGenericResource{ + localResource: localResource{ + BaseResource: repository.BaseResource{ + JFrogResource: util.JFrogResource{ + TypeName: fmt.Sprintf("artifactory_local_%s_repository", packageType), + CollectionEndpoint: "artifactory/api/repositories", + DocumentEndpoint: "artifactory/api/repositories/{key}", + }, + Description: "Provides a resource to creates a local Machine Learning repository.", + PackageType: packageType, + Rclass: Rclass, + ResourceModelType: reflect.TypeFor[LocalGenericResourceModel](), + APIModelType: reflect.TypeFor[LocalGenericAPIModel](), + }, + }, + } } +} + +type localGenericResource struct { + localResource +} + +type LocalGenericResourceModel struct { + LocalResourceModel + RepoLayoutRef types.String `tfsdk:"repo_layout_ref"` + CDNRedirect types.Bool `tfsdk:"cdn_redirect"` +} + +func (r *LocalGenericResourceModel) GetCreateResourcePlanData(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, r)...) +} + +func (r LocalGenericResourceModel) SetCreateResourceStateData(ctx context.Context, resp *resource.CreateResponse) { + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &r)...) +} + +func (r *LocalGenericResourceModel) GetReadResourceStateData(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + // Read Terraform state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, r)...) +} + +func (r LocalGenericResourceModel) SetReadResourceStateData(ctx context.Context, resp *resource.ReadResponse) { + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &r)...) +} + +func (r *LocalGenericResourceModel) GetUpdateResourcePlanData(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + // Read Terraform state data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, r)...) +} + +func (r *LocalGenericResourceModel) GetUpdateResourceStateData(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + // Read Terraform state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, r)...) +} - unpack := func(data *schema.ResourceData) (interface{}, string, error) { - repo := UnpackBaseRepo(Rclass, data, packageType) - return repo, repo.Id(), nil +func (r LocalGenericResourceModel) SetUpdateResourceStateData(ctx context.Context, resp *resource.UpdateResponse) { + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &r)...) +} + +func (r LocalGenericResourceModel) ToAPIModel(ctx context.Context, packageType string) (interface{}, diag.Diagnostics) { + diags := diag.Diagnostics{} + + model, d := r.LocalResourceModel.ToAPIModel(ctx, packageType) + if d != nil { + diags.Append(d...) } - genericRepoSchemas := GetGenericSchemas(packageType) + localAPIModel := model.(LocalAPIModel) + localAPIModel.RepoLayoutRef = r.RepoLayoutRef.ValueString() + + return LocalGenericAPIModel{ + LocalAPIModel: localAPIModel, + CDNRedirect: r.CDNRedirect.ValueBoolPointer(), + }, diags +} + +func (r *LocalGenericResourceModel) FromAPIModel(ctx context.Context, apiModel interface{}) diag.Diagnostics { + diags := diag.Diagnostics{} + + model := apiModel.(*LocalGenericAPIModel) + + r.LocalResourceModel.FromAPIModel(ctx, model.LocalAPIModel) + + r.RepoLayoutRef = types.StringValue(model.RepoLayoutRef) + r.CDNRedirect = types.BoolPointerValue(model.CDNRedirect) + + return diags +} + +type LocalGenericAPIModel struct { + LocalAPIModel + CDNRedirect *bool `json:"cdnRedirect"` +} - return repository.MkResourceSchema( - genericRepoSchemas, - packer.Default(genericRepoSchemas[CurrentSchemaVersion]), - unpack, - constructor, +func (r *localGenericResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + localGenericAttributes := lo.Assign( + LocalAttributes, + repository.RepoLayoutRefAttribute(Rclass, r.PackageType), + map[string]schema.Attribute{ + "cdn_redirect": schema.BoolAttribute{ + Optional: true, + Computed: true, + Default: booldefault.StaticBool(false), + MarkdownDescription: "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. Default value is `false`", + }, + }, ) + + resp.Schema = schema.Schema{ + Version: 1, + Attributes: localGenericAttributes, + Description: r.Description, + } +} + +func GetGenericSchemas(packageType string) map[int16]map[string]*sdkv2_schema.Schema { + return map[int16]map[string]*sdkv2_schema.Schema{ + 0: lo.Assign( + BaseSchemaV1, + repository.RepoLayoutRefSDKv2Schema(Rclass, packageType), + ), + 1: lo.Assign( + BaseSchemaV1, + repository.RepoLayoutRefSDKv2Schema(Rclass, packageType), + ), + } } diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_generic_repository_test.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_generic_repository_test.go new file mode 100644 index 000000000..915070179 --- /dev/null +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_generic_repository_test.go @@ -0,0 +1,292 @@ +package local_test + +import ( + "fmt" + "math/rand" + "regexp" + "testing" + + "github.com/go-resty/resty/v2" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/jfrog/terraform-provider-artifactory/v12/pkg/acctest" + "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository" + "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local" + "github.com/jfrog/terraform-provider-shared/testutil" + "github.com/jfrog/terraform-provider-shared/util" +) + +func TestAccLocalGenericRepository_UpgradeFromSDKv2(t *testing.T) { + _, fqrn, name := testutil.MkNames("test-generic-local", "artifactory_local_generic_repository") + + config := util.ExecuteTemplate("TestAccLocalGenericRepository", ` + resource "artifactory_local_generic_repository" "{{ .name }}" { + key = "{{ .name }}" + } + `, map[string]interface{}{ + "name": name, + }) + + resource.Test(t, resource.TestCase{ + Steps: []resource.TestStep{ + { + ExternalProviders: map[string]resource.ExternalProvider{ + "artifactory": { + VersionConstraint: "12.6.0", + Source: "jfrog/artifactory", + }, + }, + Config: config, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(fqrn, "id", name), + resource.TestCheckResourceAttr(fqrn, "key", name), + ), + }, + { + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + Config: config, + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, + }) +} + +func TestAccLocalGenericRepository_withProjectAttributes(t *testing.T) { + projectKey := fmt.Sprintf("t%d", testutil.RandomInt()) + projectEnv := testutil.RandSelect("DEV", "PROD").(string) + repoName := fmt.Sprintf("%s-generic-local", projectKey) + + _, fqrn, name := testutil.MkNames(repoName, "artifactory_local_generic_repository") + + params := map[string]interface{}{ + "name": name, + "projectKey": projectKey, + "projectEnv": projectEnv, + } + localRepositoryBasic := util.ExecuteTemplate("TestAccLocalGenericRepository", ` + resource "artifactory_local_generic_repository" "{{ .name }}" { + key = "{{ .name }}" + project_key = "{{ .projectKey }}" + project_environments = ["{{ .projectEnv }}"] + } + `, params) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(t) + acctest.CreateProject(t, projectKey) + }, + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", func(id string, request *resty.Request) (*resty.Response, error) { + acctest.DeleteProject(t, projectKey) + return acctest.CheckRepo(id, request) + }), + Steps: []resource.TestStep{ + { + Config: localRepositoryBasic, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(fqrn, "key", name), + resource.TestCheckResourceAttr(fqrn, "project_key", projectKey), + resource.TestCheckResourceAttr(fqrn, "project_environments.#", "1"), + resource.TestCheckResourceAttr(fqrn, "project_environments.0", projectEnv), + ), + }, + { + ResourceName: fqrn, + ImportState: true, + ImportStateId: name, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "key", + }, + }, + }) +} + +func TestAccLocalGenericRepository_WithInvalidProjectKey(t *testing.T) { + projectKey := fmt.Sprintf("t%d", testutil.RandomInt()) + repoName := fmt.Sprintf("%s-generic-local", projectKey) + + _, fqrn, name := testutil.MkNames(repoName, "artifactory_local_generic_repository") + + params := map[string]interface{}{ + "name": name, + "projectKey": projectKey, + } + localRepositoryBasic := util.ExecuteTemplate("TestAccLocalGenericRepository", ` + resource "artifactory_local_generic_repository" "{{ .name }}" { + key = "{{ .name }}" + project_key = "invalid-project-key-too-long-really-long" + } + `, params) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + acctest.PreCheck(t) + acctest.CreateProject(t, projectKey) + }, + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", func(id string, request *resty.Request) (*resty.Response, error) { + acctest.DeleteProject(t, projectKey) + return acctest.CheckRepo(id, request) + }), + Steps: []resource.TestStep{ + { + Config: localRepositoryBasic, + ExpectError: regexp.MustCompile(".*Attribute project_key must be 2 - 32 lowercase alphanumeric and hyphen.*"), + }, + }, + }) +} + +func TestAccLocalGenericLikePackageTypes(t *testing.T) { + for _, packageType := range local.PackageTypesLikeGeneric { + t.Run(packageType, func(t *testing.T) { + resource.Test(localGenericLikeTestCase(packageType, t)) + }) + } +} + +func localGenericLikeTestCase(packageType string, t *testing.T) (*testing.T, resource.TestCase) { + name := fmt.Sprintf("local-%s-%d-full", packageType, rand.Int()) + resourceName := fmt.Sprintf("artifactory_local_%s_repository.%s", packageType, name) + xrayIndex := testutil.RandBool() + fqrn := fmt.Sprintf("artifactory_local_%s_repository.%s", packageType, name) + + params := map[string]interface{}{ + "packageType": packageType, + "name": name, + "xrayIndex": xrayIndex, + "cdnRedirect": false, // even when set to true, it comes back as false on the wire (presumably unless testing against a cloud platform) + "property_set": "artifactory", + } + cfg := util.ExecuteTemplate("TestAccLocalRepository", ` + resource "artifactory_local_{{ .packageType }}_repository" "{{ .name }}" { + key = "{{ .name }}" + description = "Test repo for {{ .name }}" + notes = "Test repo for {{ .name }}" + xray_index = {{ .xrayIndex }} + cdn_redirect = {{ .cdnRedirect }} + property_sets = ["{{ .property_set }}"] + } + `, params) + + updatedCfg := util.ExecuteTemplate("TestAccLocalRepository", ` + resource "artifactory_local_{{ .packageType }}_repository" "{{ .name }}" { + key = "{{ .name }}" + description = "" + notes = "" + xray_index = {{ .xrayIndex }} + cdn_redirect = {{ .cdnRedirect }} + property_sets = ["{{ .property_set }}"] + } + `, params) + + return t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(t) }, + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, resourceName, "key", acctest.CheckRepo), + Steps: []resource.TestStep{ + { + Config: cfg, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(resourceName, "key", name), + resource.TestCheckResourceAttr(resourceName, "description", fmt.Sprintf("Test repo for %s", name)), + resource.TestCheckResourceAttr(resourceName, "notes", fmt.Sprintf("Test repo for %s", name)), + resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", packageType); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(resourceName, "xray_index", fmt.Sprintf("%t", xrayIndex)), + resource.TestCheckResourceAttr(resourceName, "cdn_redirect", fmt.Sprintf("%t", params["cdnRedirect"])), + resource.TestCheckResourceAttr(resourceName, "property_sets.#", "1"), + resource.TestCheckResourceAttr(resourceName, "property_sets.0", params["property_set"].(string)), + ), + }, + { + Config: updatedCfg, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(resourceName, "key", name), + resource.TestCheckResourceAttr(resourceName, "description", ""), + resource.TestCheckResourceAttr(resourceName, "notes", ""), + resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", packageType); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(resourceName, "xray_index", fmt.Sprintf("%t", xrayIndex)), + resource.TestCheckResourceAttr(resourceName, "cdn_redirect", fmt.Sprintf("%t", params["cdnRedirect"])), + ), + }, + { + ResourceName: fqrn, + ImportState: true, + ImportStateId: name, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "key", + }, + }, + } +} + +func TestAccAllLocalLikeGenericPackageTypes_with_repo_layout_ref(t *testing.T) { + for _, packageType := range local.PackageTypesLikeGeneric { + t.Run(packageType, func(t *testing.T) { + resource.Test(makeLocalRepoTestCaseWithRepoLayoutRef(packageType, t)) + }) + } +} + +func makeLocalRepoTestCaseWithRepoLayoutRef(packageType string, t *testing.T) (*testing.T, resource.TestCase) { + name := fmt.Sprintf("terraform-local-%s-%d-full", packageType, rand.Int()) + resourceName := fmt.Sprintf("artifactory_local_%s_repository.%s", packageType, name) + repoLayoutRef := acctest.GetValidRandomDefaultRepoLayoutRef() + fqrn := fmt.Sprintf("artifactory_local_%s_repository.%s", packageType, name) + + const config = ` + resource "artifactory_local_%[1]s_repository" "%[2]s" { + key = "%[2]s" + description = "Test repo for %[2]s" + notes = "Test repo for %[2]s" + repo_layout_ref = "%[3]s" + } + ` + + const updatedConfig = ` + resource "artifactory_local_%[1]s_repository" "%[2]s" { + key = "%[2]s" + description = "" + notes = "" + repo_layout_ref = "%[3]s" + } + ` + + return t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(t) }, + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, resourceName, "key", acctest.CheckRepo), + Steps: []resource.TestStep{ + { + Config: fmt.Sprintf(config, packageType, name, repoLayoutRef), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(resourceName, "key", name), + resource.TestCheckResourceAttr(resourceName, "description", fmt.Sprintf("Test repo for %s", name)), + resource.TestCheckResourceAttr(resourceName, "notes", fmt.Sprintf("Test repo for %s", name)), + resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", repoLayoutRef), //Check to ensure repository layout is set as per default even when it is not passed. + ), + }, + { + Config: fmt.Sprintf(updatedConfig, packageType, name, repoLayoutRef), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(resourceName, "key", name), + resource.TestCheckResourceAttr(resourceName, "description", ""), + resource.TestCheckResourceAttr(resourceName, "notes", ""), + resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", repoLayoutRef), + ), + }, + { + ResourceName: fqrn, + ImportState: true, + ImportStateId: name, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "key", + }, + }, + } +} diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_helmoci_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_helmoci_repository.go index 0ec9714b6..d2e3b80c6 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_helmoci_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_helmoci_repository.go @@ -33,7 +33,7 @@ var helmOCISchema = utilsdk.MergeMaps( ValidateDiagFunc: validation.ToDiagFunc(validation.IntAtLeast(1)), }, }, - repository.RepoLayoutRefSchema(Rclass, repository.HelmOCIPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.HelmOCIPackageType), ) var HelmOCISchemas = GetSchemas(helmOCISchema) diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_java_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_java_repository.go index a23d16eb6..3cdc1ed96 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_java_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_java_repository.go @@ -65,7 +65,7 @@ func GetJavaSchemas(packageType string, suppressPom bool) map[int16]map[string]* "behavior by setting the Suppress POM Consistency Checks checkbox.", }, }, - repository.RepoLayoutRefSchema(Rclass, packageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, packageType), ) return map[int16]map[string]*schema.Schema{ diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_machinelearning_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_machinelearning_repository.go new file mode 100644 index 000000000..5704d7785 --- /dev/null +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_machinelearning_repository.go @@ -0,0 +1,42 @@ +package local + +import ( + "context" + "reflect" + + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository" + "github.com/jfrog/terraform-provider-shared/util" +) + +func NewMachineLearningLocalRepositoryResource() resource.Resource { + return &MachineLearningLocalRepositoryResource{ + localResource: localResource{ + BaseResource: repository.BaseResource{ + JFrogResource: util.JFrogResource{ + TypeName: "artifactory_local_machinelearning_repository", + ValidArtifactoryVersion: "7.102.0", + CollectionEndpoint: "artifactory/api/repositories", + DocumentEndpoint: "artifactory/api/repositories/{key}", + }, + Description: "Provides a resource to creates a local Machine Learning repository.\n\nOfficial documentation can be found [here](https://jfrog.com/help/r/jfrog-artifactory-documentation/machine-learning-repositories).", + PackageType: repository.MachineLearningType, + Rclass: Rclass, + ResourceModelType: reflect.TypeFor[LocalResourceModel](), + APIModelType: reflect.TypeFor[LocalAPIModel](), + }, + }, + } +} + +type MachineLearningLocalRepositoryResource struct { + localResource +} + +func (r *MachineLearningLocalRepositoryResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Attributes: LocalAttributes, + Description: r.Description, + } +} diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_machinelearning_repository_test.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_machinelearning_repository_test.go new file mode 100644 index 000000000..598b817f9 --- /dev/null +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_machinelearning_repository_test.go @@ -0,0 +1,81 @@ +package local_test + +import ( + "strconv" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/jfrog/terraform-provider-artifactory/v12/pkg/acctest" + "github.com/jfrog/terraform-provider-shared/testutil" + "github.com/jfrog/terraform-provider-shared/util" +) + +func TestAccLocalMachineLearningRepository(t *testing.T) { + acctest.SkipIfNotSupportedVersion(t, "7.102.0") + + _, fqrn, name := testutil.MkNames("machinelearning-local", "artifactory_local_machinelearning_repository") + + temp := ` + resource "artifactory_local_machinelearning_repository" "{{ .name }}" { + key = "{{ .name }}" + blacked_out = {{ .blacked_out }} + xray_index = {{ .xray_index }} + property_sets = ["{{ .property_set }}"] + archive_browsing_enabled = {{ .archive_browsing_enabled }} + }` + + params := map[string]interface{}{ + "name": name, + "blacked_out": testutil.RandBool(), + "xray_index": testutil.RandBool(), + "property_set": "artifactory", + "archive_browsing_enabled": testutil.RandBool(), + } + config := util.ExecuteTemplate("TestAccLocalMachineLearningRepository", temp, params) + + updatedParams := map[string]interface{}{ + "name": name, + "blacked_out": testutil.RandBool(), + "xray_index": testutil.RandBool(), + "property_set": "artifactory", + "archive_browsing_enabled": testutil.RandBool(), + } + updatedConfig := util.ExecuteTemplate("TestAccLocalMachineLearningRepository", temp, updatedParams) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(t) }, + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), + Steps: []resource.TestStep{ + { + Config: config, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(fqrn, "key", name), + resource.TestCheckResourceAttr(fqrn, "blacked_out", strconv.FormatBool(params["blacked_out"].(bool))), + resource.TestCheckResourceAttr(fqrn, "xray_index", strconv.FormatBool(params["xray_index"].(bool))), + resource.TestCheckResourceAttr(fqrn, "property_sets.#", "1"), + resource.TestCheckResourceAttr(fqrn, "property_sets.0", params["property_set"].(string)), + resource.TestCheckResourceAttr(fqrn, "archive_browsing_enabled", strconv.FormatBool(params["archive_browsing_enabled"].(bool))), + ), + }, + { + Config: updatedConfig, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(fqrn, "key", name), + resource.TestCheckResourceAttr(fqrn, "blacked_out", strconv.FormatBool(updatedParams["blacked_out"].(bool))), + resource.TestCheckResourceAttr(fqrn, "xray_index", strconv.FormatBool(updatedParams["xray_index"].(bool))), + resource.TestCheckResourceAttr(fqrn, "property_sets.#", "1"), + resource.TestCheckResourceAttr(fqrn, "property_sets.0", updatedParams["property_set"].(string)), + resource.TestCheckResourceAttr(fqrn, "archive_browsing_enabled", strconv.FormatBool(updatedParams["archive_browsing_enabled"].(bool))), + ), + }, + { + ResourceName: fqrn, + ImportState: true, + ImportStateId: name, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "key", + }, + }, + }) +} diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_nuget_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_nuget_repository.go index 7eb9e2b20..1676509f4 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_nuget_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_nuget_repository.go @@ -24,7 +24,7 @@ var nugetSchema = lo.Assign( Description: "Force basic authentication credentials in order to use this repository.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.NugetPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.NugetPackageType), ) var NugetSchemas = GetSchemas(nugetSchema) diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_oci_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_oci_repository.go index 11843daed..523025114 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_oci_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_oci_repository.go @@ -34,7 +34,7 @@ var ociSchema = lo.Assign( ValidateDiagFunc: validation.ToDiagFunc(validation.IntAtLeast(1)), }, }, - repository.RepoLayoutRefSchema(Rclass, repository.OCIPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.OCIPackageType), ) var OCILocalSchemas = GetSchemas(ociSchema) diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_repository_test.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_repository_test.go index 7bc1a3d18..ddf719e59 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_repository_test.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_repository_test.go @@ -2,18 +2,14 @@ package local_test import ( "fmt" - "math/rand" "os" - "regexp" "strconv" "strings" "testing" - "github.com/go-resty/resty/v2" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/acctest" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository" - "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository/local" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/security" "github.com/jfrog/terraform-provider-shared/testutil" "github.com/jfrog/terraform-provider-shared/util" @@ -92,8 +88,8 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "pair_name", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "pair_name", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -102,7 +98,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "alpine"), resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "alpine")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "alpine"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -185,8 +181,8 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "pair_name", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "pair_name", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -195,7 +191,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", "ansible"), resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "ansible")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "ansible"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -326,9 +322,9 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "pair_name", security.VerifyKeyPair), - acctest.VerifyDeleted(kpFqrn2, "pair_name", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "pair_name", security.VerifyKeyPair), + acctest.VerifyDeleted(t, kpFqrn2, "pair_name", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -342,7 +338,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "index_compression_formats.0", "bz2"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.1", "lzma"), resource.TestCheckResourceAttr(fqrn, "index_compression_formats.2", "xz"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "debian")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "debian"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -474,9 +470,9 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "pair_name", security.VerifyKeyPair), - acctest.VerifyDeleted(kpFqrn2, "pair_name", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "pair_name", security.VerifyKeyPair), + acctest.VerifyDeleted(t, kpFqrn2, "pair_name", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -489,7 +485,7 @@ EOF resource.TestCheckResourceAttr(fqrn, "enable_file_lists_indexing", "true"), resource.TestCheckResourceAttr(fqrn, "calculate_yum_metadata", "true"), resource.TestCheckResourceAttr(fqrn, "yum_root_depth", "1"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "rpm")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "rpm"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -521,7 +517,7 @@ func TestAccLocalDockerV1Repository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -530,7 +526,7 @@ func TestAccLocalDockerV1Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", "false"), resource.TestCheckResourceAttr(fqrn, "tag_retention", "1"), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", "0"), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -563,7 +559,7 @@ func TestAccLocalDockerV2Repository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -572,7 +568,7 @@ func TestAccLocalDockerV2Repository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "block_pushing_schema1", fmt.Sprintf("%t", params["block"])), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "docker")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "docker"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -599,7 +595,7 @@ func TestAccLocalDockerV2RepositoryWithDefaultMaxUniqueTagsGH370(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -636,7 +632,7 @@ func TestAccLocalHelmOciRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -644,7 +640,7 @@ func TestAccLocalHelmOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "helmoci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "helmoci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -678,9 +674,9 @@ func TestAccLocalHuggingFaceMLRepository(t *testing.T) { `, params) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + PreCheck: func() { acctest.PreCheck(t) }, + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -692,16 +688,17 @@ func TestAccLocalHuggingFaceMLRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "property_sets.0", params["property_set"].(string)), resource.TestCheckResourceAttr(fqrn, "archive_browsing_enabled", strconv.FormatBool(params["archive_browsing_enabled"].(bool))), resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { - r, _ := repository.GetDefaultRepoLayoutRef("local", "huggingfaceml")() - return r.(string) + r, _ := repository.GetDefaultRepoLayoutRef("local", "huggingfaceml") + return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { - ResourceName: fqrn, - ImportState: true, - ImportStateVerify: true, - ImportStateCheck: validator.CheckImportState(name, "key"), + ResourceName: fqrn, + ImportState: true, + ImportStateId: name, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "key", }, }, }) @@ -725,7 +722,7 @@ func TestAccLocalNugetRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -733,7 +730,7 @@ func TestAccLocalNugetRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "max_unique_snapshots", fmt.Sprintf("%d", params["max_unique_snapshots"])), resource.TestCheckResourceAttr(fqrn, "force_nuget_authentication", fmt.Sprintf("%t", params["force_nuget_authentication"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "nuget")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "nuget"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -778,7 +775,7 @@ func TestAccLocalOciRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -786,7 +783,7 @@ func TestAccLocalOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", params["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", params["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "oci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "oci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -795,7 +792,7 @@ func TestAccLocalOciRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "tag_retention", fmt.Sprintf("%d", updatedParams["retention"])), resource.TestCheckResourceAttr(fqrn, "max_unique_tags", fmt.Sprintf("%d", updatedParams["max_tags"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "oci")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "oci"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -824,7 +821,7 @@ func TestAccLocalTerraformModuleRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -860,7 +857,7 @@ func TestAccLocalTerraformProviderRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -913,7 +910,7 @@ func TestAccLocalMavenRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate(fqrn, localJavaRepositoryBasic, tempStruct), @@ -925,46 +922,7 @@ func TestAccLocalMavenRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "handle_releases", fmt.Sprintf("%v", tempStruct["handle_releases"])), resource.TestCheckResourceAttr(fqrn, "handle_snapshots", fmt.Sprintf("%v", tempStruct["handle_snapshots"])), resource.TestCheckResourceAttr(fqrn, "suppress_pom_consistency_checks", fmt.Sprintf("%v", tempStruct["suppress_pom_consistency_checks"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "maven")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. - ), - }, - { - ResourceName: fqrn, - ImportState: true, - ImportStateVerify: true, - ImportStateCheck: validator.CheckImportState(name, "key"), - }, - }, - }) -} - -func TestAccLocalGenericRepository(t *testing.T) { - _, fqrn, name := testutil.MkNames("generic-local", "artifactory_local_generic_repository") - params := map[string]interface{}{ - "name": name, - "priority_resolution": testutil.RandBool(), - "property_set": "artifactory", - } - localRepositoryBasic := util.ExecuteTemplate("TestAccLocalGenericRepository", ` - resource "artifactory_local_generic_repository" "{{ .name }}" { - key = "{{ .name }}" - priority_resolution = "{{ .priority_resolution }}" - property_sets = ["{{ .property_set }}"] - } - `, params) - - resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - Steps: []resource.TestStep{ - { - Config: localRepositoryBasic, - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(fqrn, "key", name), - resource.TestCheckResourceAttr(fqrn, "priority_resolution", fmt.Sprintf("%t", params["priority_resolution"])), - resource.TestCheckResourceAttr(fqrn, "property_sets.#", "1"), - resource.TestCheckResourceAttr(fqrn, "property_sets.0", params["property_set"].(string)), + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "maven"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -977,92 +935,6 @@ func TestAccLocalGenericRepository(t *testing.T) { }) } -func TestAccLocalGenericRepositoryWithProjectAttributesGH318(t *testing.T) { - projectKey := fmt.Sprintf("t%d", testutil.RandomInt()) - projectEnv := testutil.RandSelect("DEV", "PROD").(string) - repoName := fmt.Sprintf("%s-generic-local", projectKey) - - _, fqrn, name := testutil.MkNames(repoName, "artifactory_local_generic_repository") - - params := map[string]interface{}{ - "name": name, - "projectKey": projectKey, - "projectEnv": projectEnv, - } - localRepositoryBasic := util.ExecuteTemplate("TestAccLocalGenericRepository", ` - resource "artifactory_local_generic_repository" "{{ .name }}" { - key = "{{ .name }}" - project_key = "{{ .projectKey }}" - project_environments = ["{{ .projectEnv }}"] - } - `, params) - - resource.Test(t, resource.TestCase{ - PreCheck: func() { - acctest.PreCheck(t) - acctest.CreateProject(t, projectKey) - }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { - acctest.DeleteProject(t, projectKey) - return acctest.CheckRepo(id, request) - }), - Steps: []resource.TestStep{ - { - Config: localRepositoryBasic, - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(fqrn, "key", name), - resource.TestCheckResourceAttr(fqrn, "project_key", projectKey), - resource.TestCheckResourceAttr(fqrn, "project_environments.#", "1"), - resource.TestCheckResourceAttr(fqrn, "project_environments.0", projectEnv), - ), - }, - { - ResourceName: fqrn, - ImportState: true, - ImportStateVerify: true, - ImportStateCheck: validator.CheckImportState(name, "key"), - }, - }, - }) -} - -func TestAccLocalGenericRepositoryWithInvalidProjectKeyGH318(t *testing.T) { - projectKey := fmt.Sprintf("t%d", testutil.RandomInt()) - repoName := fmt.Sprintf("%s-generic-local", projectKey) - - _, fqrn, name := testutil.MkNames(repoName, "artifactory_local_generic_repository") - - params := map[string]interface{}{ - "name": name, - "projectKey": projectKey, - } - localRepositoryBasic := util.ExecuteTemplate("TestAccLocalGenericRepository", ` - resource "artifactory_local_generic_repository" "{{ .name }}" { - key = "{{ .name }}" - project_key = "invalid-project-key-too-long-really-long" - } - `, params) - - resource.Test(t, resource.TestCase{ - PreCheck: func() { - acctest.PreCheck(t) - acctest.CreateProject(t, projectKey) - }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { - acctest.DeleteProject(t, projectKey) - return acctest.CheckRepo(id, request) - }), - Steps: []resource.TestStep{ - { - Config: localRepositoryBasic, - ExpectError: regexp.MustCompile(".*project_key must be 2 - 32 lowercase alphanumeric and hyphen characters"), - }, - }, - }) -} - func TestAccLocalNpmRepository(t *testing.T) { _, fqrn, name := testutil.MkNames("npm-local", "artifactory_local_npm_repository") params := map[string]interface{}{ @@ -1075,9 +947,9 @@ func TestAccLocalNpmRepository(t *testing.T) { `, params) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + PreCheck: func() { acctest.PreCheck(t) }, + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -1086,167 +958,16 @@ func TestAccLocalNpmRepository(t *testing.T) { ), }, { - ResourceName: fqrn, - ImportState: true, - ImportStateVerify: true, - ImportStateCheck: validator.CheckImportState(name, "key"), + ResourceName: fqrn, + ImportState: true, + ImportStateId: name, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "key", }, }, }) } -func mkTestCase(packageType string, t *testing.T) (*testing.T, resource.TestCase) { - name := fmt.Sprintf("local-%s-%d-full", packageType, rand.Int()) - resourceName := fmt.Sprintf("artifactory_local_%s_repository.%s", packageType, name) - xrayIndex := testutil.RandBool() - fqrn := fmt.Sprintf("artifactory_local_%s_repository.%s", packageType, name) - - params := map[string]interface{}{ - "packageType": packageType, - "name": name, - "xrayIndex": xrayIndex, - "cdnRedirect": false, // even when set to true, it comes back as false on the wire (presumably unless testing against a cloud platform) - "property_set": "artifactory", - } - cfg := util.ExecuteTemplate("TestAccLocalRepository", ` - resource "artifactory_local_{{ .packageType }}_repository" "{{ .name }}" { - key = "{{ .name }}" - description = "Test repo for {{ .name }}" - notes = "Test repo for {{ .name }}" - xray_index = {{ .xrayIndex }} - cdn_redirect = {{ .cdnRedirect }} - property_sets = ["{{ .property_set }}"] - } - `, params) - - updatedCfg := util.ExecuteTemplate("TestAccLocalRepository", ` - resource "artifactory_local_{{ .packageType }}_repository" "{{ .name }}" { - key = "{{ .name }}" - description = "" - notes = "" - xray_index = {{ .xrayIndex }} - cdn_redirect = {{ .cdnRedirect }} - property_sets = ["{{ .property_set }}"] - } - `, params) - - return t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(resourceName, "", acctest.CheckRepo), - Steps: []resource.TestStep{ - { - Config: cfg, - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(resourceName, "key", name), - resource.TestCheckResourceAttr(resourceName, "package_type", packageType), - resource.TestCheckResourceAttr(resourceName, "description", fmt.Sprintf("Test repo for %s", name)), - resource.TestCheckResourceAttr(resourceName, "notes", fmt.Sprintf("Test repo for %s", name)), - resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", packageType)(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. - resource.TestCheckResourceAttr(resourceName, "xray_index", fmt.Sprintf("%t", xrayIndex)), - resource.TestCheckResourceAttr(resourceName, "cdn_redirect", fmt.Sprintf("%t", params["cdnRedirect"])), - resource.TestCheckResourceAttr(resourceName, "property_sets.#", "1"), - resource.TestCheckResourceAttr(resourceName, "property_sets.0", params["property_set"].(string)), - ), - }, - { - Config: updatedCfg, - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(resourceName, "key", name), - resource.TestCheckResourceAttr(resourceName, "package_type", packageType), - resource.TestCheckResourceAttr(resourceName, "description", ""), - resource.TestCheckResourceAttr(resourceName, "notes", ""), - resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", packageType)(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. - resource.TestCheckResourceAttr(resourceName, "xray_index", fmt.Sprintf("%t", xrayIndex)), - resource.TestCheckResourceAttr(resourceName, "cdn_redirect", fmt.Sprintf("%t", params["cdnRedirect"])), - ), - }, - { - ResourceName: fqrn, - ImportState: true, - ImportStateVerify: true, - ImportStateCheck: validator.CheckImportState(name, "key"), - }, - }, - } -} - -func TestAccLocalAllPackageTypes(t *testing.T) { - for _, packageType := range local.PackageTypesLikeGeneric { - t.Run(packageType, func(t *testing.T) { - resource.Test(mkTestCase(packageType, t)) - }) - } -} - -func makeLocalRepoTestCase(repoType string, t *testing.T) (*testing.T, resource.TestCase) { - name := fmt.Sprintf("terraform-local-%s-%d-full", repoType, rand.Int()) - resourceName := fmt.Sprintf("artifactory_local_%s_repository.%s", repoType, name) - repoLayoutRef := acctest.GetValidRandomDefaultRepoLayoutRef() - fqrn := fmt.Sprintf("artifactory_local_%s_repository.%s", repoType, name) - - const localRepositoryConfigFull = ` - resource "artifactory_local_%[1]s_repository" "%[2]s" { - key = "%[2]s" - description = "Test repo for %[2]s" - notes = "Test repo for %[2]s" - repo_layout_ref = "%[3]s" - } - ` - - const localRepositoryConfigFullUpdated = ` - resource "artifactory_local_%[1]s_repository" "%[2]s" { - key = "%[2]s" - description = "" - notes = "" - repo_layout_ref = "%[3]s" - } - ` - - return t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(resourceName, "", acctest.CheckRepo), - Steps: []resource.TestStep{ - { - Config: fmt.Sprintf(localRepositoryConfigFull, repoType, name, repoLayoutRef), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(resourceName, "key", name), - resource.TestCheckResourceAttr(resourceName, "package_type", repoType), - resource.TestCheckResourceAttr(resourceName, "description", fmt.Sprintf("Test repo for %s", name)), - resource.TestCheckResourceAttr(resourceName, "notes", fmt.Sprintf("Test repo for %s", name)), - resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", repoLayoutRef), //Check to ensure repository layout is set as per default even when it is not passed. - ), - }, - { - Config: fmt.Sprintf(localRepositoryConfigFullUpdated, repoType, name, repoLayoutRef), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr(resourceName, "key", name), - resource.TestCheckResourceAttr(resourceName, "package_type", repoType), - resource.TestCheckResourceAttr(resourceName, "description", ""), - resource.TestCheckResourceAttr(resourceName, "notes", ""), - resource.TestCheckResourceAttr(resourceName, "repo_layout_ref", repoLayoutRef), - ), - }, - { - ResourceName: fqrn, - ImportState: true, - ImportStateVerify: true, - ImportStateCheck: validator.CheckImportState(name, "key"), - }, - }, - } -} - -// Test case to cover when repoLayoutRef not left as blank and set to some value other than default -func TestAccAllLocalRepoTypes(t *testing.T) { - for _, packageType := range local.PackageTypesLikeGeneric { - t.Run(packageType, func(t *testing.T) { - resource.Test(makeLocalRepoTestCase(packageType, t)) - }) - } -} - func makeLocalGradleLikeRepoTestCase(repoType string, t *testing.T) (*testing.T, resource.TestCase) { name := fmt.Sprintf("%s-local", repoType) resourceName := fmt.Sprintf("artifactory_local_%s_repository", repoType) @@ -1260,7 +981,7 @@ func makeLocalGradleLikeRepoTestCase(repoType string, t *testing.T) (*testing.T, return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate(fqrn, localJavaRepositoryBasic, tempStruct), @@ -1310,7 +1031,7 @@ func TestAccLocalCargoRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -1318,7 +1039,7 @@ func TestAccLocalCargoRepository(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "anonymous_access", fmt.Sprintf("%t", params["anonymous_access"])), resource.TestCheckResourceAttr(fqrn, "enable_sparse_index", fmt.Sprintf("%t", params["enable_sparse_index"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "cargo")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "cargo"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { @@ -1347,14 +1068,14 @@ func TestAccLocalConanRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "force_conan_authentication", fmt.Sprintf("%t", params["force_conan_authentication"])), - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "conan")(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("local", "conan"); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, { diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_rpm_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_rpm_repository.go index 222a2d043..443e21235 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_rpm_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_rpm_repository.go @@ -42,7 +42,7 @@ var rpmSchema = utilsdk.MergeMaps( "gzipped version of the group files, if required.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.RPMPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.RPMPackageType), ) var RPMSchemas = GetSchemas(rpmSchema) diff --git a/pkg/artifactory/resource/repository/local/resource_artifactory_local_terraform_repository.go b/pkg/artifactory/resource/repository/local/resource_artifactory_local_terraform_repository.go index 73dd34071..cee016390 100644 --- a/pkg/artifactory/resource/repository/local/resource_artifactory_local_terraform_repository.go +++ b/pkg/artifactory/resource/repository/local/resource_artifactory_local_terraform_repository.go @@ -11,11 +11,11 @@ func GetTerraformSchemas(registryType string) map[int16]map[string]*schema.Schem return map[int16]map[string]*schema.Schema{ 0: lo.Assign( BaseSchemaV1, - repository.RepoLayoutRefSchema(Rclass, "terraform_"+registryType), + repository.RepoLayoutRefSDKv2Schema(Rclass, "terraform_"+registryType), ), 1: lo.Assign( BaseSchemaV1, - repository.RepoLayoutRefSchema(Rclass, "terraform_"+registryType), + repository.RepoLayoutRefSDKv2Schema(Rclass, "terraform_"+registryType), ), } } diff --git a/pkg/artifactory/resource/repository/remote/curation_test.go b/pkg/artifactory/resource/repository/remote/curation_test.go index 6388e7483..302f01778 100644 --- a/pkg/artifactory/resource/repository/remote/curation_test.go +++ b/pkg/artifactory/resource/repository/remote/curation_test.go @@ -51,7 +51,7 @@ func TestAccRemoteRepository_with_curated(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, diff --git a/pkg/artifactory/resource/repository/remote/remote.go b/pkg/artifactory/resource/repository/remote/remote.go index 77b911292..3da2fe1bd 100644 --- a/pkg/artifactory/resource/repository/remote/remote.go +++ b/pkg/artifactory/resource/repository/remote/remote.go @@ -498,7 +498,7 @@ func JavaSchema(packageType string, suppressPom bool) map[string]*schema.Schema "no limit, and unique snapshots are not cleaned up.", }, }, - repository.RepoLayoutRefSchema(Rclass, packageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, packageType), ) } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_ansible_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_ansible_repository.go index b4581e137..a23f1f816 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_ansible_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_ansible_repository.go @@ -21,7 +21,7 @@ var ansibleSchema = lo.Assign( Description: "The remote repo URL. Default to 'https://galaxy.ansible.com'", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.AnsiblePackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.AnsiblePackageType), ) var AnsibleSchemas = GetSchemas(ansibleSchema) @@ -35,7 +35,7 @@ func ResourceArtifactoryRemoteAnsibleRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.AnsiblePackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.AnsiblePackageType) if err != nil { return nil, err } @@ -44,7 +44,7 @@ func ResourceArtifactoryRemoteAnsibleRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.AnsiblePackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_bower_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_bower_repository.go index cae8bd9ba..52bcfdd3b 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_bower_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_bower_repository.go @@ -27,7 +27,7 @@ var bowerSchema = lo.Assign( Description: `Proxy remote Bower repository. Default value is "https://registry.bower.io".`, }, }, - repository.RepoLayoutRefSchema(Rclass, repository.BowerPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.BowerPackageType), ) var BowerSchemas = GetSchemas(bowerSchema) @@ -45,7 +45,7 @@ func ResourceArtifactoryRemoteBowerRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.BowerPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.BowerPackageType) if err != nil { return nil, err } @@ -54,7 +54,7 @@ func ResourceArtifactoryRemoteBowerRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.BowerPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_cargo_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_cargo_repository.go index eeeb1bfe3..80d68ba76 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_cargo_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_cargo_repository.go @@ -38,7 +38,7 @@ var cargoSchema = lo.Assign( Description: "Enable internal index support based on Cargo sparse index specifications, instead of the default git index. Default value is 'false'.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.CargoPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.CargoPackageType), ) var CargoSchemas = GetSchemas(cargoSchema) diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_cocoapods_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_cocoapods_repository.go index bbc6cde44..aec2096e5 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_cocoapods_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_cocoapods_repository.go @@ -27,7 +27,7 @@ var cocoapodsSchema = lo.Assign( Description: `Proxy remote CocoaPods Specs repositories. Default value is "https://github.com/CocoaPods/Specs".`, }, }, - repository.RepoLayoutRefSchema(Rclass, repository.CocoapodsPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.CocoapodsPackageType), ) var CocoapodsSchemas = GetSchemas(cocoapodsSchema) @@ -44,7 +44,7 @@ func ResourceArtifactoryRemoteCocoapodsRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.CocoapodsPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.CocoapodsPackageType) if err != nil { return nil, err } @@ -53,7 +53,7 @@ func ResourceArtifactoryRemoteCocoapodsRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.CocoapodsPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_composer_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_composer_repository.go index a11d888d3..a4a090d61 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_composer_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_composer_repository.go @@ -27,7 +27,7 @@ var composerSchema = lo.Assign( Description: `Proxy remote Composer repository. Default value is "https://packagist.org".`, }, }, - repository.RepoLayoutRefSchema(Rclass, repository.ComposerPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.ComposerPackageType), ) var ComposerSchemas = GetSchemas(composerSchema) @@ -44,7 +44,7 @@ func ResourceArtifactoryRemoteComposerRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.ComposerPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.ComposerPackageType) if err != nil { return nil, err } @@ -53,7 +53,7 @@ func ResourceArtifactoryRemoteComposerRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.ComposerPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_conan_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_conan_repository.go index 022eb7961..7dc443325 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_conan_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_conan_repository.go @@ -18,7 +18,7 @@ var conanSchema = lo.Assign( baseSchema, CurationRemoteRepoSchema, repository.ConanBaseSchema, - repository.RepoLayoutRefSchema(Rclass, repository.ConanPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.ConanPackageType), ) var ConanSchemas = GetSchemas(conanSchema) @@ -40,7 +40,7 @@ func ResourceArtifactoryRemoteConanRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.ConanPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.ConanPackageType) if err != nil { return nil, err } @@ -49,7 +49,7 @@ func ResourceArtifactoryRemoteConanRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.ConanPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_docker_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_docker_repository.go index cd04eafeb..7fd0772d2 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_docker_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_docker_repository.go @@ -52,7 +52,7 @@ var dockerSchema = lo.Assign( Description: "Use this attribute to enter your GCR, GAR Project Id to limit the scope of this remote repo to a specific project in your third-party registry. When leaving this field blank or unset, remote repositories that support project id will default to their default project as you have set up in your account.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.DockerPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.DockerPackageType), ) var DockerSchemas = GetSchemas(dockerSchema) diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_gems_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_gems_repository.go index d01c86cbb..ef4b90707 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_gems_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_gems_repository.go @@ -39,7 +39,7 @@ func ResourceArtifactoryRemoteGemsRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.GemsPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.GemsPackageType) if err != nil { return nil, err } @@ -49,7 +49,7 @@ func ResourceArtifactoryRemoteGemsRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.GemsPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, }, nil diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_generic_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_generic_repository.go index e167a3abd..bb46437ce 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_generic_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_generic_repository.go @@ -25,7 +25,7 @@ var genericSchemaV3 = lo.Assign( Description: "When set, if query params are included in the request to Artifactory, they will be passed on to the remote repository.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.GenericPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.GenericPackageType), ) var GenericSchemaV4 = lo.Assign( @@ -81,7 +81,7 @@ func ResourceArtifactoryRemoteGenericRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.GenericPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.GenericPackageType) if err != nil { return nil, err } @@ -90,7 +90,7 @@ func ResourceArtifactoryRemoteGenericRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.GenericPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } @@ -128,13 +128,13 @@ func GenericResourceStateUpgradeV3(_ context.Context, rawState map[string]interf var BasicSchema = func(packageType string) map[string]*schema.Schema { return lo.Assign( baseSchema, - repository.RepoLayoutRefSchema(Rclass, packageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, packageType), ) } func ResourceArtifactoryRemoteBasicRepository(packageType string) *schema.Resource { constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, packageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, packageType) if err != nil { return nil, err } @@ -142,7 +142,7 @@ func ResourceArtifactoryRemoteBasicRepository(packageType string) *schema.Resour return &RepositoryRemoteBaseParams{ PackageType: packageType, Rclass: Rclass, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_go_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_go_repository.go index b4121f29c..5b2366aab 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_go_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_go_repository.go @@ -36,7 +36,7 @@ var GoSchema = lo.Assign( Description: "Artifactory supports proxying the following Git providers out-of-the-box: GitHub (`GITHUB`), GitHub Enterprise (`GITHUBENTERPRISE`), BitBucket Cloud (`BITBUCKET`), BitBucket Server (`STASH`), GitLab (`GITLAB`), or a remote Artifactory instance (`ARTIFACTORY`). Default value is `ARTIFACTORY`.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.GoPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.GoPackageType), ) var GoSchemas = GetSchemas(GoSchema) @@ -56,7 +56,7 @@ func ResourceArtifactoryRemoteGoRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.GoPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.GoPackageType) if err != nil { return nil, err } @@ -65,7 +65,7 @@ func ResourceArtifactoryRemoteGoRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.GoPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_helm_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_helm_repository.go index 8bdf0cc79..3c507edfd 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_helm_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_helm_repository.go @@ -47,7 +47,7 @@ var HelmSchema = lo.Assign( "Default value in UI is empty. This attribute must be set together with `external_dependencies_enabled = true`", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.HelmPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.HelmPackageType), ) var HelmSchemas = GetSchemas(HelmSchema) diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_helmoci_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_helmoci_repository.go index 09a7c9559..eb7216cde 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_helmoci_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_helmoci_repository.go @@ -47,7 +47,7 @@ var HelmOCISchema = lo.Assign( "will default to their default project as you have set up in your account.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.HelmOCIPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.HelmOCIPackageType), ) var HelmOCISchemas = GetSchemas(HelmOCISchema) diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_huggingfaceml_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_huggingfaceml_repository.go index 3603fe4c7..0b756842b 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_huggingfaceml_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_huggingfaceml_repository.go @@ -24,7 +24,7 @@ var HuggingFaceSchema = lo.Assign( Description: "The remote repo URL. Default to 'https://huggingface.co'", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.HuggingFacePackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.HuggingFacePackageType), ) var HuggingFaceSchemas = GetSchemas(HuggingFaceSchema) @@ -42,7 +42,7 @@ func ResourceArtifactoryRemoteHuggingFaceRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.HuggingFacePackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.HuggingFacePackageType) if err != nil { return nil, err } @@ -51,7 +51,7 @@ func ResourceArtifactoryRemoteHuggingFaceRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.HuggingFacePackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_npm_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_npm_repository.go index fa08752bd..c4610ffcb 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_npm_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_npm_repository.go @@ -16,7 +16,7 @@ type NpmRemoteRepo struct { var NPMSchema = lo.Assign( baseSchema, CurationRemoteRepoSchema, - repository.RepoLayoutRefSchema(Rclass, repository.NPMPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.NPMPackageType), ) var NPMSchemas = GetSchemas(NPMSchema) @@ -34,7 +34,7 @@ func ResourceArtifactoryRemoteNpmRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.NPMPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.NPMPackageType) if err != nil { return nil, err } @@ -43,7 +43,7 @@ func ResourceArtifactoryRemoteNpmRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.NPMPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_nuget_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_nuget_repository.go index b554ce025..24c046758 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_nuget_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_nuget_repository.go @@ -56,7 +56,7 @@ var NugetSchema = lo.Assign( ValidateDiagFunc: validation.ToDiagFunc(validation.Any(validation.IsURLWithHTTPorHTTPS, validation.StringIsEmpty)), Description: `NuGet symbol server URL.`, }, - }, repository.RepoLayoutRefSchema(Rclass, repository.NugetPackageType), + }, repository.RepoLayoutRefSDKv2Schema(Rclass, repository.NugetPackageType), ) var NugetSchemas = GetSchemas(NugetSchema) @@ -80,7 +80,7 @@ func ResourceArtifactoryRemoteNugetRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.NugetPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.NugetPackageType) if err != nil { return nil, err } @@ -89,7 +89,7 @@ func ResourceArtifactoryRemoteNugetRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.NugetPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_oci_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_oci_repository.go index ad1bbed7a..f191fbfc5 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_oci_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_oci_repository.go @@ -47,7 +47,7 @@ var OCISchema = lo.Assign( "will default to their default project as you have set up in your account.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.OCIPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.OCIPackageType), ) var OCISchemas = GetSchemas(OCISchema) diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_pypi_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_pypi_repository.go index 11d14c2b4..76d983739 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_pypi_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_pypi_repository.go @@ -35,7 +35,7 @@ var PyPiSchema = lo.Assign( Description: "Usually should be left as a default for 'simple', unless the remote is a PyPI server that has custom registry suffix, like +simple in DevPI. Default value is 'simple'.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.PyPiPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.PyPiPackageType), ) var PyPiSchemas = GetSchemas(PyPiSchema) diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_repository_test.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_repository_test.go index a205e1ff5..6391de3c9 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_repository_test.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_repository_test.go @@ -97,7 +97,7 @@ func TestAccRemoteAllowDotsUnderscorersAndDashesInKeyGH129(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: remoteRepositoryBasic, @@ -147,7 +147,7 @@ func TestAccRemoteAnsibleRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: remoteRepositoryBasic, @@ -295,7 +295,7 @@ func TestAccRemoteDockerRepo_full(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -500,7 +500,7 @@ func TestAccRemoteHuggingFaceRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: remoteRepositoryBasic, @@ -797,7 +797,7 @@ func TestAccRemoteRepositoryChangeConfigGH148(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate("one", step1, map[string]interface{}{ @@ -847,7 +847,7 @@ func TestAccRemoteRepository_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: fmt.Sprintf(remoteRepoBasic, name, name), @@ -886,7 +886,7 @@ func TestAccRemoteRepository_nugetNew(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: fmt.Sprintf(remoteRepoNuget, name, name), @@ -984,7 +984,7 @@ func mkNewRemoteTestCase(repoType string, t *testing.T, extraFields map[string]i addTestCertificate(t, certificateAlias, security.CertificateEndpoint) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", delCertTestCheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", delCertTestCheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -1083,7 +1083,7 @@ func mkRemoteTestCaseWithAdditionalCheckFunctions(repoType string, t *testing.T, defaultChecks := testutil.MapToTestChecks(fqrn, allFields) var addCheckFunctions = []resource.TestCheckFunc{ - resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("remote", repoType)(); return r.(string) }()), //Check to ensure repository layout is set as per default even when it is not passed. + resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { r, _ := repository.GetDefaultRepoLayoutRef("remote", repoType); return r }()), //Check to ensure repository layout is set as per default even when it is not passed. } checks := append(defaultChecks, append(extraChecks, addCheckFunctions...)...) @@ -1092,7 +1092,7 @@ func mkRemoteTestCaseWithAdditionalCheckFunctions(repoType string, t *testing.T, return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -1128,7 +1128,7 @@ func TestAccRemoteRepository_generic_with_propagate(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: fmt.Sprintf(remoteGenericRepoBasicWithPropagate, name, name), @@ -1167,7 +1167,7 @@ func TestAccRemoteRepository_generic_with_retrieve_sha256_from_server(t *testing resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: fmt.Sprintf(temp, name, name), @@ -1209,7 +1209,7 @@ func TestAccRemoteRepository_generic_migrate_to_schema_v4(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -1256,7 +1256,7 @@ func TestAccRemoteRepository_gems_with_propagate_fails(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: fmt.Sprintf(remoteGemsRepoBasicWithPropagate, repoType, name, name), @@ -1345,7 +1345,7 @@ func TestAccRemoteRepository_MissedRetrievalCachePeriodSecs_retained_between_upd resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: remoteRepositoryInit, @@ -1420,7 +1420,7 @@ func TestAccRemoteRepository_AttemptToRemoveRemoteRepoLayout_GH746(t *testing.T) resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: remoteRepositoryInit, @@ -1468,7 +1468,7 @@ func TestAccRemoteRepository_assumed_offline_period_secs_has_default_value_GH241 resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: remoteRepositoryInit, @@ -1526,7 +1526,7 @@ func TestAccRemoteProxyUpdateGH2(t *testing.T) { acctest.CreateProxy(t, testProxyKey) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { acctest.DeleteProxy(t, testProxyKey) return acctest.CheckRepo(id, request) }), @@ -1604,7 +1604,7 @@ func TestAccRemoteDisableDefaultProxyGH739(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -1670,7 +1670,7 @@ func TestAccRemoteDisableProxyGH739(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -1718,7 +1718,7 @@ func TestAccRemoteDisableDefaultProxyConflictAttrGH739(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -1754,7 +1754,7 @@ func TestAccRemoteRepositoryWithProjectAttributesGH318(t *testing.T) { acctest.PreCheck(t) acctest.CreateProject(t, projectKey) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { acctest.DeleteProject(t, projectKey) return acctest.CheckRepo(id, request) }), @@ -1802,7 +1802,7 @@ func TestAccRemoteRepositoryWithInvalidProjectKeyGH318(t *testing.T) { acctest.PreCheck(t) acctest.CreateProject(t, projectKey) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { acctest.DeleteProject(t, projectKey) return acctest.CheckRepo(id, request) }), @@ -1838,7 +1838,7 @@ func TestAccRemoteRepository_excludes_pattern_reset(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: util.ExecuteTemplate("one", step1, map[string]interface{}{ diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_terraform_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_terraform_repository.go index 039d5ba0e..b0a98454c 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_terraform_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_terraform_repository.go @@ -35,7 +35,7 @@ var TerraformSchema = lo.Assign( "the URL to /api/terraform/repokey/providers. Default value in UI is https://releases.hashicorp.com", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.TerraformPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.TerraformPackageType), ) var TerraformSchemas = GetSchemas(TerraformSchema) diff --git a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_vcs_repository.go b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_vcs_repository.go index bb0b61061..89f03b612 100644 --- a/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_vcs_repository.go +++ b/pkg/artifactory/resource/repository/remote/resource_artifactory_remote_vcs_repository.go @@ -27,7 +27,7 @@ var VCSSchema = lo.Assign( "no limit, and unique snapshots are not cleaned up.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.VCSPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.VCSPackageType), ) var VCSSchemas = GetSchemas(VCSSchema) @@ -44,7 +44,7 @@ func ResourceArtifactoryRemoteVcsRepository() *schema.Resource { } constructor := func() (interface{}, error) { - repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.VCSPackageType)() + repoLayout, err := repository.GetDefaultRepoLayoutRef(Rclass, repository.VCSPackageType) if err != nil { return nil, err } @@ -53,7 +53,7 @@ func ResourceArtifactoryRemoteVcsRepository() *schema.Resource { RepositoryRemoteBaseParams: RepositoryRemoteBaseParams{ Rclass: Rclass, PackageType: repository.VCSPackageType, - RepoLayoutRef: repoLayout.(string), + RepoLayoutRef: repoLayout, }, }, nil } diff --git a/pkg/artifactory/resource/repository/repository.go b/pkg/artifactory/resource/repository/repository.go index f02831146..93cfc8c4a 100644 --- a/pkg/artifactory/resource/repository/repository.go +++ b/pkg/artifactory/resource/repository/repository.go @@ -5,21 +5,36 @@ import ( "encoding/json" "fmt" "net/http" + "reflect" "github.com/go-resty/resty/v2" "github.com/hashicorp/go-cty/cty" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + sdkv2_diag "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + sdkv2_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" - "github.com/jfrog/terraform-provider-shared/util" - utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk" - "golang.org/x/exp/slices" - "github.com/jfrog/terraform-provider-shared/client" "github.com/jfrog/terraform-provider-shared/packer" "github.com/jfrog/terraform-provider-shared/testutil" "github.com/jfrog/terraform-provider-shared/unpacker" - "github.com/jfrog/terraform-provider-shared/validator" + "github.com/jfrog/terraform-provider-shared/util" + utilfw "github.com/jfrog/terraform-provider-shared/util/fw" + utilsdk "github.com/jfrog/terraform-provider-shared/util/sdk" + sdkv2_validator "github.com/jfrog/terraform-provider-shared/validator" + validatorfw_string "github.com/jfrog/terraform-provider-shared/validator/fw/string" + + "golang.org/x/exp/slices" ) const ( @@ -44,6 +59,7 @@ const ( HelmOCIPackageType = "helmoci" HuggingFacePackageType = "huggingfaceml" IvyPackageType = "ivy" + MachineLearningType = "machinelearning" MavenPackageType = "maven" NPMPackageType = "npm" NugetPackageType = "nuget" @@ -64,26 +80,503 @@ const ( VCSPackageType = "vcs" ) -var BaseSchemaV1 = map[string]*schema.Schema{ +type BaseResource struct { + util.JFrogResource + Description string + PackageType string + Rclass string + ResourceModelType reflect.Type + APIModelType reflect.Type +} + +func (r BaseResource) ValidateConfig(ctx context.Context, req resource.ValidateConfigRequest, resp *resource.ValidateConfigResponse) { + if r.ProviderData == nil { + return + } + + var projectEnviroments types.Set + + resp.Diagnostics.Append(req.Config.GetAttribute(ctx, path.Root("project_environments"), &projectEnviroments)...) + if resp.Diagnostics.HasError() { + return + } + + // If project_environments is not configured, return without warning. + if projectEnviroments.IsNull() || projectEnviroments.IsUnknown() { + return + } + + var envs []string + resp.Diagnostics.Append(projectEnviroments.ElementsAs(ctx, &envs, false)...) + if resp.Diagnostics.HasError() { + return + } + + isSupported, err := util.CheckVersion(r.ProviderData.ArtifactoryVersion, CustomProjectEnvironmentSupportedVersion) + if err != nil { + resp.Diagnostics.AddError( + "Failed to check Artifactory version", + err.Error(), + ) + return + } + + if isSupported { + if len(envs) == 2 { + resp.Diagnostics.AddError( + "Too many project environment", + fmt.Sprintf("for Artifactory %s or later, only one environment can be assigned to a repository", CustomProjectEnvironmentSupportedVersion), + ) + return + } + } else { // Before 7.53.1 + for _, env := range envs { + if !slices.Contains(ProjectEnvironmentsSupported, env) { + resp.Diagnostics.AddError( + "Invalid project_environment not allowed", + env, + ) + return + } + } + } +} + +func (r *BaseResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + if r.ResourceModelType == nil || r.APIModelType == nil { + resp.Diagnostics.AddError( + "ResourceModelType or APIModelType is nil", + "", + ) + return + } + + go util.SendUsageResourceCreate(ctx, r.ProviderData.Client.R(), r.ProviderData.ProductId, r.TypeName) + + plan := reflect.New(r.ResourceModelType).Interface().(ResourceModelIface) + + plan.GetCreateResourcePlanData(ctx, req, resp) + if resp.Diagnostics.HasError() { + return + } + + repo, d := plan.ToAPIModel(ctx, r.PackageType) + if d != nil { + resp.Diagnostics.Append(d...) + } + if resp.Diagnostics.HasError() { + return + } + + var jfrogErrors util.JFrogErrors + response, err := r.ProviderData.Client.R(). + SetPathParam("key", plan.KeyString()). + SetBody(repo). + SetError(&jfrogErrors). + Put(r.DocumentEndpoint) + + if err != nil { + utilfw.UnableToCreateResourceError(resp, err.Error()) + return + } + + if response.IsError() { + utilfw.UnableToCreateResourceError(resp, jfrogErrors.String()) + return + } + + plan.SetID(plan.KeyString()) + + if plan.ProjectEnvironmentsValue().IsUnknown() { + plan.SetProjectEnvironments(types.SetNull(types.StringType)) + } + + plan.SetCreateResourceStateData(ctx, resp) +} + +func (r *BaseResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + go util.SendUsageResourceRead(ctx, r.ProviderData.Client.R(), r.ProviderData.ProductId, r.TypeName) + + state := reflect.New(r.ResourceModelType).Interface().(ResourceModelIface) + + state.GetReadResourceStateData(ctx, req, resp) + if resp.Diagnostics.HasError() { + return + } + + // Convert from Terraform data model into API data model + repo := reflect.New(r.APIModelType).Interface() + var jfrogErrors util.JFrogErrors + + response, err := r.ProviderData.Client.R(). + SetPathParam("key", state.KeyString()). + SetResult(repo). + SetError(&jfrogErrors). + Get(r.DocumentEndpoint) + + if err != nil { + utilfw.UnableToRefreshResourceError(resp, err.Error()) + return + } + + // Treat HTTP 404 Not Found status as a signal to recreate resource + // and return early + if response.StatusCode() == http.StatusNotFound { + resp.State.RemoveResource(ctx) + return + } + + if response.IsError() { + utilfw.UnableToRefreshResourceError(resp, jfrogErrors.String()) + return + } + + // Convert from the API data model to the Terraform data model + // and refresh any attribute values. + resp.Diagnostics.Append(state.FromAPIModel(ctx, repo)...) + if resp.Diagnostics.HasError() { + return + } + + state.SetReadResourceStateData(ctx, resp) +} + +func (r *BaseResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + go util.SendUsageResourceUpdate(ctx, r.ProviderData.Client.R(), r.ProviderData.ProductId, r.TypeName) + + plan := reflect.New(r.ResourceModelType).Interface().(ResourceModelIface) + plan.GetUpdateResourcePlanData(ctx, req, resp) + if resp.Diagnostics.HasError() { + return + } + + state := reflect.New(r.ResourceModelType).Interface().(ResourceModelIface) + state.GetUpdateResourceStateData(ctx, req, resp) + if resp.Diagnostics.HasError() { + return + } + + repo, d := plan.ToAPIModel(ctx, r.PackageType) + if d != nil { + resp.Diagnostics.Append(d...) + } + if resp.Diagnostics.HasError() { + return + } + + key := plan.KeyString() + var jfrogErrors util.JFrogErrors + response, err := r.ProviderData.Client.R(). + SetPathParam("key", key). + SetBody(repo). + SetError(&jfrogErrors). + Post(r.DocumentEndpoint) + + if err != nil { + utilfw.UnableToUpdateResourceError(resp, err.Error()) + return + } + + if response.IsError() { + utilfw.UnableToUpdateResourceError(resp, jfrogErrors.String()) + return + } + + if plan.ProjectEnvironmentsValue().IsUnknown() { + plan.SetProjectEnvironments(types.SetNull(types.StringType)) + } + + plan.SetID(plan.KeyString()) + + planProjectKey := plan.ProjectKeyValue() + stateProjectKey := state.ProjectKeyValue() + + if !planProjectKey.Equal(stateProjectKey) { + oldProjectKey := stateProjectKey.ValueString() + newProjectKey := planProjectKey.ValueString() + + assignToProject := oldProjectKey == "" && len(newProjectKey) > 0 + unassignFromProject := len(oldProjectKey) > 0 && newProjectKey == "" + + var err error + if assignToProject { + err = AssignRepoToProject(key, newProjectKey, r.ProviderData.Client) + } else if unassignFromProject { + err = UnassignRepoFromProject(key, r.ProviderData.Client) + } + + if err != nil { + resp.Diagnostics.AddError( + "Failed to assign/unassign repository to project", + err.Error(), + ) + return + } + } + + plan.SetUpdateResourceStateData(ctx, resp) +} + +func (r *BaseResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + go util.SendUsageResourceDelete(ctx, r.ProviderData.Client.R(), r.ProviderData.ProductId, r.TypeName) + + var key types.String + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.GetAttribute(ctx, path.Root("key"), &key)...) + + var jfrogErrors util.JFrogErrors + + response, err := r.ProviderData.Client.R(). + SetPathParam("key", key.ValueString()). + SetError(&jfrogErrors). + Delete(r.DocumentEndpoint) + + if err != nil { + utilfw.UnableToDeleteResourceError(resp, err.Error()) + return + } + + // Return error if the HTTP status code is not 200 OK + if response.StatusCode() != http.StatusOK { + utilfw.UnableToDeleteResourceError(resp, jfrogErrors.String()) + return + } + + // If the logic reaches here, it implicitly succeeded and will remove + // the resource from state if there are no other errors. +} + +// ImportState imports the resource into the Terraform state. +func (r *BaseResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughID(ctx, path.Root("key"), req, resp) +} + +type ResourceModelIface interface { + SetID(string) + KeyString() string + ToAPIModel(ctx context.Context, packageType string) (interface{}, diag.Diagnostics) + FromAPIModel(ctx context.Context, apiModel interface{}) diag.Diagnostics + GetCreateResourcePlanData(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) + SetCreateResourceStateData(ctx context.Context, resp *resource.CreateResponse) + GetReadResourceStateData(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) + SetReadResourceStateData(ctx context.Context, resp *resource.ReadResponse) + GetUpdateResourcePlanData(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) + GetUpdateResourceStateData(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) + SetUpdateResourceStateData(ctx context.Context, resp *resource.UpdateResponse) + ProjectEnvironmentsValue() basetypes.SetValue + SetProjectEnvironments(basetypes.SetValue) + ProjectKeyValue() basetypes.StringValue +} + +type BaseResourceModel struct { + ID types.String `tfsdk:"id"` + Key types.String `tfsdk:"key"` + ProjectKey types.String `tfsdk:"project_key"` + ProjectEnvironments types.Set `tfsdk:"project_environments"` + Description types.String `tfsdk:"description"` + Notes types.String `tfsdk:"notes"` + IncludesPattern types.String `tfsdk:"includes_pattern"` + ExcludesPattern types.String `tfsdk:"excludes_pattern"` +} + +func (r *BaseResourceModel) SetID(id string) { + r.ID = types.StringValue(id) +} + +func (r BaseResourceModel) KeyString() string { + return r.Key.ValueString() +} + +func (r BaseResourceModel) ProjectEnvironmentsValue() basetypes.SetValue { + return r.ProjectEnvironments +} + +func (r *BaseResourceModel) SetProjectEnvironments(v basetypes.SetValue) { + r.ProjectEnvironments = v +} + +func (r BaseResourceModel) ProjectKeyValue() basetypes.StringValue { + return r.ProjectKey +} + +func (r BaseResourceModel) ToAPIModel(ctx context.Context, rclass, packageType string) (interface{}, diag.Diagnostics) { + diags := diag.Diagnostics{} + + var projectEnviroments []string + if !r.ProjectEnvironments.IsUnknown() { + d := r.ProjectEnvironments.ElementsAs(ctx, &projectEnviroments, false) + if d != nil { + diags.Append(d...) + } + } + + repoLayoutRef, err := GetDefaultRepoLayoutRef(rclass, packageType) + if err != nil { + diags.AddError( + "Failed to get default repo layout ref", + err.Error(), + ) + } + + return BaseAPIModel{ + Key: r.Key.ValueString(), + ProjectKey: r.ProjectKey.ValueString(), + ProjectEnvironments: projectEnviroments, + Rclass: rclass, + PackageType: packageType, + Description: r.Description.ValueString(), + Notes: r.Notes.ValueString(), + IncludesPattern: r.IncludesPattern.ValueString(), + ExcludesPattern: r.ExcludesPattern.ValueString(), + RepoLayoutRef: repoLayoutRef, + }, diags +} + +func (r *BaseResourceModel) FromAPIModel(ctx context.Context, apiModel interface{}) diag.Diagnostics { + diags := diag.Diagnostics{} + + model := apiModel.(BaseAPIModel) + + r.ID = types.StringValue(model.Key) + r.Key = types.StringValue(model.Key) + r.ProjectKey = types.StringValue(model.ProjectKey) + r.Description = types.StringValue(model.Description) + r.Notes = types.StringValue(model.Notes) + r.IncludesPattern = types.StringValue(model.IncludesPattern) + r.ExcludesPattern = types.StringValue(model.ExcludesPattern) + + projectEnviroments := types.SetNull(types.StringType) + if len(model.ProjectEnvironments) > 0 { + envs, ds := types.SetValueFrom(ctx, types.StringType, model.ProjectEnvironments) + if ds.HasError() { + diags.Append(ds...) + return diags + } + projectEnviroments = envs + } + + r.ProjectEnvironments = projectEnviroments + + return diags +} + +type BaseAPIModel struct { + Key string `json:"key"` + ProjectKey string `json:"projectKey"` + ProjectEnvironments []string `json:"environments,omitempty"` + Rclass string `json:"rclass"` + PackageType string `json:"packageType"` + Description string `json:"description"` + Notes string `json:"notes"` + IncludesPattern string `json:"includesPattern"` + ExcludesPattern string `json:"excludesPattern"` + RepoLayoutRef string `json:"repoLayoutRef"` +} + +var BaseAttributes = map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + }, + "key": schema.StringAttribute{ + Required: true, + Validators: []validator.String{ + validatorfw_string.RepoKey(), + }, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + MarkdownDescription: "A mandatory identifier for the repository that must be unique. Must be 1 - 64 alphanumeric and hyphen characters. It cannot contain spaces or special characters.", + }, + "project_key": schema.StringAttribute{ + Optional: true, + Computed: true, + Default: stringdefault.StaticString(""), + Validators: []validator.String{ + validatorfw_string.ProjectKey(), + }, + MarkdownDescription: "Project key for assigning this repository to. Must be 2 - 32 lowercase alphanumeric and hyphen characters. When assigning repository to a project, repository key must be prefixed with project key, separated by a dash.", + }, + "project_environments": schema.SetAttribute{ + ElementType: types.StringType, + Optional: true, + Computed: true, + Validators: []validator.Set{ + setvalidator.SizeBetween(0, 2), + }, + MarkdownDescription: "Project environment for assigning this repository to. Allow values: \"DEV\", \"PROD\", or one of custom environment. " + + "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.", + }, + "description": schema.StringAttribute{ + Optional: true, + Computed: true, + Default: stringdefault.StaticString(""), + MarkdownDescription: "Public description.", + }, + "notes": schema.StringAttribute{ + Optional: true, + Computed: true, + Default: stringdefault.StaticString(""), + MarkdownDescription: "Internal description.", + }, + "includes_pattern": schema.StringAttribute{ + Optional: true, + Computed: true, + Default: stringdefault.StaticString("**/*"), + Validators: []validator.String{ + stringvalidator.LengthAtLeast(1), + }, + MarkdownDescription: "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": schema.StringAttribute{ + Optional: true, + Computed: true, + Default: stringdefault.StaticString(""), + MarkdownDescription: "List of artifact patterns to exclude when evaluating artifact requests, in the form of `x/y/**/z/*`." + + "By default no artifacts are excluded.", + }, +} + +func RepoLayoutRefAttribute(repositoryType string, packageType string) map[string]schema.Attribute { + var defaultRepoLayout string + if v, ok := defaultRepoLayoutMap[packageType].SupportedRepoTypes[repositoryType]; ok && v { + defaultRepoLayout = defaultRepoLayoutMap[packageType].RepoLayoutRef + } + + return map[string]schema.Attribute{ + "repo_layout_ref": schema.StringAttribute{ + Optional: true, + Computed: true, + Default: stringdefault.StaticString(defaultRepoLayout), + Description: "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.", + }, + } +} + +var BaseSchemaV1 = map[string]*sdkv2_schema.Schema{ "key": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Required: true, ForceNew: true, - ValidateDiagFunc: validator.RepoKey, + ValidateDiagFunc: sdkv2_validator.RepoKey, Description: "A mandatory identifier for the repository that must be unique. Must be 1 - 64 alphanumeric and hyphen characters. It cannot contain spaces or special characters.", }, "project_key": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, - ValidateDiagFunc: validator.ProjectKey, + ValidateDiagFunc: sdkv2_validator.ProjectKey, Description: "Project key for assigning this repository to. Must be 2 - 32 lowercase alphanumeric and hyphen characters. When assigning repository to a project, repository key must be prefixed with project key, separated by a dash.", }, "project_environments": { - Type: schema.TypeSet, - Elem: &schema.Schema{Type: schema.TypeString}, + Type: sdkv2_schema.TypeSet, + Elem: &sdkv2_schema.Schema{Type: sdkv2_schema.TypeString}, MinItems: 0, MaxItems: 2, - Set: schema.HashString, + Set: sdkv2_schema.HashString, Optional: true, Computed: true, Description: "Project environment for assigning this repository to. Allow values: \"DEV\", \"PROD\", or one of custom environment. " + @@ -93,36 +586,36 @@ var BaseSchemaV1 = map[string]*schema.Schema{ "state drift during the update.", }, "package_type": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Required: false, Computed: true, ForceNew: true, }, "description": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, Description: "Public description.", }, "notes": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, Description: "Internal description.", }, "includes_pattern": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, Default: "**/*", Description: "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": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, Description: "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": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, // The default value in the UI is simple-default, in API maven-2-default. Provider will always override it ro math the UI. ValidateDiagFunc: ValidateRepoLayoutRefSchemaOverride, @@ -130,52 +623,52 @@ var BaseSchemaV1 = map[string]*schema.Schema{ }, } -var ProxySchema = map[string]*schema.Schema{ +var ProxySchema = map[string]*sdkv2_schema.Schema{ "proxy": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, Description: "Proxy key from Artifactory Proxies settings. Can't be set if `disable_proxy = true`.", }, "disable_proxy": { - Type: schema.TypeBool, + Type: sdkv2_schema.TypeBool, Optional: true, Default: false, Description: "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.", }, } -var CompressionFormats = map[string]*schema.Schema{ +var CompressionFormats = map[string]*sdkv2_schema.Schema{ "index_compression_formats": { - Type: schema.TypeSet, - Elem: &schema.Schema{ - Type: schema.TypeString, + Type: sdkv2_schema.TypeSet, + Elem: &sdkv2_schema.Schema{ + Type: sdkv2_schema.TypeString, }, - Set: schema.HashString, + Set: sdkv2_schema.HashString, Optional: true, }, } -var AlpinePrimaryKeyPairRef = map[string]*schema.Schema{ +var AlpinePrimaryKeyPairRef = map[string]*sdkv2_schema.Schema{ "primary_keypair_ref": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, Description: "Used to sign index files in Alpine Linux repositories. " + "See: https://www.jfrog.com/confluence/display/JFROG/Alpine+Linux+Repositories#AlpineLinuxRepositories-SigningAlpineLinuxIndex", }, } -var PrimaryKeyPairRef = map[string]*schema.Schema{ +var PrimaryKeyPairRef = map[string]*sdkv2_schema.Schema{ "primary_keypair_ref": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, ValidateDiagFunc: validation.ToDiagFunc(validation.StringIsNotEmpty), Description: "Primary keypair used to sign artifacts. Default value is empty.", }, } -var SecondaryKeyPairRef = map[string]*schema.Schema{ +var SecondaryKeyPairRef = map[string]*sdkv2_schema.Schema{ "secondary_keypair_ref": { - Type: schema.TypeString, + Type: sdkv2_schema.TypeString, Optional: true, ValidateDiagFunc: validation.ToDiagFunc(validation.StringIsNotEmpty), Description: "Secondary keypair used to sign artifacts.", @@ -209,15 +702,15 @@ type ContentSynchronisationSource struct { OriginAbsenceDetection bool `hcl:"source_origin_absence_detection" json:"originAbsenceDetection"` } -type ReadFunc func(d *schema.ResourceData, m interface{}) error +type ReadFunc func(d *sdkv2_schema.ResourceData, m interface{}) error // Constructor Must return a pointer to a struct. When just returning a struct, resty gets confused and thinks it's a map type Constructor func() (interface{}, error) -func Create(ctx context.Context, d *schema.ResourceData, m interface{}, unpack unpacker.UnpackFunc) diag.Diagnostics { +func Create(ctx context.Context, d *sdkv2_schema.ResourceData, m interface{}, unpack unpacker.UnpackFunc) sdkv2_diag.Diagnostics { repo, key, err := unpack(d) if err != nil { - return diag.FromErr(err) + return sdkv2_diag.FromErr(err) } // repo must be a pointer res, err := m.(util.ProviderMetadata).Client.R(). @@ -227,10 +720,10 @@ func Create(ctx context.Context, d *schema.ResourceData, m interface{}, unpack u Put(RepositoriesEndpoint) if err != nil { - return diag.FromErr(err) + return sdkv2_diag.FromErr(err) } if res.IsError() { - return diag.Errorf("%s", res.String()) + return sdkv2_diag.Errorf("%s", res.String()) } d.SetId(key) @@ -238,8 +731,8 @@ func Create(ctx context.Context, d *schema.ResourceData, m interface{}, unpack u return nil } -func MkRepoCreate(unpack unpacker.UnpackFunc, read schema.ReadContextFunc) schema.CreateContextFunc { - return func(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { +func MkRepoCreate(unpack unpacker.UnpackFunc, read sdkv2_schema.ReadContextFunc) sdkv2_schema.CreateContextFunc { + return func(ctx context.Context, d *sdkv2_schema.ResourceData, m interface{}) sdkv2_diag.Diagnostics { err := Create(ctx, d, m, unpack) if err != nil { return err @@ -249,11 +742,11 @@ func MkRepoCreate(unpack unpacker.UnpackFunc, read schema.ReadContextFunc) schem } } -func MkRepoRead(pack packer.PackFunc, construct Constructor) schema.ReadContextFunc { - return func(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { +func MkRepoRead(pack packer.PackFunc, construct Constructor) sdkv2_schema.ReadContextFunc { + return func(ctx context.Context, d *sdkv2_schema.ResourceData, m interface{}) sdkv2_diag.Diagnostics { repo, err := construct() if err != nil { - return diag.FromErr(err) + return sdkv2_diag.FromErr(err) } // repo must be a pointer @@ -263,24 +756,24 @@ func MkRepoRead(pack packer.PackFunc, construct Constructor) schema.ReadContextF Get(RepositoriesEndpoint) if err != nil { - return diag.FromErr(err) + return sdkv2_diag.FromErr(err) } if resp.StatusCode() == http.StatusBadRequest || resp.StatusCode() == http.StatusNotFound { d.SetId("") return nil } if resp.IsError() { - return diag.Errorf("%s", resp.String()) + return sdkv2_diag.Errorf("%s", resp.String()) } - return diag.FromErr(pack(repo, d)) + return sdkv2_diag.FromErr(pack(repo, d)) } } -func Update(ctx context.Context, d *schema.ResourceData, m interface{}, unpack unpacker.UnpackFunc) diag.Diagnostics { +func Update(ctx context.Context, d *sdkv2_schema.ResourceData, m interface{}, unpack unpacker.UnpackFunc) sdkv2_diag.Diagnostics { repo, key, err := unpack(d) if err != nil { - return diag.FromErr(err) + return sdkv2_diag.FromErr(err) } resp, err := m.(util.ProviderMetadata).Client.R(). @@ -289,11 +782,11 @@ func Update(ctx context.Context, d *schema.ResourceData, m interface{}, unpack u SetPathParam("key", d.Id()). Post(RepositoriesEndpoint) if err != nil { - return diag.FromErr(err) + return sdkv2_diag.FromErr(err) } if resp.IsError() { - return diag.Errorf("%s", resp.String()) + return sdkv2_diag.Errorf("%s", resp.String()) } d.SetId(key) @@ -309,21 +802,21 @@ func Update(ctx context.Context, d *schema.ResourceData, m interface{}, unpack u var err error if assignToProject { - err = assignRepoToProject(key, newProjectKey, m.(util.ProviderMetadata).Client) + err = AssignRepoToProject(key, newProjectKey, m.(util.ProviderMetadata).Client) } else if unassignFromProject { - err = unassignRepoFromProject(key, m.(util.ProviderMetadata).Client) + err = UnassignRepoFromProject(key, m.(util.ProviderMetadata).Client) } if err != nil { - return diag.FromErr(err) + return sdkv2_diag.FromErr(err) } } return nil } -func MkRepoUpdate(unpack unpacker.UnpackFunc, read schema.ReadContextFunc) schema.UpdateContextFunc { - return func(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { +func MkRepoUpdate(unpack unpacker.UnpackFunc, read sdkv2_schema.ReadContextFunc) sdkv2_schema.UpdateContextFunc { + return func(ctx context.Context, d *sdkv2_schema.ResourceData, m interface{}) sdkv2_diag.Diagnostics { err := Update(ctx, d, m, unpack) if err != nil { return err @@ -333,7 +826,7 @@ func MkRepoUpdate(unpack unpacker.UnpackFunc, read schema.ReadContextFunc) schem } } -func assignRepoToProject(repoKey string, projectKey string, client *resty.Client) error { +func AssignRepoToProject(repoKey string, projectKey string, client *resty.Client) error { _, err := client.R(). SetPathParams(map[string]string{ "repoKey": repoKey, @@ -343,7 +836,7 @@ func assignRepoToProject(repoKey string, projectKey string, client *resty.Client return err } -func unassignRepoFromProject(repoKey string, client *resty.Client) error { +func UnassignRepoFromProject(repoKey string, client *resty.Client) error { _, err := client.R(). SetPathParam("repoKey", repoKey). Delete("access/api/v1/projects/_/attach/repositories/{repoKey}") @@ -379,14 +872,14 @@ func GetArtifactCount(repoKey string, client *resty.Client) (int, error) { return len(fileList.Files), nil } -func DeleteRepo(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { +func DeleteRepo(ctx context.Context, d *sdkv2_schema.ResourceData, m interface{}) sdkv2_diag.Diagnostics { resp, err := m.(util.ProviderMetadata).Client.R(). AddRetryCondition(client.RetryOnMergeError). SetPathParam("key", d.Id()). Delete(RepositoriesEndpoint) if err != nil { - return diag.FromErr(err) + return sdkv2_diag.FromErr(err) } if resp.StatusCode() == http.StatusBadRequest || resp.StatusCode() == http.StatusNotFound { @@ -395,7 +888,7 @@ func DeleteRepo(ctx context.Context, d *schema.ResourceData, m interface{}) diag } if resp.IsError() { - return diag.Errorf("%s", resp.String()) + return sdkv2_diag.Errorf("%s", resp.String()) } return nil @@ -413,12 +906,16 @@ var PackageTypesLikeGradle = []string{ var ProjectEnvironmentsSupported = []string{"DEV", "PROD"} -func RepoLayoutRefSchema(repositoryType string, packageType string) map[string]*schema.Schema { - return map[string]*schema.Schema{ +func RepoLayoutRefSDKv2Schema(repositoryType string, packageType string) map[string]*sdkv2_schema.Schema { + return map[string]*sdkv2_schema.Schema{ "repo_layout_ref": { - Type: schema.TypeString, - Optional: true, - DefaultFunc: GetDefaultRepoLayoutRef(repositoryType, packageType), + Type: sdkv2_schema.TypeString, + Optional: true, + DefaultFunc: func() (interface{}, error) { + var ref interface{} + ref, err := GetDefaultRepoLayoutRef(repositoryType, packageType) + return ref, err + }, Description: fmt.Sprintf("Repository layout key for the %s repository", repositoryType), }, } @@ -443,9 +940,9 @@ func HandleResetWithNonExistentValue(d *utilsdk.ResourceData, key string) string const CustomProjectEnvironmentSupportedVersion = "7.53.1" -func ProjectEnvironmentsDiff(ctx context.Context, diff *schema.ResourceDiff, meta interface{}) error { +func ProjectEnvironmentsDiff(ctx context.Context, diff *sdkv2_schema.ResourceDiff, meta interface{}) error { if data, ok := diff.GetOk("project_environments"); ok { - projectEnvironments := data.(*schema.Set).List() + projectEnvironments := data.(*sdkv2_schema.Set).List() providerMetadata := meta.(util.ProviderMetadata) isSupported, err := util.CheckVersion(providerMetadata.ArtifactoryVersion, CustomProjectEnvironmentSupportedVersion) @@ -458,7 +955,7 @@ func ProjectEnvironmentsDiff(ctx context.Context, diff *schema.ResourceDiff, met return fmt.Errorf("for Artifactory %s or later, only one environment can be assigned to a repository", CustomProjectEnvironmentSupportedVersion) } } else { // Before 7.53.1 - projectEnvironments := data.(*schema.Set).List() + projectEnvironments := data.(*sdkv2_schema.Set).List() for _, projectEnvironment := range projectEnvironments { if !slices.Contains(ProjectEnvironmentsSupported, projectEnvironment.(string)) { return fmt.Errorf("project_environment %s not allowed", projectEnvironment) @@ -470,7 +967,7 @@ func ProjectEnvironmentsDiff(ctx context.Context, diff *schema.ResourceDiff, met return nil } -func VerifyDisableProxy(_ context.Context, diff *schema.ResourceDiff, _ interface{}) error { +func VerifyDisableProxy(_ context.Context, diff *sdkv2_schema.ResourceDiff, _ interface{}) error { disableProxy := diff.Get("disable_proxy").(bool) proxy := diff.Get("proxy").(string) @@ -481,21 +978,21 @@ func VerifyDisableProxy(_ context.Context, diff *schema.ResourceDiff, _ interfac return nil } -func MkResourceSchema(skeemas map[int16]map[string]*schema.Schema, packer packer.PackFunc, unpack unpacker.UnpackFunc, constructor Constructor) *schema.Resource { +func MkResourceSchema(skeemas map[int16]map[string]*sdkv2_schema.Schema, packer packer.PackFunc, unpack unpacker.UnpackFunc, constructor Constructor) *sdkv2_schema.Resource { var reader = MkRepoRead(packer, constructor) - return &schema.Resource{ + return &sdkv2_schema.Resource{ CreateContext: MkRepoCreate(unpack, reader), ReadContext: reader, UpdateContext: MkRepoUpdate(unpack, reader), DeleteContext: DeleteRepo, - Importer: &schema.ResourceImporter{ - StateContext: schema.ImportStatePassthroughContext, + Importer: &sdkv2_schema.ResourceImporter{ + StateContext: sdkv2_schema.ImportStatePassthroughContext, }, Schema: skeemas[1], SchemaVersion: 1, - StateUpgraders: []schema.StateUpgrader{ + StateUpgraders: []sdkv2_schema.StateUpgrader{ { // this only works because the schema hasn't changed, except the removal of default value // from `project_key` attribute. Future common schema changes that involve attributes should @@ -510,8 +1007,8 @@ func MkResourceSchema(skeemas map[int16]map[string]*schema.Schema, packer packer } } -func Resource(skeema map[string]*schema.Schema) *schema.Resource { - return &schema.Resource{ +func Resource(skeema map[string]*sdkv2_schema.Schema) *sdkv2_schema.Resource { + return &sdkv2_schema.Resource{ Schema: skeema, } } @@ -531,10 +1028,10 @@ func CheckRepo(id string, request *resty.Request) (*resty.Response, error) { return request.SetPathParam("key", id).Head(RepositoriesEndpoint) } -func ValidateRepoLayoutRefSchemaOverride(_ interface{}, _ cty.Path) diag.Diagnostics { - return diag.Diagnostics{ - diag.Diagnostic{ - Severity: diag.Error, +func ValidateRepoLayoutRefSchemaOverride(_ interface{}, _ cty.Path) sdkv2_diag.Diagnostics { + return sdkv2_diag.Diagnostics{ + sdkv2_diag.Diagnostic{ + Severity: sdkv2_diag.Error, Summary: "Always override repo_layout_ref attribute in the schema", Detail: "Always override repo_layout_ref attribute in the schema on top of base schema", }, @@ -547,11 +1044,9 @@ type SupportedRepoClasses struct { } // GetDefaultRepoLayoutRef return the default repo layout by Repository Type & Package Type -func GetDefaultRepoLayoutRef(repositoryType, packageType string) func() (interface{}, error) { - return func() (interface{}, error) { - if v, ok := defaultRepoLayoutMap[packageType].SupportedRepoTypes[repositoryType]; ok && v { - return defaultRepoLayoutMap[packageType].RepoLayoutRef, nil - } - return nil, fmt.Errorf("default repo layout not found for repository type %s & package type %s", repositoryType, packageType) +func GetDefaultRepoLayoutRef(repositoryType, packageType string) (string, error) { + if v, ok := defaultRepoLayoutMap[packageType].SupportedRepoTypes[repositoryType]; ok && v { + return defaultRepoLayoutMap[packageType].RepoLayoutRef, nil } + return "", fmt.Errorf("default repo layout not found for repository type %s & package type %s", repositoryType, packageType) } diff --git a/pkg/artifactory/resource/repository/repository_test.go b/pkg/artifactory/resource/repository/repository_test.go index 8e2e8ff4e..89b7158ef 100644 --- a/pkg/artifactory/resource/repository/repository_test.go +++ b/pkg/artifactory/resource/repository/repository_test.go @@ -5,7 +5,6 @@ import ( "regexp" "testing" - "github.com/go-resty/resty/v2" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/acctest" "github.com/jfrog/terraform-provider-artifactory/v12/pkg/artifactory/resource/repository" @@ -58,8 +57,8 @@ func TestAccRepository_assign_project_key_gh_329(t *testing.T) { Source: "jfrog/project", }, }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, @@ -85,10 +84,23 @@ func TestAccRepository_unassign_project_key_gh_329(t *testing.T) { _, fqrn, name := testutil.MkNames(repoName, "artifactory_local_generic_repository") localRepositoryWithProjectKey := util.ExecuteTemplate("TestAccLocalGenericRepository", ` + resource "project" "{{ .projectKey }}" { + key = "{{ .projectKey }}" + display_name = "{{ .projectKey }}" + description = "My Project" + admin_privileges { + manage_members = true + manage_resources = true + index_resources = true + } + max_storage_in_gibibytes = 10 + block_deployments_on_limit = false + email_notification = true + } + resource "artifactory_local_generic_repository" "{{ .name }}" { key = "{{ .name }}" - project_key = "{{ .projectKey }}" - project_environments = ["DEV"] + project_key = project.{{ .projectKey }}.key } `, map[string]interface{}{ "name": name, @@ -96,23 +108,37 @@ func TestAccRepository_unassign_project_key_gh_329(t *testing.T) { }) localRepositoryNoProjectKey := util.ExecuteTemplate("TestAccLocalGenericRepository", ` + resource "project" "{{ .projectKey }}" { + key = "{{ .projectKey }}" + display_name = "{{ .projectKey }}" + description = "My Project" + admin_privileges { + manage_members = true + manage_resources = true + index_resources = true + } + max_storage_in_gibibytes = 10 + block_deployments_on_limit = false + email_notification = true + } + resource "artifactory_local_generic_repository" "{{ .name }}" { key = "{{ .name }}" } `, map[string]interface{}{ - "name": name, + "name": name, + "projectKey": projectKey, }) resource.Test(t, resource.TestCase{ - PreCheck: func() { - acctest.PreCheck(t) - acctest.CreateProject(t, projectKey) + PreCheck: func() { acctest.PreCheck(t) }, + ExternalProviders: map[string]resource.ExternalProvider{ + "project": { + Source: "jfrog/project", + }, }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { - acctest.DeleteProject(t, projectKey) - return acctest.CheckRepo(id, request) - }), + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryWithProjectKey, @@ -171,8 +197,8 @@ func TestAccRepository_can_set_two_project_environments_before_7_53_1(t *testing Source: "jfrog/project", }, }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { SkipFunc: func() (bool, error) { @@ -229,8 +255,8 @@ func TestAccRepository_invalid_project_environments_before_7_53_1(t *testing.T) Source: "jfrog/project", }, }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { SkipFunc: func() (bool, error) { @@ -283,8 +309,8 @@ func TestAccRepository_invalid_project_environments_after_7_53_1(t *testing.T) { Source: "jfrog/project", }, }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { SkipFunc: func() (bool, error) { @@ -293,7 +319,7 @@ func TestAccRepository_invalid_project_environments_after_7_53_1(t *testing.T) { return !isSupported, err }, Config: localRepositoryBasic, - ExpectError: regexp.MustCompile(fmt.Sprintf(".*for Artifactory %s or later, only one environment can be assigned to a repository.*", repository.CustomProjectEnvironmentSupportedVersion)), + ExpectError: regexp.MustCompile(fmt.Sprintf(".*for Artifactory %s or later, only one environment can be assigned to a\n.*repository.*", repository.CustomProjectEnvironmentSupportedVersion)), }, }, }) @@ -314,13 +340,13 @@ func TestAccRepository_invalid_key(t *testing.T) { `, params) resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + PreCheck: func() { acctest.PreCheck(t) }, + ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: localRepositoryBasic, - ExpectError: regexp.MustCompile(`.*expected length of key to be in the range \(1 - 64\).*`), + ExpectError: regexp.MustCompile(`.*Attribute key must be 1 - 64 alphanumeric and hyphen characters.*`), }, }, }) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_alpine_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_alpine_repository.go index f75b86ac1..a51cdcd1b 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_alpine_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_alpine_repository.go @@ -11,7 +11,7 @@ import ( var alpineSchema = lo.Assign( RetrievalCachePeriodSecondsSchema, repository.PrimaryKeyPairRef, - repository.RepoLayoutRefSchema(Rclass, repository.AlpinePackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.AlpinePackageType), ) var AlpineSchemas = GetSchemas(alpineSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_bower_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_bower_repository.go index 23db3ad12..4d911e166 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_bower_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_bower_repository.go @@ -9,7 +9,7 @@ import ( var bowerSchema = lo.Assign( externalDependenciesSchema, - repository.RepoLayoutRefSchema(Rclass, repository.BowerPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.BowerPackageType), ) var BowerSchemas = GetSchemas(bowerSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_conan_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_conan_repository.go index 3c6e32bc8..0a5879c54 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_conan_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_conan_repository.go @@ -11,7 +11,7 @@ import ( var conanSchema = lo.Assign( RetrievalCachePeriodSecondsSchema, repository.ConanBaseSchema, - repository.RepoLayoutRefSchema(Rclass, repository.ConanPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.ConanPackageType), ) var ConanSchemas = GetSchemas(conanSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_debian_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_debian_repository.go index a61147459..17c4fb368 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_debian_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_debian_repository.go @@ -35,7 +35,7 @@ var debianSchema = lo.Assign( StateFunc: utilsdk.FormatCommaSeparatedString, Description: `Specifying architectures will speed up Artifactory's initial metadata indexing process. The default architecture values are amd64 and i386.`, }, - }, repository.RepoLayoutRefSchema(Rclass, repository.DebianPackageType), + }, repository.RepoLayoutRefSDKv2Schema(Rclass, repository.DebianPackageType), ) var DebianSchemas = GetSchemas(debianSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_docker_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_docker_repository.go index 39ce417d9..7a920fd47 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_docker_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_docker_repository.go @@ -17,7 +17,7 @@ var dockerSchema = lo.Assign( Description: "When enabled, in cases where the same Docker tag exists in two or more of the aggregated repositories, Artifactory will return the tag that has the latest timestamp.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.DockerPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.DockerPackageType), ) var DockerSchemas = GetSchemas(dockerSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_generic_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_generic_repository.go index 1d5ed34ce..3cb579dcd 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_generic_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_generic_repository.go @@ -19,7 +19,7 @@ func ResourceArtifactoryVirtualGenericRepository(packageType string) *schema.Res return repo, repo.Id(), nil } - genericSchemas := GetSchemas(repository.RepoLayoutRefSchema(Rclass, packageType)) + genericSchemas := GetSchemas(repository.RepoLayoutRefSDKv2Schema(Rclass, packageType)) return repository.MkResourceSchema( genericSchemas, @@ -32,7 +32,7 @@ func ResourceArtifactoryVirtualGenericRepository(packageType string) *schema.Res var RepoWithRetrivalCachePeriodSecsVirtualSchemas = func(packageType string) map[int16]map[string]*schema.Schema { var repoWithRetrivalCachePeriodSecsVirtualSchema = lo.Assign( RetrievalCachePeriodSecondsSchema, - repository.RepoLayoutRefSchema(Rclass, packageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, packageType), ) return GetSchemas(repoWithRetrivalCachePeriodSecsVirtualSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_go_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_go_repository.go index ebb9d0e69..da624aaf6 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_go_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_go_repository.go @@ -27,7 +27,7 @@ var goSchema = lo.Assign( "follow to download remote modules from, when presented with 'go-import' meta tags in the remote repository response.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.GoPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.GoPackageType), ) var GoSchemas = GetSchemas(goSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_helm_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_helm_repository.go index fedb4c6a9..907b52173 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_helm_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_helm_repository.go @@ -18,7 +18,7 @@ var helmSchema = lo.Assign( Description: "From Artifactory 7.24.1 (SaaS Version), you can explicitly state a specific aggregated local or remote repository to fetch from a virtual by assigning namespaces to local and remote repositories\nSee https://www.jfrog.com/confluence/display/JFROG/Kubernetes+Helm+Chart+Repositories#KubernetesHelmChartRepositories-NamespaceSupportforHelmVirtualRepositories. Default to 'false'", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.HelmPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.HelmPackageType), ) var HelmSchemas = GetSchemas(helmSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_helmoci_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_helmoci_repository.go index 76c40508b..05c52c53d 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_helmoci_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_helmoci_repository.go @@ -17,7 +17,7 @@ var helmOCISchema = lo.Assign( Description: "When enabled, in cases where the same OCI tag exists in two or more of the aggregated repositories, Artifactory will return the tag that has the latest timestamp.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.HelmOCIPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.HelmOCIPackageType), ) var HelmOCISchemas = GetSchemas(helmOCISchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_java_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_java_repository.go index d8363afd7..7185a2b76 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_java_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_java_repository.go @@ -48,7 +48,7 @@ var JavaSchema = map[string]*schema.Schema{ func ResourceArtifactoryVirtualJavaRepository(packageType string) *schema.Resource { var mavenSchema = lo.Assign( JavaSchema, - repository.RepoLayoutRefSchema(Rclass, packageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, packageType), ) var mavenSchemas = GetSchemas(mavenSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_npm_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_npm_repository.go index f92fb842b..c8dd3d9db 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_npm_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_npm_repository.go @@ -11,7 +11,7 @@ import ( var npmSchema = lo.Assign( RetrievalCachePeriodSecondsSchema, externalDependenciesSchema, - repository.RepoLayoutRefSchema(Rclass, repository.NPMPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.NPMPackageType), ) var NPMSchemas = GetSchemas(npmSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_nuget_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_nuget_repository.go index c53b5b584..433387512 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_nuget_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_nuget_repository.go @@ -17,7 +17,7 @@ var nugetSchema = lo.Assign( Description: "If set, user authentication is required when accessing the repository. An anonymous request will display an HTTP 401 error. This is also enforced when aggregated repositories support anonymous requests.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.NugetPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.NugetPackageType), ) var NugetSchemas = GetSchemas(nugetSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_oci_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_oci_repository.go index 970aabe27..c09b55bfc 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_oci_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_oci_repository.go @@ -17,7 +17,7 @@ var ociSchema = lo.Assign( Description: "When enabled, in cases where the same OCI tag exists in two or more of the aggregated repositories, Artifactory will return the tag that has the latest timestamp.", }, }, - repository.RepoLayoutRefSchema(Rclass, repository.OCIPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.OCIPackageType), ) var OCISchemas = GetSchemas(ociSchema) diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_repository_test.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_repository_test.go index aeda39d2a..bdf678e58 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_repository_test.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_repository_test.go @@ -32,7 +32,7 @@ func TestAccVirtualRepository_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -85,7 +85,7 @@ func TestAccVirtualRepository_reset_default_deployment_repo(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -144,7 +144,7 @@ func TestAccVirtualGoRepository_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -158,8 +158,8 @@ func TestAccVirtualGoRepository_basic(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "external_dependencies_patterns.1", "**/go.googlesource.com/**"), resource.TestCheckResourceAttr(fqrn, "external_dependencies_patterns.#", "2"), resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { - r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType)() - return r.(string) + r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType) + return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, @@ -191,7 +191,7 @@ func TestAccVirtualConanRepository_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -230,7 +230,7 @@ func TestAccVirtualGenericRepository_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -240,8 +240,8 @@ func TestAccVirtualGenericRepository_basic(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key", name), resource.TestCheckResourceAttr(fqrn, "package_type", packageType), resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { - r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType)() - return r.(string) + r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType) + return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, @@ -277,7 +277,7 @@ func TestAccVirtualMavenRepository_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -291,8 +291,8 @@ func TestAccVirtualMavenRepository_basic(t *testing.T) { resource.TestCheckResourceAttr(fqrn, "key_pair", ""), resource.TestCheckResourceAttr(fqrn, "pom_repository_references_cleanup_policy", "discard_active_reference"), resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { - r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType)() - return r.(string) + r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType) + return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, @@ -325,7 +325,7 @@ func TestAccVirtualHelmRepository_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -472,9 +472,9 @@ EOF PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, CheckDestroy: acctest.CompositeCheckDestroy( - acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), - acctest.VerifyDeleted(kpFqrn, "", security.VerifyKeyPair), - acctest.VerifyDeleted(kpFqrn2, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), + acctest.VerifyDeleted(t, kpFqrn, "", security.VerifyKeyPair), + acctest.VerifyDeleted(t, kpFqrn2, "", security.VerifyKeyPair), ), Steps: []resource.TestStep{ { @@ -485,8 +485,8 @@ EOF resource.TestCheckResourceAttr(fqrn, "primary_keypair_ref", kpName), resource.TestCheckResourceAttr(fqrn, "secondary_keypair_ref", kpName2), resource.TestCheckResourceAttr(fqrn, "repo_layout_ref", func() string { - r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType)() - return r.(string) + r, _ := repository.GetDefaultRepoLayoutRef(virtual.Rclass, packageType) + return r }()), //Check to ensure repository layout is set as per default even when it is not passed. ), }, @@ -524,7 +524,7 @@ func TestAccVirtualRepository_update(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -578,7 +578,7 @@ func TestAccVirtualNugetRepository_PackageCreationFull(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -621,7 +621,7 @@ func TestAccVirtualRepository_full(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -674,7 +674,7 @@ func TestAccVirtualGenericRepositoryWithProjectAttributesGH318(t *testing.T) { acctest.CreateProject(t, projectKey) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { acctest.DeleteProject(t, projectKey) return acctest.CheckRepo(id, request) }), @@ -721,7 +721,7 @@ func TestAccVirtualRepositoryWithInvalidProjectKeyGH318(t *testing.T) { acctest.CreateProject(t, projectKey) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", func(id string, request *resty.Request) (*resty.Response, error) { acctest.DeleteProject(t, projectKey) return acctest.CheckRepo(id, request) }), @@ -808,7 +808,7 @@ func mkNewVirtualTestCase(packageType string, t *testing.T, extraFields map[stri return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -918,7 +918,7 @@ func TestAccVirtualBowerExternalDependenciesRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -1008,7 +1008,7 @@ func TestAccVirtualGoExternalDependenciesRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -1106,7 +1106,7 @@ func TestAccVirtualNpmExternalDependenciesRepository(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -1173,7 +1173,7 @@ func TestAccVirtualDebianRepository_full(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProviderFactories: acctest.ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { diff --git a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_rpm_repository.go b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_rpm_repository.go index 7cfb77ba4..53289ecbd 100644 --- a/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_rpm_repository.go +++ b/pkg/artifactory/resource/repository/virtual/resource_artifactory_virtual_rpm_repository.go @@ -11,7 +11,7 @@ import ( var rpmSchema = lo.Assign( repository.PrimaryKeyPairRef, repository.SecondaryKeyPairRef, - repository.RepoLayoutRefSchema(Rclass, repository.RPMPackageType), + repository.RepoLayoutRefSDKv2Schema(Rclass, repository.RPMPackageType), ) var RPMSchemas = GetSchemas(rpmSchema) diff --git a/pkg/artifactory/resource/security/resource_artifactory_scoped_token_test.go b/pkg/artifactory/resource/security/resource_artifactory_scoped_token_test.go index 8d0d98f62..e4f85b9e8 100644 --- a/pkg/artifactory/resource/security/resource_artifactory_scoped_token_test.go +++ b/pkg/artifactory/resource/security/resource_artifactory_scoped_token_test.go @@ -364,7 +364,7 @@ func TestAccScopedToken_WithDefaults(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", checkAccessToken), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", checkAccessToken), Steps: []resource.TestStep{ { Config: accessTokenConfig, @@ -455,7 +455,7 @@ func TestAccScopedToken_WithAttributes(t *testing.T) { Source: "jfrog/project", }, }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", checkAccessToken), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", checkAccessToken), Steps: []resource.TestStep{ { Config: accessTokenConfig, diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_artifact_lifecycle_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_artifact_lifecycle_test.go index 5c20ccd14..e02d001bb 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_artifact_lifecycle_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_artifact_lifecycle_test.go @@ -38,7 +38,7 @@ func TestAccCustomWebhook_ArtifactLifecycle_UpgradeFromSDKv2(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: config, @@ -102,7 +102,7 @@ func TestAccCustomWebhook_ArtifactLifecycle(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: webhookConfig, diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_build_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_build_test.go index f403f4553..0abfa8020 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_build_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_build_test.go @@ -38,7 +38,7 @@ func TestAccCustomWebhook_Build_UpgradeFromSDKv2(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -95,7 +95,7 @@ func TestAccCustomWebhook_Build(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "", acctest.CheckRepo), Steps: []resource.TestStep{ { diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_release_bundle_v2_promotion_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_release_bundle_v2_promotion_test.go index 8d757f9ce..4d6689b84 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_release_bundle_v2_promotion_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_release_bundle_v2_promotion_test.go @@ -48,7 +48,7 @@ func TestAccCustomWebhook_ReleaseBundleV2Promotion_UpgradeFromSDKv2(t *testing.T resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -127,7 +127,7 @@ func TestAccCustomWebhook_ReleaseBundleV2Promotion(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_repo_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_repo_test.go index ef69384ad..c2e2b6407 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_repo_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_repo_test.go @@ -134,7 +134,7 @@ func customWebhookTestCase(webhookType string, t *testing.T) (*testing.T, resour return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", testCheckWebhook), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", testCheckWebhook), Steps: []resource.TestStep{ { @@ -274,7 +274,7 @@ func customWebhookMigrateFromSDKv2TestCase(webhookType string, t *testing.T) (*t return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", testCheckWebhook), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", testCheckWebhook), Steps: []resource.TestStep{ { diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_test.go index 3f427710c..0a4efce2f 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_test.go @@ -47,7 +47,7 @@ func customWebhookCriteriaValidationTestCase(webhookType string, t *testing.T) ( return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: webhookConfig, diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_user_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_user_test.go index 78982987e..e07ec370a 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_user_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_custom_webhook_user_test.go @@ -38,7 +38,7 @@ func TestAccCustomWebhook_User_UpgradeFromSDKv2(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -103,7 +103,7 @@ func TestAccCustomWebhook_User(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_artifact_lifecycle_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_artifact_lifecycle_test.go index 31c19aad9..efd40a225 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_artifact_lifecycle_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_artifact_lifecycle_test.go @@ -38,7 +38,7 @@ func TestAccWebhook_ArtifactLifecycle_UpgradeFromSDKv2(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -103,7 +103,7 @@ func TestAccWebhook_ArtifactLifecycle(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_build_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_build_test.go index 3b1d0e505..304ee2934 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_build_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_build_test.go @@ -52,7 +52,7 @@ func TestAccWebhook_Build_UpgradeFromSDKv2(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -108,7 +108,7 @@ func TestAccWebhook_Build(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: webhookConfig, diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_release_bundle_v2_promotion_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_release_bundle_v2_promotion_test.go index aa213e7a4..b9f42720b 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_release_bundle_v2_promotion_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_release_bundle_v2_promotion_test.go @@ -45,7 +45,7 @@ func TestAccWebhook_ReleaseBundleV2Promotion_UpgradeFromSDKv2(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -121,7 +121,7 @@ func TestAccWebhook_ReleaseBundleV2Promotion(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_repo_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_repo_test.go index 3d4cbdf21..ae67feda3 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_repo_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_repo_test.go @@ -177,7 +177,7 @@ func webhookTestCase(webhookType string, t *testing.T) (*testing.T, resource.Tes return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", testCheckWebhook), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", testCheckWebhook), Steps: []resource.TestStep{ { Config: webhookConfig, @@ -291,7 +291,7 @@ func webhookMigrateFromSDKv2TestCase(webhookType string, t *testing.T) (*testing return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", testCheckWebhook), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", testCheckWebhook), Steps: []resource.TestStep{ { Config: config, diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_test.go index 20a15900f..4cae5d320 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_test.go @@ -89,7 +89,7 @@ func webhookCriteriaValidationTestCase(webhookType string, t *testing.T) (*testi return t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: webhookConfig, @@ -130,7 +130,7 @@ func TestAccWebhook_EventTypesValidation(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: webhookConfig, @@ -169,7 +169,7 @@ func TestAccWebhook_HandlerValidation_EmptyProxy(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: webhookConfig, @@ -209,7 +209,7 @@ func TestAccWebhook_HandlerValidation_ProxyWithURL(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6MuxProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { Config: webhookConfig, @@ -274,7 +274,7 @@ func TestAccWebhook_GH476WebHookChangeBearerSet0(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", testCheckWebhook), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", testCheckWebhook), Steps: []resource.TestStep{ { Config: config1, diff --git a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_user_test.go b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_user_test.go index 9d0d1bcf5..b833f3edd 100644 --- a/pkg/artifactory/resource/webhook/resource_artifactory_webhook_user_test.go +++ b/pkg/artifactory/resource/webhook/resource_artifactory_webhook_user_test.go @@ -35,7 +35,7 @@ func TestAccWebhook_User_UpgradeFromSDKv2(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ { @@ -95,7 +95,7 @@ func TestAccWebhook_User(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, ProtoV6ProviderFactories: acctest.ProtoV6ProviderFactories, - CheckDestroy: acctest.VerifyDeleted(fqrn, "key", acctest.CheckRepo), + CheckDestroy: acctest.VerifyDeleted(t, fqrn, "key", acctest.CheckRepo), Steps: []resource.TestStep{ {