UNPKG

@apiclient.xyz/docker

Version:

Provides easy communication with Docker remote API from Node.js, with TypeScript support.

94 lines 7.94 kB
import * as plugins from './plugins.js'; import * as interfaces from './interfaces/index.js'; import { DockerHost } from './classes.host.js'; import { DockerResource } from './classes.base.js'; import { DockerService } from './classes.service.js'; import { logger } from './logger.js'; export class DockerNetwork extends DockerResource { // STATIC (Internal - prefixed with _ to indicate internal use) /** * Internal: Get all networks * Public API: Use dockerHost.getNetworks() instead */ static async _list(dockerHost) { const dockerNetworks = []; const response = await dockerHost.request('GET', '/networks'); for (const networkObject of response.body) { const dockerNetwork = new DockerNetwork(dockerHost); Object.assign(dockerNetwork, networkObject); dockerNetworks.push(dockerNetwork); } return dockerNetworks; } /** * Internal: Get network by name * Public API: Use dockerHost.getNetworkByName(name) instead */ static async _fromName(dockerHost, dockerNetworkNameArg) { const networks = await DockerNetwork._list(dockerHost); return networks.find((dockerNetwork) => dockerNetwork.Name === dockerNetworkNameArg); } /** * Internal: Create a network * Public API: Use dockerHost.createNetwork(descriptor) instead */ static async _create(dockerHost, networkCreationDescriptor) { const response = await dockerHost.request('POST', '/networks/create', { Name: networkCreationDescriptor.Name, CheckDuplicate: true, Driver: networkCreationDescriptor.Driver || 'overlay', EnableIPv6: networkCreationDescriptor.EnableIPv6 || false, IPAM: networkCreationDescriptor.IPAM, Internal: networkCreationDescriptor.Internal || false, Attachable: networkCreationDescriptor.Attachable !== undefined ? networkCreationDescriptor.Attachable : true, Labels: networkCreationDescriptor.Labels, Ingress: false, }); if (response.statusCode < 300) { logger.log('info', 'Created network successfully'); const network = await DockerNetwork._fromName(dockerHost, networkCreationDescriptor.Name); if (!network) { throw new Error('Network was created but could not be retrieved'); } return network; } else { throw new Error('There has been an error creating the wanted network'); } } constructor(dockerHostArg) { super(dockerHostArg); } // INSTANCE METHODS /** * Refreshes this network's state from the Docker daemon */ async refresh() { const updated = await DockerNetwork._fromName(this.dockerHost, this.Name); if (updated) { Object.assign(this, updated); } } /** * Removes the network */ async remove() { const response = await this.dockerHost.request('DELETE', `/networks/${this.Id}`); } async listContainersOnNetwork() { const returnArray = []; const response = await this.dockerHost.request('GET', `/networks/${this.Id}`); for (const key of Object.keys(response.body.Containers)) { returnArray.push(response.body.Containers[key]); } return returnArray; } async getContainersOnNetworkForService(serviceArg) { const containersOnNetwork = await this.listContainersOnNetwork(); const containersOfService = containersOnNetwork.filter((container) => { return container.Name === serviceArg.Spec.Name || container.Name.startsWith(`${serviceArg.Spec.Name}.`); }); return containersOfService; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5uZXR3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyQyxNQUFNLE9BQU8sYUFBYyxTQUFRLGNBQWM7SUFDL0MsK0RBQStEO0lBRS9EOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUN2QixVQUFzQjtRQUV0QixNQUFNLGNBQWMsR0FBb0IsRUFBRSxDQUFDO1FBQzNDLE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDOUQsS0FBSyxNQUFNLGFBQWEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDNUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUMzQixVQUFzQixFQUN0QixvQkFBNEI7UUFFNUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxhQUFhLENB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