Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
149 changes: 149 additions & 0 deletions packages/clients/src/api/baremetal/v1/api.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import {
marshalAddOptionServerRequest,
marshalCreateServerRequest,
marshalInstallServerRequest,
marshalPrivateNetworkApiAddServerPrivateNetworkRequest,
marshalPrivateNetworkApiSetServerPrivateNetworksRequest,
marshalRebootServerRequest,
marshalStartBMCAccessRequest,
marshalStartServerRequest,
Expand All @@ -26,12 +28,15 @@ import {
unmarshalListOffersResponse,
unmarshalListOptionsResponse,
unmarshalListServerEventsResponse,
unmarshalListServerPrivateNetworksResponse,
unmarshalListServersResponse,
unmarshalListSettingsResponse,
unmarshalOS,
unmarshalOffer,
unmarshalOption,
unmarshalServer,
unmarshalServerPrivateNetwork,
unmarshalSetServerPrivateNetworksResponse,
unmarshalSetting,
} from './marshalling.gen'
import type {
Expand All @@ -57,15 +62,22 @@ import type {
ListOptionsResponse,
ListServerEventsRequest,
ListServerEventsResponse,
ListServerPrivateNetworksResponse,
ListServersRequest,
ListServersResponse,
ListSettingsRequest,
ListSettingsResponse,
OS,
Offer,
Option,
PrivateNetworkApiAddServerPrivateNetworkRequest,
PrivateNetworkApiDeleteServerPrivateNetworkRequest,
PrivateNetworkApiListServerPrivateNetworksRequest,
PrivateNetworkApiSetServerPrivateNetworksRequest,
RebootServerRequest,
Server,
ServerPrivateNetwork,
SetServerPrivateNetworksResponse,
Setting,
StartBMCAccessRequest,
StartServerRequest,
Expand Down Expand Up @@ -715,3 +727,140 @@ export class BaremetalV1GenAPI extends API {
unmarshalOS,
)
}

/** Elastic Metal Private Network API. */
export class BaremetalPrivateNetworkV1GenAPI extends API {
/** Lists the available zones of the API. */
public static readonly LOCALITIES: Zone[] = ['fr-par-2']

/**
* Add a server to a private network
*
* @param request - The request {@link PrivateNetworkApiAddServerPrivateNetworkRequest}
* @returns A Promise of ServerPrivateNetwork
*/
addServerPrivateNetwork = (
request: Readonly<PrivateNetworkApiAddServerPrivateNetworkRequest>,
) =>
this.client.fetch<ServerPrivateNetwork>(
{
body: JSON.stringify(
marshalPrivateNetworkApiAddServerPrivateNetworkRequest(
request,
this.client.settings,
),
),
headers: jsonContentHeaders,
method: 'POST',
path: `/baremetal/v1/zones/${validatePathParam(
'zone',
request.zone ?? this.client.settings.defaultZone,
)}/servers/${validatePathParam(
'serverId',
request.serverId,
)}/private-networks`,
},
unmarshalServerPrivateNetwork,
)

/**
* Set multiple private networks on a server
*
* @param request - The request {@link PrivateNetworkApiSetServerPrivateNetworksRequest}
* @returns A Promise of SetServerPrivateNetworksResponse
*/
setServerPrivateNetworks = (
request: Readonly<PrivateNetworkApiSetServerPrivateNetworksRequest>,
) =>
this.client.fetch<SetServerPrivateNetworksResponse>(
{
body: JSON.stringify(
marshalPrivateNetworkApiSetServerPrivateNetworksRequest(
request,
this.client.settings,
),
),
headers: jsonContentHeaders,
method: 'PUT',
path: `/baremetal/v1/zones/${validatePathParam(
'zone',
request.zone ?? this.client.settings.defaultZone,
)}/servers/${validatePathParam(
'serverId',
request.serverId,
)}/private-networks`,
},
unmarshalSetServerPrivateNetworksResponse,
)

protected pageOfListServerPrivateNetworks = (
request: Readonly<PrivateNetworkApiListServerPrivateNetworksRequest> = {},
) =>
this.client.fetch<ListServerPrivateNetworksResponse>(
{
method: 'GET',
path: `/baremetal/v1/zones/${validatePathParam(
'zone',
request.zone ?? this.client.settings.defaultZone,
)}/server-private-networks`,
urlParams: urlParams(
['order_by', request.orderBy ?? 'created_at_asc'],
[
'organization_id',
request.organizationId ??
this.client.settings.defaultOrganizationId,
],
['page', request.page],
[
'page_size',
request.pageSize ?? this.client.settings.defaultPageSize,
],
['private_network_id', request.privateNetworkId],
[
'project_id',
request.projectId ?? this.client.settings.defaultProjectId,
],
['server_id', request.serverId],
),
},
unmarshalListServerPrivateNetworksResponse,
)

/**
* List the private networks of a server
*
* @param request - The request {@link PrivateNetworkApiListServerPrivateNetworksRequest}
* @returns A Promise of ListServerPrivateNetworksResponse
*/
listServerPrivateNetworks = (
request: Readonly<PrivateNetworkApiListServerPrivateNetworksRequest> = {},
) =>
enrichForPagination(
'serverPrivateNetworks',
this.pageOfListServerPrivateNetworks,
request,
)

/**
* Delete a private network
*
* @param request - The request
* {@link PrivateNetworkApiDeleteServerPrivateNetworkRequest}
*/
deleteServerPrivateNetwork = (
request: Readonly<PrivateNetworkApiDeleteServerPrivateNetworkRequest>,
) =>
this.client.fetch<void>({
method: 'DELETE',
path: `/baremetal/v1/zones/${validatePathParam(
'zone',
request.zone ?? this.client.settings.defaultZone,
)}/servers/${validatePathParam(
'serverId',
request.serverId,
)}/private-networks/${validatePathParam(
'privateNetworkId',
request.privateNetworkId,
)}`,
})
}
10 changes: 9 additions & 1 deletion packages/clients/src/api/baremetal/v1/content.gen.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
// This file was automatically generated. DO NOT EDIT.
// If you have any remark or suggestion do not hesitate to open an issue.
import type { ServerInstallStatus, ServerStatus } from './types.gen'
import type {
ServerInstallStatus,
ServerPrivateNetworkStatus,
ServerStatus,
} from './types.gen'

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

/** Lists transient statutes of the enum {@link ServerPrivateNetworkStatus}. */
export const SERVER_PRIVATE_NETWORK_TRANSIENT_STATUSES: ServerPrivateNetworkStatus[] =
['attaching', 'detaching']

/** Lists transient statutes of the enum {@link ServerStatus}. */
export const SERVER_TRANSIENT_STATUSES: ServerStatus[] = [
'delivering',
Expand Down
5 changes: 4 additions & 1 deletion packages/clients/src/api/baremetal/v1/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
export { BaremetalV1UtilsAPI as API } from './api.utils'
export {
BaremetalPrivateNetworkV1GenAPI as PrivateNetworkAPI,
BaremetalV1UtilsAPI as API
} from './api.utils'
export * from './content.gen'
export * from './types.gen'
69 changes: 69 additions & 0 deletions packages/clients/src/api/baremetal/v1/marshalling.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import type {
ListOffersResponse,
ListOptionsResponse,
ListServerEventsResponse,
ListServerPrivateNetworksResponse,
ListServersResponse,
ListSettingsResponse,
Memory,
Expand All @@ -32,13 +33,17 @@ import type {
OfferOptionOffer,
Option,
PersistentMemory,
PrivateNetworkApiAddServerPrivateNetworkRequest,
PrivateNetworkApiSetServerPrivateNetworksRequest,
RaidController,
RebootServerRequest,
Server,
ServerEvent,
ServerInstall,
ServerOption,
ServerPrivateNetwork,
ServerRescueServer,
SetServerPrivateNetworksResponse,
Setting,
StartBMCAccessRequest,
StartServerRequest,
Expand Down Expand Up @@ -326,6 +331,25 @@ const unmarshalServerEvent = (data: unknown) => {
} as ServerEvent
}

export const unmarshalServerPrivateNetwork = (data: unknown) => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'ServerPrivateNetwork' failed as data isn't a dictionary.`,
)
}

return {
createdAt: unmarshalDate(data.created_at),
id: data.id,
privateNetworkId: data.private_network_id,
projectId: data.project_id,
serverId: data.server_id,
status: data.status,
updatedAt: unmarshalDate(data.updated_at),
vlan: data.vlan,
} as ServerPrivateNetwork
}

export const unmarshalSetting = (data: unknown) => {
if (!isJSONObject(data)) {
throw new TypeError(
Expand Down Expand Up @@ -420,6 +444,22 @@ export const unmarshalListServerEventsResponse = (data: unknown) => {
} as ListServerEventsResponse
}

export const unmarshalListServerPrivateNetworksResponse = (data: unknown) => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'ListServerPrivateNetworksResponse' failed as data isn't a dictionary.`,
)
}

return {
serverPrivateNetworks: unmarshalArrayOfObject(
data.server_private_networks,
unmarshalServerPrivateNetwork,
),
totalCount: data.total_count,
} as ListServerPrivateNetworksResponse
}

export const unmarshalListServersResponse = (data: unknown) => {
if (!isJSONObject(data)) {
throw new TypeError(
Expand All @@ -446,6 +486,21 @@ export const unmarshalListSettingsResponse = (data: unknown) => {
} as ListSettingsResponse
}

export const unmarshalSetServerPrivateNetworksResponse = (data: unknown) => {
if (!isJSONObject(data)) {
throw new TypeError(
`Unmarshalling the type 'SetServerPrivateNetworksResponse' failed as data isn't a dictionary.`,
)
}

return {
serverPrivateNetworks: unmarshalArrayOfObject(
data.server_private_networks,
unmarshalServerPrivateNetwork,
),
} as SetServerPrivateNetworksResponse
}

const marshalCreateServerRequestInstall = (
request: CreateServerRequestInstall,
defaults: DefaultValues,
Expand Down Expand Up @@ -505,6 +560,20 @@ export const marshalInstallServerRequest = (
user: request.user,
})

export const marshalPrivateNetworkApiAddServerPrivateNetworkRequest = (
request: PrivateNetworkApiAddServerPrivateNetworkRequest,
defaults: DefaultValues,
): Record<string, unknown> => ({
private_network_id: request.privateNetworkId,
})

export const marshalPrivateNetworkApiSetServerPrivateNetworksRequest = (
request: PrivateNetworkApiSetServerPrivateNetworksRequest,
defaults: DefaultValues,
): Record<string, unknown> => ({
private_network_ids: request.privateNetworkIds,
})

export const marshalRebootServerRequest = (
request: RebootServerRequest,
defaults: DefaultValues,
Expand Down
Loading