docker-storage-gc 4.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,21 @@
1
+ - commits:
2
+ - subject: Use native promises with dockerode
3
+ hash: e437d1b00cbde9984187cd4fcf055c307df7fcde
4
+ body: ""
5
+ footer:
6
+ Change-type: patch
7
+ change-type: patch
8
+ author: Pagan Gazzard
9
+ - subject: Convert to async/await
10
+ hash: e257c65cc92e0524ed7bf08465099c18c2248724
11
+ body: ""
12
+ footer:
13
+ Change-type: patch
14
+ change-type: patch
15
+ author: Pagan Gazzard
16
+ version: 4.0.1
17
+ title: ""
18
+ date: 2023-12-05T22:24:21.088Z
1
19
  - commits:
2
20
  - subject: Update to dockerode 3.x
3
21
  hash: c6b5416ef2026eba121414cbd349d0717a6d3a68
@@ -15,7 +33,7 @@
15
33
  author: Pagan Gazzard
16
34
  version: 4.0.0
17
35
  title: ""
18
- date: 2023-12-04T17:24:20.893Z
36
+ date: 2023-12-04T17:45:37.011Z
19
37
  - commits:
20
38
  - subject: Update event-stream to 4.x
21
39
  hash: 5d60200c8c776fff5b93d3750df8603e64db3ebf
package/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file
4
4
  automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
5
5
  This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ # v4.0.1
8
+ ## (2023-12-05)
9
+
10
+ * Use native promises with dockerode [Pagan Gazzard]
11
+ * Convert to async/await [Pagan Gazzard]
12
+
7
13
  # v4.0.0
8
14
  ## (2023-12-04)
9
15
 
@@ -1,8 +1,7 @@
1
- import Bluebird from 'bluebird';
2
1
  import * as es from 'event-stream';
3
2
  import type Docker from 'dockerode';
4
3
  export interface LayerMtimes {
5
4
  [id: string]: string | number | undefined;
6
5
  }
7
6
  export declare const parseEventStream: (docker: Docker) => Promise<es.MapStream>;
8
- export declare function dockerMtimeStream(docker: Docker): Bluebird<es.MapStream>;
7
+ export declare function dockerMtimeStream(docker: Docker): Promise<es.MapStream>;
@@ -27,7 +27,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.dockerMtimeStream = exports.parseEventStream = void 0;
30
- const bluebird_1 = __importDefault(require("bluebird"));
31
30
  const es = __importStar(require("event-stream"));
32
31
  const JSONStream_1 = __importDefault(require("JSONStream"));
33
32
  const IMAGE_EVENTS = ['delete', 'import', 'pull', 'push', 'tag'];
@@ -52,7 +51,8 @@ const CONTAINER_EVENTS = [
52
51
  'top',
53
52
  'unpause',
54
53
  ];
55
- const parseEventStream = (docker) => docker.listImages({ all: true }).then(function (images) {
54
+ const parseEventStream = async (docker) => {
55
+ const images = await docker.listImages({ all: true });
56
56
  const layerMtimes = {};
57
57
  for (const image of images) {
58
58
  layerMtimes[image.Id] = 0;
@@ -73,10 +73,14 @@ const parseEventStream = (docker) => docker.listImages({ all: true }).then(funct
73
73
  }
74
74
  return layerMtimes;
75
75
  }));
76
- });
76
+ };
77
77
  exports.parseEventStream = parseEventStream;
78
- function dockerMtimeStream(docker) {
79
- return bluebird_1.default.join(docker.getEvents(), (0, exports.parseEventStream)(docker), (stream, streamParser) => es.pipeline(stream, streamParser));
78
+ async function dockerMtimeStream(docker) {
79
+ const [stream, streamParser] = await Promise.all([
80
+ docker.getEvents(),
81
+ (0, exports.parseEventStream)(docker),
82
+ ]);
83
+ return es.pipeline(stream, streamParser);
80
84
  }
81
85
  exports.dockerMtimeStream = dockerMtimeStream;
82
86
  //# sourceMappingURL=docker-event-stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker-event-stream.js","sourceRoot":"","sources":["../lib/docker-event-stream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAAgC;AAChC,iDAAmC;AACnC,4DAAoC;AAGpC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAEjE,MAAM,gBAAgB,GAAG;IACxB,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;IACT,KAAK;IACL,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,MAAM;IACN,KAAK;IACL,SAAS;CACT,CAAC;AA4BK,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE,CAClD,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,MAAM;IACrD,MAAM,WAAW,GAAgB,EAAE,CAAC;IAKpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,EAAE,CAAC,QAAQ,CACjB,oBAAU,CAAC,KAAK,CAAC,SAAS,CAAwB,EAClD,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAe;QAC/D,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzB,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC7B,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,WAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;YAC5B,CAAC;QACF,CAAC;aAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC9B,CAAC;QACD,OAAO,WAAW,CAAC;IACpB,CAAC,CAAC,CACF,CAAC;AACH,CAAC,CAAC,CAAC;AA5BS,QAAA,gBAAgB,oBA4BzB;AAEJ,SAAgB,iBAAiB,CAAC,MAAc;IAC/C,OAAO,kBAAQ,CAAC,IAAI,CACnB,MAAM,CAAC,SAAS,EAAE,EAClB,IAAA,wBAAgB,EAAC,MAAM,CAAC,EACxB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CACxB,EAAE,CAAC,QAAQ,CAAC,MAA6B,EAAE,YAAY,CAAC,CACzD,CAAC;AACH,CAAC;AAPD,8CAOC"}
1
+ {"version":3,"file":"docker-event-stream.js","sourceRoot":"","sources":["../lib/docker-event-stream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,4DAAoC;AAGpC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAEjE,MAAM,gBAAgB,GAAG;IACxB,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;IACT,KAAK;IACL,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,MAAM;IACN,KAAK;IACL,SAAS;CACT,CAAC;AA4BK,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;IACxD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,WAAW,GAAgB,EAAE,CAAC;IAKpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,EAAE,CAAC,QAAQ,CACjB,oBAAU,CAAC,KAAK,CAAC,SAAS,CAAwB,EAClD,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAe;QAC/D,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzB,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC7B,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,WAAW,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;YAC5B,CAAC;QACF,CAAC;aAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC9B,CAAC;QACD,OAAO,WAAW,CAAC;IACpB,CAAC,CAAC,CACF,CAAC;AACH,CAAC,CAAC;AA5BW,QAAA,gBAAgB,oBA4B3B;AAEK,KAAK,UAAU,iBAAiB,CAAC,MAAc;IACrD,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChD,MAAM,CAAC,SAAS,EAAE;QAClB,IAAA,wBAAgB,EAAC,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,QAAQ,CAAC,MAA6B,EAAE,YAAY,CAAC,CAAC;AACjE,CAAC;AAND,8CAMC"}
@@ -1,4 +1,3 @@
1
- import Bluebird from 'bluebird';
2
1
  import type Docker from 'dockerode';
3
2
  import { LayerMtimes } from './docker-event-stream';
4
3
  export declare const createNode: (id: string) => ImageNode;
@@ -12,4 +11,4 @@ export interface ImageNode {
12
11
  isUsedByAContainer?: boolean;
13
12
  }
14
13
  export declare const createTree: (images: Docker.ImageInfo[], containers: Docker.ContainerInfo[], layerMtimes: LayerMtimes) => ImageNode;
15
- export declare function dockerImageTree(docker: Docker, layerMtimes: LayerMtimes): Bluebird<ImageNode>;
14
+ export declare function dockerImageTree(docker: Docker, layerMtimes: LayerMtimes): Promise<ImageNode>;
@@ -1,10 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.dockerImageTree = exports.createTree = exports.createNode = void 0;
7
- const bluebird_1 = __importDefault(require("bluebird"));
8
4
  const saneRepoAttrs = function (repoAttrs) {
9
5
  if (repoAttrs == null) {
10
6
  return [];
@@ -59,8 +55,12 @@ const createTree = function (images, containers, layerMtimes) {
59
55
  return tree[root];
60
56
  };
61
57
  exports.createTree = createTree;
62
- function dockerImageTree(docker, layerMtimes) {
63
- return bluebird_1.default.join(docker.listImages({ all: true }), docker.listContainers({ all: true }), layerMtimes, exports.createTree);
58
+ async function dockerImageTree(docker, layerMtimes) {
59
+ const [images, containers] = await Promise.all([
60
+ docker.listImages({ all: true }),
61
+ docker.listContainers({ all: true }),
62
+ ]);
63
+ return (0, exports.createTree)(images, containers, layerMtimes);
64
64
  }
65
65
  exports.dockerImageTree = dockerImageTree;
66
66
  //# sourceMappingURL=docker-image-tree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker-image-tree.js","sourceRoot":"","sources":["../lib/docker-image-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker-image-tree.js","sourceRoot":"","sources":["../lib/docker-image-tree.ts"],"names":[],"mappings":"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"}
package/build/docker.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  import Docker from 'dockerode';
2
- export declare function getDocker(hostObj: Docker.DockerOptions): Promise<Docker>;
2
+ export declare function getDocker(hostObj: Docker.DockerOptions): Docker;
package/build/docker.js CHANGED
@@ -5,19 +5,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getDocker = void 0;
7
7
  const dockerode_1 = __importDefault(require("dockerode"));
8
- const bluebird_1 = __importDefault(require("bluebird"));
9
8
  const lodash_1 = __importDefault(require("lodash"));
10
9
  const getDockerConnectOpts = function (hostObj) {
11
10
  if (!lodash_1.default.isEmpty(hostObj)) {
12
- return Promise.resolve(hostObj);
11
+ return hostObj;
13
12
  }
14
- return Promise.resolve({
13
+ return {
15
14
  socketPath: '/var/run/docker.sock',
16
- Promise: bluebird_1.default,
17
- });
15
+ };
18
16
  };
19
17
  function getDocker(hostObj) {
20
- return getDockerConnectOpts(hostObj).then((opts) => new dockerode_1.default(opts));
18
+ const opts = getDockerConnectOpts(hostObj);
19
+ return new dockerode_1.default(opts);
21
20
  }
22
21
  exports.getDocker = getDocker;
23
22
  //# sourceMappingURL=docker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../lib/docker.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA+B;AAC/B,wDAAgC;AAChC,oDAAuB;AAEvB,MAAM,oBAAoB,GAAG,UAAU,OAA6B;IACnE,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC;QACtB,UAAU,EAAE,sBAAsB;QAClC,OAAO,EAAE,kBAAqC;KAC9C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,SAAgB,SAAS,CAAC,OAA6B;IACtD,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,mBAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC;AAFD,8BAEC"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../lib/docker.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA+B;AAC/B,oDAAuB;AAEvB,MAAM,oBAAoB,GAAG,UAAU,OAA6B;IACnE,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IAChB,CAAC;IACD,OAAO;QACN,UAAU,EAAE,sBAAsB;KAClC,CAAC;AACH,CAAC,CAAC;AAEF,SAAgB,SAAS,CAAC,OAA6B;IACtD,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,IAAI,mBAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAHD,8BAGC"}
package/build/index.js CHANGED
@@ -69,36 +69,30 @@ class DockerGC {
69
69
  setHostname(hostname) {
70
70
  this.host = hostname;
71
71
  }
72
- setDocker(hostObj) {
72
+ async setDocker(hostObj) {
73
73
  this.currentMtimes = {};
74
- hostObj = lodash_1.default.defaults({ Promise: bluebird_1.default }, hostObj);
75
74
  this.dockerProgress = new docker_progress_1.DockerProgress({
76
75
  docker: new dockerode_1.default(hostObj),
77
76
  });
78
- return (0, docker_1.getDocker)(hostObj)
79
- .then((docker) => {
80
- this.docker = docker;
81
- return (this.baseImagePromise = this.getDaemonArchitecture().then(function (arch) {
82
- switch (arch) {
83
- case 'arm':
84
- return 'arm32v6/alpine:3.6';
85
- case 'arm64':
86
- return 'arm64v8/alpine:3.6';
87
- case 'amd64':
88
- return 'alpine:3.6';
89
- default:
90
- throw new Error('Could not detect architecture of remote host');
91
- }
92
- }));
93
- })
94
- .then(() => {
95
- });
77
+ const docker = (0, docker_1.getDocker)(hostObj);
78
+ this.docker = docker;
79
+ await (this.baseImagePromise = this.getDaemonArchitecture().then((arch) => {
80
+ switch (arch) {
81
+ case 'arm':
82
+ return 'arm32v6/alpine:3.6';
83
+ case 'arm64':
84
+ return 'arm64v8/alpine:3.6';
85
+ case 'amd64':
86
+ return 'alpine:3.6';
87
+ default:
88
+ throw new Error('Could not detect architecture of remote host');
89
+ }
90
+ }));
96
91
  }
97
- setupMtimeStream() {
98
- return (0, docker_event_stream_1.dockerMtimeStream)(this.docker).then((stream) => {
99
- stream.on('data', (layerMtimes) => {
100
- this.currentMtimes = layerMtimes;
101
- });
92
+ async setupMtimeStream() {
93
+ const stream = await (0, docker_event_stream_1.dockerMtimeStream)(this.docker);
94
+ stream.on('data', (layerMtimes) => {
95
+ this.currentMtimes = layerMtimes;
102
96
  });
103
97
  }
104
98
  removeImage(image) {
@@ -108,79 +102,78 @@ class DockerGC {
108
102
  }
109
103
  tryRemoveImageBy(image, attributes, removalType) {
110
104
  if (attributes.length > 0) {
111
- return bluebird_1.default.each(attributes, (attribute) => {
112
- console.log(`[GC (${this.host}] Removing image : ${attribute} (id: ${image.id})`);
113
- return this.docker
114
- .getImage(attribute)
115
- .remove({ noprune: true })
116
- .then(() => {
105
+ return (async () => {
106
+ for (const attribute of attributes) {
107
+ console.log(`[GC (${this.host}] Removing image : ${attribute} (id: ${image.id})`);
108
+ await this.docker.getImage(attribute).remove({ noprune: true });
117
109
  this.metrics.emit('imageRemoved', removalType);
118
- });
119
- }).then(() => {
120
- });
110
+ }
111
+ })();
121
112
  }
122
113
  }
123
- garbageCollect(reclaimSpace, attemptAll = false) {
114
+ async garbageCollect(reclaimSpace, attemptAll = false) {
124
115
  let err;
125
116
  const startTime = process.hrtime();
126
117
  this.metrics.emit('spaceReclaimed', reclaimSpace);
127
- return (0, docker_image_tree_1.dockerImageTree)(this.docker, this.currentMtimes)
128
- .then((tree) => {
129
- return getImagesToRemove(tree, reclaimSpace, this.metrics);
130
- })
131
- .each((image) => {
132
- return this.removeImage(image).catch((e) => {
118
+ const tree = await (0, docker_image_tree_1.dockerImageTree)(this.docker, this.currentMtimes);
119
+ const images = await getImagesToRemove(tree, reclaimSpace, this.metrics);
120
+ for (const image of images) {
121
+ try {
122
+ await this.removeImage(image);
123
+ }
124
+ catch (e) {
133
125
  this.metrics.emit('imageRemovalError', e.statusCode);
134
126
  console.log(`[GC ${this.host}]: Failed to remove image: `, image);
135
127
  console.log(e);
136
128
  if (attemptAll) {
137
129
  err ??= e;
138
- return;
139
130
  }
140
131
  else {
141
132
  recordGcRunTime(startTime, this.metrics);
142
133
  throw e;
143
134
  }
144
- });
145
- })
146
- .then(() => {
147
- recordGcRunTime(startTime, this.metrics);
148
- if (err != null) {
149
- throw err;
150
135
  }
151
- });
136
+ }
137
+ recordGcRunTime(startTime, this.metrics);
138
+ if (err != null) {
139
+ throw err;
140
+ }
152
141
  }
153
142
  getOutput(image, command) {
154
- return bluebird_1.default.using(this.runDisposer(image, command), (container) => container
155
- .logs({ stdout: true, follow: true })
156
- .then((logs) => streamToString(logs)));
143
+ return bluebird_1.default.using(this.runDisposer(image, command), async (container) => {
144
+ const logs = await container.logs({ stdout: true, follow: true });
145
+ return await streamToString(logs);
146
+ });
157
147
  }
158
148
  runDisposer(image, command) {
159
149
  const containerPromise = this.docker.run(image, command, undefined);
160
- return bluebird_1.default.resolve(containerPromise.then(([, container]) => container)).disposer((container) => container.wait().then(() => container.remove()));
161
- }
162
- getDaemonFreeSpace() {
163
- return bluebird_1.default.resolve(this.baseImagePromise)
164
- .tap((baseImage) => {
165
- return this.dockerProgress.pull(baseImage, lodash_1.default.noop);
166
- })
167
- .then((baseImage) => {
168
- return this.getOutput(baseImage, ['/bin/df', '-B', '1', '/']);
169
- })
170
- .then(function (spaceStr) {
171
- const lines = spaceStr.trim().split(/\r?\n/);
172
- if (lines.length !== 2) {
173
- throw new Error('Coult not parse df output');
174
- }
175
- const parts = lines[1].split(/\s+/);
176
- const total = parseInt(parts[1], 10);
177
- const used = parseInt(parts[2], 10);
178
- const free = parseInt(parts[3], 10);
179
- return { used, total, free };
150
+ return bluebird_1.default.resolve(containerPromise.then(([, container]) => container)).disposer(async (container) => {
151
+ await container.wait();
152
+ await container.remove();
180
153
  });
181
154
  }
182
- getDaemonArchitecture() {
183
- return this.docker.version().then(({ Arch }) => Arch);
155
+ async getDaemonFreeSpace() {
156
+ const baseImage = await this.baseImagePromise;
157
+ await this.dockerProgress.pull(baseImage, lodash_1.default.noop);
158
+ const spaceStr = await this.getOutput(baseImage, [
159
+ '/bin/df',
160
+ '-B',
161
+ '1',
162
+ '/',
163
+ ]);
164
+ const lines = spaceStr.trim().split(/\r?\n/);
165
+ if (lines.length !== 2) {
166
+ throw new Error('Coult not parse df output');
167
+ }
168
+ const parts = lines[1].split(/\s+/);
169
+ const total = parseInt(parts[1], 10);
170
+ const used = parseInt(parts[2], 10);
171
+ const free = parseInt(parts[3], 10);
172
+ return { used, total, free };
173
+ }
174
+ async getDaemonArchitecture() {
175
+ const { Arch } = await this.docker.version();
176
+ return Arch;
184
177
  }
185
178
  }
186
179
  exports.default = DockerGC;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import Bluebird from 'bluebird';
2
1
  import * as es from 'event-stream';
3
2
  import JSONStream from 'JSONStream';
4
3
  import type Docker from 'dockerode';
@@ -53,41 +52,40 @@ interface DockerEvent {
53
52
  timeNano: '1701265973112542359';
54
53
  }
55
54
 
56
- export const parseEventStream = (docker: Docker) =>
57
- docker.listImages({ all: true }).then(function (images) {
58
- const layerMtimes: LayerMtimes = {};
59
- // Start off by setting all current images to an mtime of 0 as we've never seen them used
60
- // If we've never seen the layer used then it's likely created before we started
61
- // listening and so set the last used time to 0 as we know it should be older than
62
- // anything we've seen
63
- for (const image of images) {
64
- layerMtimes[image.Id] = 0;
65
- }
55
+ export const parseEventStream = async (docker: Docker) => {
56
+ const images = await docker.listImages({ all: true });
57
+ const layerMtimes: LayerMtimes = {};
58
+ // Start off by setting all current images to an mtime of 0 as we've never seen them used
59
+ // If we've never seen the layer used then it's likely created before we started
60
+ // listening and so set the last used time to 0 as we know it should be older than
61
+ // anything we've seen
62
+ for (const image of images) {
63
+ layerMtimes[image.Id] = 0;
64
+ }
66
65
 
67
- return es.pipeline(
68
- JSONStream.parse(undefined) as any as es.MapStream,
69
- es.mapSync(function ({ status, id, from, timeNano }: DockerEvent) {
70
- if (IMAGE_EVENTS.includes(status)) {
71
- if (status === 'delete') {
72
- if (layerMtimes[id] != null) {
73
- delete layerMtimes[id];
74
- }
75
- } else {
76
- layerMtimes[id] = timeNano;
66
+ return es.pipeline(
67
+ JSONStream.parse(undefined) as any as es.MapStream,
68
+ es.mapSync(function ({ status, id, from, timeNano }: DockerEvent) {
69
+ if (IMAGE_EVENTS.includes(status)) {
70
+ if (status === 'delete') {
71
+ if (layerMtimes[id] != null) {
72
+ delete layerMtimes[id];
77
73
  }
78
- } else if (CONTAINER_EVENTS.includes(status)) {
79
- layerMtimes[from] = timeNano;
74
+ } else {
75
+ layerMtimes[id] = timeNano;
80
76
  }
81
- return layerMtimes;
82
- }),
83
- );
84
- });
77
+ } else if (CONTAINER_EVENTS.includes(status)) {
78
+ layerMtimes[from] = timeNano;
79
+ }
80
+ return layerMtimes;
81
+ }),
82
+ );
83
+ };
85
84
 
86
- export function dockerMtimeStream(docker: Docker) {
87
- return Bluebird.join(
85
+ export async function dockerMtimeStream(docker: Docker) {
86
+ const [stream, streamParser] = await Promise.all([
88
87
  docker.getEvents(),
89
88
  parseEventStream(docker),
90
- (stream, streamParser) =>
91
- es.pipeline(stream as any as es.MapStream, streamParser),
92
- );
89
+ ]);
90
+ return es.pipeline(stream as any as es.MapStream, streamParser);
93
91
  }
@@ -1,4 +1,3 @@
1
- import Bluebird from 'bluebird';
2
1
  import type Docker from 'dockerode';
3
2
  import { LayerMtimes } from './docker-event-stream';
4
3
 
@@ -84,11 +83,13 @@ export const createTree = function (
84
83
  return tree[root];
85
84
  };
86
85
 
87
- export function dockerImageTree(docker: Docker, layerMtimes: LayerMtimes) {
88
- return Bluebird.join(
86
+ export async function dockerImageTree(
87
+ docker: Docker,
88
+ layerMtimes: LayerMtimes,
89
+ ) {
90
+ const [images, containers] = await Promise.all([
89
91
  docker.listImages({ all: true }),
90
92
  docker.listContainers({ all: true }),
91
- layerMtimes,
92
- createTree,
93
- );
93
+ ]);
94
+ return createTree(images, containers, layerMtimes);
94
95
  }
package/lib/docker.ts CHANGED
@@ -1,17 +1,16 @@
1
1
  import Docker from 'dockerode';
2
- import Bluebird from 'bluebird';
3
2
  import _ from 'lodash';
4
3
 
5
4
  const getDockerConnectOpts = function (hostObj: Docker.DockerOptions) {
6
5
  if (!_.isEmpty(hostObj)) {
7
- return Promise.resolve(hostObj);
6
+ return hostObj;
8
7
  }
9
- return Promise.resolve({
8
+ return {
10
9
  socketPath: '/var/run/docker.sock',
11
- Promise: Bluebird as any as PromiseConstructor,
12
- });
10
+ };
13
11
  };
14
12
 
15
13
  export function getDocker(hostObj: Docker.DockerOptions) {
16
- return getDockerConnectOpts(hostObj).then((opts) => new Docker(opts));
14
+ const opts = getDockerConnectOpts(hostObj);
15
+ return new Docker(opts);
17
16
  }