Skip to content

Commit f77dc21

Browse files
authored
feat(baremetal): add private network (#205)
1 parent 8a68eca commit f77dc21

File tree

4 files changed

+303
-1
lines changed

4 files changed

+303
-1
lines changed

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

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ import type { WaitForOptions, Zone } from '../../../bridge'
1111
import { SERVER_TRANSIENT_STATUSES } from './content.gen'
1212
import {
1313
marshalAddOptionServerRequest,
14+
marshalAddServerPrivateNetworkRequest,
1415
marshalCreateServerRequest,
1516
marshalInstallServerRequest,
1617
marshalRebootServerRequest,
18+
marshalSetServerPrivateNetworksRequest,
1719
marshalStartBMCAccessRequest,
1820
marshalStartServerRequest,
1921
marshalUpdateIPRequest,
@@ -26,19 +28,24 @@ import {
2628
unmarshalListOffersResponse,
2729
unmarshalListOptionsResponse,
2830
unmarshalListServerEventsResponse,
31+
unmarshalListServerPrivateNetworksResponse,
2932
unmarshalListServersResponse,
3033
unmarshalListSettingsResponse,
3134
unmarshalOS,
3235
unmarshalOffer,
3336
unmarshalOption,
3437
unmarshalServer,
38+
unmarshalServerPrivateNetwork,
39+
unmarshalSetServerPrivateNetworksResponse,
3540
unmarshalSetting,
3641
} from './marshalling.gen'
3742
import type {
3843
AddOptionServerRequest,
44+
AddServerPrivateNetworkRequest,
3945
BMCAccess,
4046
CreateServerRequest,
4147
DeleteOptionServerRequest,
48+
DeleteServerPrivateNetworkRequest,
4249
DeleteServerRequest,
4350
GetBMCAccessRequest,
4451
GetOSRequest,
@@ -57,6 +64,8 @@ import type {
5764
ListOptionsResponse,
5865
ListServerEventsRequest,
5966
ListServerEventsResponse,
67+
ListServerPrivateNetworksRequest,
68+
ListServerPrivateNetworksResponse,
6069
ListServersRequest,
6170
ListServersResponse,
6271
ListSettingsRequest,
@@ -66,6 +75,9 @@ import type {
6675
Option,
6776
RebootServerRequest,
6877
Server,
78+
ServerPrivateNetwork,
79+
SetServerPrivateNetworksRequest,
80+
SetServerPrivateNetworksResponse,
6981
Setting,
7082
StartBMCAccessRequest,
7183
StartServerRequest,
@@ -714,4 +726,128 @@ export class BaremetalV1GenAPI extends API {
714726
},
715727
unmarshalOS,
716728
)
729+
730+
/**
731+
* Add a server to a private network
732+
*
733+
* @param request - The request {@link AddServerPrivateNetworkRequest}
734+
* @returns A Promise of ServerPrivateNetwork
735+
*/
736+
addServerPrivateNetwork = (
737+
request: Readonly<AddServerPrivateNetworkRequest>,
738+
) =>
739+
this.client.fetch<ServerPrivateNetwork>(
740+
{
741+
body: JSON.stringify(
742+
marshalAddServerPrivateNetworkRequest(request, this.client.settings),
743+
),
744+
headers: jsonContentHeaders,
745+
method: 'POST',
746+
path: `/baremetal/v1/zones/${validatePathParam(
747+
'zone',
748+
request.zone ?? this.client.settings.defaultZone,
749+
)}/servers/${validatePathParam(
750+
'serverId',
751+
request.serverId,
752+
)}/private-networks`,
753+
},
754+
unmarshalServerPrivateNetwork,
755+
)
756+
757+
/**
758+
* Set multiple private networks on a server
759+
*
760+
* @param request - The request {@link SetServerPrivateNetworksRequest}
761+
* @returns A Promise of SetServerPrivateNetworksResponse
762+
*/
763+
setServerPrivateNetworks = (
764+
request: Readonly<SetServerPrivateNetworksRequest>,
765+
) =>
766+
this.client.fetch<SetServerPrivateNetworksResponse>(
767+
{
768+
body: JSON.stringify(
769+
marshalSetServerPrivateNetworksRequest(request, this.client.settings),
770+
),
771+
headers: jsonContentHeaders,
772+
method: 'PUT',
773+
path: `/baremetal/v1/zones/${validatePathParam(
774+
'zone',
775+
request.zone ?? this.client.settings.defaultZone,
776+
)}/servers/${validatePathParam(
777+
'serverId',
778+
request.serverId,
779+
)}/private-networks`,
780+
},
781+
unmarshalSetServerPrivateNetworksResponse,
782+
)
783+
784+
protected pageOfListServerPrivateNetworks = (
785+
request: Readonly<ListServerPrivateNetworksRequest> = {},
786+
) =>
787+
this.client.fetch<ListServerPrivateNetworksResponse>(
788+
{
789+
method: 'GET',
790+
path: `/baremetal/v1/zones/${validatePathParam(
791+
'zone',
792+
request.zone ?? this.client.settings.defaultZone,
793+
)}/server-private-networks`,
794+
urlParams: urlParams(
795+
['order_by', request.orderBy ?? 'created_at_asc'],
796+
[
797+
'organization_id',
798+
request.organizationId ??
799+
this.client.settings.defaultOrganizationId,
800+
],
801+
['page', request.page],
802+
[
803+
'page_size',
804+
request.pageSize ?? this.client.settings.defaultPageSize,
805+
],
806+
['private_network_id', request.privateNetworkId],
807+
[
808+
'project_id',
809+
request.projectId ?? this.client.settings.defaultProjectId,
810+
],
811+
['server_id', request.serverId],
812+
),
813+
},
814+
unmarshalListServerPrivateNetworksResponse,
815+
)
816+
817+
/**
818+
* List the private networks of a server
819+
*
820+
* @param request - The request {@link ListServerPrivateNetworksRequest}
821+
* @returns A Promise of ListServerPrivateNetworksResponse
822+
*/
823+
listServerPrivateNetworks = (
824+
request: Readonly<ListServerPrivateNetworksRequest> = {},
825+
) =>
826+
enrichForPagination(
827+
'serverPrivateNetworks',
828+
this.pageOfListServerPrivateNetworks,
829+
request,
830+
)
831+
832+
/**
833+
* Delete a private network
834+
*
835+
* @param request - The request {@link DeleteServerPrivateNetworkRequest}
836+
*/
837+
deleteServerPrivateNetwork = (
838+
request: Readonly<DeleteServerPrivateNetworkRequest>,
839+
) =>
840+
this.client.fetch<void>({
841+
method: 'DELETE',
842+
path: `/baremetal/v1/zones/${validatePathParam(
843+
'zone',
844+
request.zone ?? this.client.settings.defaultZone,
845+
)}/servers/${validatePathParam(
846+
'serverId',
847+
request.serverId,
848+
)}/private-networks/${validatePathParam(
849+
'privateNetworkId',
850+
request.privateNetworkId,
851+
)}`,
852+
})
717853
}

packages/clients/src/api/baremetal/v1/content.gen.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
// This file was automatically generated. DO NOT EDIT.
22
// If you have any remark or suggestion do not hesitate to open an issue.
3-
import type { ServerInstallStatus, ServerStatus } from './types.gen'
3+
import type {
4+
ServerInstallStatus,
5+
ServerPrivateNetworkStatus,
6+
ServerStatus,
7+
} from './types.gen'
48

59
/** Lists transient statutes of the enum {@link ServerInstallStatus}. */
610
export const SERVER_INSTALL_TRANSIENT_STATUSES: ServerInstallStatus[] = [
711
'to_install',
812
'installing',
913
]
1014

15+
/** Lists transient statutes of the enum {@link ServerPrivateNetworkStatus}. */
16+
export const SERVER_PRIVATE_NETWORK_TRANSIENT_STATUSES: ServerPrivateNetworkStatus[] =
17+
['attaching', 'detaching']
18+
1119
/** Lists transient statutes of the enum {@link ServerStatus}. */
1220
export const SERVER_TRANSIENT_STATUSES: ServerStatus[] = [
1321
'delivering',

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

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
import type { DefaultValues } from '../../../bridge'
1212
import type {
1313
AddOptionServerRequest,
14+
AddServerPrivateNetworkRequest,
1415
BMCAccess,
1516
CPU,
1617
CreateServerRequest,
@@ -23,6 +24,7 @@ import type {
2324
ListOffersResponse,
2425
ListOptionsResponse,
2526
ListServerEventsResponse,
27+
ListServerPrivateNetworksResponse,
2628
ListServersResponse,
2729
ListSettingsResponse,
2830
Memory,
@@ -38,7 +40,10 @@ import type {
3840
ServerEvent,
3941
ServerInstall,
4042
ServerOption,
43+
ServerPrivateNetwork,
4144
ServerRescueServer,
45+
SetServerPrivateNetworksRequest,
46+
SetServerPrivateNetworksResponse,
4247
Setting,
4348
StartBMCAccessRequest,
4449
StartServerRequest,
@@ -326,6 +331,25 @@ const unmarshalServerEvent = (data: unknown) => {
326331
} as ServerEvent
327332
}
328333

334+
export const unmarshalServerPrivateNetwork = (data: unknown) => {
335+
if (!isJSONObject(data)) {
336+
throw new TypeError(
337+
`Unmarshalling the type 'ServerPrivateNetwork' failed as data isn't a dictionary.`,
338+
)
339+
}
340+
341+
return {
342+
createdAt: unmarshalDate(data.created_at),
343+
id: data.id,
344+
privateNetworkId: data.private_network_id,
345+
projectId: data.project_id,
346+
serverId: data.server_id,
347+
status: data.status,
348+
updatedAt: unmarshalDate(data.updated_at),
349+
vlan: data.vlan,
350+
} as ServerPrivateNetwork
351+
}
352+
329353
export const unmarshalSetting = (data: unknown) => {
330354
if (!isJSONObject(data)) {
331355
throw new TypeError(
@@ -420,6 +444,22 @@ export const unmarshalListServerEventsResponse = (data: unknown) => {
420444
} as ListServerEventsResponse
421445
}
422446

447+
export const unmarshalListServerPrivateNetworksResponse = (data: unknown) => {
448+
if (!isJSONObject(data)) {
449+
throw new TypeError(
450+
`Unmarshalling the type 'ListServerPrivateNetworksResponse' failed as data isn't a dictionary.`,
451+
)
452+
}
453+
454+
return {
455+
serverPrivateNetworks: unmarshalArrayOfObject(
456+
data.server_private_networks,
457+
unmarshalServerPrivateNetwork,
458+
),
459+
totalCount: data.total_count,
460+
} as ListServerPrivateNetworksResponse
461+
}
462+
423463
export const unmarshalListServersResponse = (data: unknown) => {
424464
if (!isJSONObject(data)) {
425465
throw new TypeError(
@@ -446,6 +486,21 @@ export const unmarshalListSettingsResponse = (data: unknown) => {
446486
} as ListSettingsResponse
447487
}
448488

489+
export const unmarshalSetServerPrivateNetworksResponse = (data: unknown) => {
490+
if (!isJSONObject(data)) {
491+
throw new TypeError(
492+
`Unmarshalling the type 'SetServerPrivateNetworksResponse' failed as data isn't a dictionary.`,
493+
)
494+
}
495+
496+
return {
497+
serverPrivateNetworks: unmarshalArrayOfObject(
498+
data.server_private_networks,
499+
unmarshalServerPrivateNetwork,
500+
),
501+
} as SetServerPrivateNetworksResponse
502+
}
503+
449504
const marshalCreateServerRequestInstall = (
450505
request: CreateServerRequestInstall,
451506
defaults: DefaultValues,
@@ -466,6 +521,13 @@ export const marshalAddOptionServerRequest = (
466521
expires_at: request.expiresAt,
467522
})
468523

524+
export const marshalAddServerPrivateNetworkRequest = (
525+
request: AddServerPrivateNetworkRequest,
526+
defaults: DefaultValues,
527+
): Record<string, unknown> => ({
528+
private_network_id: request.privateNetworkId,
529+
})
530+
469531
export const marshalCreateServerRequest = (
470532
request: CreateServerRequest,
471533
defaults: DefaultValues,
@@ -512,6 +574,13 @@ export const marshalRebootServerRequest = (
512574
boot_type: request.bootType,
513575
})
514576

577+
export const marshalSetServerPrivateNetworksRequest = (
578+
request: SetServerPrivateNetworksRequest,
579+
defaults: DefaultValues,
580+
): Record<string, unknown> => ({
581+
private_network_ids: request.privateNetworkIds,
582+
})
583+
515584
export const marshalStartBMCAccessRequest = (
516585
request: StartBMCAccessRequest,
517586
defaults: DefaultValues,

0 commit comments

Comments
 (0)