fix(core): update
This commit is contained in:
parent
0ef098e9c8
commit
c79f6a698f
21
package-lock.json
generated
21
package-lock.json
generated
@ -313,6 +313,22 @@
|
||||
"luxon": "^1.16.0"
|
||||
}
|
||||
},
|
||||
"@pushrocks/smartversion": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartversion/-/smartversion-2.0.4.tgz",
|
||||
"integrity": "sha512-LrtaWRn1DD2zIUr8nVAsKwZ+Y55TFIVZ0z3xjwAQ46SoiTrFWooeQ2Xw18DqsEo1cEqMZyGAskaJkOaRkXHtUA==",
|
||||
"requires": {
|
||||
"@types/semver": "^6.0.2",
|
||||
"semver": "^6.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://verdaccio.lossless.one/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@pushrocks/tapbundle": {
|
||||
"version": "3.0.13",
|
||||
"resolved": "https://verdaccio.lossless.one/@pushrocks%2ftapbundle/-/tapbundle-3.0.13.tgz",
|
||||
@ -409,6 +425,11 @@
|
||||
"resolved": "https://verdaccio.lossless.one/@types%2fportscanner/-/portscanner-2.1.0.tgz",
|
||||
"integrity": "sha512-II0FA05TSt4r7PBUvYTqub+yrXTRu7L/PQnTtjcJYzAeBts6xHM/OA2MKyeQ80sFxX7p+0BTo68Nh1P3N6Oj/g=="
|
||||
},
|
||||
"@types/semver": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://verdaccio.lossless.one/@types%2fsemver/-/semver-6.0.2.tgz",
|
||||
"integrity": "sha512-G1Ggy7/9Nsa1Jt2yiBR2riEuyK2DFNnqow6R7cromXPMNynackRY1vqFTLz/gwnef1LHokbXThcPhqMRjUbkpQ=="
|
||||
},
|
||||
"@types/vinyl": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://verdaccio.lossless.one/@types%2fvinyl/-/vinyl-2.0.3.tgz",
|
||||
|
@ -32,6 +32,7 @@
|
||||
"@pushrocks/smartnetwork": "^1.1.14",
|
||||
"@pushrocks/smartpromise": "^3.0.2",
|
||||
"@pushrocks/smartrequest": "^1.1.26",
|
||||
"@pushrocks/smartversion": "^2.0.4",
|
||||
"rxjs": "^6.5.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -38,6 +38,9 @@ export class DockerService {
|
||||
imageUrl: serviceCreationDescriptor.Image
|
||||
});
|
||||
|
||||
const serviceVersion = serviceImage.Labels.version;
|
||||
serviceCreationDescriptor.Labels.version = serviceVersion;
|
||||
|
||||
const networkArray: any[] = [];
|
||||
for (const network of serviceCreationDescriptor.networks) {
|
||||
networkArray.push({
|
||||
@ -52,7 +55,8 @@ export class DockerService {
|
||||
ContainerSpec: {
|
||||
Image: serviceCreationDescriptor.Image,
|
||||
Labels: serviceCreationDescriptor.Labels
|
||||
}
|
||||
},
|
||||
ForceUpdate: 1
|
||||
},
|
||||
Labels: serviceCreationDescriptor.Labels,
|
||||
Networks: networkArray
|
||||
@ -71,9 +75,15 @@ export class DockerService {
|
||||
public UpdatedAt: string;
|
||||
public Spec: {
|
||||
Name: string;
|
||||
Labels: [any]; // ZBD
|
||||
TaskTemplate: [any],
|
||||
Mode: [any];
|
||||
Labels: interfaces.TLabels; // ZBD
|
||||
TaskTemplate: {
|
||||
ContainerSpec: {
|
||||
Image: string;
|
||||
Isolation: string;
|
||||
}
|
||||
ForceUpdate: 0;
|
||||
},
|
||||
Mode: {};
|
||||
Networks: [any[]]
|
||||
};
|
||||
public Endpoint: { Spec: {}, VirtualIPs: [any[]] };
|
||||
@ -84,10 +94,49 @@ export class DockerService {
|
||||
}
|
||||
|
||||
public async update() {
|
||||
|
||||
const labels: interfaces.TLabels = {
|
||||
...this.Spec.Labels,
|
||||
|
||||
};
|
||||
const dockerData = await this.dockerHostRef.request('POST', `/servces/${this.ID}/update?version=${this.Version.Index}`, {
|
||||
Name: this.Spec.Name,
|
||||
TaskTemplate: {
|
||||
ContainerSpec: {
|
||||
Image: this.Spec.TaskTemplate.ContainerSpec.Image,
|
||||
Labels: labels
|
||||
},
|
||||
ForceUpdate: 1
|
||||
},
|
||||
Labels: labels,
|
||||
});
|
||||
Object.assign(this, dockerData);
|
||||
}
|
||||
|
||||
public async remove() {
|
||||
await this.dockerHostRef.request('DELETE', `/services/${this.ID}`);
|
||||
}
|
||||
|
||||
public async reReadFromDockerEngine () {
|
||||
const dockerData = await this.dockerHostRef.request('GET', `/services/${this.ID}`);
|
||||
Object.assign(this, dockerData);
|
||||
}
|
||||
|
||||
public async updateFromRegistry () {
|
||||
// TODO: implement digest based update recognition
|
||||
|
||||
await this.reReadFromDockerEngine();
|
||||
const dockerImage = await DockerImage.createFromRegistry(this.dockerHostRef, {
|
||||
imageUrl: this.Spec.TaskTemplate.ContainerSpec.Image
|
||||
});
|
||||
|
||||
const imageVersion = new plugins.smartversion.SmartVersion(dockerImage.Labels.version);
|
||||
const serviceVersion = new plugins.smartversion.SmartVersion(this.Spec.Labels.version);
|
||||
if (imageVersion.greaterThan(serviceVersion)) {
|
||||
console.log('service needs to be updated');
|
||||
this.update();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -4,10 +4,11 @@ import * as smartlog from '@pushrocks/smartlog';
|
||||
import * as smartnetwork from '@pushrocks/smartnetwork';
|
||||
import * as smartpromise from '@pushrocks/smartpromise';
|
||||
import * as smartrequest from '@pushrocks/smartrequest';
|
||||
import * as smartversion from '@pushrocks/smartversion';
|
||||
|
||||
smartlog.defaultLogger.enableConsole();
|
||||
|
||||
export { lik, smartlog, smartnetwork, smartpromise, smartrequest };
|
||||
export { lik, smartlog, smartnetwork, smartpromise, smartrequest, smartversion };
|
||||
|
||||
// third party
|
||||
import * as rxjs from 'rxjs';
|
||||
|
Loading…
Reference in New Issue
Block a user