Skip to content

Commit

Permalink
refactor(fgs/dependency): using auto-gen style to replace old coding (#…
Browse files Browse the repository at this point in the history
…6289)

* test(fgs/dependency): adjust the acceptance test for version data source

* refactor(fgs/dependency): using auto-gen style to replace old coding
  • Loading branch information
Lance52259 authored Feb 14, 2025
1 parent ad7a4ab commit 01e62b5
Show file tree
Hide file tree
Showing 3 changed files with 195 additions and 92 deletions.
22 changes: 18 additions & 4 deletions docs/data-sources/fgs_dependency_versions.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,42 @@ subcategory: "FunctionGraph"
layout: "huaweicloud"
page_title: "HuaweiCloud: huaweicloud_fgs_dependency_versions"
description: |-
Use this data source to get the list of dependency package versions of FGS within HuaweiCloud.
Use this data source to get the list of dependency package versions within HuaweiCloud.
---

# huaweicloud_fgs_dependency_versions

Use this data source to get the list of dependency package versions of FGS within HuaweiCloud.
Use this data source to get the list of dependency package versions within HuaweiCloud.

## Example Usage

### Query all versions under a specified dependency package

```hcl
variable "dependency_id" {}
data "huaweicloud_fgs_dependency_versions" "test" {
dependency_id = var.dependency_id
}
```

### Query a specified dependency package version

```hcl
variable "dependency_id" {}
variable "version_name" {}
data "huaweicloud_fgs_dependency_versions" "test" {
dependency_id = var.dependency_id
version = var.version_name
}
```

## Argument Reference

The following arguments are supported:

* `region` - (Optional, String) Specifies the region in which to query the data source.
* `region` - (Optional, String) Specifies the region where the dependency package and the versions are located.
If omitted, the provider-level region will be used.

* `dependency_id` - (Required, String) Specifies the ID of the dependency package to which the versions belong.
Expand Down Expand Up @@ -60,7 +74,7 @@ In addition to all arguments above, the following attributes are exported:

* `id` - The data source ID.

* `versions` - All dependency package versions that match the filter parameters.
* `versions` - All dependency package versions that match the filter parameters.
The [versions](#dependency_versions) structure is documented below.

<a name="dependency_versions"></a>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,36 @@ package fgs

import (
"fmt"
"regexp"
"testing"

"github.com/hashicorp/go-uuid"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"

"github.com/huaweicloud/terraform-provider-huaweicloud/huaweicloud/services/acceptance"
)

func TestAccDependencyVersions_basic(t *testing.T) {
func TestAccDataDependencyVersions_basic(t *testing.T) {
var (
rName = acceptance.RandomAccResourceName()
dataSourceName = "data.huaweicloud_fgs_dependency_versions.test"
dc = acceptance.InitDataSourceCheck(dataSourceName)

byVersionId = "data.huaweicloud_fgs_dependency_versions.filter_by_version_id"
dcByVersionId = acceptance.InitDataSourceCheck(byVersionId)
rName = "huaweicloud_fgs_dependency_version.test"
all = "data.huaweicloud_fgs_dependency_versions.all"
dcForAllDependencyVersions = acceptance.InitDataSourceCheck(all)

byVersionId = "data.huaweicloud_fgs_dependency_versions.filter_by_version_id"
dcByVersionId = acceptance.InitDataSourceCheck(byVersionId)
byNotFoundVersionId = "data.huaweicloud_fgs_dependency_versions.filter_by_not_found_version_id"
dcByNotFoundVersionId = acceptance.InitDataSourceCheck(byNotFoundVersionId)

byVersion = "data.huaweicloud_fgs_dependency_versions.filter_by_version"
dcByVersion = acceptance.InitDataSourceCheck(byVersion)
byNotFoundVersion = "data.huaweicloud_fgs_dependency_versions.filter_by_not_found_version"
dcByNotFoundVersion = acceptance.InitDataSourceCheck(byNotFoundVersion)

byRuntime = "data.huaweicloud_fgs_dependency_versions.filter_by_runtime"
dcByRuntime = acceptance.InitDataSourceCheck(byRuntime)
byNotFoundRuntime = "data.huaweicloud_fgs_dependency_versions.filter_by_not_found_runtime"
dcByNotFoundRuntime = acceptance.InitDataSourceCheck(byNotFoundRuntime)
)

resource.ParallelTest(t, resource.TestCase{
Expand All @@ -27,40 +42,59 @@ func TestAccDependencyVersions_basic(t *testing.T) {
ProviderFactories: acceptance.TestAccProviderFactories,
Steps: []resource.TestStep{
{
Config: testAccDependencyVersions_basic(rName),
Config: testAccDataDependencyVersions_basic(),
Check: resource.ComposeTestCheckFunc(
dc.CheckResourceExists(),
resource.TestCheckResourceAttrSet(dataSourceName, "versions.#"),
dcForAllDependencyVersions.CheckResourceExists(),
resource.TestMatchResourceAttr(all, "versions.#", regexp.MustCompile(`[1-9][0-9]*`)),
// Filter by version ID.
dcByVersionId.CheckResourceExists(),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.id", "huaweicloud_fgs_dependency_version.test", "version_id"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.version", "huaweicloud_fgs_dependency_version.test", "version"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.dependency_id", "huaweicloud_fgs_dependency_version.test",
"dependency_id"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.dependency_name", "huaweicloud_fgs_dependency_version.test", "name"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.runtime", "huaweicloud_fgs_dependency_version.test", "runtime"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.link", "huaweicloud_fgs_dependency_version.test", "link"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.size", "huaweicloud_fgs_dependency_version.test", "size"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.etag", "huaweicloud_fgs_dependency_version.test", "etag"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.owner", "huaweicloud_fgs_dependency_version.test", "owner"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.description", "huaweicloud_fgs_dependency_version.test",
"description"),
resource.TestCheckOutput("is_version_id_filter_useful", "true"),
dcByNotFoundVersionId.CheckResourceExists(),
resource.TestCheckOutput("version_id_not_found_validation_pass", "true"),
// Filter by version number.
dcByVersion.CheckResourceExists(),
resource.TestCheckOutput("is_version_filter_useful", "true"),
dcByNotFoundVersion.CheckResourceExists(),
resource.TestCheckOutput("version_not_found_validation_pass", "true"),
// Filter by runtime of the dependency version.
dcByRuntime.CheckResourceExists(),
resource.TestCheckOutput("is_runtime_filter_useful", "true"),
dcByNotFoundRuntime.CheckResourceExists(),
resource.TestCheckOutput("runtime_not_found_validation_pass", "true"),
// Check attributes.
dcByVersionId.CheckResourceExists(),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.id", rName, "version_id"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.version", rName, "version"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.dependency_id", rName, "dependency_id"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.dependency_name", rName, "name"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.runtime", rName, "runtime"),
resource.TestCheckResourceAttrSet(byVersionId, "versions.0.link"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.size", rName, "size"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.etag", rName, "etag"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.owner", rName, "owner"),
resource.TestCheckResourceAttrPair(byVersionId, "versions.0.description", rName, "description"),
),
},
},
})
}
func testAccDependencyVersions_basic(name string) string {

func testAccDataDependencyVersions_basic() string {
var (
name = acceptance.RandomAccResourceName()
randVersionId, _ = uuid.GenerateUUID()
randVersion = acctest.RandIntRange(10000, 99999)
)

return fmt.Sprintf(`
%[1]s
data "huaweicloud_fgs_dependency_versions" "test" {
# Without any filter parameter.
data "huaweicloud_fgs_dependency_versions" "all" {
dependency_id = huaweicloud_fgs_dependency_version.test.dependency_id
}
// Filter by version ID
# Filter by version ID.
locals {
version_id = huaweicloud_fgs_dependency_version.test.version_id
}
Expand All @@ -70,13 +104,30 @@ data "huaweicloud_fgs_dependency_versions" "filter_by_version_id" {
version_id = local.version_id
}
data "huaweicloud_fgs_dependency_versions" "filter_by_not_found_version_id" {
# Query dependency versions using a not exist version ID after dependency version resource create.
depends_on = [
huaweicloud_fgs_dependency_version.test,
]
dependency_id = huaweicloud_fgs_dependency_version.test.dependency_id
version_id = "%[2]s"
}
locals {
version_id_filter_result = [for v in data.huaweicloud_fgs_dependency_versions.filter_by_version_id.versions[*].id :
v == local.version_id]
}
output "is_version_id_filter_useful" {
value = length(data.huaweicloud_fgs_dependency_versions.filter_by_version_id.versions) >= 1 && alltrue(
[for v in data.huaweicloud_fgs_dependency_versions.filter_by_version_id.versions[*].id : v == local.version_id]
)
value = length(local.version_id_filter_result) > 0 && alltrue(local.version_id_filter_result)
}
// Filter by version
output "version_id_not_found_validation_pass" {
value = length(data.huaweicloud_fgs_dependency_versions.filter_by_not_found_version_id.versions) == 0
}
# Filter by version.
locals {
version = huaweicloud_fgs_dependency_version.test.version
}
Expand All @@ -86,26 +137,62 @@ data "huaweicloud_fgs_dependency_versions" "filter_by_version" {
version = local.version
}
data "huaweicloud_fgs_dependency_versions" "filter_by_not_found_version" {
# Query dependency versions using a not exist version ID after dependency version resource create.
depends_on = [
huaweicloud_fgs_dependency_version.test,
]
dependency_id = huaweicloud_fgs_dependency_version.test.dependency_id
version = %[3]d
}
locals {
version_filter_result = [for v in data.huaweicloud_fgs_dependency_versions.filter_by_version.versions[*].version :
v == local.version]
}
output "is_version_filter_useful" {
value = length(data.huaweicloud_fgs_dependency_versions.filter_by_version.versions) > 0 && alltrue(
[for v in data.huaweicloud_fgs_dependency_versions.filter_by_version.versions[*].version : v == local.version]
)
value = length(local.version_filter_result) > 0 && alltrue(local.version_filter_result)
}
output "version_not_found_validation_pass" {
value = length(data.huaweicloud_fgs_dependency_versions.filter_by_not_found_version.versions) == 0
}
// Filter by runtime
# Filter by runtime.
locals {
runtime = data.huaweicloud_fgs_dependency_versions.test.versions[0].runtime
runtime = huaweicloud_fgs_dependency_version.test.runtime
}
data "huaweicloud_fgs_dependency_versions" "filter_by_runtime" {
# The behavior of parameter 'runtime' of the resource is 'Required', means this parameter does not
# have 'Know After Apply' behavior.
dependency_id = huaweicloud_fgs_dependency_version.test.dependency_id
runtime = local.runtime
}
data "huaweicloud_fgs_dependency_versions" "filter_by_not_found_runtime" {
# Query dependency versions using a not exist version ID after dependency version resource create.
depends_on = [
huaweicloud_fgs_dependency_version.test,
]
dependency_id = huaweicloud_fgs_dependency_version.test.dependency_id
runtime = "runtime_not_found"
}
locals {
runtime_filter_result = [for v in data.huaweicloud_fgs_dependency_versions.filter_by_runtime.versions[*].runtime :
v == local.runtime]
}
output "is_runtime_filter_useful" {
value = length(data.huaweicloud_fgs_dependency_versions.filter_by_runtime.versions) > 0 && alltrue(
[for v in data.huaweicloud_fgs_dependency_versions.filter_by_runtime.versions[*].runtime : v == local.runtime]
)
value = length(local.runtime_filter_result) > 0 && alltrue(local.runtime_filter_result)
}
output "runtime_not_found_validation_pass" {
value = length(data.huaweicloud_fgs_dependency_versions.filter_by_not_found_runtime.versions) == 0
}
`, testAccDependencyVersion_basic(name))
`, testAccDependencyVersion_basic(name), randVersionId, randVersion)
}
Loading

0 comments on commit 01e62b5

Please sign in to comment.