Skip to content

Commit 050ca6f

Browse files
authored
chore(baremetal): generate SDK v3 (#1464)
1 parent 0ab8ab3 commit 050ca6f

File tree

6 files changed

+362
-0
lines changed

6 files changed

+362
-0
lines changed

packages/clients/src/api/baremetal/index.gen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
*/
55

66
export * as v1 from './v1/index'
7+
export * as v3 from './v3/index.gen'
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
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+
import {
4+
API as ParentAPI,
5+
enrichForPagination,
6+
urlParams,
7+
validatePathParam,
8+
} from '../../../bridge'
9+
import type { Zone } from '../../../bridge'
10+
import {
11+
marshalPrivateNetworkApiAddServerPrivateNetworkRequest,
12+
marshalPrivateNetworkApiSetServerPrivateNetworksRequest,
13+
unmarshalListServerPrivateNetworksResponse,
14+
unmarshalServerPrivateNetwork,
15+
unmarshalSetServerPrivateNetworksResponse,
16+
} from './marshalling.gen'
17+
import type {
18+
ListServerPrivateNetworksResponse,
19+
PrivateNetworkApiAddServerPrivateNetworkRequest,
20+
PrivateNetworkApiDeleteServerPrivateNetworkRequest,
21+
PrivateNetworkApiListServerPrivateNetworksRequest,
22+
PrivateNetworkApiSetServerPrivateNetworksRequest,
23+
ServerPrivateNetwork,
24+
SetServerPrivateNetworksResponse,
25+
} from './types.gen'
26+
27+
const jsonContentHeaders = {
28+
'Content-Type': 'application/json; charset=utf-8',
29+
}
30+
31+
/** Elastic Metal - Private Networks API. */
32+
export class PrivateNetworkAPI extends ParentAPI {
33+
/** Lists the available zones of the API. */
34+
public static readonly LOCALITIES: Zone[] = [
35+
'fr-par-1',
36+
'fr-par-2',
37+
'nl-ams-1',
38+
'nl-ams-2',
39+
'pl-waw-2',
40+
'pl-waw-3',
41+
]
42+
43+
/**
44+
* Add a server to a Private Network. Add an Elastic Metal server to a Private
45+
* Network.
46+
*
47+
* @param request - The request
48+
* {@link PrivateNetworkApiAddServerPrivateNetworkRequest}
49+
* @returns A Promise of ServerPrivateNetwork
50+
*/
51+
addServerPrivateNetwork = (
52+
request: Readonly<PrivateNetworkApiAddServerPrivateNetworkRequest>,
53+
) =>
54+
this.client.fetch<ServerPrivateNetwork>(
55+
{
56+
body: JSON.stringify(
57+
marshalPrivateNetworkApiAddServerPrivateNetworkRequest(
58+
request,
59+
this.client.settings,
60+
),
61+
),
62+
headers: jsonContentHeaders,
63+
method: 'POST',
64+
path: `/baremetal/v3/zones/${validatePathParam('zone', request.zone ?? this.client.settings.defaultZone)}/servers/${validatePathParam('serverId', request.serverId)}/private-networks`,
65+
},
66+
unmarshalServerPrivateNetwork,
67+
)
68+
69+
/**
70+
* Set multiple Private Networks on a server. Configure multiple Private
71+
* Networks on an Elastic Metal server.
72+
*
73+
* @param request - The request
74+
* {@link PrivateNetworkApiSetServerPrivateNetworksRequest}
75+
* @returns A Promise of SetServerPrivateNetworksResponse
76+
*/
77+
setServerPrivateNetworks = (
78+
request: Readonly<PrivateNetworkApiSetServerPrivateNetworksRequest>,
79+
) =>
80+
this.client.fetch<SetServerPrivateNetworksResponse>(
81+
{
82+
body: JSON.stringify(
83+
marshalPrivateNetworkApiSetServerPrivateNetworksRequest(
84+
request,
85+
this.client.settings,
86+
),
87+
),
88+
headers: jsonContentHeaders,
89+
method: 'PUT',
90+
path: `/baremetal/v3/zones/${validatePathParam('zone', request.zone ?? this.client.settings.defaultZone)}/servers/${validatePathParam('serverId', request.serverId)}/private-networks`,
91+
},
92+
unmarshalSetServerPrivateNetworksResponse,
93+
)
94+
95+
protected pageOfListServerPrivateNetworks = (
96+
request: Readonly<PrivateNetworkApiListServerPrivateNetworksRequest> = {},
97+
) =>
98+
this.client.fetch<ListServerPrivateNetworksResponse>(
99+
{
100+
method: 'GET',
101+
path: `/baremetal/v3/zones/${validatePathParam('zone', request.zone ?? this.client.settings.defaultZone)}/server-private-networks`,
102+
urlParams: urlParams(
103+
['ipam_ip_ids', request.ipamIpIds],
104+
['order_by', request.orderBy],
105+
['organization_id', request.organizationId],
106+
['page', request.page],
107+
[
108+
'page_size',
109+
request.pageSize ?? this.client.settings.defaultPageSize,
110+
],
111+
['private_network_id', request.privateNetworkId],
112+
['project_id', request.projectId],
113+
['server_id', request.serverId],
114+
),
115+
},
116+
unmarshalListServerPrivateNetworksResponse,
117+
)
118+
119+
/**
120+
* List the Private Networks of a server. List the Private Networks of an
121+
* Elastic Metal server.
122+
*
123+
* @param request - The request
124+
* {@link PrivateNetworkApiListServerPrivateNetworksRequest}
125+
* @returns A Promise of ListServerPrivateNetworksResponse
126+
*/
127+
listServerPrivateNetworks = (
128+
request: Readonly<PrivateNetworkApiListServerPrivateNetworksRequest> = {},
129+
) =>
130+
enrichForPagination(
131+
'serverPrivateNetworks',
132+
this.pageOfListServerPrivateNetworks,
133+
request,
134+
)
135+
136+
/**
137+
* Delete a Private Network.
138+
*
139+
* @param request - The request
140+
* {@link PrivateNetworkApiDeleteServerPrivateNetworkRequest}
141+
*/
142+
deleteServerPrivateNetwork = (
143+
request: Readonly<PrivateNetworkApiDeleteServerPrivateNetworkRequest>,
144+
) =>
145+
this.client.fetch<void>({
146+
method: 'DELETE',
147+
path: `/baremetal/v3/zones/${validatePathParam('zone', request.zone ?? this.client.settings.defaultZone)}/servers/${validatePathParam('serverId', request.serverId)}/private-networks/${validatePathParam('privateNetworkId', request.privateNetworkId)}`,
148+
})
149+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
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+
import type { ServerPrivateNetworkStatus } from './types.gen'
4+
5+
/** Lists transient statutes of the enum {@link ServerPrivateNetworkStatus}. */
6+
export const SERVER_PRIVATE_NETWORK_TRANSIENT_STATUSES: ServerPrivateNetworkStatus[] =
7+
['attaching', 'detaching']
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
export { PrivateNetworkAPI } from './api.gen'
4+
export * from './content.gen'
5+
export type {
6+
ListServerPrivateNetworksRequestOrderBy,
7+
ListServerPrivateNetworksResponse,
8+
PrivateNetworkApiAddServerPrivateNetworkRequest,
9+
PrivateNetworkApiDeleteServerPrivateNetworkRequest,
10+
PrivateNetworkApiListServerPrivateNetworksRequest,
11+
PrivateNetworkApiSetServerPrivateNetworksRequest,
12+
ServerPrivateNetwork,
13+
ServerPrivateNetworkStatus,
14+
SetServerPrivateNetworksResponse,
15+
} from './types.gen'
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
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+
import {
4+
isJSONObject,
5+
unmarshalArrayOfObject,
6+
unmarshalDate,
7+
} from '../../../bridge'
8+
import type { DefaultValues } from '../../../bridge'
9+
import type {
10+
ListServerPrivateNetworksResponse,
11+
PrivateNetworkApiAddServerPrivateNetworkRequest,
12+
PrivateNetworkApiSetServerPrivateNetworksRequest,
13+
ServerPrivateNetwork,
14+
SetServerPrivateNetworksResponse,
15+
} from './types.gen'
16+
17+
export const unmarshalServerPrivateNetwork = (
18+
data: unknown,
19+
): ServerPrivateNetwork => {
20+
if (!isJSONObject(data)) {
21+
throw new TypeError(
22+
`Unmarshalling the type 'ServerPrivateNetwork' failed as data isn't a dictionary.`,
23+
)
24+
}
25+
26+
return {
27+
createdAt: unmarshalDate(data.created_at),
28+
id: data.id,
29+
ipamIpIds: data.ipam_ip_ids,
30+
privateNetworkId: data.private_network_id,
31+
projectId: data.project_id,
32+
serverId: data.server_id,
33+
status: data.status,
34+
updatedAt: unmarshalDate(data.updated_at),
35+
vlan: data.vlan,
36+
} as ServerPrivateNetwork
37+
}
38+
39+
export const unmarshalListServerPrivateNetworksResponse = (
40+
data: unknown,
41+
): ListServerPrivateNetworksResponse => {
42+
if (!isJSONObject(data)) {
43+
throw new TypeError(
44+
`Unmarshalling the type 'ListServerPrivateNetworksResponse' failed as data isn't a dictionary.`,
45+
)
46+
}
47+
48+
return {
49+
serverPrivateNetworks: unmarshalArrayOfObject(
50+
data.server_private_networks,
51+
unmarshalServerPrivateNetwork,
52+
),
53+
totalCount: data.total_count,
54+
} as ListServerPrivateNetworksResponse
55+
}
56+
57+
export const unmarshalSetServerPrivateNetworksResponse = (
58+
data: unknown,
59+
): SetServerPrivateNetworksResponse => {
60+
if (!isJSONObject(data)) {
61+
throw new TypeError(
62+
`Unmarshalling the type 'SetServerPrivateNetworksResponse' failed as data isn't a dictionary.`,
63+
)
64+
}
65+
66+
return {
67+
serverPrivateNetworks: unmarshalArrayOfObject(
68+
data.server_private_networks,
69+
unmarshalServerPrivateNetwork,
70+
),
71+
} as SetServerPrivateNetworksResponse
72+
}
73+
74+
export const marshalPrivateNetworkApiAddServerPrivateNetworkRequest = (
75+
request: PrivateNetworkApiAddServerPrivateNetworkRequest,
76+
defaults: DefaultValues,
77+
): Record<string, unknown> => ({
78+
ipam_ip_ids: request.ipamIpIds,
79+
private_network_id: request.privateNetworkId,
80+
})
81+
82+
export const marshalPrivateNetworkApiSetServerPrivateNetworksRequest = (
83+
request: PrivateNetworkApiSetServerPrivateNetworksRequest,
84+
defaults: DefaultValues,
85+
): Record<string, unknown> => ({
86+
per_private_network_ipam_ip_ids: request.perPrivateNetworkIpamIpIds,
87+
})
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
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+
import type { Zone } from '../../../bridge'
4+
5+
export type ListServerPrivateNetworksRequestOrderBy =
6+
| 'created_at_asc'
7+
| 'created_at_desc'
8+
| 'updated_at_asc'
9+
| 'updated_at_desc'
10+
11+
export type ServerPrivateNetworkStatus =
12+
| 'unknown_status'
13+
| 'attaching'
14+
| 'attached'
15+
| 'error'
16+
| 'detaching'
17+
| 'locked'
18+
19+
export interface ServerPrivateNetwork {
20+
/** UUID of the Server-to-Private Network mapping. */
21+
id: string
22+
/** Private Network Project UUID. */
23+
projectId: string
24+
/** Server UUID. */
25+
serverId: string
26+
/** Private Network UUID. */
27+
privateNetworkId: string
28+
/** VLAN UUID associated with the Private Network. */
29+
vlan?: number
30+
/** Configuration status of the Private Network. */
31+
status: ServerPrivateNetworkStatus
32+
/** Private Network creation date. */
33+
createdAt?: Date
34+
/** Date the Private Network was last modified. */
35+
updatedAt?: Date
36+
/** IPAM IP IDs of the server, if it has any. */
37+
ipamIpIds: string[]
38+
}
39+
40+
export interface ListServerPrivateNetworksResponse {
41+
serverPrivateNetworks: ServerPrivateNetwork[]
42+
totalCount: number
43+
}
44+
45+
export type PrivateNetworkApiAddServerPrivateNetworkRequest = {
46+
/** Zone to target. If none is passed will use default zone from the config. */
47+
zone?: Zone
48+
/** UUID of the server. */
49+
serverId: string
50+
/** UUID of the Private Network. */
51+
privateNetworkId: string
52+
/** IPAM IDs of an IPs to attach to the server. */
53+
ipamIpIds?: string[]
54+
}
55+
56+
export type PrivateNetworkApiDeleteServerPrivateNetworkRequest = {
57+
/** Zone to target. If none is passed will use default zone from the config. */
58+
zone?: Zone
59+
/** UUID of the server. */
60+
serverId: string
61+
/** UUID of the Private Network. */
62+
privateNetworkId: string
63+
}
64+
65+
export type PrivateNetworkApiListServerPrivateNetworksRequest = {
66+
/** Zone to target. If none is passed will use default zone from the config. */
67+
zone?: Zone
68+
/** Sort order for the returned Private Networks. */
69+
orderBy?: ListServerPrivateNetworksRequestOrderBy
70+
/** Page number for the returned Private Networks. */
71+
page?: number
72+
/** Maximum number of Private Networks per page. */
73+
pageSize?: number
74+
/** Filter Private Networks by server UUID. */
75+
serverId?: string
76+
/** Filter Private Networks by Private Network UUID. */
77+
privateNetworkId?: string
78+
/** Filter Private Networks by organization UUID. */
79+
organizationId?: string
80+
/** Filter Private Networks by project UUID. */
81+
projectId?: string
82+
/** Filter Private Networks by IPAM IP UUIDs. */
83+
ipamIpIds?: string[]
84+
}
85+
86+
export type PrivateNetworkApiSetServerPrivateNetworksRequest = {
87+
/** Zone to target. If none is passed will use default zone from the config. */
88+
zone?: Zone
89+
/** UUID of the server. */
90+
serverId: string
91+
/**
92+
* Object where the keys are the UUIDs of Private Networks and the values are
93+
* arrays of IPAM IDs representing the IPs to assign to this Elastic Metal
94+
* server on the Private Network. If the array supplied for a Private Network
95+
* is empty, the next available IP from the Private Network's CIDR block will
96+
* automatically be used for attachment.
97+
*/
98+
perPrivateNetworkIpamIpIds: Record<string, string[]>
99+
}
100+
101+
export interface SetServerPrivateNetworksResponse {
102+
serverPrivateNetworks: ServerPrivateNetwork[]
103+
}

0 commit comments

Comments
 (0)