Skip to content

Commit 5e6ab40

Browse files
authored
feat(instance): add pagination to listPrivateNICs and add updatePrivateNIC endpoint (#467)
1 parent 0e7d3c3 commit 5e6ab40

File tree

4 files changed

+93
-8
lines changed

4 files changed

+93
-8
lines changed

packages/clients/src/api/instance/v1/api.gen.ts

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import {
3030
marshalUpdateIpRequest,
3131
marshalUpdatePlacementGroupRequest,
3232
marshalUpdatePlacementGroupServersRequest,
33+
marshalUpdatePrivateNICRequest,
3334
marshalUpdateServerRequest,
3435
marshalUpdateVolumeRequest,
3536
unmarshalCreateImageResponse,
@@ -69,6 +70,7 @@ import {
6970
unmarshalListSnapshotsResponse,
7071
unmarshalListVolumesResponse,
7172
unmarshalListVolumesTypesResponse,
73+
unmarshalPrivateNIC,
7274
unmarshalServerActionResponse,
7375
unmarshalSetImageResponse,
7476
unmarshalSetPlacementGroupResponse,
@@ -169,6 +171,7 @@ import type {
169171
ListVolumesResponse,
170172
ListVolumesTypesRequest,
171173
ListVolumesTypesResponse,
174+
PrivateNIC,
172175
ServerActionRequest,
173176
ServerActionResponse,
174177
SetPlacementGroupRequest,
@@ -183,6 +186,7 @@ import type {
183186
UpdatePlacementGroupResponse,
184187
UpdatePlacementGroupServersRequest,
185188
UpdatePlacementGroupServersResponse,
189+
UpdatePrivateNICRequest,
186190
UpdateServerResponse,
187191
UpdateVolumeRequest,
188192
UpdateVolumeResponse,
@@ -1484,13 +1488,9 @@ export class API extends ParentAPI {
14841488
)}/ips/${validatePathParam('ip', request.ip)}`,
14851489
})
14861490

1487-
/**
1488-
* List all private NICs of a given server.
1489-
*
1490-
* @param request - The request {@link ListPrivateNICsRequest}
1491-
* @returns A Promise of ListPrivateNICsResponse
1492-
*/
1493-
listPrivateNICs = (request: Readonly<ListPrivateNICsRequest>) =>
1491+
protected pageOfListPrivateNICs = (
1492+
request: Readonly<ListPrivateNICsRequest>,
1493+
) =>
14941494
this.client.fetch<ListPrivateNICsResponse>(
14951495
{
14961496
method: 'GET',
@@ -1501,10 +1501,29 @@ export class API extends ParentAPI {
15011501
'serverId',
15021502
request.serverId,
15031503
)}/private_nics`,
1504+
urlParams: urlParams(
1505+
['page', request.page],
1506+
['per_page', request.perPage ?? this.client.settings.defaultPageSize],
1507+
[
1508+
'tags',
1509+
request.tags && request.tags.length > 0
1510+
? request.tags.join(',')
1511+
: undefined,
1512+
],
1513+
),
15041514
},
15051515
unmarshalListPrivateNICsResponse,
15061516
)
15071517

1518+
/**
1519+
* List all private NICs of a given server.
1520+
*
1521+
* @param request - The request {@link ListPrivateNICsRequest}
1522+
* @returns A Promise of ListPrivateNICsResponse
1523+
*/
1524+
listPrivateNICs = (request: Readonly<ListPrivateNICsRequest>) =>
1525+
enrichForPagination('privateNics', this.pageOfListPrivateNICs, request)
1526+
15081527
/**
15091528
* Create a private NIC connecting a server to a private network.
15101529
*
@@ -1554,6 +1573,34 @@ export class API extends ParentAPI {
15541573
unmarshalGetPrivateNICResponse,
15551574
)
15561575

1576+
/**
1577+
* Update one or more parameter/s to a given private NIC.
1578+
*
1579+
* @param request - The request {@link UpdatePrivateNICRequest}
1580+
* @returns A Promise of PrivateNIC
1581+
*/
1582+
updatePrivateNIC = (request: Readonly<UpdatePrivateNICRequest>) =>
1583+
this.client.fetch<PrivateNIC>(
1584+
{
1585+
body: JSON.stringify(
1586+
marshalUpdatePrivateNICRequest(request, this.client.settings),
1587+
),
1588+
headers: jsonContentHeaders,
1589+
method: 'PATCH',
1590+
path: `/instance/v1/zones/${validatePathParam(
1591+
'zone',
1592+
request.zone ?? this.client.settings.defaultZone,
1593+
)}/servers/${validatePathParam(
1594+
'serverId',
1595+
request.serverId,
1596+
)}/private_nics/${validatePathParam(
1597+
'privateNicId',
1598+
request.privateNicId,
1599+
)}`,
1600+
},
1601+
unmarshalPrivateNIC,
1602+
)
1603+
15571604
/**
15581605
* Delete a private NIC.
15591606
*

packages/clients/src/api/instance/v1/index.gen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ export type {
148148
UpdatePlacementGroupResponse,
149149
UpdatePlacementGroupServersRequest,
150150
UpdatePlacementGroupServersResponse,
151+
UpdatePrivateNICRequest,
151152
UpdateServerResponse,
152153
UpdateVolumeRequest,
153154
UpdateVolumeResponse,

packages/clients/src/api/instance/v1/marshalling.gen.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ import type {
9999
UpdatePlacementGroupResponse,
100100
UpdatePlacementGroupServersRequest,
101101
UpdatePlacementGroupServersResponse,
102+
UpdatePrivateNICRequest,
102103
UpdateServerResponse,
103104
UpdateVolumeRequest,
104105
UpdateVolumeResponse,
@@ -274,7 +275,7 @@ const unmarshalPlacementGroup = (data: unknown) => {
274275
} as PlacementGroup
275276
}
276277

277-
const unmarshalPrivateNIC = (data: unknown) => {
278+
export const unmarshalPrivateNIC = (data: unknown) => {
278279
if (!isJSONObject(data)) {
279280
throw new TypeError(
280281
`Unmarshalling the type 'PrivateNIC' failed as data isn't a dictionary.`,
@@ -287,6 +288,7 @@ const unmarshalPrivateNIC = (data: unknown) => {
287288
privateNetworkId: data.private_network_id,
288289
serverId: data.server_id,
289290
state: data.state,
291+
tags: data.tags,
290292
} as PrivateNIC
291293
}
292294

@@ -1078,6 +1080,7 @@ export const unmarshalListPrivateNICsResponse = (data: unknown) => {
10781080

10791081
return {
10801082
privateNics: unmarshalArrayOfObject(data.private_nics, unmarshalPrivateNIC),
1083+
totalCount: data.total_count,
10811084
} as ListPrivateNICsResponse
10821085
}
10831086

@@ -1485,6 +1488,7 @@ const marshalPrivateNIC = (
14851488
private_network_id: request.privateNetworkId,
14861489
server_id: request.serverId,
14871490
state: request.state,
1491+
tags: request.tags,
14881492
})
14891493

14901494
const marshalSecurityGroupSummary = (
@@ -1684,6 +1688,7 @@ export const marshalCreatePrivateNICRequest = (
16841688
defaults: DefaultValues,
16851689
): Record<string, unknown> => ({
16861690
private_network_id: request.privateNetworkId,
1691+
tags: request.tags,
16871692
})
16881693

16891694
export const marshalCreateSecurityGroupRequest = (
@@ -2059,6 +2064,13 @@ export const marshalUpdatePlacementGroupServersRequest = (
20592064
servers: request.servers,
20602065
})
20612066

2067+
export const marshalUpdatePrivateNICRequest = (
2068+
request: UpdatePrivateNICRequest,
2069+
defaults: DefaultValues,
2070+
): Record<string, unknown> => ({
2071+
tags: request.tags,
2072+
})
2073+
20622074
export const marshalUpdateServerRequest = (
20632075
request: UpdateServerRequest,
20642076
defaults: DefaultValues,

packages/clients/src/api/instance/v1/types.gen.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ export interface ListPlacementGroupsResponse {
299299

300300
export interface ListPrivateNICsResponse {
301301
privateNics: PrivateNIC[]
302+
totalCount: number
302303
}
303304

304305
/** List security group rules response */
@@ -411,6 +412,8 @@ export interface PrivateNIC {
411412
macAddress: string
412413
/** The private NIC state */
413414
state: PrivateNICState
415+
/** The private NIC tags */
416+
tags: string[]
414417
}
415418

416419
/** Security group */
@@ -1587,6 +1590,15 @@ export type ListPrivateNICsRequest = {
15871590
zone?: Zone
15881591
/** The server the private NIC is attached to */
15891592
serverId: string
1593+
/** The private NIC tags */
1594+
tags?: string[]
1595+
/**
1596+
* A positive integer lower or equal to 100 to select the number of items to
1597+
* return
1598+
*/
1599+
perPage?: number
1600+
/** A positive integer to choose the page to return */
1601+
page?: number
15901602
}
15911603

15921604
export type CreatePrivateNICRequest = {
@@ -1596,6 +1608,8 @@ export type CreatePrivateNICRequest = {
15961608
serverId: string
15971609
/** UUID of the private network where the private NIC will be attached */
15981610
privateNetworkId: string
1611+
/** The private NIC tags */
1612+
tags?: string[]
15991613
}
16001614

16011615
export type GetPrivateNICRequest = {
@@ -1607,6 +1621,17 @@ export type GetPrivateNICRequest = {
16071621
privateNicId: string
16081622
}
16091623

1624+
export type UpdatePrivateNICRequest = {
1625+
/** Zone to target. If none is passed will use default zone from the config */
1626+
zone?: Zone
1627+
/** UUID of the server the private NIC will be attached to */
1628+
serverId: string
1629+
/** The private NIC unique ID */
1630+
privateNicId: string
1631+
/** Tags used to select private NIC/s */
1632+
tags?: string[]
1633+
}
1634+
16101635
export type DeletePrivateNICRequest = {
16111636
/** Zone to target. If none is passed will use default zone from the config */
16121637
zone?: Zone

0 commit comments

Comments
 (0)