From ba83237b7b07fbf02ee43d94783283afff296bc6 Mon Sep 17 00:00:00 2001 From: scaleway-bot Date: Fri, 21 Oct 2022 18:55:12 +0000 Subject: [PATCH 1/2] feat: update generated APIs --- .../clients/src/api/baremetal/v1/api.gen.ts | 149 ++++++++++++++++++ .../src/api/baremetal/v1/content.gen.ts | 10 +- .../src/api/baremetal/v1/marshalling.gen.ts | 69 ++++++++ .../clients/src/api/baremetal/v1/types.gen.ts | 89 +++++++++++ 4 files changed, 316 insertions(+), 1 deletion(-) diff --git a/packages/clients/src/api/baremetal/v1/api.gen.ts b/packages/clients/src/api/baremetal/v1/api.gen.ts index 05e8a2052..6f58f9994 100644 --- a/packages/clients/src/api/baremetal/v1/api.gen.ts +++ b/packages/clients/src/api/baremetal/v1/api.gen.ts @@ -13,6 +13,8 @@ import { marshalAddOptionServerRequest, marshalCreateServerRequest, marshalInstallServerRequest, + marshalPrivateNetworkApiAddServerPrivateNetworkRequest, + marshalPrivateNetworkApiSetServerPrivateNetworksRequest, marshalRebootServerRequest, marshalStartBMCAccessRequest, marshalStartServerRequest, @@ -26,12 +28,15 @@ import { unmarshalListOffersResponse, unmarshalListOptionsResponse, unmarshalListServerEventsResponse, + unmarshalListServerPrivateNetworksResponse, unmarshalListServersResponse, unmarshalListSettingsResponse, unmarshalOS, unmarshalOffer, unmarshalOption, unmarshalServer, + unmarshalServerPrivateNetwork, + unmarshalSetServerPrivateNetworksResponse, unmarshalSetting, } from './marshalling.gen' import type { @@ -57,6 +62,7 @@ import type { ListOptionsResponse, ListServerEventsRequest, ListServerEventsResponse, + ListServerPrivateNetworksResponse, ListServersRequest, ListServersResponse, ListSettingsRequest, @@ -64,8 +70,14 @@ import type { OS, Offer, Option, + PrivateNetworkApiAddServerPrivateNetworkRequest, + PrivateNetworkApiDeleteServerPrivateNetworkRequest, + PrivateNetworkApiListServerPrivateNetworksRequest, + PrivateNetworkApiSetServerPrivateNetworksRequest, RebootServerRequest, Server, + ServerPrivateNetwork, + SetServerPrivateNetworksResponse, Setting, StartBMCAccessRequest, StartServerRequest, @@ -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, + ) => + this.client.fetch( + { + 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, + ) => + this.client.fetch( + { + 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 = {}, + ) => + this.client.fetch( + { + 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 = {}, + ) => + enrichForPagination( + 'serverPrivateNetworks', + this.pageOfListServerPrivateNetworks, + request, + ) + + /** + * Delete a private network + * + * @param request - The request + * {@link PrivateNetworkApiDeleteServerPrivateNetworkRequest} + */ + deleteServerPrivateNetwork = ( + request: Readonly, + ) => + this.client.fetch({ + 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, + )}`, + }) +} diff --git a/packages/clients/src/api/baremetal/v1/content.gen.ts b/packages/clients/src/api/baremetal/v1/content.gen.ts index 5311d3f4b..7d2b0d1af 100644 --- a/packages/clients/src/api/baremetal/v1/content.gen.ts +++ b/packages/clients/src/api/baremetal/v1/content.gen.ts @@ -1,6 +1,10 @@ // 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[] = [ @@ -8,6 +12,10 @@ export const SERVER_INSTALL_TRANSIENT_STATUSES: ServerInstallStatus[] = [ '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', diff --git a/packages/clients/src/api/baremetal/v1/marshalling.gen.ts b/packages/clients/src/api/baremetal/v1/marshalling.gen.ts index 6d84fa807..84fdc4141 100644 --- a/packages/clients/src/api/baremetal/v1/marshalling.gen.ts +++ b/packages/clients/src/api/baremetal/v1/marshalling.gen.ts @@ -23,6 +23,7 @@ import type { ListOffersResponse, ListOptionsResponse, ListServerEventsResponse, + ListServerPrivateNetworksResponse, ListServersResponse, ListSettingsResponse, Memory, @@ -32,13 +33,17 @@ import type { OfferOptionOffer, Option, PersistentMemory, + PrivateNetworkApiAddServerPrivateNetworkRequest, + PrivateNetworkApiSetServerPrivateNetworksRequest, RaidController, RebootServerRequest, Server, ServerEvent, ServerInstall, ServerOption, + ServerPrivateNetwork, ServerRescueServer, + SetServerPrivateNetworksResponse, Setting, StartBMCAccessRequest, StartServerRequest, @@ -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( @@ -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( @@ -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, @@ -505,6 +560,20 @@ export const marshalInstallServerRequest = ( user: request.user, }) +export const marshalPrivateNetworkApiAddServerPrivateNetworkRequest = ( + request: PrivateNetworkApiAddServerPrivateNetworkRequest, + defaults: DefaultValues, +): Record => ({ + private_network_id: request.privateNetworkId, +}) + +export const marshalPrivateNetworkApiSetServerPrivateNetworksRequest = ( + request: PrivateNetworkApiSetServerPrivateNetworksRequest, + defaults: DefaultValues, +): Record => ({ + private_network_ids: request.privateNetworkIds, +}) + export const marshalRebootServerRequest = ( request: RebootServerRequest, defaults: DefaultValues, diff --git a/packages/clients/src/api/baremetal/v1/types.gen.ts b/packages/clients/src/api/baremetal/v1/types.gen.ts index 2c2c4ccfe..e11881f08 100644 --- a/packages/clients/src/api/baremetal/v1/types.gen.ts +++ b/packages/clients/src/api/baremetal/v1/types.gen.ts @@ -10,6 +10,12 @@ export type ListServerEventsRequestOrderBy = | 'created_at_asc' | 'created_at_desc' +export type ListServerPrivateNetworksRequestOrderBy = + | 'created_at_asc' + | 'created_at_desc' + | 'updated_at_asc' + | 'updated_at_desc' + export type ListServersRequestOrderBy = 'created_at_asc' | 'created_at_desc' export type ListSettingsRequestOrderBy = 'created_at_asc' | 'created_at_desc' @@ -42,6 +48,14 @@ export type ServerPingStatus = | 'ping_status_up' | 'ping_status_down' +export type ServerPrivateNetworkStatus = + | 'unknown' + | 'attaching' + | 'attached' + | 'error' + | 'detaching' + | 'locked' + export type ServerStatus = | 'unknown' | 'delivering' @@ -168,6 +182,11 @@ export interface ListServerEventsResponse { events: Array } +export interface ListServerPrivateNetworksResponse { + serverPrivateNetworks: Array + totalCount: number +} + /** List servers response */ export interface ListServersResponse { /** Total count of matching servers */ @@ -403,6 +422,26 @@ export interface ServerOption { expiresAt?: Date } +/** Server private network */ +export interface ServerPrivateNetwork { + /** The private network ID */ + id: string + /** The private network project ID */ + projectId: string + /** The server ID */ + serverId: string + /** The private network ID */ + privateNetworkId: string + /** The VLAN ID associated to the private network */ + vlan?: number + /** The configuration status of the private network */ + status: ServerPrivateNetworkStatus + /** The private network creation date */ + createdAt?: Date + /** The date the private network was last modified */ + updatedAt?: Date +} + /** Server. rescue server */ export interface ServerRescueServer { /** Rescue user name */ @@ -411,6 +450,10 @@ export interface ServerRescueServer { password: string } +export interface SetServerPrivateNetworksResponse { + serverPrivateNetworks: Array +} + /** Setting */ export interface Setting { /** ID of the setting */ @@ -701,3 +744,49 @@ export type GetOSRequest = { /** ID of the OS */ osId: string } + +export type PrivateNetworkApiAddServerPrivateNetworkRequest = { + /** Zone to target. If none is passed will use default zone from the config */ + zone?: Zone + /** The ID of the server */ + serverId: string + /** The ID of the private network */ + privateNetworkId: string +} + +export type PrivateNetworkApiSetServerPrivateNetworksRequest = { + /** Zone to target. If none is passed will use default zone from the config */ + zone?: Zone + /** The ID of the server */ + serverId: string + /** The IDs of the private networks */ + privateNetworkIds: Array +} + +export type PrivateNetworkApiListServerPrivateNetworksRequest = { + /** Zone to target. If none is passed will use default zone from the config */ + zone?: Zone + /** The sort order for the returned private networks */ + orderBy?: ListServerPrivateNetworksRequestOrderBy + /** The page number for the returned private networks */ + page?: number + /** The maximum number of private networks per page */ + pageSize?: number + /** Filter private networks by server ID */ + serverId?: string + /** Filter private networks by private network ID */ + privateNetworkId?: string + /** Filter private networks by organization ID */ + organizationId?: string + /** Filter private networks by project ID */ + projectId?: string +} + +export type PrivateNetworkApiDeleteServerPrivateNetworkRequest = { + /** Zone to target. If none is passed will use default zone from the config */ + zone?: Zone + /** The ID of the server */ + serverId: string + /** The ID of the private network */ + privateNetworkId: string +} From 013ab579b41bfc5680746fc2ae7fc6a93d5b979b Mon Sep 17 00:00:00 2001 From: Vincent Germain Date: Sun, 23 Oct 2022 00:40:17 +0200 Subject: [PATCH 2/2] chore: export new API --- packages/clients/src/api/baremetal/v1/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/clients/src/api/baremetal/v1/index.ts b/packages/clients/src/api/baremetal/v1/index.ts index 2a0b6f5da..8674ddfec 100644 --- a/packages/clients/src/api/baremetal/v1/index.ts +++ b/packages/clients/src/api/baremetal/v1/index.ts @@ -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'