Skip to content

Commit

Permalink
Merge pull request #1152 from jfrog/add-new-repository-package-types
Browse files Browse the repository at this point in the history
Add new machinelearning package type to local repository
  • Loading branch information
alexhung authored Dec 17, 2024
2 parents b2d31a9 + 1a721be commit b422ea1
Show file tree
Hide file tree
Showing 145 changed files with 2,013 additions and 975 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
53 changes: 53 additions & 0 deletions docs/resources/local_machinelearning_repository.md
Original file line number Diff line number Diff line change
@@ -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 generated by tfplugindocs -->
## 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
```
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
terraform import artifactory_local_machinelearning_repository.my-machinelearning-local my-machinelearning-local
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
resource "artifactory_local_machinelearning_repository" "my-machinelearning-local" {
key = "my-machinelearning-local"
}
34 changes: 28 additions & 6 deletions pkg/acctest/test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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
}
Expand Down Expand Up @@ -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
}
Expand All @@ -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
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Loading

0 comments on commit b422ea1

Please sign in to comment.