mirror of https://github.com/portainer/portainer
59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
import splitargs from 'splitargs/src/splitargs'
|
|
|
|
angular.module('portainer.docker')
|
|
.factory('ContainerHelper', [function ContainerHelperFactory() {
|
|
'use strict';
|
|
var helper = {};
|
|
|
|
helper.commandStringToArray = function(command) {
|
|
return splitargs(command);
|
|
};
|
|
|
|
helper.commandArrayToString = function(array) {
|
|
return array.map(function(elem) {
|
|
return '\'' + elem + '\'';
|
|
}).join(' ');
|
|
};
|
|
|
|
helper.configFromContainer = function(container) {
|
|
var config = container.Config;
|
|
// HostConfig
|
|
config.HostConfig = container.HostConfig;
|
|
// Name
|
|
config.name = container.Name.replace(/^\//g, '');
|
|
// Network
|
|
var mode = config.HostConfig.NetworkMode;
|
|
config.NetworkingConfig = {
|
|
'EndpointsConfig': {}
|
|
};
|
|
config.NetworkingConfig.EndpointsConfig = container.NetworkSettings.Networks;
|
|
if (mode.indexOf('container:') !== -1) {
|
|
delete config.Hostname;
|
|
delete config.ExposedPorts;
|
|
}
|
|
// Set volumes
|
|
var binds = [];
|
|
var volumes = {};
|
|
for (var v in container.Mounts) {
|
|
if ({}.hasOwnProperty.call(container.Mounts, v)) {
|
|
var mount = container.Mounts[v];
|
|
var name = mount.Name || mount.Source;
|
|
var containerPath = mount.Destination;
|
|
if (name && containerPath) {
|
|
var bind = name + ':' + containerPath;
|
|
volumes[containerPath] = {};
|
|
if (mount.RW === false) {
|
|
bind += ':ro';
|
|
}
|
|
binds.push(bind);
|
|
}
|
|
}
|
|
}
|
|
config.HostConfig.Binds = binds;
|
|
config.Volumes = volumes;
|
|
return config;
|
|
};
|
|
|
|
return helper;
|
|
}]);
|