Skip to content

Commit

Permalink
feat(elb): import elb resource and add unit test and docs
Browse files Browse the repository at this point in the history
  • Loading branch information
Zhukun-Huawei committed Oct 27, 2023
1 parent 02543dd commit 0566a1e
Show file tree
Hide file tree
Showing 7 changed files with 546 additions and 1 deletion.
46 changes: 46 additions & 0 deletions docs/data-sources/lb_certificate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
subcategory: "Elastic Load Balance (ELB)"
---

# flexibleengine_lb_certificate

Use this data source to get the certificates in FlexibleEngine Elastic Load Balance (ELB).

## Example Usage

```hcl
variable "certificate_name" {}
data "flexibleengine_lb_certificate" "test" {
name = var.certificate_name
type = "server"
}
```

## Argument Reference

The following arguments are supported:

* `region` - (Optional, String) The region in which to obtain the ELB certificate. If omitted, the provider-level region
will be used.

* `type` - (Optional, String) Specifies the certificate type. The default value is `server`. The value can be one of the
following:
+ `server`: indicates the server certificate.
+ `client`: indicates the CA certificate.

* `name` - (Required, String) The name of certificate. The value is case sensitive and does not supports fuzzy matching.

-> **NOTE:** The certificate name is not unique. Only returns the last created one when matched multiple certificates.

## Attribute Reference

In addition to all arguments above, the following attributes are exported:

* `id` - The certificate ID in UUID format.

* `domain` - The domain of the Certificate. This parameter is valid only when `type` is "server".

* `description` - Human-readable description for the Certificate.

* `expiration` - Indicates the time when the certificate expires.
72 changes: 72 additions & 0 deletions docs/data-sources/lb_listeners.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
subcategory: "Elastic Load Balance (ELB)"
---

# flexibleengine_lb_listeners

Use this data source to query the list of ELB listeners.

## Example Usage

```

Check failure on line 11 in docs/data-sources/lb_listeners.md

View workflow job for this annotation

GitHub Actions / markdownlint

Fenced code blocks should have a language specified [Context: "```"]
variable "protocol" {}
data "flexibleengine_lb_listeners" "test" {
protocol = var.protocol
}
```

## Argument Reference

The following arguments are supported:

* `region` - (Optional, String) Specifies the region in which to query the data source.
If omitted, the provider-level region will be used.

* `name` - (Optional, String) The listener name.

* `protocol` - (Optional, String) The listener protocol.
The valid values are **TCP**, **UDP**, **HTTP** and **TERMINATED_HTTPS**.

* `protocol_port` - (Optional, String) The front-end listening port of the listener.
The valid value is range from `1` to `65535`.

## Attribute Reference

In addition to all arguments above, the following attributes are exported:

* `id` - The resource ID.

* `listeners` - Listener list.
The [object](#listeners_listeners) structure is documented below.

<a name="listeners_listeners"></a>
The `listeners` block supports:

* `id` - The ELB listener ID.

* `name` - The listener name.

* `protocol` - The listener protocol.

* `protocol_port` - The front-end listening port of the listener.

* `default_pool_id` - The ID of the default pool with which the ELB listener is associated.

* `description` - The description of the ELB listener.

* `connection_limit` - The maximum number of connections allowed for the listener.

* `http2_enable` - Whether the ELB listener uses HTTP/2.

* `default_tls_container_ref` - The ID of the server certificate used by the listener.

* `sni_container_refs` - List of the SNI certificate (server certificates with a domain name) IDs used by the listener.

* `loadbalancers` - Listener list.
The [object](#listeners_loadbalancers) structure is documented below.

<a name="listeners_loadbalancers"></a>
The `loadbalancers` block supports:

* `id` - The ELB loadbalancer ID.
49 changes: 49 additions & 0 deletions docs/resources/elb_logtank.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
subcategory: "Dedicated Load Balance (Dedicated ELB)"
---

# flexibleengine_elb_logtank

Manage an ELB logtank resource within FlexibleEngine.

## Example Usage

```hcl
variable "loadbalancer_id" {}
variable "group_id" {}
variable "topic_id" {}
resource "flexibleengine_elb_logtank" "test" {
loadbalancer_id = var.loadbalancer_id
log_group_id = var.group_id
log_topic_id = var.topic_id
}
```

## Argument Reference

The following arguments are supported:

* `region` - (Optional, String, ForceNew) The region in which to create the logtank resource.
If omitted, the provider-level region will be used. Changing this creates a new logtank.

* `loadbalancer_id` - (Required, String, ForceNew) Specifies the ID of a loadbalancer. Changing this
creates a new logtank

* `log_group_id` - (Required, String) Specifies the ID of a log group. It is provided by other service.

* `log_topic_id` - (Required, String) Specifies the ID of the subscribe topic.

## Attribute Reference

In addition to all arguments above, the following attributes are exported:

* `id` - The logtank ID.

## Import

ELB logtank can be imported using the logtank ID, e.g.

```

Check failure on line 47 in docs/resources/elb_logtank.md

View workflow job for this annotation

GitHub Actions / markdownlint

Fenced code blocks should have a language specified [Context: "```"]
$ terraform import flexibleengine_elb_logtank.test 2f148a75-acd3-4ce7-8f63-d5c9fadab3a0

Check failure on line 48 in docs/resources/elb_logtank.md

View workflow job for this annotation

GitHub Actions / markdownlint

Dollar signs used before commands without showing output [Context: "$ terraform import flexibleeng..."]
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
/*
Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved.
*/

package acceptance

import (
"fmt"
"testing"

"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 TestAccDataSourceLBCertificateV2_basic(t *testing.T) {
name := fmt.Sprintf("cert-%s", acctest.RandString(6))
dataSourceName := "data.flexibleengine_lb_certificate_v2.cert_1"
dc := acceptance.InitDataSourceCheck(dataSourceName)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: TestAccProviderFactories,
Steps: []resource.TestStep{
{
Config: testAccLBCertificateSourceV2_conf(name),
Check: resource.ComposeTestCheckFunc(
dc.CheckResourceExists(),
resource.TestCheckResourceAttr(dataSourceName, "name", name),
resource.TestCheckResourceAttr(dataSourceName, "type", "server"),
resource.TestCheckResourceAttrSet(dataSourceName, "domain"),
resource.TestCheckResourceAttrSet(dataSourceName, "description"),
),
},
},
})
}

func testAccLBCertificateSourceV2_conf(name string) string {
return fmt.Sprintf(`
data "flexibleengine_lb_certificate_v2" "cert_1" {
name = flexibleengine_elb_certificate.certificate_1.name
depends_on = [flexibleengine_elb_certificate.certificate_1]
}
resource "flexibleengine_elb_certificate" "certificate_1" {
name = "%s"
description = "terraform test certificate"
domain = "www.elb.com"
type = "server"
private_key = <<EOT
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN2s8tZ/6LC3X82fajpVsYqF1x
qEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYldiE6Vp8HH5BSKaCWKVg8lGWg1
UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb3iyNBmiZ8aZhGw2pI1YwR+15
MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dzQ8z1JXWdg8/9Zx7Ktvgwu5PQ
M3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5mf2DPkVgM08XAgaLJcLigwD5
13koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwIDAQABAoIBACU9S5fjD9/jTMXA
DRs08A+gGgZUxLn0xk+NAPX3LyB1tfdkCaFB8BccLzO6h3KZuwQOBPv6jkdvEDbx
Nwyw3eA/9GJsIvKiHc0rejdvyPymaw9I8MA7NbXHaJrY7KpqDQyk6sx+aUTcy5jg
iMXLWdwXYHhJ/1HVOo603oZyiS6HZeYU089NDUcX+1SJi3e5Ke0gPVXEqCq1O11/
rh24bMxnwZo4PKBWdcMBN5Zf/4ij9vrZE+fFzW7vGBO48A5lvZxWU2U5t/OZQRtN
1uLOHmMFa0FIF2aWbTVfwdUWAFsvAOkHj9VV8BXOUwKOUuEktdkfAlvrxmsFrO/H
yDeYYPkCgYEA/S55CBbR0sMXpSZ56uRn8JHApZJhgkgvYr+FqDlJq/e92nAzf01P
RoEBUajwrnf1ycevN/SDfbtWzq2XJGqhWdJmtpO16b7KBsC6BdRcH6dnOYh31jgA
vABMIP3wzI4zSVTyxRE8LDuboytF1mSCeV5tHYPQTZNwrplDnLQhywcCgYEAw8Yc
Uk/eiFr3hfH/ZohMfV5p82Qp7DNIGRzw8YtVG/3+vNXrAXW1VhugNhQY6L+zLtJC
aKn84ooup0m3YCg0hvINqJuvzfsuzQgtjTXyaE0cEwsjUusOmiuj09vVx/3U7siK
Hdjd2ICPCvQ6Q8tdi8jV320gMs05AtaBkZdsiWUCgYEAtLw4Kk4f+xTKDFsrLUNf
75wcqhWVBiwBp7yQ7UX4EYsJPKZcHMRTk0EEcAbpyaJZE3I44vjp5ReXIHNLMfPs
uvI34J4Rfot0LN3n7cFrAi2+wpNo+MOBwrNzpRmijGP2uKKrq4JiMjFbKV/6utGF
Up7VxfwS904JYpqGaZctiIECgYA1A6nZtF0riY6ry/uAdXpZHL8ONNqRZtWoT0kD
79otSVu5ISiRbaGcXsDExC52oKrSDAgFtbqQUiEOFg09UcXfoR6HwRkba2CiDwve
yHQLQI5Qrdxz8Mk0gIrNrSM4FAmcW9vi9z4kCbQyoC5C+4gqeUlJRpDIkQBWP2Y4
2ct/bQKBgHv8qCsQTZphOxc31BJPa2xVhuv18cEU3XLUrVfUZ/1f43JhLp7gynS2
ep++LKUi9D0VGXY8bqvfJjbECoCeu85vl8NpCXwe/LoVoIn+7KaVIZMwqoGMfgNl
nEqm7HWkNxHhf8A6En/IjleuddS1sf9e/x+TJN1Xhnt9W6pe7Fk1
-----END RSA PRIVATE KEY-----
EOT
certificate = <<EOT
-----BEGIN CERTIFICATE-----
MIIDpTCCAo2gAwIBAgIJAKdmmOBYnFvoMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV
BAYTAnh4MQswCQYDVQQIDAJ4eDELMAkGA1UEBwwCeHgxCzAJBgNVBAoMAnh4MQsw
CQYDVQQLDAJ4eDELMAkGA1UEAwwCeHgxGTAXBgkqhkiG9w0BCQEWCnh4QDE2My5j
b20wHhcNMTcxMjA0MDM0MjQ5WhcNMjAxMjAzMDM0MjQ5WjBpMQswCQYDVQQGEwJ4
eDELMAkGA1UECAwCeHgxCzAJBgNVBAcMAnh4MQswCQYDVQQKDAJ4eDELMAkGA1UE
CwwCeHgxCzAJBgNVBAMMAnh4MRkwFwYJKoZIhvcNAQkBFgp4eEAxNjMuY29tMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwZ5UJULAjWr7p6FVwGRQRjFN
2s8tZ/6LC3X82fajpVsYqF1xqEuUDndDXVD09E4u83MS6HO6a3bIVQDp6/klnYld
iE6Vp8HH5BSKaCWKVg8lGWg1UM9wZFnlryi14KgmpIFmcu9nA8yV/6MZAe6RSDmb
3iyNBmiZ8aZhGw2pI1YwR+15MVqFFGB+7ExkziROi7L8CFCyCezK2/oOOvQsH1dz
Q8z1JXWdg8/9Zx7Ktvgwu5PQM3cJtSHX6iBPOkMU8Z8TugLlTqQXKZOEgwajwvQ5
mf2DPkVgM08XAgaLJcLigwD513koAdtJd5v+9irw+5LAuO3JclqwTvwy7u/YwwID
AQABo1AwTjAdBgNVHQ4EFgQUo5A2tIu+bcUfvGTD7wmEkhXKFjcwHwYDVR0jBBgw
FoAUo5A2tIu+bcUfvGTD7wmEkhXKFjcwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
AQsFAAOCAQEAWJ2rS6Mvlqk3GfEpboezx2J3X7l1z8Sxoqg6ntwB+rezvK3mc9H0
83qcVeUcoH+0A0lSHyFN4FvRQL6X1hEheHarYwJK4agb231vb5erasuGO463eYEG
r4SfTuOm7SyiV2xxbaBKrXJtpBp4WLL/s+LF+nklKjaOxkmxUX0sM4CTA7uFJypY
c8Tdr8lDDNqoUtMD8BrUCJi+7lmMXRcC3Qi3oZJW76ja+kZA5mKVFPd1ATih8TbA
i34R7EQDtFeiSvBdeKRsPp8c0KT8H1B4lXNkkCQs2WX5p4lm99+ZtLD4glw8x6Ic
i1YhgnQbn5E0hz55OLu5jvOkKQjPCW+8Kg==
-----END CERTIFICATE-----
EOT
}
`, name)
}
Loading

0 comments on commit 0566a1e

Please sign in to comment.