Compare commits

..

4 Commits

Author SHA1 Message Date
c496405818 1.0.43 2019-08-16 12:48:57 +02:00
020737e21b fix(core): update 2019-08-16 12:48:56 +02:00
fe3560caac 1.0.42 2019-08-16 12:48:40 +02:00
b2a7e67868 fix(core): update 2019-08-16 12:48:40 +02:00
11 changed files with 74 additions and 17 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "@mojoio/docker",
"version": "1.0.41",
"version": "1.0.43",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@mojoio/docker",
"version": "1.0.41",
"version": "1.0.43",
"description": "easy communication with docker remote api from node, TypeScript ready",
"private": false,
"main": "dist/index.js",

View File

@ -52,4 +52,14 @@ tap.test('should return a change Observable', async tools => {
subscription.unsubscribe();
});
// SERVICES
tap.test('should activate swarm mode', async () => {
await testDockerHost.activateSwarm();
});
tap.test('should list all services', async tools => {
const services = await docker.DockerService.getServices(testDockerHost);
console.log(services);
});
tap.start();

View File

@ -49,7 +49,10 @@ export class DockerContainer {
if (response.statusCode < 300) {
plugins.smartlog.defaultLogger.log('info', 'Container created successfully');
} else {
plugins.smartlog.defaultLogger.log('error', 'There has been a problem when creating the container');
plugins.smartlog.defaultLogger.log(
'error',
'There has been a problem when creating the container'
);
}
}

View File

@ -65,10 +65,10 @@ export class DockerHost {
/**
* activates docker swarm
*/
public async activateSwarm(addvertisementIpArg: string) {
public async activateSwarm(addvertisementIpArg?: string) {
const response = await this.request('POST', '/swarm/init', {
ListenAddr: '0.0.0.0:2377',
AdvertiseAddr: `${addvertisementIpArg}:2377`,
AdvertiseAddr: addvertisementIpArg ? `${addvertisementIpArg}:2377` : undefined,
DataPathPort: 4789,
DefaultAddrPool: ['10.10.0.0/8', '20.20.0.0/8'],
SubnetSize: 24,

View File

@ -13,7 +13,7 @@ export class DockerImage {
return images;
}
public static async findImageByName (dockerHost: DockerHost, imageNameArg: string) {
public static async findImageByName(dockerHost: DockerHost, imageNameArg: string) {
const images = await this.getImages(dockerHost);
return images.find(image => {
return image.RepoTags.includes(imageNameArg);
@ -36,7 +36,7 @@ export class DockerImage {
`Successfully pulled image ${creationObject.imageUrl} from the registry`
);
const originTag = `${creationObject.imageUrl}:${creationObject.tag}`;
console.log(originTag)
console.log(originTag);
const image = await DockerImage.findImageByName(dockerHostArg, originTag);
return image;
} else {
@ -93,9 +93,7 @@ export class DockerImage {
return this.RepoTags.length > 0;
}
public tagImage(newTag) {
}
public tagImage(newTag) {}
/**
* pulls the latest version from the registry
@ -111,6 +109,4 @@ export class DockerImage {
// TODO: Compare image digists before and after
return true;
}
}

View File

@ -41,12 +41,15 @@ export class DockerNetwork {
Attachable: true,
Ingress: false
});
if (response.statusCode < 300 ) {
if (response.statusCode < 300) {
plugins.smartlog.defaultLogger.log('info', 'Created network successfully');
return await DockerNetwork.getNetworkByName(dockerHost, networkCreationDescriptor.Name);
} else {
plugins.smartlog.defaultLogger.log('error', 'There has been an error creating the wanted network');
return null
plugins.smartlog.defaultLogger.log(
'error',
'There has been an error creating the wanted network'
);
return null;
}
}

View File

@ -3,4 +3,41 @@ import * as interfaces from './interfaces';
import { DockerHost } from './docker.classes.host';
export class DockerService {}
export class DockerService {
// STATIC
public static async getServices(dockerHost: DockerHost) {
const services: DockerService[] = [];
const response = await dockerHost.request('GET', '/services');
for (const serviceObject of response.body) {
services.push(new DockerService(dockerHost, serviceObject));
}
return services;
}
/**
* creates a service
*/
public static async createService(
dockerHost: DockerHost,
serviceCreationDescriptor: interfaces.IServiceCreationDescriptor
) {
dockerHost.request('POST', '/services/create', {
Name: serviceCreationDescriptor.Name,
TaskTemplate: {
ContainerSpec: {
Image: serviceCreationDescriptor.Image,
Labels: serviceCreationDescriptor.Labels
}
},
Labels: serviceCreationDescriptor.Labels
});
}
// INSTANCE
public dockerHost: DockerHost;
constructor(dockerHostArg: DockerHost, serviceObject) {
this.dockerHost = dockerHostArg;
Object.assign(this, serviceObject);
}
}

View File

@ -3,3 +3,4 @@ export * from './image';
export * from './label';
export * from './network';
export * from './port';
export * from './service';

7
ts/interfaces/service.ts Normal file
View File

@ -0,0 +1,7 @@
import * as interfaces from './';
export interface IServiceCreationDescriptor {
Name: string;
Image: string;
Labels: interfaces.TLabels;
}