fix: handle initial docker service deploys
This commit is contained in:
@@ -19,6 +19,32 @@ export class ClusterManager {
|
||||
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(
|
||||
serviceArgFromCloudly: plugins.servezoneInterfaces.data.IService,
|
||||
containerImageFromCloudly: plugins.servezoneInterfaces.data.IImage,
|
||||
@@ -158,7 +184,7 @@ export class ClusterManager {
|
||||
// lets deploy the base services
|
||||
// coretraffic
|
||||
let coretrafficService: plugins.docker.DockerService | null;
|
||||
coretrafficService = await this.coreflowRef.dockerHost.getServiceByName(
|
||||
coretrafficService = await this.getDockerServiceByName(
|
||||
'coretraffic',
|
||||
);
|
||||
|
||||
@@ -192,7 +218,7 @@ export class ClusterManager {
|
||||
|
||||
// corelog
|
||||
let corelogService: plugins.docker.DockerService | null;
|
||||
corelogService = await this.coreflowRef.dockerHost.getServiceByName(
|
||||
corelogService = await this.getDockerServiceByName(
|
||||
'corelog',
|
||||
);
|
||||
|
||||
@@ -293,12 +319,12 @@ export class ClusterManager {
|
||||
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,
|
||||
);
|
||||
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(
|
||||
dockerSecretName,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user