diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index c37369b..ae553c7 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@apiclient.xyz/hetznercloud', - version: '1.0.12', + version: '1.0.13', description: 'an unofficial api client for the hetzner cloud api' } diff --git a/ts/classes.account.ts b/ts/classes.account.ts index 711793c..ca9fc62 100644 --- a/ts/classes.account.ts +++ b/ts/classes.account.ts @@ -11,6 +11,10 @@ export class HetznerAccount { return HetznerServer.getServers(this); } + public async getServerByLabel(labelArg: string, valueArg?: string) { + return HetznerServer.getServerByLabel(this, labelArg, valueArg); + } + public async createServer(optionsArg: plugins.tsclass.typeFestOwn.SecondArgument) { return HetznerServer.create(this, optionsArg); } diff --git a/ts/classes.server.ts b/ts/classes.server.ts index 00627ec..8ec474d 100644 --- a/ts/classes.server.ts +++ b/ts/classes.server.ts @@ -10,7 +10,8 @@ export class HetznerServer { name: string; type: types.THetznerCloudServerName; location: types.THetznerCloudLocationName; - labels: {[key: string]: string}, + labels?: {[key: string]: string}, + userData?: string, } ) { const server = new HetznerServer(hetznerAccountRefArg); @@ -23,6 +24,7 @@ export class HetznerServer { start_after_create: true, labels: optionsArg.labels || {} as any, location: optionsArg.location, + user_data: optionsArg.userData || '', public_net: { enable_ipv4: true, enable_ipv6: true, @@ -50,6 +52,15 @@ export class HetznerServer { return servers; } + public static async getServerByLabel(hetznerAccountRefArg: HetznerAccount, labelArg: string, valueArg?: string) { + const servers = await HetznerServer.getServers(hetznerAccountRefArg); + for (const server of servers) { + if (server.data.labels[labelArg] === valueArg) { + return server; + } + } + } + // INSTANCE public hetznerAccountRef: HetznerAccount; public data: types.IServer;