Skip to content

Commit e3df8b7

Browse files
authored
updated specs for byoip (#1216)
* updated specs for byoip * review comments
1 parent a000023 commit e3df8b7

8 files changed

Lines changed: 111 additions & 42 deletions

File tree

specification/resources/load_balancers/loadBalancers_update.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ requestBody:
2222
content:
2323
application/json:
2424
schema:
25-
$ref: 'models/load_balancer_create.yml'
25+
$ref: 'models/load_balancer_update.yml'
2626

2727
examples:
2828
load_balancer_update_request:

specification/resources/load_balancers/models/attributes.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,16 @@ load_balancer_droplet_tag:
1515
example: prod:web
1616
description: The name of a Droplet tag corresponding to Droplets assigned
1717
to the load balancer.
18+
19+
load_balancer_ip:
20+
ip:
21+
type: string
22+
pattern: '^$|^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
23+
example: '203.0.113.42'
24+
description: >-
25+
An optional IP address to assign to the load balancer from one of your
26+
Bring Your Own IP (BYOIP) prefixes. The address must be an unassigned
27+
BYOIP address on your account in the same region as the load balancer.
28+
If omitted, DigitalOcean assigns a public IP address automatically. This
29+
field is only applied when creating the load balancer, cannot be changed
30+
afterward, and is not supported for `GLOBAL` or `INTERNAL` load balancers.

specification/resources/load_balancers/models/load_balancer.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
allOf:
22
- $ref: 'load_balancer_base.yml'
33

4+
- type: object
5+
properties:
6+
ip:
7+
type: string
8+
pattern: '^$|^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
9+
readOnly: true
10+
example: '104.131.186.241'
11+
description: An attribute containing the public-facing IP address of the
12+
load balancer.
13+
414
- type: object
515
properties:
616
region:

specification/resources/load_balancers/models/load_balancer_base.yml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,6 @@ properties:
2222
default project. If an invalid project ID is provided, the load balancer will
2323
not be created.
2424

25-
ip:
26-
type: string
27-
pattern: '^$|^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
28-
readOnly: true
29-
example: '104.131.186.241'
30-
description: An attribute containing the public-facing IP address of the
31-
load balancer.
32-
3325
ipv6:
3426
type: string
3527
readOnly: true
Lines changed: 9 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,11 @@
1-
oneOf:
2-
- title: Assign Droplets by ID
3-
allOf:
4-
- type: object
5-
properties:
6-
$ref: 'attributes.yml#/load_balancer_droplet_ids'
1+
description: >-
2+
The request schema for creating a load balancer. This is the same as the
3+
update schema with the addition of the create-only `ip` field, which assigns
4+
a Bring Your Own IP (BYOIP) address to the load balancer.
75
8-
- type: object
9-
properties:
10-
region:
11-
$ref: '../../../shared/attributes/region_slug.yml'
6+
allOf:
7+
- $ref: 'load_balancer_update.yml'
128

13-
- $ref: 'load_balancer_base.yml'
14-
15-
required:
16-
- droplet_ids
17-
- region
18-
19-
- title: Assign Droplets by Tag
20-
allOf:
21-
- type: object
22-
properties:
23-
$ref: 'attributes.yml#/load_balancer_droplet_tag'
24-
25-
- type: object
26-
properties:
27-
region:
28-
$ref: '../../../shared/attributes/region_slug.yml'
29-
30-
- $ref: 'load_balancer_base.yml'
31-
32-
required:
33-
- tag
34-
- region
9+
- type: object
10+
properties:
11+
$ref: 'attributes.yml#/load_balancer_ip'
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
oneOf:
2+
- title: Assign Droplets by ID
3+
allOf:
4+
- type: object
5+
properties:
6+
$ref: 'attributes.yml#/load_balancer_droplet_ids'
7+
8+
- type: object
9+
properties:
10+
region:
11+
$ref: '../../../shared/attributes/region_slug.yml'
12+
13+
- $ref: 'load_balancer_base.yml'
14+
15+
required:
16+
- droplet_ids
17+
- region
18+
19+
- title: Assign Droplets by Tag
20+
allOf:
21+
- type: object
22+
properties:
23+
$ref: 'attributes.yml#/load_balancer_droplet_tag'
24+
25+
- type: object
26+
properties:
27+
region:
28+
$ref: '../../../shared/attributes/region_slug.yml'
29+
30+
- $ref: 'load_balancer_base.yml'
31+
32+
required:
33+
- tag
34+
- region

specification/resources/vpc_nat_gateways/models/vpc_nat_gateway_create.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,46 @@ properties:
7171
example: 30
7272
description: The TCP timeout in seconds for the VPC NAT gateway.
7373

74+
egresses:
75+
type: object
76+
description: >-
77+
An optional object specifying the public egress IP address to assign to
78+
the VPC NAT gateway. Provide this only to use a specific address. If
79+
omitted, DigitalOcean allocates a public IP address automatically.
80+
properties:
81+
public_gateways:
82+
type: array
83+
description: >-
84+
An array containing a single public gateway object that sets the
85+
gateway's public egress IP address.
86+
items:
87+
type: object
88+
description: >-
89+
Specify the address using either `ip` or `ipv4`. Both fields accept
90+
the same value and `ip` takes precedence if both are provided. The
91+
assigned address is returned in the `ipv4` field of GET and list
92+
responses.
93+
properties:
94+
ip:
95+
type: string
96+
example: 203.0.113.42
97+
description: >-
98+
The public egress IP address to assign to the VPC NAT gateway,
99+
and the preferred field for setting it. Provide an unassigned
100+
Bring Your Own IP (BYOIP) address on your account in the same
101+
region to use your own IP address. This field is only applied
102+
when creating the gateway and cannot be changed afterward. The
103+
assigned address is returned as `ipv4` in GET and list
104+
responses.
105+
ipv4:
106+
type: string
107+
example: 203.0.113.42
108+
description: >-
109+
An alternative to `ip` for setting the public egress IP address
110+
on create. Accepts the same value as `ip`, which takes
111+
precedence if both are provided. This field is only applied when
112+
creating the gateway and cannot be changed afterward.
113+
74114
required:
75115
- name
76116
- type

specification/resources/vpc_nat_gateways/models/vpc_nat_gateway_get.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,10 @@ properties:
8383
ipv4:
8484
type: string
8585
example: 174.138.113.197
86-
description: IPv4 address of the public gateway.
86+
description: >-
87+
The public egress IPv4 address of the VPC NAT gateway. This is
88+
the address assigned to the gateway, which you can optionally
89+
set when creating the gateway using the `ip` or `ipv4` field.
8790
description: An object containing egress information for the VPC NAT gateway.
8891

8992
udp_timeout_seconds:

0 commit comments

Comments
 (0)