Compare commits

...

8 Commits

Author SHA1 Message Date
fe3560caac 1.0.42 2019-08-16 12:48:40 +02:00
b2a7e67868 fix(core): update 2019-08-16 12:48:40 +02:00
f772ca15ef 1.0.41 2019-08-15 19:04:10 +02:00
71cfad146f fix(core): update 2019-08-15 19:04:09 +02:00
43b1c13256 1.0.40 2019-08-15 19:02:44 +02:00
2c8b17f029 fix(core): update 2019-08-15 19:02:43 +02:00
c6521d9160 1.0.39 2019-08-15 19:00:17 +02:00
72c74e44b5 fix(core): update 2019-08-15 19:00:17 +02:00
9 changed files with 73 additions and 8 deletions

2
package-lock.json generated
View File

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

View File

@ -1,6 +1,6 @@
{
"name": "@mojoio/docker",
"version": "1.0.38",
"version": "1.0.42",
"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

@ -1 +0,0 @@
import * as plugins from './dockersock.plugins';

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,6 +13,13 @@ export class DockerImage {
return images;
}
public static async findImageByName (dockerHost: DockerHost, imageNameArg: string) {
const images = await this.getImages(dockerHost);
return images.find(image => {
return image.RepoTags.includes(imageNameArg);
});
}
public static async createFromRegistry(
dockerHostArg: DockerHost,
creationObject: interfaces.IImageCreationDescriptor
@ -28,7 +35,9 @@ export class DockerImage {
'info',
`Successfully pulled image ${creationObject.imageUrl} from the registry`
);
const image = (await DockerImage.getImages(dockerHostArg)).find(image => true);
const originTag = `${creationObject.imageUrl}:${creationObject.tag}`;
console.log(originTag)
const image = await DockerImage.findImageByName(dockerHostArg, originTag);
return image;
} else {
plugins.smartlog.defaultLogger.log('error', `Failed at the attempt of creating a new image`);
@ -58,7 +67,6 @@ export class DockerImage {
/**
* the tags for an image
*/
public tags: string[];
public Containers: number;
public Created: number;
public Id: string;
@ -85,6 +93,10 @@ export class DockerImage {
return this.RepoTags.length > 0;
}
public tagImage(newTag) {
}
/**
* pulls the latest version from the registry
*/

View File

@ -3,4 +3,39 @@ 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,5 @@ 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;
}