diff --git a/README.md b/README.md
index 771d10a0..0c0d1949 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@
Terraform provider to configure Sonatype Nexus using its API.
-Implemented and tested with Sonatype Nexus `3.64.0-03`.
+Implemented and tested with Sonatype Nexus `3.70.1-02`.
## Usage
@@ -37,6 +37,27 @@ provider "nexus" {
}
```
+Optionally with mTLS if Nexus is deployed behind a reverse proxy:
+
+```hcl
+provider "nexus" {
+ insecure = true
+ password = "admin123"
+ url = "https://127.0.0.1:8080"
+ username = "admin"
+ client_cert_path = "/path/to/client.crt"
+ client_key_path = "/path/to/client.key"
+ root_ca_path = "/path/to/root_ca.crt"
+}
+```
+
+Note that the `root_ca_path` should contain ALL certificates required for
+communication. It overrides the system CA store, rather than adding to it.
+
+You can point the `root_ca_path` to the system trust store if required, e.g.:
+
+`root_ca_path = "/etc/ssl/certs/ca-certificates.crt"`
+
## Development
### Build
diff --git a/docs/data-sources/blobstore_list.md b/docs/data-sources/blobstore_list.md
index d5060ddd..e239fd2f 100644
--- a/docs/data-sources/blobstore_list.md
+++ b/docs/data-sources/blobstore_list.md
@@ -2,10 +2,10 @@
page_title: "Data Source nexus_blobstore_list"
subcategory: "Blobstore"
description: |-
- Use this data source to get a list with all blob stores.
+ Use this data source to get a list with all Blob Stores.
---
# Data Source nexus_blobstore_list
-Use this data source to get a list with all blob stores.
+Use this data source to get a list with all Blob Stores.
## Example Usage
```terraform
data "nexus_blobstore_list" "all" {}
@@ -16,7 +16,7 @@ data "nexus_blobstore_list" "all" {}
### Read-Only
- `id` (String) Used to identify data source at nexus
-- `items` (List of Object) A List of all blob stores (see [below for nested schema](#nestedatt--items))
+- `items` (List of Object) A List of all Blob Stores (see [below for nested schema](#nestedatt--items))
### Nested Schema for `items`
diff --git a/docs/data-sources/repository_bower_group.md b/docs/data-sources/repository_bower_group.md
index 0a5f3247..92108ee4 100644
--- a/docs/data-sources/repository_bower_group.md
+++ b/docs/data-sources/repository_bower_group.md
@@ -31,7 +31,7 @@ data "nexus_repository_bower_group" "group" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
diff --git a/docs/data-sources/repository_docker_group.md b/docs/data-sources/repository_docker_group.md
index ccb23936..abbe8565 100644
--- a/docs/data-sources/repository_docker_group.md
+++ b/docs/data-sources/repository_docker_group.md
@@ -44,7 +44,7 @@ Read-Only:
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
- `writable_member` (String)
diff --git a/docs/data-sources/repository_docker_hosted.md b/docs/data-sources/repository_docker_hosted.md
index c1a7c92a..7bc1f1b8 100644
--- a/docs/data-sources/repository_docker_hosted.md
+++ b/docs/data-sources/repository_docker_hosted.md
@@ -26,7 +26,7 @@ data "nexus_repository_docker_hosted" "example" {
- `docker` (List of Object) docker contains the configuration of the docker repository (see [below for nested schema](#nestedatt--docker))
- `id` (String) Used to identify data source at nexus
- `online` (Boolean) Whether this repository accepts incoming requests
-- `storage` (List of Object) The storage configuration of the repository (see [below for nested schema](#nestedatt--storage))
+- `storage` (List of Object) The storage configuration of the repository docker hosted (see [below for nested schema](#nestedatt--storage))
### Nested Schema for `cleanup`
@@ -62,5 +62,6 @@ Read-Only:
Read-Only:
- `blob_store_name` (String)
+- `latest_policy` (Boolean)
- `strict_content_type_validation` (Boolean)
- `write_policy` (String)
diff --git a/docs/data-sources/repository_go_group.md b/docs/data-sources/repository_go_group.md
index 32207f51..2d452fd9 100644
--- a/docs/data-sources/repository_go_group.md
+++ b/docs/data-sources/repository_go_group.md
@@ -31,7 +31,7 @@ data "nexus_repository_go_group" "go_public" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
diff --git a/docs/data-sources/repository_maven_group.md b/docs/data-sources/repository_maven_group.md
index 9fe0e387..1277fae4 100644
--- a/docs/data-sources/repository_maven_group.md
+++ b/docs/data-sources/repository_maven_group.md
@@ -31,7 +31,7 @@ data "nexus_repository_maven_group" "maven_public" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
diff --git a/docs/data-sources/repository_npm_group.md b/docs/data-sources/repository_npm_group.md
index a26f785c..1bd0dd48 100644
--- a/docs/data-sources/repository_npm_group.md
+++ b/docs/data-sources/repository_npm_group.md
@@ -31,7 +31,7 @@ data "nexus_repository_npm_group" "group" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
- `writable_member` (String)
diff --git a/docs/data-sources/repository_npm_proxy.md b/docs/data-sources/repository_npm_proxy.md
index e7f259d9..4ee653fa 100644
--- a/docs/data-sources/repository_npm_proxy.md
+++ b/docs/data-sources/repository_npm_proxy.md
@@ -27,7 +27,7 @@ data "nexus_repository_npm_proxy" "npmjs" {
- `negative_cache` (List of Object) Configuration of the negative cache handling (see [below for nested schema](#nestedatt--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `proxy` (List of Object) Configuration for the proxy repository (see [below for nested schema](#nestedatt--proxy))
-- `remove_non_cataloged` (Boolean) Remove non-catalogued versions from the npm package metadata.
+- `remove_non_cataloged` (Boolean, Deprecated) Remove non-catalogued versions from the npm package metadata.
- `remove_quarantined` (Boolean) Remove quarantined versions from the npm package metadata.
- `routing_rule` (String) The name of the routing rule assigned to this repository
- `storage` (List of Object) The storage configuration of the repository (see [below for nested schema](#nestedatt--storage))
diff --git a/docs/data-sources/repository_nuget_group.md b/docs/data-sources/repository_nuget_group.md
index 10676e6c..c68b8733 100644
--- a/docs/data-sources/repository_nuget_group.md
+++ b/docs/data-sources/repository_nuget_group.md
@@ -31,7 +31,7 @@ data "nexus_repository_nuget_group" "group" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
diff --git a/docs/data-sources/repository_pypi_group.md b/docs/data-sources/repository_pypi_group.md
index e180fe1e..c1ec5a64 100644
--- a/docs/data-sources/repository_pypi_group.md
+++ b/docs/data-sources/repository_pypi_group.md
@@ -31,7 +31,7 @@ data "nexus_repository_pypi_group" "group" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
- `writable_member` (String)
diff --git a/docs/data-sources/repository_r_group.md b/docs/data-sources/repository_r_group.md
index 767e2243..b8912472 100644
--- a/docs/data-sources/repository_r_group.md
+++ b/docs/data-sources/repository_r_group.md
@@ -31,7 +31,7 @@ data "nexus_repository_r_group" "group" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
- `writable_member` (String)
diff --git a/docs/data-sources/repository_raw_group.md b/docs/data-sources/repository_raw_group.md
index 8ca0aa96..290b1549 100644
--- a/docs/data-sources/repository_raw_group.md
+++ b/docs/data-sources/repository_raw_group.md
@@ -31,7 +31,7 @@ data "nexus_repository_raw_group" "raw_public" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
diff --git a/docs/data-sources/repository_rubygems_group.md b/docs/data-sources/repository_rubygems_group.md
index ebb9a00a..94aafbba 100644
--- a/docs/data-sources/repository_rubygems_group.md
+++ b/docs/data-sources/repository_rubygems_group.md
@@ -31,7 +31,7 @@ data "nexus_repository_rubygems_group" "group" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
- `writable_member` (String)
diff --git a/docs/data-sources/repository_yum_group.md b/docs/data-sources/repository_yum_group.md
index 68b89fbb..d0fb94c2 100644
--- a/docs/data-sources/repository_yum_group.md
+++ b/docs/data-sources/repository_yum_group.md
@@ -32,7 +32,7 @@ data "nexus_repository_yum_group" "yum_group" {
Read-Only:
-- `member_names` (Set of String)
+- `member_names` (List of String)
diff --git a/docs/data-sources/security_ssl.md b/docs/data-sources/security_ssl.md
index d8723a3f..bdc23202 100644
--- a/docs/data-sources/security_ssl.md
+++ b/docs/data-sources/security_ssl.md
@@ -3,12 +3,24 @@ page_title: "Data Source nexus_security_ssl"
subcategory: "Security"
description: |-
Use this data source to retrieve a SSL certificate from any Nexus-external hostvia Nexus.
- This resource does NOT retrieve a certificate from the Nexus truststore
+ This resource does NOT retrieve a certificate from the Nexus truststore
---
# Data Source nexus_security_ssl
Use this data source to retrieve a SSL certificate from any Nexus-external hostvia Nexus.
This resource does NOT retrieve a certificate from the Nexus truststore
+## Example Usage
+```terraform
+# Retrieve Cert via Nexus
+data "nexus_security_ssl" "ldap_cert" {
+ host = "google.de"
+ port = 443
+}
+# Import Cert into Nexus
+resource "nexus_security_ssl_truststore" "ldap_cert" {
+ pem = data.nexus_security_ssl.ldap_cert.pem
+}
+```
## Schema
diff --git a/docs/data-sources/security_ssl_truststore.md b/docs/data-sources/security_ssl_truststore.md
index 3b79bf4a..418dc7e5 100644
--- a/docs/data-sources/security_ssl_truststore.md
+++ b/docs/data-sources/security_ssl_truststore.md
@@ -8,15 +8,13 @@ description: |-
Use this data source to retrieve ALL certificates in the Nexus truststore.
## Example Usage
```terraform
-# Retrieve Cert via Nexus
-data "nexus_security_ssl" "ldap_cert" {
- host = "google.de"
- port = 443
+# Retrieve certificates from Nexus truststore
+data "nexus_security_ssl_truststore" "nexus_truststore" {
}
-# Import Cert into Nexus
-resource "nexus_security_ssl_truststore" "ldap_cert" {
- pem = data.nexus_security_ssl.ldap_cert.pem
+# Output Nexus truststore certificates
+output "truststore" {
+ value = data.nexus_security_ssl_truststore.nexus_truststore
}
```
diff --git a/docs/data-sources/security_user_token.md b/docs/data-sources/security_user_token.md
index 9970602c..164cd33c 100644
--- a/docs/data-sources/security_user_token.md
+++ b/docs/data-sources/security_user_token.md
@@ -23,6 +23,8 @@ output "nexus_user_token_enabled" {
### Read-Only
-- `enabled` (Boolean) Activate the feature of user tokens.
+- `enabled` (Boolean) Activation of the user tokens feature.
+- `expiration_days` (Number) Number of days user tokens remain valid.
+- `expiration_enabled` (Boolean) Activation of the user tokens expiration feature.
- `id` (String) Used to identify data source at nexus
- `protect_content` (Boolean) Require user tokens for repository authentication. This does not effect UI access.
diff --git a/docs/index.md b/docs/index.md
index 475ca152..4304e26c 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -8,7 +8,7 @@ description: |-
The Nexus provider allows Terraform to read from, write to, and configure [Sonatype Nexus Repository Manager](https://www.sonatype.com/product-nexus-repository).
--> **Note** This provider hat been implemented and tested with Sonatype Nexus Repository Manager OSS `3.64.0-03`.
+-> **Note** This provider hat been implemented and tested with Sonatype Nexus Repository Manager OSS `3.70.1-02`.
## Usage
diff --git a/docs/resources/repository_apt_proxy.md b/docs/resources/repository_apt_proxy.md
index c45e2076..dd3a9bff 100644
--- a/docs/resources/repository_apt_proxy.md
+++ b/docs/resources/repository_apt_proxy.md
@@ -62,13 +62,13 @@ resource "nexus_repository_apt_proxy" "bionic_proxy" {
- `flat` (Boolean) Distribution to fetch
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -118,6 +118,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -149,15 +158,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_bower_group.md b/docs/resources/repository_bower_group.md
index 3ff3667e..1949036b 100644
--- a/docs/resources/repository_bower_group.md
+++ b/docs/resources/repository_bower_group.md
@@ -86,7 +86,7 @@ resource "nexus_repository_bower_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
diff --git a/docs/resources/repository_bower_proxy.md b/docs/resources/repository_bower_proxy.md
index a800cdc8..00427b27 100644
--- a/docs/resources/repository_bower_proxy.md
+++ b/docs/resources/repository_bower_proxy.md
@@ -43,6 +43,7 @@ resource "nexus_repository_bower_proxy" "bower_io" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `rewrite_package_urls` (Boolean) Whether to force Bower to retrieve packages through this proxy repository
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
@@ -50,7 +51,6 @@ resource "nexus_repository_bower_proxy" "bower_io" {
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -100,6 +100,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -131,15 +140,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_cocoapods_proxy.md b/docs/resources/repository_cocoapods_proxy.md
index 611f5607..8d70a8a3 100644
--- a/docs/resources/repository_cocoapods_proxy.md
+++ b/docs/resources/repository_cocoapods_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_cocoapods_proxy" "cocoapods_org" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -97,6 +97,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -128,15 +137,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_conan_proxy.md b/docs/resources/repository_conan_proxy.md
index b8ef7719..396dc7fe 100644
--- a/docs/resources/repository_conan_proxy.md
+++ b/docs/resources/repository_conan_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_conan_proxy" "conan_center" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -97,6 +97,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -128,15 +137,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_conda_proxy.md b/docs/resources/repository_conda_proxy.md
index 7367b960..62a8b79d 100644
--- a/docs/resources/repository_conda_proxy.md
+++ b/docs/resources/repository_conda_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_conda_proxy" "anaconda" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -97,6 +97,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -128,15 +137,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_docker_group.md b/docs/resources/repository_docker_group.md
index d45b7e42..af696d28 100644
--- a/docs/resources/repository_docker_group.md
+++ b/docs/resources/repository_docker_group.md
@@ -123,7 +123,7 @@ Optional:
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
Optional:
diff --git a/docs/resources/repository_docker_hosted.md b/docs/resources/repository_docker_hosted.md
index 889095ba..3ae6e8a1 100644
--- a/docs/resources/repository_docker_hosted.md
+++ b/docs/resources/repository_docker_hosted.md
@@ -32,7 +32,7 @@ resource "nexus_repository_docker_hosted" "example" {
- `docker` (Block List, Min: 1, Max: 1) docker contains the configuration of the docker repository (see [below for nested schema](#nestedblock--docker))
- `name` (String) A unique identifier for this repository
-- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
+- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository docker hosted (see [below for nested schema](#nestedblock--storage))
### Optional
@@ -69,6 +69,7 @@ Required:
Optional:
+- `latest_policy` (Boolean) Whether to allow redeploying the 'latest' tag but defer to the Deployment Policy for all other tags. Only usable with write_policy "ALLOW_ONCE"
- `write_policy` (String) Controls if deployments of and updates to assets are allowed
diff --git a/docs/resources/repository_docker_proxy.md b/docs/resources/repository_docker_proxy.md
index 30bf94f3..ee99365c 100644
--- a/docs/resources/repository_docker_proxy.md
+++ b/docs/resources/repository_docker_proxy.md
@@ -53,13 +53,13 @@ resource "nexus_repository_docker_proxy" "dockerhub" {
- `docker_proxy` (Block List, Min: 1, Max: 1) docker_proxy contains the configuration of the docker index (see [below for nested schema](#nestedblock--docker_proxy))
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -136,6 +136,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -167,15 +176,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_go_group.md b/docs/resources/repository_go_group.md
index aae22990..524b12ba 100644
--- a/docs/resources/repository_go_group.md
+++ b/docs/resources/repository_go_group.md
@@ -73,7 +73,7 @@ resource "nexus_repository_go_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
diff --git a/docs/resources/repository_go_proxy.md b/docs/resources/repository_go_proxy.md
index 3955e34b..b140a97a 100644
--- a/docs/resources/repository_go_proxy.md
+++ b/docs/resources/repository_go_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_go_proxy" "golang_org" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -98,6 +98,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -129,15 +138,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_helm_proxy.md b/docs/resources/repository_helm_proxy.md
index 4a531b07..fd168a85 100644
--- a/docs/resources/repository_helm_proxy.md
+++ b/docs/resources/repository_helm_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_helm_proxy" "kubernetes_charts" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -98,6 +98,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -129,15 +138,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_maven_group.md b/docs/resources/repository_maven_group.md
index dadb03a3..bee00c7a 100644
--- a/docs/resources/repository_maven_group.md
+++ b/docs/resources/repository_maven_group.md
@@ -64,7 +64,7 @@ resource "nexus_repository_maven_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
diff --git a/docs/resources/repository_maven_proxy.md b/docs/resources/repository_maven_proxy.md
index 7c1909c6..39f76035 100644
--- a/docs/resources/repository_maven_proxy.md
+++ b/docs/resources/repository_maven_proxy.md
@@ -47,13 +47,13 @@ resource "nexus_repository_maven_proxy" "maven_central" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `maven` (Block List, Min: 1, Max: 1) Maven contains additional data of maven repository (see [below for nested schema](#nestedblock--maven))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -117,6 +117,15 @@ Optional:
- `content_disposition` (String) Add Content-Disposition header as 'Attachment' to disable some content from being inline in a browse. Possible Value: `INLINE` or `ATTACHMENT`
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -148,15 +157,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_npm_group.md b/docs/resources/repository_npm_group.md
index dcd67899..0c52dd5b 100644
--- a/docs/resources/repository_npm_group.md
+++ b/docs/resources/repository_npm_group.md
@@ -57,7 +57,7 @@ resource "nexus_repository_npm_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
Optional:
diff --git a/docs/resources/repository_npm_proxy.md b/docs/resources/repository_npm_proxy.md
index 99eca842..1276c511 100644
--- a/docs/resources/repository_npm_proxy.md
+++ b/docs/resources/repository_npm_proxy.md
@@ -41,15 +41,15 @@ resource "nexus_repository_npm_proxy" "npmjs" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
-- `remove_non_cataloged` (Boolean) Remove non-catalogued versions from the npm package metadata.
+- `remove_non_cataloged` (Boolean, Deprecated) Remove non-catalogued versions from the npm package metadata.
- `remove_quarantined` (Boolean) Remove quarantined versions from the npm package metadata.
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -99,6 +99,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -130,15 +139,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_nuget_group.md b/docs/resources/repository_nuget_group.md
index fc76e4de..b38cc291 100644
--- a/docs/resources/repository_nuget_group.md
+++ b/docs/resources/repository_nuget_group.md
@@ -87,7 +87,7 @@ resource "nexus_repository_nuget_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
diff --git a/docs/resources/repository_nuget_proxy.md b/docs/resources/repository_nuget_proxy.md
index 75a61e9f..04d3d56a 100644
--- a/docs/resources/repository_nuget_proxy.md
+++ b/docs/resources/repository_nuget_proxy.md
@@ -44,6 +44,7 @@ resource "nexus_repository_nuget_proxy" "nuget_org" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `nuget_version` (String) Nuget protocol version
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `query_cache_item_max_age` (Number) How long to cache query results from the proxied repository (in seconds)
@@ -52,7 +53,6 @@ resource "nexus_repository_nuget_proxy" "nuget_org" {
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -102,6 +102,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -133,15 +142,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_p2_proxy.md b/docs/resources/repository_p2_proxy.md
index 7fa6bd4e..d70b4a00 100644
--- a/docs/resources/repository_p2_proxy.md
+++ b/docs/resources/repository_p2_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_p2_proxy" "eclipse" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -97,6 +97,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -128,15 +137,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_pypi_group.md b/docs/resources/repository_pypi_group.md
index 89935277..e03d6995 100644
--- a/docs/resources/repository_pypi_group.md
+++ b/docs/resources/repository_pypi_group.md
@@ -84,7 +84,7 @@ resource "nexus_repository_pypi_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
diff --git a/docs/resources/repository_pypi_proxy.md b/docs/resources/repository_pypi_proxy.md
index 13e3e555..34a825d7 100644
--- a/docs/resources/repository_pypi_proxy.md
+++ b/docs/resources/repository_pypi_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_pypi_proxy" "pypi_org" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -97,6 +97,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -128,15 +137,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_r_group.md b/docs/resources/repository_r_group.md
index f710e3a0..9791808f 100644
--- a/docs/resources/repository_r_group.md
+++ b/docs/resources/repository_r_group.md
@@ -84,7 +84,7 @@ resource "nexus_repository_r_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
diff --git a/docs/resources/repository_r_proxy.md b/docs/resources/repository_r_proxy.md
index 97b897f0..4082003f 100644
--- a/docs/resources/repository_r_proxy.md
+++ b/docs/resources/repository_r_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_r_proxy" "r_org" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -97,6 +97,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -128,15 +137,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_raw_group.md b/docs/resources/repository_raw_group.md
index 030c597e..51055bd9 100644
--- a/docs/resources/repository_raw_group.md
+++ b/docs/resources/repository_raw_group.md
@@ -59,7 +59,7 @@ resource "nexus_repository_raw_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
diff --git a/docs/resources/repository_raw_proxy.md b/docs/resources/repository_raw_proxy.md
index de73c088..0cecd465 100644
--- a/docs/resources/repository_raw_proxy.md
+++ b/docs/resources/repository_raw_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_raw_proxy" "raw_org" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -98,6 +98,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -129,15 +138,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_rubygems_group.md b/docs/resources/repository_rubygems_group.md
index b742c1a3..aa26f665 100644
--- a/docs/resources/repository_rubygems_group.md
+++ b/docs/resources/repository_rubygems_group.md
@@ -84,7 +84,7 @@ resource "nexus_repository_rubygems_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
diff --git a/docs/resources/repository_rubygems_proxy.md b/docs/resources/repository_rubygems_proxy.md
index dad06b92..9e753b55 100644
--- a/docs/resources/repository_rubygems_proxy.md
+++ b/docs/resources/repository_rubygems_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_rubygems_proxy" "rubygems_org" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
@@ -97,6 +97,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -128,15 +137,6 @@ Optional:
Optional:
- `policy_names` (Set of String) List of policy names
-
-
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
## Import
Import is supported using the following syntax:
```shell
diff --git a/docs/resources/repository_yum_group.md b/docs/resources/repository_yum_group.md
index 5c2af276..e851109a 100644
--- a/docs/resources/repository_yum_group.md
+++ b/docs/resources/repository_yum_group.md
@@ -60,7 +60,7 @@ resource "nexus_repository_yum_group" "group" {
Required:
-- `member_names` (Set of String) Member repositories names
+- `member_names` (List of String) Member repositories names
diff --git a/docs/resources/repository_yum_proxy.md b/docs/resources/repository_yum_proxy.md
index 3cb83f15..5a98833f 100644
--- a/docs/resources/repository_yum_proxy.md
+++ b/docs/resources/repository_yum_proxy.md
@@ -41,13 +41,13 @@ resource "nexus_repository_yum_proxy" "centos" {
- `http_client` (Block List, Min: 1, Max: 1) HTTP Client configuration for proxy repositories (see [below for nested schema](#nestedblock--http_client))
- `name` (String) A unique identifier for this repository
+- `negative_cache` (Block List, Min: 1, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `proxy` (Block List, Min: 1, Max: 1) Configuration for the proxy repository (see [below for nested schema](#nestedblock--proxy))
- `storage` (Block List, Min: 1, Max: 1) The storage configuration of the repository (see [below for nested schema](#nestedblock--storage))
### Optional
- `cleanup` (Block List) Cleanup policies (see [below for nested schema](#nestedblock--cleanup))
-- `negative_cache` (Block List, Max: 1) Configuration of the negative cache handling (see [below for nested schema](#nestedblock--negative_cache))
- `online` (Boolean) Whether this repository accepts incoming requests
- `routing_rule` (String) The name of the routing rule assigned to this repository
- `yum_signing` (Block List, Max: 1) Contains signing data of repositores (see [below for nested schema](#nestedblock--yum_signing))
@@ -98,6 +98,15 @@ Optional:
+
+### Nested Schema for `negative_cache`
+
+Required:
+
+- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
+- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
+
+
### Nested Schema for `proxy`
@@ -131,15 +140,6 @@ Optional:
- `policy_names` (Set of String) List of policy names
-
-### Nested Schema for `negative_cache`
-
-Optional:
-
-- `enabled` (Boolean) Whether to cache responses for content not present in the proxied repository
-- `ttl` (Number) How long to cache the fact that a file was not found in the repository (in minutes)
-
-
### Nested Schema for `yum_signing`
diff --git a/docs/resources/security_ssl_truststore.md b/docs/resources/security_ssl_truststore.md
index 62fdcdd5..06e9aa9b 100644
--- a/docs/resources/security_ssl_truststore.md
+++ b/docs/resources/security_ssl_truststore.md
@@ -8,8 +8,15 @@ description: |-
Use this resource to add an SSL certificate to the nexus Truststore
## Example Usage
```terraform
+# Retrieve Cert via Nexus
+data "nexus_security_ssl" "ldap_cert" {
+ host = "google.de"
+ port = 443
+}
+
+# Import Cert into Nexus
resource "nexus_security_ssl_truststore" "ldap_cert" {
- pem = file("${path.module}/cert.pem")
+ pem = data.nexus_security_ssl.ldap_cert.pem
}
```
diff --git a/docs/resources/security_user_token.md b/docs/resources/security_user_token.md
index 1c7cffc5..96d6b2f9 100644
--- a/docs/resources/security_user_token.md
+++ b/docs/resources/security_user_token.md
@@ -25,6 +25,8 @@ resource "nexus_security_user_token" "nexus" {
### Optional
+- `expiration_days` (Number) Number of days for which you want user tokens to remain valid.
+- `expiration_enabled` (Boolean) Set user tokens expiration.
- `protect_content` (Boolean) Require user tokens for repository authentication. This does not effect UI access.
### Read-Only
diff --git a/go.mod b/go.mod
index 50e3cfe9..656976ce 100644
--- a/go.mod
+++ b/go.mod
@@ -6,7 +6,7 @@ toolchain go1.21.1
require (
github.com/client9/misspell v0.3.4
- github.com/datadrivers/go-nexus-client v1.10.1
+ github.com/datadrivers/go-nexus-client v1.12.0
github.com/golangci/golangci-lint v1.59.1
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320
github.com/hashicorp/terraform-plugin-docs v0.19.4
diff --git a/go.sum b/go.sum
index 5ba39b31..4894efa4 100644
--- a/go.sum
+++ b/go.sum
@@ -156,6 +156,8 @@ github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53E
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
github.com/daixiang0/gci v0.13.4 h1:61UGkmpoAcxHM2hhNkZEf5SzwQtWJXTSws7jaPyqwlw=
github.com/daixiang0/gci v0.13.4/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk=
+github.com/datadrivers/go-nexus-client v1.12.0 h1:ZBoTNAxdWbPs5gYZemJ+HLfk/8xt7aZyPtI1/R7ahag=
+github.com/datadrivers/go-nexus-client v1.12.0/go.mod h1:sPjBOxF7idUoiJoa730L3JyKZodjT0LDAvVF8u4kOLU=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
diff --git a/internal/acceptance/template-strings-repository-docker.go b/internal/acceptance/template-strings-repository-docker.go
index 7cc28165..b74b3b54 100644
--- a/internal/acceptance/template-strings-repository-docker.go
+++ b/internal/acceptance/template-strings-repository-docker.go
@@ -16,7 +16,11 @@ resource "nexus_repository_docker_hosted" "acceptance" {
{{- end }}
v1_enabled = "{{ .Docker.V1Enabled }}"
}
-` + TemplateStringHostedRepository
+` + TemplateStringNameOnline +
+ TemplateStringCleanup +
+ TemplateStringComponent +
+ TemplateStringDockerStorageHosted +
+ TemplateStringEnd
TemplateStringRepositoryDockerGroup = `
resource "nexus_repository_docker_group" "acceptance" {
@@ -61,4 +65,17 @@ resource "nexus_repository_docker_proxy" "acceptance" {
{{- end }}
}
` + TemplateStringProxyRepository
+
+ TemplateStringDockerStorageHosted = `
+storage {
+ blob_store_name = "{{ .Storage.BlobStoreName }}"
+ strict_content_type_validation = {{ .Storage.StrictContentTypeValidation }}
+ {{- if .Storage.WritePolicy }}
+ write_policy = "{{ .Storage.WritePolicy }}"
+ {{- end }}
+ {{- if .Storage.LatestPolicy }}
+ latest_policy = "{{ .Storage.LatestPolicy }}"
+ {{- end }}
+}
+`
)
diff --git a/internal/acceptance/template-strings-repository-npm.go b/internal/acceptance/template-strings-repository-npm.go
index ff875074..d94726af 100644
--- a/internal/acceptance/template-strings-repository-npm.go
+++ b/internal/acceptance/template-strings-repository-npm.go
@@ -15,6 +15,5 @@ resource "nexus_repository_npm_group" "acceptance" {
TemplateStringRepositoryNpmProxy = `
resource "nexus_repository_npm_proxy" "acceptance" {
remove_quarantined = {{ .Npm.RemoveQuarantined }}
- remove_non_cataloged = {{ .Npm.RemoveNonCataloged }}
` + TemplateStringProxyRepository
)
diff --git a/internal/acceptance/template-strings-repository.go b/internal/acceptance/template-strings-repository.go
index c5c76cba..d35b10f6 100644
--- a/internal/acceptance/template-strings-repository.go
+++ b/internal/acceptance/template-strings-repository.go
@@ -118,16 +118,10 @@ group {
`
TemplateStringNegativeCache = `
-{{ if .NegativeCache }}
negative_cache {
- {{ if .NegativeCache.Enabled }}
enabled = {{ .NegativeCache.Enabled }}
- {{ end -}}
- {{ if .NegativeCache.TTL }}
ttl = {{ .NegativeCache.TTL }}
- {{ end }}
}
-{{ end -}}
`
TemplateStringProxy = `
diff --git a/internal/schema/repository/schema_docker.go b/internal/schema/repository/schema_docker.go
index d73d2a58..23c950e3 100644
--- a/internal/schema/repository/schema_docker.go
+++ b/internal/schema/repository/schema_docker.go
@@ -1,7 +1,10 @@
package repository
import (
+ "strings"
+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
)
var (
@@ -74,4 +77,73 @@ var (
},
},
}
+
+ ResourceDockerHostedStorage = &schema.Schema{
+ Description: "The storage configuration of the repository docker hosted",
+ Type: schema.TypeList,
+ Required: true,
+ MaxItems: 1,
+ Elem: &schema.Resource{
+ Schema: map[string]*schema.Schema{
+ "blob_store_name": {
+ Description: "Blob store used to store repository contents",
+ Required: true,
+ Set: func(v interface{}) int {
+ return schema.HashString(strings.ToLower(v.(string)))
+ },
+ Type: schema.TypeString,
+ },
+ "strict_content_type_validation": {
+ Description: "Whether to validate uploaded content's MIME type appropriate for the repository format",
+ Required: true,
+ Type: schema.TypeBool,
+ },
+ "write_policy": {
+ Description: "Controls if deployments of and updates to assets are allowed",
+ Default: "ALLOW",
+ Optional: true,
+ Type: schema.TypeString,
+ ValidateFunc: validation.StringInSlice([]string{
+ "ALLOW",
+ "ALLOW_ONCE",
+ "DENY",
+ }, false),
+ },
+ "latest_policy": {
+ Description: "Whether to allow redeploying the 'latest' tag but defer to the Deployment Policy for all other tags. Only usable with write_policy \"ALLOW_ONCE\"",
+ Optional: true,
+ Type: schema.TypeBool,
+ },
+ },
+ },
+ }
+ DataSourceDockerHostedStorage = &schema.Schema{
+ Description: "The storage configuration of the repository docker hosted",
+ Type: schema.TypeList,
+ Computed: true,
+ Elem: &schema.Resource{
+ Schema: map[string]*schema.Schema{
+ "blob_store_name": {
+ Description: "Blob store used to store repository contents",
+ Computed: true,
+ Type: schema.TypeString,
+ },
+ "strict_content_type_validation": {
+ Description: "Whether to validate uploaded content's MIME type appropriate for the repository format",
+ Computed: true,
+ Type: schema.TypeBool,
+ },
+ "write_policy": {
+ Description: "Controls if deployments of and updates to assets are allowed",
+ Computed: true,
+ Type: schema.TypeString,
+ },
+ "latest_policy": {
+ Description: "Whether to allow redeploying the 'latest' tag but defer to the Deployment Policy for all other tags. Only usable with write_policy \"ALLOW_ONCE\"",
+ Computed: true,
+ Type: schema.TypeBool,
+ },
+ },
+ },
+ }
)
diff --git a/internal/schema/repository/schema_negative_cache.go b/internal/schema/repository/schema_negative_cache.go
index cb727094..0fd5d24e 100644
--- a/internal/schema/repository/schema_negative_cache.go
+++ b/internal/schema/repository/schema_negative_cache.go
@@ -7,21 +7,19 @@ import (
var (
ResourceNegativeCache = &schema.Schema{
Description: "Configuration of the negative cache handling",
- Optional: true,
Type: schema.TypeList,
+ Required: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"enabled": {
- Default: false,
Description: "Whether to cache responses for content not present in the proxied repository",
- Optional: true,
+ Required: true,
Type: schema.TypeBool,
},
"ttl": {
- Default: 1440,
Description: "How long to cache the fact that a file was not found in the repository (in minutes)",
- Optional: true,
+ Required: true,
Type: schema.TypeInt,
},
},
diff --git a/internal/services/repository/data_source_repository_apt_proxy_test.go b/internal/services/repository/data_source_repository_apt_proxy_test.go
index 5b63b238..d6c56c02 100644
--- a/internal/services/repository/data_source_repository_apt_proxy_test.go
+++ b/internal/services/repository/data_source_repository_apt_proxy_test.go
@@ -32,6 +32,10 @@ func TestAccDataSourceRepositoryAptProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_apt_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_bower_proxy_test.go b/internal/services/repository/data_source_repository_bower_proxy_test.go
index 4878e0db..249236c5 100644
--- a/internal/services/repository/data_source_repository_bower_proxy_test.go
+++ b/internal/services/repository/data_source_repository_bower_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryBowerProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
Bower: repository.Bower{
RewritePackageUrls: false,
},
diff --git a/internal/services/repository/data_source_repository_cocoapods_proxy_test.go b/internal/services/repository/data_source_repository_cocoapods_proxy_test.go
index 4e02a6eb..65557251 100644
--- a/internal/services/repository/data_source_repository_cocoapods_proxy_test.go
+++ b/internal/services/repository/data_source_repository_cocoapods_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryCocoapodsProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_cocoapods_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_conan_proxy_test.go b/internal/services/repository/data_source_repository_conan_proxy_test.go
index 1b7beb8f..a84dd947 100644
--- a/internal/services/repository/data_source_repository_conan_proxy_test.go
+++ b/internal/services/repository/data_source_repository_conan_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryConanProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_conan_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_conda_proxy_test.go b/internal/services/repository/data_source_repository_conda_proxy_test.go
index e9f800a3..9bb50739 100644
--- a/internal/services/repository/data_source_repository_conda_proxy_test.go
+++ b/internal/services/repository/data_source_repository_conda_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryCondaProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_conda_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_docker_hosted.go b/internal/services/repository/data_source_repository_docker_hosted.go
index 5f9750e6..814ecdad 100644
--- a/internal/services/repository/data_source_repository_docker_hosted.go
+++ b/internal/services/repository/data_source_repository_docker_hosted.go
@@ -19,7 +19,7 @@ func DataSourceRepositoryDockerHosted() *schema.Resource {
// Hosted schemas
"cleanup": repository.DataSourceCleanup,
"component": repository.DataSourceComponent,
- "storage": repository.DataSourceHostedStorage,
+ "storage": repository.DataSourceDockerHostedStorage,
// Docker hosted schemas
"docker": repository.DataSourceDocker,
},
diff --git a/internal/services/repository/data_source_repository_docker_hosted_test.go b/internal/services/repository/data_source_repository_docker_hosted_test.go
index bf3c7bc2..1a38a131 100644
--- a/internal/services/repository/data_source_repository_docker_hosted_test.go
+++ b/internal/services/repository/data_source_repository_docker_hosted_test.go
@@ -28,9 +28,10 @@ func TestAccDataSourceRepositoryDockerHosted(t *testing.T) {
repo := repository.DockerHostedRepository{
Name: name,
Online: true,
- Storage: repository.HostedStorage{
+ Storage: repository.DockerHostedStorage{
BlobStoreName: "default",
StrictContentTypeValidation: false,
+ WritePolicy: "ALLOW",
},
Docker: repository.Docker{
ForceBasicAuth: true,
@@ -56,6 +57,7 @@ func TestAccDataSourceRepositoryDockerHosted(t *testing.T) {
resource.TestCheckResourceAttr(dataSourceName, "docker.0.v1_enabled", strconv.FormatBool(repo.Docker.V1Enabled)),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.blob_store_name", repo.Storage.BlobStoreName),
resource.TestCheckResourceAttr(dataSourceName, "storage.0.strict_content_type_validation", strconv.FormatBool(repo.Storage.StrictContentTypeValidation)),
+ resource.TestCheckResourceAttr(dataSourceName, "storage.0.write_policy", string(repo.Storage.WritePolicy)),
),
),
},
diff --git a/internal/services/repository/data_source_repository_docker_proxy_test.go b/internal/services/repository/data_source_repository_docker_proxy_test.go
index 837ca11c..3bf5fa26 100644
--- a/internal/services/repository/data_source_repository_docker_proxy_test.go
+++ b/internal/services/repository/data_source_repository_docker_proxy_test.go
@@ -42,6 +42,10 @@ func TestAccDataSourceRepositoryDockerProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
repo.Docker.Subdomain = &subdomain
dataSourceName := "data.nexus_repository_docker_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_go_proxy_test.go b/internal/services/repository/data_source_repository_go_proxy_test.go
index 02827a13..73c7367f 100644
--- a/internal/services/repository/data_source_repository_go_proxy_test.go
+++ b/internal/services/repository/data_source_repository_go_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryGoProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_go_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_helm_proxy_test.go b/internal/services/repository/data_source_repository_helm_proxy_test.go
index af7d7fa3..2f285f0b 100644
--- a/internal/services/repository/data_source_repository_helm_proxy_test.go
+++ b/internal/services/repository/data_source_repository_helm_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryHelmProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_helm_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_maven_proxy_test.go b/internal/services/repository/data_source_repository_maven_proxy_test.go
index ac3d657c..50fc61a8 100644
--- a/internal/services/repository/data_source_repository_maven_proxy_test.go
+++ b/internal/services/repository/data_source_repository_maven_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryMavenProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
Maven: repository.Maven{
VersionPolicy: repository.MavenVersionPolicyRelease,
LayoutPolicy: repository.MavenLayoutPolicyStrict,
diff --git a/internal/services/repository/data_source_repository_npm_proxy.go b/internal/services/repository/data_source_repository_npm_proxy.go
index d5424f90..62e747ec 100644
--- a/internal/services/repository/data_source_repository_npm_proxy.go
+++ b/internal/services/repository/data_source_repository_npm_proxy.go
@@ -29,6 +29,7 @@ func DataSourceRepositoryNpmProxy() *schema.Resource {
Description: "Remove non-catalogued versions from the npm package metadata.",
Computed: true,
Type: schema.TypeBool,
+ Deprecated: "This field is removed in nexus version 3.66.0 and will be removed in the next major release of this provider",
},
"remove_quarantined": {
Description: "Remove quarantined versions from the npm package metadata.",
diff --git a/internal/services/repository/data_source_repository_npm_proxy_test.go b/internal/services/repository/data_source_repository_npm_proxy_test.go
index e60163f8..6b707185 100644
--- a/internal/services/repository/data_source_repository_npm_proxy_test.go
+++ b/internal/services/repository/data_source_repository_npm_proxy_test.go
@@ -29,8 +29,12 @@ func TestAccDataSourceRepositoryNpmProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
Npm: &repository.Npm{
- RemoveNonCataloged: true,
+ RemoveNonCataloged: false,
RemoveQuarantined: true,
},
}
@@ -61,7 +65,6 @@ func TestAccDataSourceRepositoryNpmProxy(t *testing.T) {
resource.TestCheckResourceAttr(dataSourceName, "storage.0.strict_content_type_validation", strconv.FormatBool(repoUsingDefaults.Storage.StrictContentTypeValidation)),
),
resource.ComposeAggregateTestCheckFunc(
- resource.TestCheckResourceAttr(dataSourceName, "remove_non_cataloged", strconv.FormatBool(repoUsingDefaults.Npm.RemoveNonCataloged)),
resource.TestCheckResourceAttr(dataSourceName, "remove_quarantined", strconv.FormatBool(repoUsingDefaults.Npm.RemoveQuarantined)),
),
),
diff --git a/internal/services/repository/data_source_repository_nuget_proxy_test.go b/internal/services/repository/data_source_repository_nuget_proxy_test.go
index 63cab994..db0277c1 100644
--- a/internal/services/repository/data_source_repository_nuget_proxy_test.go
+++ b/internal/services/repository/data_source_repository_nuget_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryNugetProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
NugetProxy: repository.NugetProxy{
NugetVersion: repository.NugetVersion2,
QueryCacheItemMaxAge: 300,
diff --git a/internal/services/repository/data_source_repository_p2_proxy_test.go b/internal/services/repository/data_source_repository_p2_proxy_test.go
index 81ee08ea..6d5bc13d 100644
--- a/internal/services/repository/data_source_repository_p2_proxy_test.go
+++ b/internal/services/repository/data_source_repository_p2_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryP2Proxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_p2_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_pypi_proxy_test.go b/internal/services/repository/data_source_repository_pypi_proxy_test.go
index 49443aae..b1283d84 100644
--- a/internal/services/repository/data_source_repository_pypi_proxy_test.go
+++ b/internal/services/repository/data_source_repository_pypi_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryPypiProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_pypi_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_r_proxy_test.go b/internal/services/repository/data_source_repository_r_proxy_test.go
index c8d6e63e..de417fa9 100644
--- a/internal/services/repository/data_source_repository_r_proxy_test.go
+++ b/internal/services/repository/data_source_repository_r_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryRProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_r_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_raw_proxy_test.go b/internal/services/repository/data_source_repository_raw_proxy_test.go
index a5c602ce..d23d1fda 100644
--- a/internal/services/repository/data_source_repository_raw_proxy_test.go
+++ b/internal/services/repository/data_source_repository_raw_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryRawProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_raw_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_rubygems_proxy_test.go b/internal/services/repository/data_source_repository_rubygems_proxy_test.go
index ece69c13..f989c516 100644
--- a/internal/services/repository/data_source_repository_rubygems_proxy_test.go
+++ b/internal/services/repository/data_source_repository_rubygems_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryRubygemsProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_rubygems_proxy.acceptance"
diff --git a/internal/services/repository/data_source_repository_yum_proxy_test.go b/internal/services/repository/data_source_repository_yum_proxy_test.go
index 8620aff0..0fc9502c 100644
--- a/internal/services/repository/data_source_repository_yum_proxy_test.go
+++ b/internal/services/repository/data_source_repository_yum_proxy_test.go
@@ -29,6 +29,10 @@ func TestAccDataSourceRepositoryYumProxy(t *testing.T) {
BlobStoreName: "default",
StrictContentTypeValidation: true,
},
+ NegativeCache: repository.NegativeCache{
+ Enabled: true,
+ TTL: 5,
+ },
}
dataSourceName := "data.nexus_repository_yum_proxy.acceptance"
diff --git a/internal/services/repository/flatten.go b/internal/services/repository/flatten.go
index 07c8a915..86fc00df 100644
--- a/internal/services/repository/flatten.go
+++ b/internal/services/repository/flatten.go
@@ -212,6 +212,21 @@ func flattenHostedStorage(storage *repository.HostedStorage) []map[string]interf
return []map[string]interface{}{data}
}
+func flattenDockerHostedStorage(dockerStorage *repository.DockerHostedStorage) []map[string]interface{} {
+ if dockerStorage == nil {
+ return nil
+ }
+ data := map[string]interface{}{
+ "blob_store_name": dockerStorage.BlobStoreName,
+ "strict_content_type_validation": dockerStorage.StrictContentTypeValidation,
+ "write_policy": dockerStorage.WritePolicy,
+ }
+ if dockerStorage.LatestPolicy != nil {
+ data["latest_policy"] = dockerStorage.LatestPolicy
+ }
+ return []map[string]interface{}{data}
+}
+
func flattenMaven(maven *repository.Maven) []map[string]interface{} {
data := map[string]interface{}{
"version_policy": maven.VersionPolicy,
diff --git a/internal/services/repository/resource_repository_docker_hosted.go b/internal/services/repository/resource_repository_docker_hosted.go
index 901b0d3d..597c4201 100644
--- a/internal/services/repository/resource_repository_docker_hosted.go
+++ b/internal/services/repository/resource_repository_docker_hosted.go
@@ -30,7 +30,7 @@ func ResourceRepositoryDockerHosted() *schema.Resource {
// Hosted schemas
"cleanup": repositorySchema.ResourceCleanup,
"component": repositorySchema.ResourceComponent,
- "storage": repositorySchema.ResourceHostedStorage,
+ "storage": repositorySchema.ResourceDockerHostedStorage,
// Docker hosted schemas
"docker": repositorySchema.ResourceDocker,
},
@@ -39,16 +39,15 @@ func ResourceRepositoryDockerHosted() *schema.Resource {
func getDockerHostedRepositoryFromResourceData(resourceData *schema.ResourceData) repository.DockerHostedRepository {
storageConfig := resourceData.Get("storage").([]interface{})[0].(map[string]interface{})
- writePolicy := repository.StorageWritePolicy(storageConfig["write_policy"].(string))
dockerConfig := resourceData.Get("docker").([]interface{})[0].(map[string]interface{})
repo := repository.DockerHostedRepository{
Name: resourceData.Get("name").(string),
Online: resourceData.Get("online").(bool),
- Storage: repository.HostedStorage{
+ Storage: repository.DockerHostedStorage{
BlobStoreName: storageConfig["blob_store_name"].(string),
StrictContentTypeValidation: storageConfig["strict_content_type_validation"].(bool),
- WritePolicy: &writePolicy,
+ WritePolicy: repository.StorageWritePolicy(storageConfig["write_policy"].(string)),
},
Docker: repository.Docker{
ForceBasicAuth: dockerConfig["force_basic_auth"].(bool),
@@ -56,6 +55,10 @@ func getDockerHostedRepositoryFromResourceData(resourceData *schema.ResourceData
},
}
+ if latestPolicy, ok := storageConfig["latest_policy"]; ok {
+ repo.Storage.LatestPolicy = tools.GetBoolPointer(latestPolicy.(bool))
+ }
+
if httpPort, ok := dockerConfig["http_port"]; ok {
if httpPort.(int) > 0 {
repo.Docker.HTTPPort = tools.GetIntPointer(httpPort.(int))
@@ -109,7 +112,7 @@ func setDockerHostedRepositoryToResourceData(repo *repository.DockerHostedReposi
return err
}
- if err := resourceData.Set("storage", flattenHostedStorage(&repo.Storage)); err != nil {
+ if err := resourceData.Set("storage", flattenDockerHostedStorage(&repo.Storage)); err != nil {
return err
}
diff --git a/internal/services/repository/resource_repository_docker_hosted_test.go b/internal/services/repository/resource_repository_docker_hosted_test.go
index b369e9df..a245f633 100644
--- a/internal/services/repository/resource_repository_docker_hosted_test.go
+++ b/internal/services/repository/resource_repository_docker_hosted_test.go
@@ -16,7 +16,7 @@ import (
)
func testAccResourceRepositoryDockerHosted(name string) repository.DockerHostedRepository {
- writePolicy := repository.StorageWritePolicyAllow
+ latestPolicy := true
return repository.DockerHostedRepository{
Name: name,
@@ -27,10 +27,11 @@ func testAccResourceRepositoryDockerHosted(name string) repository.DockerHostedR
HTTPSPort: tools.GetIntPointer(rand.Intn(999) + 33000),
V1Enabled: false,
},
- Storage: repository.HostedStorage{
+ Storage: repository.DockerHostedStorage{
BlobStoreName: "default",
StrictContentTypeValidation: true,
- WritePolicy: &writePolicy,
+ WritePolicy: repository.StorageWritePolicyAllowOnce,
+ LatestPolicy: &latestPolicy,
},
Cleanup: &repository.Cleanup{
PolicyNames: []string{"cleanup-weekly"},
@@ -77,7 +78,8 @@ func TestAccResourceRepositoryDockerHosted(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "storage.#", "1"),
resource.TestCheckResourceAttr(resourceName, "storage.0.blob_store_name", repo.Storage.BlobStoreName),
resource.TestCheckResourceAttr(resourceName, "storage.0.strict_content_type_validation", strconv.FormatBool(repo.Storage.StrictContentTypeValidation)),
- resource.TestCheckResourceAttr(resourceName, "storage.0.write_policy", string(*repo.Storage.WritePolicy)),
+ resource.TestCheckResourceAttr(resourceName, "storage.0.write_policy", string(repo.Storage.WritePolicy)),
+ resource.TestCheckResourceAttr(resourceName, "storage.0.latest_policy", strconv.FormatBool(*repo.Storage.LatestPolicy)),
resource.TestCheckResourceAttr(resourceName, "cleanup.#", "1"),
resource.TestCheckResourceAttr(resourceName, "cleanup.0.policy_names.#", "1"),
resource.TestCheckResourceAttr(resourceName, "cleanup.0.policy_names.0", repo.Cleanup.PolicyNames[0]),
diff --git a/internal/services/repository/resource_repository_npm_proxy.go b/internal/services/repository/resource_repository_npm_proxy.go
index ae1e0b86..9cf8313b 100644
--- a/internal/services/repository/resource_repository_npm_proxy.go
+++ b/internal/services/repository/resource_repository_npm_proxy.go
@@ -40,6 +40,7 @@ func ResourceRepositoryNpmProxy() *schema.Resource {
Optional: true,
Default: false,
Type: schema.TypeBool,
+ Deprecated: "This field is removed in nexus version 3.66.0 and will be removed in the next major release of this provider",
},
"remove_quarantined": {
Description: "Remove quarantined versions from the npm package metadata.",
diff --git a/internal/services/repository/resource_repository_npm_proxy_test.go b/internal/services/repository/resource_repository_npm_proxy_test.go
index 079a1c64..87bdb076 100644
--- a/internal/services/repository/resource_repository_npm_proxy_test.go
+++ b/internal/services/repository/resource_repository_npm_proxy_test.go
@@ -58,7 +58,7 @@ func testAccResourceRepositoryNpmProxy() repository.NpmProxyRepository {
RemoteURL: "https://npmjs.org",
},
Npm: &repository.Npm{
- RemoveNonCataloged: true,
+ RemoveNonCataloged: false,
RemoveQuarantined: true,
},
}
@@ -129,7 +129,6 @@ func TestAccResourceRepositoryNpmProxy(t *testing.T) {
resource.TestCheckResourceAttr(resourceName, "routing_rule", *repo.RoutingRule),
),
resource.ComposeAggregateTestCheckFunc(
- resource.TestCheckResourceAttr(resourceName, "remove_non_cataloged", strconv.FormatBool(repo.Npm.RemoveNonCataloged)),
resource.TestCheckResourceAttr(resourceName, "remove_quarantined", strconv.FormatBool(repo.Npm.RemoveQuarantined)),
),
),
diff --git a/internal/services/security/data_source_security_user_token.go b/internal/services/security/data_source_security_user_token.go
index 09dfc737..eb19b55c 100644
--- a/internal/services/security/data_source_security_user_token.go
+++ b/internal/services/security/data_source_security_user_token.go
@@ -16,7 +16,7 @@ Use this data source to get the global user-token configuration.`,
"id": common.DataSourceID,
"enabled": {
Computed: true,
- Description: "Activate the feature of user tokens.",
+ Description: "Activation of the user tokens feature.",
Type: schema.TypeBool,
},
"protect_content": {
@@ -24,6 +24,16 @@ Use this data source to get the global user-token configuration.`,
Description: "Require user tokens for repository authentication. This does not effect UI access.",
Type: schema.TypeBool,
},
+ "expiration_enabled": {
+ Description: "Activation of the user tokens expiration feature.",
+ Type: schema.TypeBool,
+ Computed: true,
+ },
+ "expiration_days": {
+ Description: "Number of days user tokens remain valid.",
+ Type: schema.TypeInt,
+ Computed: true,
+ },
},
}
}
diff --git a/internal/services/security/data_source_security_user_token_test.go b/internal/services/security/data_source_security_user_token_test.go
index 72cbaf44..b62920bc 100644
--- a/internal/services/security/data_source_security_user_token_test.go
+++ b/internal/services/security/data_source_security_user_token_test.go
@@ -18,8 +18,10 @@ func TestAccDataSourceSecurityUserToken(t *testing.T) {
dataSourceName := "data.nexus_security_user_token.acceptance"
token := security.UserTokenConfiguration{
- Enabled: true,
- ProtectContent: false,
+ Enabled: true,
+ ProtectContent: false,
+ ExpirationEnabled: true,
+ ExpirationDays: int(30),
}
resource.Test(t, resource.TestCase{
@@ -35,6 +37,8 @@ func TestAccDataSourceSecurityUserToken(t *testing.T) {
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "enabled", strconv.FormatBool(token.Enabled)),
resource.TestCheckResourceAttr(dataSourceName, "protect_content", strconv.FormatBool(token.ProtectContent)),
+ resource.TestCheckResourceAttr(dataSourceName, "expiration_enabled", strconv.FormatBool(token.ExpirationEnabled)),
+ resource.TestCheckResourceAttr(dataSourceName, "expiration_days", strconv.Itoa(token.ExpirationDays)),
),
},
},
diff --git a/internal/services/security/resource_security_user_token.go b/internal/services/security/resource_security_user_token.go
index 804de15b..c5498d8a 100644
--- a/internal/services/security/resource_security_user_token.go
+++ b/internal/services/security/resource_security_user_token.go
@@ -34,14 +34,28 @@ Use this resource to manage the global configuration for the user-tokens.`,
Optional: true,
Default: false,
},
+ "expiration_enabled": {
+ Description: "Set user tokens expiration.",
+ Type: schema.TypeBool,
+ Optional: true,
+ Default: false,
+ },
+ "expiration_days": {
+ Description: "Number of days for which you want user tokens to remain valid.",
+ Type: schema.TypeInt,
+ Optional: true,
+ Default: 30,
+ },
},
}
}
func getSecurityUserTokenFromResourceData(d *schema.ResourceData) security.UserTokenConfiguration {
return security.UserTokenConfiguration{
- Enabled: d.Get("enabled").(bool),
- ProtectContent: d.Get("protect_content").(bool),
+ Enabled: d.Get("enabled").(bool),
+ ProtectContent: d.Get("protect_content").(bool),
+ ExpirationEnabled: d.Get("expiration_enabled").(bool),
+ ExpirationDays: d.Get("expiration_days").(int),
}
}
@@ -49,6 +63,8 @@ func setSecurityUserTokenToResourceData(token *security.UserTokenConfiguration,
d.SetId("golbalUserTokenConfiguration")
d.Set("enabled", token.Enabled)
d.Set("protect_content", token.ProtectContent)
+ d.Set("expiration_enabled", token.ExpirationEnabled)
+ d.Set("expiration_days", token.ExpirationDays)
}
func resourceSecurityUserTokenRead(d *schema.ResourceData, m interface{}) error {
diff --git a/internal/services/security/resource_security_user_token_test.go b/internal/services/security/resource_security_user_token_test.go
index eabc1e2f..74b835b7 100644
--- a/internal/services/security/resource_security_user_token_test.go
+++ b/internal/services/security/resource_security_user_token_test.go
@@ -19,8 +19,10 @@ func TestAccResourceSecurityUserToken(t *testing.T) {
resName := "nexus_security_user_token.acceptance"
token := security.UserTokenConfiguration{
- Enabled: true,
- ProtectContent: false,
+ Enabled: true,
+ ProtectContent: false,
+ ExpirationEnabled: true,
+ ExpirationDays: int(30),
}
resource.Test(t, resource.TestCase{
@@ -32,6 +34,8 @@ func TestAccResourceSecurityUserToken(t *testing.T) {
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(resName, "enabled", strconv.FormatBool(token.Enabled)),
resource.TestCheckResourceAttr(resName, "protect_content", strconv.FormatBool(token.ProtectContent)),
+ resource.TestCheckResourceAttr(resName, "expiration_enabled", strconv.FormatBool(token.ExpirationEnabled)),
+ resource.TestCheckResourceAttr(resName, "expiration_days", strconv.Itoa(token.ExpirationDays)),
),
},
},
@@ -41,8 +45,10 @@ func TestAccResourceSecurityUserToken(t *testing.T) {
func testAccResourceSecurityUserTokenConfig(token security.UserTokenConfiguration) string {
return fmt.Sprintf(`
resource "nexus_security_user_token" "acceptance" {
- enabled = %t
- protect_content = %t
+ enabled = %t
+ protect_content = %t
+ expiration_enabled = %t
+ expiration_days = %d
}
-`, token.Enabled, token.ProtectContent)
+`, token.Enabled, token.ProtectContent, token.ExpirationEnabled, token.ExpirationDays)
}
diff --git a/scripts/.env b/scripts/.env
index d171f4e5..478a267f 100644
--- a/scripts/.env
+++ b/scripts/.env
@@ -1,3 +1,3 @@
export NEXUS_IMAGE=ghcr.io/datadrivers/docker-nexus3
-export NEXUS_VERSION=3.64.0
+export NEXUS_VERSION=3.70.1
export NEXUS_PORT=8081
diff --git a/scripts/start-services.sh b/scripts/start-services.sh
index 1f608823..8705513d 100755
--- a/scripts/start-services.sh
+++ b/scripts/start-services.sh
@@ -4,6 +4,6 @@ set -eo pipefail
source ./script.source
echo "Starting Nexus ${NEXUS_TYPE} and other required services..."
-docker-compose up -d
+docker compose up -d
./wait-for-nexus.sh
diff --git a/scripts/stop-services.sh b/scripts/stop-services.sh
index 6e588adf..aa4d46b6 100755
--- a/scripts/stop-services.sh
+++ b/scripts/stop-services.sh
@@ -4,4 +4,4 @@ set -eo pipefail
source ./script.source
echo "Stopping the services..."
-docker-compose down
+docker compose down
diff --git a/templates/index.md.tmpl b/templates/index.md.tmpl
index 28ebcf30..88684d11 100644
--- a/templates/index.md.tmpl
+++ b/templates/index.md.tmpl
@@ -8,7 +8,7 @@ description: |-
The Nexus provider allows Terraform to read from, write to, and configure [Sonatype Nexus Repository Manager](https://www.sonatype.com/product-nexus-repository).
--> **Note** This provider hat been implemented and tested with Sonatype Nexus Repository Manager OSS `3.64.0-03`.
+-> **Note** This provider hat been implemented and tested with Sonatype Nexus Repository Manager OSS `3.70.1-02`.
## Usage