diff --git a/artifactory/services/localrepository.go b/artifactory/services/localrepository.go index 1abae2cc9..0507af00c 100644 --- a/artifactory/services/localrepository.go +++ b/artifactory/services/localrepository.go @@ -389,6 +389,7 @@ func NewSwiftLocalRepositoryParams() SwiftLocalRepositoryParams { type TerraformLocalRepositoryParams struct { LocalRepositoryBaseParams + TerraformRepositoryParams } func NewTerraformLocalRepositoryParams() TerraformLocalRepositoryParams { diff --git a/artifactory/services/remoterepository.go b/artifactory/services/remoterepository.go index f675af3d4..599851f1f 100644 --- a/artifactory/services/remoterepository.go +++ b/artifactory/services/remoterepository.go @@ -31,6 +31,10 @@ func (rrs *RemoteRepositoryService) Alpine(params AlpineRemoteRepositoryParams) return rrs.performRequest(params, params.Key) } +func (rrs *RemoteRepositoryService) Ansible(params AnsibleRemoteRepositoryParams) error { + return rrs.performRequest(params, params.Key) +} + func (rrs *RemoteRepositoryService) Bower(params BowerRemoteRepositoryParams) error { return rrs.performRequest(params, params.Key) } @@ -232,6 +236,14 @@ func NewAlpineRemoteRepositoryParams() AlpineRemoteRepositoryParams { return AlpineRemoteRepositoryParams{RemoteRepositoryBaseParams: NewRemoteRepositoryPackageParams("alpine")} } +type AnsibleRemoteRepositoryParams struct { + RemoteRepositoryBaseParams +} + +func NewAnsibleRemoteRepositoryParams() AnsibleRemoteRepositoryParams { + return AnsibleRemoteRepositoryParams{RemoteRepositoryBaseParams: NewRemoteRepositoryPackageParams("ansible")} +} + type BowerRemoteRepositoryParams struct { RemoteRepositoryBaseParams VcsGitRemoteRepositoryParams @@ -371,7 +383,7 @@ func NewGradleRemoteRepositoryParams() GradleRemoteRepositoryParams { type HelmRemoteRepositoryParams struct { RemoteRepositoryBaseParams - ChartsBaseUrl string `json:"chartsBaseUrl,omitempty"` + ChartsBaseUrl string `json:"chartsBaseUrl"` // do not set omitempty to be able to empty the value when updating ExternalDependenciesEnabled bool `json:"externalDependenciesEnabled,omitempty"` ExternalDependenciesPatterns []string `json:"externalDependenciesPatterns,omitempty"` } @@ -408,10 +420,11 @@ func NewNpmRemoteRepositoryParams() NpmRemoteRepositoryParams { type NugetRemoteRepositoryParams struct { RemoteRepositoryBaseParams - FeedContextPath string `json:"feedContextPath,omitempty"` + FeedContextPath string `json:"feedContextPath"` // do not set omitempty to be able to empty the value according https://jfrog.com/help/r/artifactory-step-by-step-guide-to-configure-nuget-smart-remote-repository/step-4 DownloadContextPath string `json:"downloadContextPath,omitempty"` V3FeedUrl string `json:"v3FeedUrl,omitempty"` ForceNugetAuthentication *bool `json:"forceNugetAuthentication,omitempty"` + SymbolServerUrl string `json:"symbolServerUrl,omitempty"` } func NewNugetRemoteRepositoryParams() NugetRemoteRepositoryParams { @@ -484,6 +497,8 @@ type TerraformRemoteRepositoryParams struct { VcsGitRemoteRepositoryParams TerraformRegistryUrl string `json:"terraformRegistryUrl,omitempty"` TerraformProvidersUrl string `json:"terraformProvidersUrl,omitempty"` + ProvidersUrl string `json:"providersUrl,omitempty"` + TerraformType string `json:"terraformType,omitempty"` } func NewTerraformRemoteRepositoryParams() TerraformRemoteRepositoryParams { diff --git a/artifactory/services/repository.go b/artifactory/services/repository.go index 42aff5ee6..0dfb09878 100644 --- a/artifactory/services/repository.go +++ b/artifactory/services/repository.go @@ -81,6 +81,7 @@ type AdditionalRepositoryBaseParams struct { type CargoRepositoryParams struct { CargoAnonymousAccess *bool `json:"cargoAnonymousAccess,omitempty"` + CargoInternalIndex *bool `json:"cargoInternalIndex,omitempty"` } type DebianRepositoryParams struct { @@ -104,6 +105,10 @@ type JavaPackageManagersRepositoryParams struct { ChecksumPolicyType string `json:"checksumPolicyType,omitempty"` } +type TerraformRepositoryParams struct { + TerraformType string `json:"terraformType"` +} + type KeyPairRefsRepositoryParams struct { PrimaryKeyPairRef string `json:"primaryKeyPairRef,omitempty"` SecondaryKeyPairRef string `json:"secondaryKeyPairRef,omitempty"` diff --git a/tests/artifactorylocalrepository_test.go b/tests/artifactorylocalrepository_test.go index 67bd01e30..5afcfd850 100644 --- a/tests/artifactorylocalrepository_test.go +++ b/tests/artifactorylocalrepository_test.go @@ -649,6 +649,7 @@ func localTerraformTest(t *testing.T) { tlp := services.NewTerraformLocalRepositoryParams() tlp.Key = repoKey setLocalRepositoryBaseParams(&tlp.LocalRepositoryBaseParams, false) + setTerraformRepositoryParams(&tlp.TerraformRepositoryParams, false) err := testsCreateLocalRepositoryService.Terraform(tlp) if !assert.NoError(t, err, "Failed to create "+repoKey) { @@ -658,6 +659,7 @@ func localTerraformTest(t *testing.T) { validateRepoConfig(t, repoKey, tlp) setLocalRepositoryBaseParams(&tlp.LocalRepositoryBaseParams, true) + setTerraformRepositoryParams(&tlp.TerraformRepositoryParams, true) err = testsUpdateLocalRepositoryService.Terraform(tlp) if assert.NoError(t, err, "Failed to update "+repoKey) { diff --git a/tests/artifactoryremoterepository_test.go b/tests/artifactoryremoterepository_test.go index ef56f24ca..ef266fed3 100644 --- a/tests/artifactoryremoterepository_test.go +++ b/tests/artifactoryremoterepository_test.go @@ -17,6 +17,7 @@ const MavenCentralUrl = "https://repo.maven.apache.org" func TestArtifactoryRemoteRepository(t *testing.T) { initRepositoryTest(t) t.Run("remoteAlpineTest", remoteAlpineTest) + t.Run("remoteAnsibleTest", remoteAnsibleTest) t.Run("remoteBowerTest", remoteBowerTest) t.Run("remoteCargoTest", remoteCargoTest) t.Run("remoteChefTest", remoteChefTest) @@ -154,6 +155,28 @@ func remoteAlpineTest(t *testing.T) { } } +func remoteAnsibleTest(t *testing.T) { + repoKey := GenerateRepoKeyForRepoServiceTest() + arp := services.NewAnsibleRemoteRepositoryParams() + arp.Key = repoKey + arp.Url = "https://galaxy.ansible.com" + setRemoteRepositoryBaseParams(&arp.RemoteRepositoryBaseParams, false) + + err := testsCreateRemoteRepositoryService.Ansible(arp) + if !assert.NoError(t, err, "Failed to create "+repoKey) { + return + } + deleteRepoOnTestDone(t, repoKey) + validateRepoConfig(t, repoKey, arp) + + setRemoteRepositoryBaseParams(&arp.RemoteRepositoryBaseParams, true) + + err = testsUpdateRemoteRepositoryService.Ansible(arp) + if assert.NoError(t, err, "Failed to update "+repoKey) { + validateRepoConfig(t, repoKey, arp) + } +} + func remoteBowerTest(t *testing.T) { repoKey := GenerateRepoKeyForRepoServiceTest() brp := services.NewBowerRemoteRepositoryParams() @@ -623,6 +646,7 @@ func remoteNugetTest(t *testing.T) { nrp.DownloadContextPath = "api/v1/package" nrp.V3FeedUrl = "https://api.nuget.org/v3/index.json" nrp.ForceNugetAuthentication = utils.Pointer(true) + nrp.SymbolServerUrl = "https://community.chocolatey.org" err := testsCreateRemoteRepositoryService.Nuget(nrp) if !assert.NoError(t, err, "Failed to create "+repoKey) { @@ -636,6 +660,7 @@ func remoteNugetTest(t *testing.T) { nrp.DownloadContextPath = "" nrp.V3FeedUrl = "" nrp.ForceNugetAuthentication = utils.Pointer(true) + nrp.SymbolServerUrl = "https://community.chocolatey.org" err = testsUpdateRemoteRepositoryService.Nuget(nrp) if assert.NoError(t, err, "Failed to update "+repoKey) { diff --git a/tests/artifactoryvirtualrepository_test.go b/tests/artifactoryvirtualrepository_test.go index c0f76f747..84d716e8f 100644 --- a/tests/artifactoryvirtualrepository_test.go +++ b/tests/artifactoryvirtualrepository_test.go @@ -675,8 +675,6 @@ func virtualTerraformTest(t *testing.T) { setCacheVirtualRepositoryParams(&tvp.CommonCacheVirtualRepositoryParams, true) err = testsUpdateVirtualRepositoryService.Terraform(tvp) - assert.NoError(t, err, "Failed to update "+repoKey) - validateRepoConfig(t, repoKey, tvp) if assert.NoError(t, err, "Failed to update "+repoKey) { validateRepoConfig(t, repoKey, tvp) } diff --git a/tests/utils_test.go b/tests/utils_test.go index be5df46f0..5a77bc143 100644 --- a/tests/utils_test.go +++ b/tests/utils_test.go @@ -794,8 +794,10 @@ func setAdditionalRepositoryBaseParams(params *services.AdditionalRepositoryBase func setCargoRepositoryParams(params *services.CargoRepositoryParams, isUpdate bool) { if !isUpdate { params.CargoAnonymousAccess = clientutils.Pointer(true) + params.CargoInternalIndex = clientutils.Pointer(true) } else { params.CargoAnonymousAccess = clientutils.Pointer(false) + params.CargoInternalIndex = clientutils.Pointer(false) } } @@ -875,6 +877,14 @@ func setRpmRepositoryParams(params *services.RpmRepositoryParams, isUpdate bool) } } +func setTerraformRepositoryParams(params *services.TerraformRepositoryParams, isUpdate bool) { + if !isUpdate { + params.TerraformType = "provider" + } else { + params.TerraformType = "module" + } +} + func getRepoConfig(repoKey string) ([]byte, error) { artDetails := GetRtDetails() artHttpDetails := artDetails.CreateHttpClientDetails()