Skip to content

Commit

Permalink
WIP(ELB): Synchronized ELB resources and data sources.
Browse files Browse the repository at this point in the history
  • Loading branch information
Zippo-Wang committed Jan 8, 2024
1 parent ba09928 commit 53b2c6f
Show file tree
Hide file tree
Showing 9 changed files with 849 additions and 77 deletions.
25 changes: 15 additions & 10 deletions docs/data-sources/lb_loadbalancer_v2.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,46 @@
subcategory: "Elastic Load Balance (ELB)"
---

# flexibleengine_lb_loadbalancer_v2
# flexibleengine_lb_loadbalancer

Use this data source to get a specific elb loadbalancer within FlexibleEngine.
Use this data source to get available FlexibleEngine elb load balancer.

## Example Usage

```hcl
variable "lb_name" {}
data "flexibleengine_lb_loadbalancer_v2" "test" {
data "flexibleengine_lb_loadbalancer" "test" {
name = var.lb_name
}
```

## Argument Reference

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

* `name` - (Optional, String) Specifies the name of the load balancer.

* `id` - (Optional, String) Specifies the data source ID of the load balancer in UUID format.

* `description` - (Optional, String) Specifies the supplementary information about the load balancer.
* `status` - (Optional, String) Specifies the operating status of the load balancer. Valid values are *ONLINE* and
*FROZEN*.

* `vip_subnet_id` - (Optional, String) Specifies the ID of the subnet where the load balancer works.
* `description` - (Optional, String) Specifies the supplementary information about the load balancer.

* `vip_address` - (Optional, String) Specifies the private IP address of the load balancer.

* `vip_subnet_id` - (Optional, String) Specifies the **IPv4 subnet ID** of the subnet where the load balancer works.

* `enterprise_project_id` - (Optional, String) Specifies the enterprise project id of the load balancer.

## Attribute Reference

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

* `vip_port_id` - The ID of the port bound to the private IP address of the load balancer.
* `tags` - The tags associated with the load balancer.

* `status` - The operating status of the load balancer.
* `vip_port_id` - The ID of the port bound to the private IP address of the load balancer.

* `tags` - The tags associated with the load balancer.
* `public_ip` - The EIP address that is associated to the Load Balancer instance.
49 changes: 27 additions & 22 deletions docs/resources/lb_member_v2.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,47 @@
---
subcategory: "Elastic Load Balance (ELB)"
description: ""
page_title: "flexibleengine_lb_member_v2"
---

# flexibleengine_lb_member_v2
# flexibleengine_lb_member

Manages an **enhanced** load balancer member resource within FlexibleEngine.
Manages an ELB member resource within FlexibleEngine.

## Example Usage

```hcl
resource "flexibleengine_lb_member_v2" "example_member" {
variable "lb_pool_id" {}
variable "ipv4_subnet_id" {}
resource "flexibleengine_lb_member" "member_1" {
address = "192.168.199.23"
protocol_port = 8080
pool_id = flexibleengine_lb_pool_v2.example_pool.id
subnet_id = flexibleengine_vpc_subnet_v1.example_subnet.ipv4_subnet_id
pool_id = var.lb_pool_id
subnet_id = var.ipv4_subnet_id
}
```

## Argument Reference

The following arguments are supported:

* `region` - (Optional, String, ForceNew) The region in which to obtain the V2 Networking client.
A Networking client is needed to be created. If omitted, the `region` argument of the provider is used.
Changing this creates a new member.
* `region` - (Optional, String, ForceNew) The region in which to create the ELB member resource. If omitted, the the
provider-level region will be used. Changing this creates a new member.

* `pool_id` - (Required, String, ForceNew) The id of the pool that this member will be
assigned to. Changing this creates a new member.
* `pool_id` - (Required, String, ForceNew) The id of the pool that this member will be assigned to.

* `subnet_id` - (Required, String, ForceNew) The `ipv4_subnet_id` or `ipv6_subnet_id` of the
VPC Subnet in which to access the member. Changing this creates a new member.
* `subnet_id` - (Required, String, ForceNew) The **IPv4 subnet ID** of the subnet in which to access the member.

* `address` - (Required, String, ForceNew) The IP address of the member to receive traffic from
the load balancer. Changing this creates a new member.
* `name` - (Optional, String) Human-readable name for the member.

* `protocol_port` - (Required, Int, ForceNew) The port on which to listen for client traffic.
* `address` - (Required, String, ForceNew) The IP address of the member to receive traffic from the load balancer.
Changing this creates a new member.

* `name` - (Optional, String) Human-readable name for the member.
* `protocol_port` - (Required, Int, ForceNew) The port on which to listen for client traffic. Changing this creates a
new member.

* `weight` - (Optional, Int) A positive integer value that indicates the relative
portion of traffic that this member should receive from the pool. For
example, a member with a weight of 10 receives five times as much traffic
as a member with a weight of 2.
* `weight` - (Optional, Int) A positive integer value that indicates the relative portion of traffic that this member
should receive from the pool. For example, a member with a weight of 10 receives five times as much traffic as a
member with a weight of 2.

## Attribute Reference

Expand All @@ -59,3 +56,11 @@ This resource provides the following timeouts configuration options:
* `create` - Default is 10 minutes.
* `update` - Default is 10 minutes.
* `delete` - Default is 10 minutes.

## Import

ELB member can be imported using the pool ID and member ID separated by a slash, e.g.

```shell
terraform import flexibleengine_lb_member.member_1 e0bd694a-abbe-450e-b329-0931fd1cc5eb/4086b0c9-b18c-4d1c-b6b8-4c56c3ad2a9e
```
98 changes: 69 additions & 29 deletions docs/resources/lb_monitor_v2.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,90 @@
---
subcategory: "Elastic Load Balance (ELB)"
description: ""
page_title: "flexibleengine_lb_monitor_v2"
---

# flexibleengine_lb_monitor_v2
# flexibleengine_lb_monitor

Manages an **enhanced** load balancer monitor resource within FlexibleEngine.
Manages an ELB monitor resource within FlexibleEngine.

## Example Usage

### TCP Health Check

```hcl
resource "flexibleengine_lb_monitor" "monitor_tcp" {
pool_id = var.pool_id
type = "TCP"
delay = 5
timeout = 3
max_retries = 3
}
```

### UDP Health Check

```hcl
resource "flexibleengine_lb_monitor" "monitor_udp" {
pool_id = var.pool_id
type = "UDP_CONNECT"
delay = 5
timeout = 3
max_retries = 3
}
```

### HTTP Health Check

```hcl
resource "flexibleengine_lb_monitor_v2" "monitor_1" {
pool_id = flexibleengine_lb_pool_v2.pool_1.id
type = "PING"
delay = 20
timeout = 10
max_retries = 5
resource "flexibleengine_lb_monitor" "monitor_http" {
pool_id = var.pool_id
type = "HTTP"
delay = 5
timeout = 3
max_retries = 3
url_path = "/test"
expected_codes = "200-202"
}
```

## Argument Reference

The following arguments are supported:

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

* `pool_id` - (Required, String, ForceNew) Specifies the id of the pool that this monitor will be assigned to. Changing
this creates a new monitor.

* `pool_id` - (Required, String, ForceNew) The id of the pool that this monitor will be assigned to.
Changing this creates a new monitor.
* `type` - (Required, String, ForceNew) Specifies the monitor protocol.
The value can be *TCP*, *UDP_CONNECT*, or *HTTP*.
If the listener protocol is UDP, the monitor protocol must be *UDP_CONNECT*. Changing this creates a new monitor.

* `type` - (Required, String, ForceNew) The type of probe, which is PING, TCP, HTTP, or HTTPS,
that is sent by the load balancer to verify the member state. Changing this creates a new monitor.
* `delay` - (Required, Int) Specifies the maximum time between health checks in the unit of second. The value ranges
from 1 to 50.

* `delay` - (Required, Int) The time, in seconds, between sending probes to members.
* `timeout` - (Required, Int) Specifies the health check timeout duration in the unit of second.
The value ranges from 1 to 50 and must be less than the `delay` value.

* `timeout` - (Required, Int) Maximum number of seconds for a monitor to wait for a
ping reply before it times out. The value must be less than the delay value.
* `max_retries` - (Required, Int) Specifies the maximum number of consecutive health checks after which the backend
servers are declared *healthy*. The value ranges from 1 to 10.

* `max_retries` - (Required, Int) Number of permissible ping failures before
changing the member's status to INACTIVE. Must be a number between 1 and 10.
-> Backend servers can be declared *unhealthy* after **three** consecutive health checks that detect these backend
servers are unhealthy, regardless of the value set for `max_retries`.

* `name` - (Optional, String) The Name of the Monitor.
* `name` - (Optional, String) Specifies the health check name. The value contains a maximum of 255 characters.

* `url_path` - (Optional, String) Required for HTTP(S) types. URI path that will be
accessed if monitor type is HTTP or HTTPS.
* `port` - (Optional, Int) Specifies the health check port. The port number ranges from 1 to 65535. If not specified,
the port of the backend server will be used as the health check port.

* `http_method` - (Optional, String) Required for HTTP(S) types. The HTTP method used
for requests by the monitor. If this attribute is not specified, it defaults to "GET".
* `url_path` - (Optional, String) Specifies the HTTP request path for the health check. Required for HTTP type.
The value starts with a slash (/) and contains a maximum of 255 characters.

* `expected_codes` - (Optional, String) Required for HTTP(S) types. Expected HTTP codes
for a passing HTTP(S) monitor. You can either specify a single status like "200", or a range like "200-202".
* `http_method` - (Optional, String) Specifies the HTTP request method. Required for HTTP type.
The default value is *GET*.

* `port` - (Optional, Int) Specifies the health check port. The value ranges from 1 to 65536.
* `expected_codes` - (Optional, String) Specifies the expected HTTP status code. Required for HTTP type.
You can either specify a single status like "200", or a range like "200-202".

## Attribute Reference

Expand All @@ -67,3 +99,11 @@ This resource provides the following timeouts configuration options:
* `create` - Default is 10 minutes.
* `update` - Default is 10 minutes.
* `delete` - Default is 10 minutes.

## Import

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

```shell
terraform import flexibleengine_lb_monitor.monitor_1 5c20fdad-7288-11eb-b817-0255ac10158b
```
36 changes: 26 additions & 10 deletions docs/resources/lb_whitelist_v2.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,42 @@
---
subcategory: "Elastic Load Balance (ELB)"
description: ""
page_title: "flexibleengine_lb_whitelist_v2"
---

# flexibleengine_lb_whitelist_v2
# flexibleengine_lb_whitelist

Manages an **enhanced** load balancer whitelist resource within FlexibleEngine.
Manages an ELB whitelist resource within FlexibleEngine.

## Example Usage

```hcl
resource "flexibleengine_lb_whitelist_v2" "whitelist_1" {
resource "flexibleengine_lb_listener" "listener_1" {
name = "listener_1"
protocol = "HTTP"
protocol_port = 8080
loadbalancer_id = var.loadbalancer_id
}
resource "flexibleengine_lb_whitelist" "whitelist_1" {
enable_whitelist = true
whitelist = "192.168.11.1,192.168.0.1/24,192.168.201.18/8"
listener_id = "d9415786-5f1a-428b-b35f-2f1523e146d2"
listener_id = flexibleengine_lb_listener.listener_1.id
}
```

## Argument Reference

The following arguments are supported:

* `listener_id` - (Required, String, ForceNew) The Listener ID that the whitelist will be associated with.
Changing this creates a new whitelist.
* `region` - (Optional, String, ForceNew) The region in which to create the ELB whitelist resource. If omitted, the
provider-level region will be used. Changing this creates a new whitelist.

* `listener_id` - (Required, String, ForceNew) The Listener ID that the whitelist will be associated with. Changing this
creates a new whitelist.

* `enable_whitelist` - (Optional, Bool) Specify whether to enable access control.

* `whitelist` - (Optional, String) Specifies the IP addresses in the whitelist. Use commas(,) to separate
the multiple IP addresses.
* `whitelist` - (Optional, String) Specifies the IP addresses in the whitelist. Use commas(,) to separate the multiple
IP addresses.

## Attribute Reference

Expand All @@ -43,3 +51,11 @@ This resource provides the following timeouts configuration options:
* `create` - Default is 10 minutes.
* `update` - Default is 10 minutes.
* `delete` - Default is 10 minutes.

## Import

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

```shell
terraform import flexibleengine_lb_whitelist.whitelist_1 5c20fdad-7288-11eb-b817-0255ac10158b
```
Loading

0 comments on commit 53b2c6f

Please sign in to comment.