From 5347fa738bb1654c7a76b4e8ef2054bae9f961bd Mon Sep 17 00:00:00 2001 From: Vincent Germain Date: Thu, 19 Jan 2023 16:39:58 +0100 Subject: [PATCH] feat(instance): add setServerUserData method --- .../clients/src/api/instance/v1/api.utils.ts | 20 +++++++++++++++++++ .../src/api/instance/v1/types.utils.ts | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/packages/clients/src/api/instance/v1/api.utils.ts b/packages/clients/src/api/instance/v1/api.utils.ts index 51b053e80..51c773dd6 100644 --- a/packages/clients/src/api/instance/v1/api.utils.ts +++ b/packages/clients/src/api/instance/v1/api.utils.ts @@ -39,6 +39,7 @@ import type { CreateServerRequest, DetachVolumeRequest, DetachVolumeResponse, + SetServerUserDataRequest, UpdateImageRequest, UpdateImageResponse, UpdateSecurityGroupRequest, @@ -510,4 +511,23 @@ export class InstanceV1UtilsAPI extends API { ), ) .then(res => ({ image: res.image })) + + /** + * Sets the content of a user data on a server for the given key. + * + * @param request - The request {@link SetServerUserDataRequest} + */ + setServerUserData = (request: Readonly) => + this.client.fetch({ + body: request.content, + headers: { 'Content-Type': 'text/plain' }, + method: 'PATCH', + path: `/instance/v1/zones/${validatePathParam( + 'zone', + request.zone ?? this.client.settings.defaultZone, + )}/servers/${validatePathParam( + 'serverId', + request.serverId, + )}/user_data/${validatePathParam('key', request.key)}`, + }) } diff --git a/packages/clients/src/api/instance/v1/types.utils.ts b/packages/clients/src/api/instance/v1/types.utils.ts index 4a2ab0268..1783efc6b 100644 --- a/packages/clients/src/api/instance/v1/types.utils.ts +++ b/packages/clients/src/api/instance/v1/types.utils.ts @@ -106,6 +106,16 @@ export interface UpdateImageResponse { image?: Image } +export type SetServerUserDataRequest = { + /** Zone to target. If none is passed will use default zone from the config */ + zone?: Zone + serverId: string + /** The user data key to set */ + key: string + /** The data encoded in base64 */ + content: string +} + export type { CreateServerRequest, UpdateServerRequest,