fix: handle initial docker service deploys

This commit is contained in:
2026-04-28 16:57:54 +00:00
parent f8e8cc43c4
commit 0b74b91124
+30 -4
View File
@@ -19,6 +19,32 @@ export class ClusterManager {
this.coreflowRef = coreflowRefArg; this.coreflowRef = coreflowRefArg;
} }
private async getDockerServiceByName(serviceNameArg: string): Promise<plugins.docker.DockerService | null> {
try {
return await this.coreflowRef.dockerHost.getServiceByName(serviceNameArg);
} catch (error) {
if ((error as Error).message === `Service not found: ${serviceNameArg}`) {
return null;
}
throw error;
}
}
private getDockerSafeName(valueArg: string, maxLengthArg = 64) {
const safeName = valueArg
.replace(/[^a-zA-Z0-9_.-]+/g, '-')
.replace(/^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$/g, '')
.slice(0, maxLengthArg)
.replace(/[^a-zA-Z0-9]+$/g, '');
return safeName || 'resource';
}
private getWorkloadSecretName(serviceArgFromCloudly: plugins.servezoneInterfaces.data.IService) {
const serviceName = this.getDockerSafeName(serviceArgFromCloudly.data.name, 36);
const serviceId = this.getDockerSafeName(serviceArgFromCloudly.id, 20);
return this.getDockerSafeName(`${serviceName}-${serviceId}-secret`);
}
private getWorkloadServiceDeploymentLabels( private getWorkloadServiceDeploymentLabels(
serviceArgFromCloudly: plugins.servezoneInterfaces.data.IService, serviceArgFromCloudly: plugins.servezoneInterfaces.data.IService,
containerImageFromCloudly: plugins.servezoneInterfaces.data.IImage, containerImageFromCloudly: plugins.servezoneInterfaces.data.IImage,
@@ -158,7 +184,7 @@ export class ClusterManager {
// lets deploy the base services // lets deploy the base services
// coretraffic // coretraffic
let coretrafficService: plugins.docker.DockerService | null; let coretrafficService: plugins.docker.DockerService | null;
coretrafficService = await this.coreflowRef.dockerHost.getServiceByName( coretrafficService = await this.getDockerServiceByName(
'coretraffic', 'coretraffic',
); );
@@ -192,7 +218,7 @@ export class ClusterManager {
// corelog // corelog
let corelogService: plugins.docker.DockerService | null; let corelogService: plugins.docker.DockerService | null;
corelogService = await this.coreflowRef.dockerHost.getServiceByName( corelogService = await this.getDockerServiceByName(
'corelog', 'corelog',
); );
@@ -293,12 +319,12 @@ export class ClusterManager {
throw new Error('Invalid image location'); throw new Error('Invalid image location');
} }
let containerService: plugins.docker.DockerService | null = await this.coreflowRef.dockerHost.getServiceByName( let containerService: plugins.docker.DockerService | null = await this.getDockerServiceByName(
serviceArgFromCloudly.data.name, serviceArgFromCloudly.data.name,
); );
this.coreflowRef.cloudlyConnector.cloudlyApiClient; this.coreflowRef.cloudlyConnector.cloudlyApiClient;
const dockerSecretName = `${serviceArgFromCloudly.id}_${serviceArgFromCloudly.data.name}_Secret`; const dockerSecretName = this.getWorkloadSecretName(serviceArgFromCloudly);
let containerSecret: plugins.docker.DockerSecret | undefined | null = await this.coreflowRef.dockerHost.getSecretByName( let containerSecret: plugins.docker.DockerSecret | undefined | null = await this.coreflowRef.dockerHost.getSecretByName(
dockerSecretName, dockerSecretName,
); );