Skip to content

Commit 2e604ff

Browse files
authored
feat(vpc): enable dhcp on private network (#741)
1 parent ff391f1 commit 2e604ff

File tree

4 files changed

+46
-0
lines changed

4 files changed

+46
-0
lines changed

packages/clients/src/api/vpc/v2/api.gen.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import type {
3333
DeleteSubnetsRequest,
3434
DeleteSubnetsResponse,
3535
DeleteVPCRequest,
36+
EnableDHCPRequest,
3637
GetPrivateNetworkRequest,
3738
GetVPCRequest,
3839
ListPrivateNetworksRequest,
@@ -178,6 +179,7 @@ export class API extends ParentAPI {
178179
request.region ?? this.client.settings.defaultRegion,
179180
)}/private-networks`,
180181
urlParams: urlParams(
182+
['dhcp_enabled', request.dhcpEnabled],
181183
['name', request.name],
182184
['order_by', request.orderBy ?? 'created_at_asc'],
183185
['organization_id', request.organizationId],
@@ -330,6 +332,31 @@ export class API extends ParentAPI {
330332
)}/private-networks/migrate-zonal`,
331333
})
332334

335+
/**
336+
* Enable DHCP on a Private Network. Enable DHCP managed on an existing
337+
* Private Network. Note that you will not be able to deactivate it
338+
* afterwards.
339+
*
340+
* @param request - The request {@link EnableDHCPRequest}
341+
* @returns A Promise of PrivateNetwork
342+
*/
343+
enableDHCP = (request: Readonly<EnableDHCPRequest>) =>
344+
this.client.fetch<PrivateNetwork>(
345+
{
346+
body: '{}',
347+
headers: jsonContentHeaders,
348+
method: 'POST',
349+
path: `/vpc/v2/regions/${validatePathParam(
350+
'region',
351+
request.region ?? this.client.settings.defaultRegion,
352+
)}/private-networks/${validatePathParam(
353+
'privateNetworkId',
354+
request.privateNetworkId,
355+
)}/enable-dhcp`,
356+
},
357+
unmarshalPrivateNetwork,
358+
)
359+
333360
/**
334361
* Set the subnets of a Private Network. Set subnets for an existing Private
335362
* Network. Note that the method is PUT and not PATCH. Any existing subnets

packages/clients/src/api/vpc/v2/index.gen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export type {
1010
DeleteSubnetsRequest,
1111
DeleteSubnetsResponse,
1212
DeleteVPCRequest,
13+
EnableDHCPRequest,
1314
GetPrivateNetworkRequest,
1415
GetVPCRequest,
1516
ListPrivateNetworksRequest,

packages/clients/src/api/vpc/v2/marshalling.gen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export const unmarshalPrivateNetwork = (data: unknown) => {
5151

5252
return {
5353
createdAt: unmarshalDate(data.created_at),
54+
dhcpEnabled: data.dhcp_enabled,
5455
id: data.id,
5556
name: data.name,
5657
organizationId: data.organization_id,

packages/clients/src/api/vpc/v2/types.gen.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ export interface PrivateNetwork {
5454
subnets: Subnet[]
5555
/** VPC the Private Network belongs to. */
5656
vpcId: string
57+
/** Defines whether managed DHCP is enabled for this Private Network. */
58+
dhcpEnabled: boolean
5759
}
5860

5961
export interface SetSubnetsResponse {
@@ -227,6 +229,11 @@ export type ListPrivateNetworksRequest = {
227229
* returned.
228230
*/
229231
vpcId?: string
232+
/**
233+
* DHCP status to filter for. When true, only Private Networks with managed
234+
* DHCP enabled will be returned.
235+
*/
236+
dhcpEnabled?: boolean
230237
}
231238

232239
export type CreatePrivateNetworkRequest = {
@@ -307,6 +314,16 @@ export type MigrateZonalPrivateNetworksRequest = {
307314
privateNetworkIds?: string[]
308315
}
309316

317+
export type EnableDHCPRequest = {
318+
/**
319+
* Region to target. If none is passed will use default region from the
320+
* config.
321+
*/
322+
region?: Region
323+
/** Private Network ID. */
324+
privateNetworkId: string
325+
}
326+
310327
export type SetSubnetsRequest = {
311328
/**
312329
* Region to target. If none is passed will use default region from the

0 commit comments

Comments
 (0)