chore: update cloudly dependency stack
Align Cloudly with the current typedserver, smartconfig, smartstate, and Docker tooling releases so builds and Docker output stay compatible with the upgraded stack.
This commit is contained in:
@@ -12,29 +12,38 @@ export class BareMetal extends plugins.smartdata.SmartDataDbDoc<
|
||||
public static async createFromHetznerServer(
|
||||
hetznerServerArg: plugins.hetznercloud.HetznerServer,
|
||||
) {
|
||||
const serverData = hetznerServerArg.data;
|
||||
if (!serverData) {
|
||||
throw new Error('Hetzner server response is missing server data');
|
||||
}
|
||||
const ipv4 = serverData.public_net.ipv4;
|
||||
if (!ipv4) {
|
||||
throw new Error(`Hetzner server ${serverData.id} has no primary IPv4 address`);
|
||||
}
|
||||
|
||||
const newBareMetal = new BareMetal();
|
||||
newBareMetal.id = plugins.smartunique.shortId(8);
|
||||
const data: plugins.servezoneInterfaces.data.IBareMetal['data'] = {
|
||||
hostname: hetznerServerArg.data.name,
|
||||
primaryIp: hetznerServerArg.data.public_net.ipv4.ip,
|
||||
hostname: serverData.name,
|
||||
primaryIp: ipv4.ip,
|
||||
provider: 'hetzner',
|
||||
location: hetznerServerArg.data.datacenter.name,
|
||||
location: serverData.datacenter.name,
|
||||
specs: {
|
||||
cpuModel: hetznerServerArg.data.server_type.cpu_type,
|
||||
cpuCores: hetznerServerArg.data.server_type.cores,
|
||||
memoryGB: hetznerServerArg.data.server_type.memory,
|
||||
storageGB: hetznerServerArg.data.server_type.disk,
|
||||
cpuModel: serverData.server_type.cpu_type,
|
||||
cpuCores: serverData.server_type.cores,
|
||||
memoryGB: serverData.server_type.memory,
|
||||
storageGB: serverData.server_type.disk,
|
||||
storageType: 'nvme',
|
||||
},
|
||||
powerState: hetznerServerArg.data.status === 'running' ? 'on' : 'off',
|
||||
powerState: serverData.status === 'running' ? 'on' : 'off',
|
||||
osInfo: {
|
||||
name: 'Debian',
|
||||
version: '12',
|
||||
},
|
||||
assignedNodeIds: [],
|
||||
providerMetadata: {
|
||||
hetznerServerId: hetznerServerArg.data.id,
|
||||
hetznerServerName: hetznerServerArg.data.name,
|
||||
hetznerServerId: serverData.id,
|
||||
hetznerServerName: serverData.name,
|
||||
},
|
||||
};
|
||||
Object.assign(newBareMetal, { data });
|
||||
@@ -44,10 +53,10 @@ export class BareMetal extends plugins.smartdata.SmartDataDbDoc<
|
||||
|
||||
// INSTANCE
|
||||
@plugins.smartdata.unI()
|
||||
public id: string;
|
||||
public id!: string;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public data: plugins.servezoneInterfaces.data.IBareMetal['data'];
|
||||
public data!: plugins.servezoneInterfaces.data.IBareMetal['data'];
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
@@ -101,4 +110,4 @@ export class BareMetal extends plugins.smartdata.SmartDataDbDoc<
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ export class CloudlyBaremetalManager {
|
||||
public cloudlyRef: Cloudly;
|
||||
public typedRouter = new plugins.typedrequest.TypedRouter();
|
||||
|
||||
public hetznerAccount: plugins.hetznercloud.HetznerAccount;
|
||||
public hetznerAccount?: plugins.hetznercloud.HetznerAccount;
|
||||
|
||||
public get db() {
|
||||
return this.cloudlyRef.mongodbConnector.smartdataDb;
|
||||
@@ -119,18 +119,22 @@ export class CloudlyBaremetalManager {
|
||||
* Create baremetal from Hetzner server
|
||||
*/
|
||||
public async createBaremetalFromHetznerServer(hetznerServer: plugins.hetznercloud.HetznerServer): Promise<BareMetal> {
|
||||
const serverData = hetznerServer.data;
|
||||
if (!serverData) {
|
||||
throw new Error('Hetzner server response is missing server data');
|
||||
}
|
||||
// Check if baremetal already exists for this Hetzner server
|
||||
const existingBaremetals = await this.CBareMetal.getInstances({});
|
||||
for (const baremetal of existingBaremetals) {
|
||||
if (baremetal.data.providerMetadata?.hetznerServerId === hetznerServer.data.id) {
|
||||
logger.log('info', `BareMetal already exists for Hetzner server ${hetznerServer.data.id}`);
|
||||
if (baremetal.data.providerMetadata?.hetznerServerId === serverData.id) {
|
||||
logger.log('info', `BareMetal already exists for Hetzner server ${serverData.id}`);
|
||||
return baremetal;
|
||||
}
|
||||
}
|
||||
|
||||
// Create new baremetal
|
||||
const newBaremetal = await BareMetal.createFromHetznerServer(hetznerServer);
|
||||
logger.log('success', `Created new BareMetal ${newBaremetal.id} from Hetzner server ${hetznerServer.data.id}`);
|
||||
logger.log('success', `Created new BareMetal ${newBaremetal.id} from Hetzner server ${serverData.id}`);
|
||||
return newBaremetal;
|
||||
}
|
||||
|
||||
@@ -173,4 +177,4 @@ export class CloudlyBaremetalManager {
|
||||
|
||||
throw new Error(`Provider ${options.provider} not supported or not configured`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user