fix(core): update

This commit is contained in:
2020-09-30 16:35:24 +00:00
parent 3a4f59ef9e
commit 1675c0c4c9
14 changed files with 152 additions and 210 deletions

View File

@ -38,22 +38,19 @@ export class DockerContainer {
) {
// check for unique hostname
const existingContainers = await DockerContainer.getContainers(dockerHost);
const sameHostNameContainer = existingContainers.find(container => {
const sameHostNameContainer = existingContainers.find((container) => {
// TODO implement HostName Detection;
return false;
});
const response = await dockerHost.request('POST', '/containers/create', {
Hostname: containerCreationDescriptor.Hostname,
Domainname: containerCreationDescriptor.Domainname,
User: 'root'
User: 'root',
});
if (response.statusCode < 300) {
logger.log('info', 'Container created successfully');
} else {
logger.log(
'error',
'There has been a problem when creating the container'
);
logger.log('error', 'There has been a problem when creating the container');
}
}
@ -95,7 +92,7 @@ export class DockerContainer {
public Mounts: any;
constructor(dockerHostArg: DockerHost, dockerContainerObjectArg: any) {
this.dockerHost = dockerHostArg;
Object.keys(dockerContainerObjectArg).forEach(keyArg => {
Object.keys(dockerContainerObjectArg).forEach((keyArg) => {
this[keyArg] = dockerContainerObjectArg[keyArg];
});
}

View File

@ -62,7 +62,7 @@ export class DockerHost {
await this.auth({
username: gitlabAuthArray[0],
password: gitlabAuthArray[1],
serveraddress: 'registry.gitlab.com'
serveraddress: 'registry.gitlab.com',
});
}
@ -98,8 +98,8 @@ export class DockerHost {
*/
public async getEventObservable(): Promise<plugins.rxjs.Observable<any>> {
const response = await this.requestStreaming('GET', '/events');
return plugins.rxjs.Observable.create(observer => {
response.on('data', data => {
return plugins.rxjs.Observable.create((observer) => {
response.on('data', (data) => {
const eventString = data.toString();
try {
const eventObject = JSON.parse(eventString);
@ -136,7 +136,7 @@ export class DockerHost {
DataPathPort: 4789,
DefaultAddrPool: ['10.10.0.0/8', '20.20.0.0/8'],
SubnetSize: 24,
ForceNewCluster: false
ForceNewCluster: false,
});
if (response.statusCode === 200) {
logger.log('info', 'created Swam succesfully');
@ -155,10 +155,10 @@ export class DockerHost {
headers: {
'Content-Type': 'application/json',
'X-Registry-Auth': this.registryToken,
Host: 'docker.sock'
Host: 'docker.sock',
},
requestBody: dataArg,
keepAlive: false
keepAlive: false,
});
if (response.statusCode !== 200) {
console.log(response.body);
@ -175,10 +175,10 @@ export class DockerHost {
headers: {
'Content-Type': 'application/json',
'X-Registry-Auth': this.registryToken,
Host: 'docker.sock'
Host: 'docker.sock',
},
requestBody: null,
keepAlive: false
keepAlive: false,
},
true
);

View File

@ -16,7 +16,7 @@ export class DockerImage {
public static async findImageByName(dockerHost: DockerHost, imageNameArg: string) {
const images = await this.getImages(dockerHost);
const result = images.find(image => {
const result = images.find((image) => {
if (image.RepoTags) {
return image.RepoTags.includes(imageNameArg);
} else {
@ -38,7 +38,7 @@ export class DockerImage {
} = {
imageUrl: creationObject.imageUrl,
imageTag: creationObject.imageTag,
imageOriginTag: null
imageOriginTag: null,
};
if (imageUrlObject.imageUrl.includes(':')) {
const imageUrl = imageUrlObject.imageUrl.split(':')[0];
@ -64,10 +64,7 @@ export class DockerImage {
)}&tag=${encodeURIComponent(imageUrlObject.imageTag)}`
);
if (response.statusCode < 300) {
logger.log(
'info',
`Successfully pulled image ${imageUrlObject.imageUrl} from the registry`
);
logger.log('info', `Successfully pulled image ${imageUrlObject.imageUrl} from the registry`);
const image = await DockerImage.findImageByName(dockerHostArg, imageUrlObject.imageOriginTag);
return image;
} else {
@ -111,7 +108,7 @@ export class DockerImage {
constructor(dockerHostArg, dockerImageObjectArg: any) {
this.dockerHost = dockerHostArg;
Object.keys(dockerImageObjectArg).forEach(keyArg => {
Object.keys(dockerImageObjectArg).forEach((keyArg) => {
this[keyArg] = dockerImageObjectArg[keyArg];
});
}
@ -129,7 +126,7 @@ export class DockerImage {
*/
public async pullLatestImageFromRegistry(): Promise<boolean> {
const updatedImage = await DockerImage.createFromRegistry(this.dockerHost, {
imageUrl: this.RepoTags[0]
imageUrl: this.RepoTags[0],
});
Object.assign(this, updatedImage);
// TODO: Compare image digists before and after

View File

@ -19,7 +19,7 @@ export class DockerNetwork {
public static async getNetworkByName(dockerHost: DockerHost, dockerNetworkNameArg: string) {
const networks = await DockerNetwork.getNetworks(dockerHost);
return networks.find(dockerNetwork => dockerNetwork.Name === dockerNetworkNameArg);
return networks.find((dockerNetwork) => dockerNetwork.Name === dockerNetworkNameArg);
}
public static async createNetwork(
@ -43,16 +43,13 @@ export class DockerNetwork {
}, */
Internal: false,
Attachable: true,
Ingress: false
Ingress: false,
});
if (response.statusCode < 300) {
logger.log('info', 'Created network successfully');
return await DockerNetwork.getNetworkByName(dockerHost, networkCreationDescriptor.Name);
} else {
logger.log(
'error',
'There has been an error creating the wanted network'
);
logger.log('error', 'There has been an error creating the wanted network');
return null;
}
}
@ -113,7 +110,7 @@ export class DockerNetwork {
public async getContainersOnNetworkForService(serviceArg: DockerService) {
const containersOnNetwork = await this.getContainersOnNetwork();
const containersOfService = containersOnNetwork.filter(container => {
const containersOfService = containersOnNetwork.filter((container) => {
return container.Name.startsWith(serviceArg.Spec.Name);
});
return containersOfService;

View File

@ -19,12 +19,12 @@ export class DockerSecret {
public static async getSecretByID(dockerHostArg: DockerHost, idArg: string) {
const secrets = await this.getSecrets(dockerHostArg);
return secrets.find(secret => secret.ID === idArg);
return secrets.find((secret) => secret.ID === idArg);
}
public static async getSecretByName(dockerHostArg: DockerHost, nameArg: string) {
const secrets = await this.getSecrets(dockerHostArg);
return secrets.find(secret => secret.Spec.Name === nameArg);
return secrets.find((secret) => secret.Spec.Name === nameArg);
}
public static async createSecret(
@ -33,12 +33,12 @@ export class DockerSecret {
) {
const labels: interfaces.TLabels = {
...secretDescriptor.labels,
version: secretDescriptor.version
version: secretDescriptor.version,
};
const response = await dockerHostArg.request('POST', '/secrets/create', {
Name: secretDescriptor.name,
Labels: labels,
Data: plugins.smartstring.base64.encode(secretDescriptor.contentArg)
Data: plugins.smartstring.base64.encode(secretDescriptor.contentArg),
});
const newSecretInstance = new DockerSecret(dockerHostArg);
@ -76,7 +76,7 @@ export class DockerSecret {
{
Name: this.Spec.Name,
Labels: this.Spec.Labels,
Data: plugins.smartstring.base64.encode(contentArg)
Data: plugins.smartstring.base64.encode(contentArg),
}
);
}

View File

@ -24,7 +24,7 @@ export class DockerService {
networkName: string
): Promise<DockerService> {
const allServices = await DockerService.getServices(dockerHost);
const wantedService = allServices.find(service => {
const wantedService = allServices.find((service) => {
return service.Spec.Name === networkName;
});
return wantedService;
@ -38,17 +38,14 @@ export class DockerService {
serviceCreationDescriptor: interfaces.IServiceCreationDescriptor
): Promise<DockerService> {
// lets get the image
logger.log(
'info',
`now creating service ${serviceCreationDescriptor.name}`
);
logger.log('info', `now creating service ${serviceCreationDescriptor.name}`);
// await serviceCreationDescriptor.image.pullLatestImageFromRegistry();
const serviceVersion = await serviceCreationDescriptor.image.getVersion();
const labels: interfaces.TLabels = {
...serviceCreationDescriptor.labels,
version: serviceVersion
version: serviceVersion,
};
const mounts: Array<{
@ -70,18 +67,18 @@ export class DockerService {
Source: '/var/run/docker.sock',
Consistency: 'default',
ReadOnly: false,
Type: 'bind'
Type: 'bind',
});
}
if (serviceCreationDescriptor.resources && serviceCreationDescriptor.resources.volumeMounts) {
for(const volumeMount of serviceCreationDescriptor.resources.volumeMounts) {
for (const volumeMount of serviceCreationDescriptor.resources.volumeMounts) {
mounts.push({
Target: volumeMount.containerFsPath,
Source: volumeMount.hostFsPath,
Consistency: 'default',
ReadOnly: false,
Type: 'bind'
Type: 'bind',
});
}
}
@ -94,7 +91,7 @@ export class DockerService {
for (const network of serviceCreationDescriptor.networks) {
networkArray.push({
Target: network.Name,
Aliases: [serviceCreationDescriptor.networkAlias]
Aliases: [serviceCreationDescriptor.networkAlias],
});
}
@ -106,7 +103,7 @@ export class DockerService {
ports.push({
Protocol: 'tcp',
PublishedPort: parseInt(hostPort, 10),
TargetPort: parseInt(containerPort, 10)
TargetPort: parseInt(containerPort, 10),
});
}
@ -118,10 +115,10 @@ export class DockerService {
Name: 'secret.json', // TODO: make sure that works with multiple secrets
UID: '33',
GID: '33',
Mode: 384
Mode: 384,
},
SecretID: secret.ID,
SecretName: secret.Spec.Name
SecretName: secret.Spec.Name,
});
}
@ -133,7 +130,7 @@ export class DockerService {
: 1000;
const limits = {
MemoryBytes: memoryLimitMB * 1000000
MemoryBytes: memoryLimitMB * 1000000,
};
if (serviceCreationDescriptor.resources) {
@ -147,7 +144,7 @@ export class DockerService {
Image: serviceCreationDescriptor.image.RepoTags[0],
Labels: labels,
Secrets: secretArray,
Mounts: mounts
Mounts: mounts,
/* DNSConfig: {
Nameservers: ['1.1.1.1']
} */
@ -157,25 +154,25 @@ export class DockerService {
Delay: 0,
FailureAction: 'pause',
Monitor: 15000000000,
MaxFailureRatio: 0.15
MaxFailureRatio: 0.15,
},
ForceUpdate: 1,
Resources: {
Limits: limits
Limits: limits,
},
LogDriver: {
Name: 'json-file',
Options: {
'max-file': '3',
'max-size': '10M'
}
}
'max-size': '10M',
},
},
},
Labels: labels,
Networks: networkArray,
EndpointSpec: {
Ports: ports
}
Ports: ports,
},
});
const createdService = await DockerService.getServiceByName(
@ -235,7 +232,7 @@ export class DockerService {
await this.reReadFromDockerEngine();
const dockerImage = await DockerImage.createFromRegistry(this.dockerHostRef, {
imageUrl: this.Spec.TaskTemplate.ContainerSpec.Image
imageUrl: this.Spec.TaskTemplate.ContainerSpec.Image,
});
const imageVersion = new plugins.smartversion.SmartVersion(dockerImage.Labels.version);

View File

@ -25,15 +25,13 @@ export {
smartpromise,
smartrequest,
smartstring,
smartversion
smartversion,
};
// @tsclass scope
import * as tsclass from '@tsclass/tsclass';
export {
tsclass
};
export { tsclass };
// third party
import * as rxjs from 'rxjs';

View File

@ -16,6 +16,6 @@ export interface IServiceCreationDescriptor {
accessHostDockerSock?: boolean;
resources?: {
memorySizeMB?: number;
volumeMounts?: plugins.tsclass.container.IVolumeMount[]
volumeMounts?: plugins.tsclass.container.IVolumeMount[];
};
}