From bd5e31a7f11a9fa357689098c9262c29f551207a Mon Sep 17 00:00:00 2001 From: Scaleway Bot Date: Fri, 8 Nov 2024 09:49:19 +0100 Subject: [PATCH] feat(apple_silicon): add vnc diagnostic api definition (#1566) --- .../src/api/applesilicon/v1alpha1/api.gen.ts | 36 ++++++++++ .../api/applesilicon/v1alpha1/index.gen.ts | 7 ++ .../applesilicon/v1alpha1/marshalling.gen.ts | 65 +++++++++++++++++++ .../api/applesilicon/v1alpha1/types.gen.ts | 44 +++++++++++++ 4 files changed, 152 insertions(+) diff --git a/packages/clients/src/api/applesilicon/v1alpha1/api.gen.ts b/packages/clients/src/api/applesilicon/v1alpha1/api.gen.ts index 8ba2996a7..2de8e4ad8 100644 --- a/packages/clients/src/api/applesilicon/v1alpha1/api.gen.ts +++ b/packages/clients/src/api/applesilicon/v1alpha1/api.gen.ts @@ -12,17 +12,22 @@ import { SERVER_TRANSIENT_STATUSES } from './content.gen' import { marshalCreateServerRequest, marshalReinstallServerRequest, + marshalStartConnectivityDiagnosticRequest, marshalUpdateServerRequest, + unmarshalConnectivityDiagnostic, unmarshalListOSResponse, unmarshalListServerTypesResponse, unmarshalListServersResponse, unmarshalOS, unmarshalServer, unmarshalServerType, + unmarshalStartConnectivityDiagnosticResponse, } from './marshalling.gen' import type { + ConnectivityDiagnostic, CreateServerRequest, DeleteServerRequest, + GetConnectivityDiagnosticRequest, GetOSRequest, GetServerRequest, GetServerTypeRequest, @@ -37,6 +42,8 @@ import type { ReinstallServerRequest, Server, ServerType, + StartConnectivityDiagnosticRequest, + StartConnectivityDiagnosticResponse, UpdateServerRequest, } from './types.gen' @@ -291,4 +298,33 @@ export class API extends ParentAPI { }, unmarshalServer, ) + + startConnectivityDiagnostic = ( + request: Readonly, + ) => + this.client.fetch( + { + body: JSON.stringify( + marshalStartConnectivityDiagnosticRequest( + request, + this.client.settings, + ), + ), + headers: jsonContentHeaders, + method: 'POST', + path: `/apple-silicon/v1alpha1/zones/${validatePathParam('zone', request.zone ?? this.client.settings.defaultZone)}/connectivity-diagnostics`, + }, + unmarshalStartConnectivityDiagnosticResponse, + ) + + getConnectivityDiagnostic = ( + request: Readonly, + ) => + this.client.fetch( + { + method: 'GET', + path: `/apple-silicon/v1alpha1/zones/${validatePathParam('zone', request.zone ?? this.client.settings.defaultZone)}/connectivity-diagnostics/${validatePathParam('diagnosticId', request.diagnosticId)}`, + }, + unmarshalConnectivityDiagnostic, + ) } diff --git a/packages/clients/src/api/applesilicon/v1alpha1/index.gen.ts b/packages/clients/src/api/applesilicon/v1alpha1/index.gen.ts index f92d990dd..f963a33d7 100644 --- a/packages/clients/src/api/applesilicon/v1alpha1/index.gen.ts +++ b/packages/clients/src/api/applesilicon/v1alpha1/index.gen.ts @@ -3,8 +3,13 @@ export { API } from './api.gen' export * from './content.gen' export type { + ConnectivityDiagnostic, + ConnectivityDiagnosticActionType, + ConnectivityDiagnosticDiagnosticStatus, + ConnectivityDiagnosticServerHealth, CreateServerRequest, DeleteServerRequest, + GetConnectivityDiagnosticRequest, GetOSRequest, GetServerRequest, GetServerTypeRequest, @@ -27,5 +32,7 @@ export type { ServerTypeMemory, ServerTypeNetwork, ServerTypeStock, + StartConnectivityDiagnosticRequest, + StartConnectivityDiagnosticResponse, UpdateServerRequest, } from './types.gen' diff --git a/packages/clients/src/api/applesilicon/v1alpha1/marshalling.gen.ts b/packages/clients/src/api/applesilicon/v1alpha1/marshalling.gen.ts index 37e396c60..3aa29cd12 100644 --- a/packages/clients/src/api/applesilicon/v1alpha1/marshalling.gen.ts +++ b/packages/clients/src/api/applesilicon/v1alpha1/marshalling.gen.ts @@ -8,6 +8,8 @@ import { } from '../../../bridge' import type { DefaultValues } from '../../../bridge' import type { + ConnectivityDiagnostic, + ConnectivityDiagnosticServerHealth, CreateServerRequest, ListOSResponse, ListServerTypesResponse, @@ -21,6 +23,8 @@ import type { ServerTypeGPU, ServerTypeMemory, ServerTypeNetwork, + StartConnectivityDiagnosticRequest, + StartConnectivityDiagnosticResponse, UpdateServerRequest, } from './types.gen' @@ -159,6 +163,46 @@ export const unmarshalServer = (data: unknown): Server => { } as Server } +const unmarshalConnectivityDiagnosticServerHealth = ( + data: unknown, +): ConnectivityDiagnosticServerHealth => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'ConnectivityDiagnosticServerHealth' failed as data isn't a dictionary.`, + ) + } + + return { + isAgentAlive: data.is_agent_alive, + isMdmAlive: data.is_mdm_alive, + isServerAlive: data.is_server_alive, + isSshPortUp: data.is_ssh_port_up, + isVncPortUp: data.is_vnc_port_up, + lastCheckinDate: unmarshalDate(data.last_checkin_date), + } as ConnectivityDiagnosticServerHealth +} + +export const unmarshalConnectivityDiagnostic = ( + data: unknown, +): ConnectivityDiagnostic => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'ConnectivityDiagnostic' failed as data isn't a dictionary.`, + ) + } + + return { + errorMessage: data.error_message, + healthDetails: data.health_details + ? unmarshalConnectivityDiagnosticServerHealth(data.health_details) + : undefined, + id: data.id, + isHealthy: data.is_healthy, + status: data.status, + supportedActions: data.supported_actions, + } as ConnectivityDiagnostic +} + export const unmarshalListOSResponse = (data: unknown): ListOSResponse => { if (!isJSONObject(data)) { throw new TypeError( @@ -201,6 +245,20 @@ export const unmarshalListServersResponse = ( } as ListServersResponse } +export const unmarshalStartConnectivityDiagnosticResponse = ( + data: unknown, +): StartConnectivityDiagnosticResponse => { + if (!isJSONObject(data)) { + throw new TypeError( + `Unmarshalling the type 'StartConnectivityDiagnosticResponse' failed as data isn't a dictionary.`, + ) + } + + return { + diagnosticId: data.diagnostic_id, + } as StartConnectivityDiagnosticResponse +} + export const marshalCreateServerRequest = ( request: CreateServerRequest, defaults: DefaultValues, @@ -218,6 +276,13 @@ export const marshalReinstallServerRequest = ( os_id: request.osId, }) +export const marshalStartConnectivityDiagnosticRequest = ( + request: StartConnectivityDiagnosticRequest, + defaults: DefaultValues, +): Record => ({ + server_id: request.serverId, +}) + export const marshalUpdateServerRequest = ( request: UpdateServerRequest, defaults: DefaultValues, diff --git a/packages/clients/src/api/applesilicon/v1alpha1/types.gen.ts b/packages/clients/src/api/applesilicon/v1alpha1/types.gen.ts index bb70995d8..ea8c1cf90 100644 --- a/packages/clients/src/api/applesilicon/v1alpha1/types.gen.ts +++ b/packages/clients/src/api/applesilicon/v1alpha1/types.gen.ts @@ -2,6 +2,16 @@ // If you have any remark or suggestion do not hesitate to open an issue. import type { Zone } from '../../../bridge' +export type ConnectivityDiagnosticActionType = + | 'reboot_server' + | 'reinstall_server' + +export type ConnectivityDiagnosticDiagnosticStatus = + | 'unknown_status' + | 'processing' + | 'error' + | 'completed' + export type ListServersRequestOrderBy = 'created_at_asc' | 'created_at_desc' export type ServerStatus = @@ -67,6 +77,15 @@ export interface ServerTypeNetwork { publicBandwidthBps: number } +export interface ConnectivityDiagnosticServerHealth { + lastCheckinDate?: Date + isServerAlive: boolean + isAgentAlive: boolean + isMdmAlive: boolean + isSshPortUp: boolean + isVncPortUp: boolean +} + export interface ServerType { /** CPU description. */ cpu?: ServerTypeCPU @@ -140,6 +159,15 @@ export interface Server { delivered: boolean } +export interface ConnectivityDiagnostic { + id: string + status: ConnectivityDiagnosticDiagnosticStatus + isHealthy: boolean + healthDetails?: ConnectivityDiagnosticServerHealth + supportedActions: ConnectivityDiagnosticActionType[] + errorMessage: string +} + export type CreateServerRequest = { /** Zone to target. If none is passed will use default zone from the config. */ zone?: Zone @@ -164,6 +192,12 @@ export type DeleteServerRequest = { serverId: string } +export type GetConnectivityDiagnosticRequest = { + /** Zone to target. If none is passed will use default zone from the config. */ + zone?: Zone + diagnosticId: string +} + export type GetOSRequest = { /** Zone to target. If none is passed will use default zone from the config. */ zone?: Zone @@ -265,6 +299,16 @@ export type ReinstallServerRequest = { osId?: string } +export type StartConnectivityDiagnosticRequest = { + /** Zone to target. If none is passed will use default zone from the config. */ + zone?: Zone + serverId: string +} + +export interface StartConnectivityDiagnosticResponse { + diagnosticId: string +} + export type UpdateServerRequest = { /** Zone to target. If none is passed will use default zone from the config. */ zone?: Zone