fix: handle initial docker service deploys
This commit is contained in:
@@ -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,
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user