Skip to content

Commit fa10fb2

Browse files
authored
feat(vpc): add custom routes CRUD (#1358)
1 parent 03d3ff5 commit fa10fb2

File tree

5 files changed

+217
-0
lines changed

5 files changed

+217
-0
lines changed

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

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,39 @@ import type { Region } from '../../../bridge'
1010
import {
1111
marshalAddSubnetsRequest,
1212
marshalCreatePrivateNetworkRequest,
13+
marshalCreateRouteRequest,
1314
marshalCreateVPCRequest,
1415
marshalDeleteSubnetsRequest,
1516
marshalMigrateZonalPrivateNetworksRequest,
1617
marshalSetSubnetsRequest,
1718
marshalUpdatePrivateNetworkRequest,
19+
marshalUpdateRouteRequest,
1820
marshalUpdateVPCRequest,
1921
unmarshalAddSubnetsResponse,
2022
unmarshalDeleteSubnetsResponse,
2123
unmarshalListPrivateNetworksResponse,
2224
unmarshalListSubnetsResponse,
2325
unmarshalListVPCsResponse,
2426
unmarshalPrivateNetwork,
27+
unmarshalRoute,
2528
unmarshalSetSubnetsResponse,
2629
unmarshalVPC,
2730
} from './marshalling.gen'
2831
import type {
2932
AddSubnetsRequest,
3033
AddSubnetsResponse,
3134
CreatePrivateNetworkRequest,
35+
CreateRouteRequest,
3236
CreateVPCRequest,
3337
DeletePrivateNetworkRequest,
38+
DeleteRouteRequest,
3439
DeleteSubnetsRequest,
3540
DeleteSubnetsResponse,
3641
DeleteVPCRequest,
3742
EnableDHCPRequest,
3843
EnableRoutingRequest,
3944
GetPrivateNetworkRequest,
45+
GetRouteRequest,
4046
GetVPCRequest,
4147
ListPrivateNetworksRequest,
4248
ListPrivateNetworksResponse,
@@ -46,9 +52,11 @@ import type {
4652
ListVPCsResponse,
4753
MigrateZonalPrivateNetworksRequest,
4854
PrivateNetwork,
55+
Route,
4956
SetSubnetsRequest,
5057
SetSubnetsResponse,
5158
UpdatePrivateNetworkRequest,
59+
UpdateRouteRequest,
5260
UpdateVPCRequest,
5361
VPC,
5462
} from './types.gen'
@@ -428,4 +436,69 @@ export class API extends ParentAPI {
428436
},
429437
unmarshalDeleteSubnetsResponse,
430438
)
439+
440+
/**
441+
* Create a Route. Create a new custom Route.
442+
*
443+
* @param request - The request {@link CreateRouteRequest}
444+
* @returns A Promise of Route
445+
*/
446+
createRoute = (request: Readonly<CreateRouteRequest>) =>
447+
this.client.fetch<Route>(
448+
{
449+
body: JSON.stringify(
450+
marshalCreateRouteRequest(request, this.client.settings),
451+
),
452+
headers: jsonContentHeaders,
453+
method: 'POST',
454+
path: `/vpc/v2/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/routes`,
455+
},
456+
unmarshalRoute,
457+
)
458+
459+
/**
460+
* Get a Route. Retrieve details of an existing Route, specified by its Route
461+
* ID.
462+
*
463+
* @param request - The request {@link GetRouteRequest}
464+
* @returns A Promise of Route
465+
*/
466+
getRoute = (request: Readonly<GetRouteRequest>) =>
467+
this.client.fetch<Route>(
468+
{
469+
method: 'GET',
470+
path: `/vpc/v2/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/routes/${validatePathParam('routeId', request.routeId)}`,
471+
},
472+
unmarshalRoute,
473+
)
474+
475+
/**
476+
* Update Route. Update parameters of the specified Route.
477+
*
478+
* @param request - The request {@link UpdateRouteRequest}
479+
* @returns A Promise of Route
480+
*/
481+
updateRoute = (request: Readonly<UpdateRouteRequest>) =>
482+
this.client.fetch<Route>(
483+
{
484+
body: JSON.stringify(
485+
marshalUpdateRouteRequest(request, this.client.settings),
486+
),
487+
headers: jsonContentHeaders,
488+
method: 'PATCH',
489+
path: `/vpc/v2/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/routes/${validatePathParam('routeId', request.routeId)}`,
490+
},
491+
unmarshalRoute,
492+
)
493+
494+
/**
495+
* Delete a Route. Delete a Route specified by its Route ID.
496+
*
497+
* @param request - The request {@link DeleteRouteRequest}
498+
*/
499+
deleteRoute = (request: Readonly<DeleteRouteRequest>) =>
500+
this.client.fetch<void>({
501+
method: 'DELETE',
502+
path: `/vpc/v2/regions/${validatePathParam('region', request.region ?? this.client.settings.defaultRegion)}/routes/${validatePathParam('routeId', request.routeId)}`,
503+
})
431504
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@ export type {
55
AddSubnetsRequest,
66
AddSubnetsResponse,
77
CreatePrivateNetworkRequest,
8+
CreateRouteRequest,
89
CreateVPCRequest,
910
DeletePrivateNetworkRequest,
11+
DeleteRouteRequest,
1012
DeleteSubnetsRequest,
1113
DeleteSubnetsResponse,
1214
DeleteVPCRequest,
1315
EnableDHCPRequest,
1416
EnableRoutingRequest,
1517
GetPrivateNetworkRequest,
18+
GetRouteRequest,
1619
GetVPCRequest,
1720
ListPrivateNetworksRequest,
1821
ListPrivateNetworksRequestOrderBy,
@@ -25,10 +28,13 @@ export type {
2528
ListVPCsResponse,
2629
MigrateZonalPrivateNetworksRequest,
2730
PrivateNetwork,
31+
Route,
2832
SetSubnetsRequest,
2933
SetSubnetsResponse,
3034
Subnet,
3135
UpdatePrivateNetworkRequest,
36+
UpdateRouteRequest,
3237
UpdateVPCRequest,
3338
VPC,
3439
} from './types.gen'
40+
export * as ValidationRules from './validation-rules.gen'

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

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import type {
1212
AddSubnetsRequest,
1313
AddSubnetsResponse,
1414
CreatePrivateNetworkRequest,
15+
CreateRouteRequest,
1516
CreateVPCRequest,
1617
DeleteSubnetsRequest,
1718
DeleteSubnetsResponse,
@@ -20,10 +21,12 @@ import type {
2021
ListVPCsResponse,
2122
MigrateZonalPrivateNetworksRequest,
2223
PrivateNetwork,
24+
Route,
2325
SetSubnetsRequest,
2426
SetSubnetsResponse,
2527
Subnet,
2628
UpdatePrivateNetworkRequest,
29+
UpdateRouteRequest,
2730
UpdateVPCRequest,
2831
VPC,
2932
} from './types.gen'
@@ -68,6 +71,27 @@ export const unmarshalPrivateNetwork = (data: unknown): PrivateNetwork => {
6871
} as PrivateNetwork
6972
}
7073

74+
export const unmarshalRoute = (data: unknown): Route => {
75+
if (!isJSONObject(data)) {
76+
throw new TypeError(
77+
`Unmarshalling the type 'Route' failed as data isn't a dictionary.`,
78+
)
79+
}
80+
81+
return {
82+
createdAt: unmarshalDate(data.created_at),
83+
description: data.description,
84+
destination: data.destination,
85+
id: data.id,
86+
nexthopPrivateNetworkId: data.nexthop_private_network_id,
87+
nexthopResourceId: data.nexthop_resource_id,
88+
region: data.region,
89+
tags: data.tags,
90+
updatedAt: unmarshalDate(data.updated_at),
91+
vpcId: data.vpc_id,
92+
} as Route
93+
}
94+
7195
export const unmarshalVPC = (data: unknown): VPC => {
7296
if (!isJSONObject(data)) {
7397
throw new TypeError(
@@ -196,6 +220,18 @@ export const marshalCreatePrivateNetworkRequest = (
196220
vpc_id: request.vpcId,
197221
})
198222

223+
export const marshalCreateRouteRequest = (
224+
request: CreateRouteRequest,
225+
defaults: DefaultValues,
226+
): Record<string, unknown> => ({
227+
description: request.description,
228+
destination: request.destination,
229+
nexthop_private_network_id: request.nexthopPrivateNetworkId,
230+
nexthop_resource_id: request.nexthopResourceId,
231+
tags: request.tags,
232+
vpc_id: request.vpcId,
233+
})
234+
199235
export const marshalCreateVPCRequest = (
200236
request: CreateVPCRequest,
201237
defaults: DefaultValues,
@@ -247,6 +283,17 @@ export const marshalUpdatePrivateNetworkRequest = (
247283
tags: request.tags,
248284
})
249285

286+
export const marshalUpdateRouteRequest = (
287+
request: UpdateRouteRequest,
288+
defaults: DefaultValues,
289+
): Record<string, unknown> => ({
290+
description: request.description,
291+
destination: request.destination,
292+
nexthop_private_network_id: request.nexthopPrivateNetworkId,
293+
nexthop_resource_id: request.nexthopResourceId,
294+
tags: request.tags,
295+
})
296+
250297
export const marshalUpdateVPCRequest = (
251298
request: UpdateVPCRequest,
252299
defaults: DefaultValues,

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

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,29 @@ export interface PrivateNetwork {
5858
dhcpEnabled: boolean
5959
}
6060

61+
export interface Route {
62+
/** Route ID. */
63+
id: string
64+
/** Route description. */
65+
description: string
66+
/** Tags of the Route. */
67+
tags: string[]
68+
/** VPC the Route belongs to. */
69+
vpcId: string
70+
/** Destination of the Route. */
71+
destination: string
72+
/** ID of the nexthop resource. */
73+
nexthopResourceId?: string
74+
/** ID of the nexthop private network. */
75+
nexthopPrivateNetworkId?: string
76+
/** Date the Route was created. */
77+
createdAt?: Date
78+
/** Date the Route was last modified. */
79+
updatedAt?: Date
80+
/** Region of the Route. */
81+
region: Region
82+
}
83+
6184
export interface VPC {
6285
/** VPC ID. */
6386
id: string
@@ -117,6 +140,26 @@ export type CreatePrivateNetworkRequest = {
117140
vpcId?: string
118141
}
119142

143+
export type CreateRouteRequest = {
144+
/**
145+
* Region to target. If none is passed will use default region from the
146+
* config.
147+
*/
148+
region?: Region
149+
/** Route description. */
150+
description: string
151+
/** Tags of the Route. */
152+
tags?: string[]
153+
/** VPC the Route belongs to. */
154+
vpcId: string
155+
/** Destination of the Route. */
156+
destination: string
157+
/** ID of the nexthop resource. */
158+
nexthopResourceId?: string
159+
/** ID of the nexthop private network. */
160+
nexthopPrivateNetworkId?: string
161+
}
162+
120163
export type CreateVPCRequest = {
121164
/**
122165
* Region to target. If none is passed will use default region from the
@@ -143,6 +186,16 @@ export type DeletePrivateNetworkRequest = {
143186
privateNetworkId: string
144187
}
145188

189+
export type DeleteRouteRequest = {
190+
/**
191+
* Region to target. If none is passed will use default region from the
192+
* config.
193+
*/
194+
region?: Region
195+
/** Route ID. */
196+
routeId: string
197+
}
198+
146199
export type DeleteSubnetsRequest = {
147200
/**
148201
* Region to target. If none is passed will use default region from the
@@ -198,6 +251,16 @@ export type GetPrivateNetworkRequest = {
198251
privateNetworkId: string
199252
}
200253

254+
export type GetRouteRequest = {
255+
/**
256+
* Region to target. If none is passed will use default region from the
257+
* config.
258+
*/
259+
region?: Region
260+
/** Route ID. */
261+
routeId: string
262+
}
263+
201264
export type GetVPCRequest = {
202265
/**
203266
* Region to target. If none is passed will use default region from the
@@ -403,6 +466,26 @@ export type UpdatePrivateNetworkRequest = {
403466
tags?: string[]
404467
}
405468

469+
export type UpdateRouteRequest = {
470+
/**
471+
* Region to target. If none is passed will use default region from the
472+
* config.
473+
*/
474+
region?: Region
475+
/** Route ID. */
476+
routeId: string
477+
/** Route description. */
478+
description?: string
479+
/** Tags of the Route. */
480+
tags?: string[]
481+
/** Destination of the Route. */
482+
destination?: string
483+
/** ID of the nexthop resource. */
484+
nexthopResourceId?: string
485+
/** ID of the nexthop private network. */
486+
nexthopPrivateNetworkId?: string
487+
}
488+
406489
export type UpdateVPCRequest = {
407490
/**
408491
* Region to target. If none is passed will use default region from the
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// This file was automatically generated. DO NOT EDIT.
2+
// If you have any remark or suggestion do not hesitate to open an issue.
3+
4+
export const Route = {
5+
description: {
6+
maxLength: 200,
7+
},
8+
}

0 commit comments

Comments
 (0)