portainer/app/shared/services.js

259 lines
12 KiB
JavaScript
Raw Normal View History

angular.module('uifordocker.services', ['ngResource', 'ngSanitize'])
.factory('Container', ['$resource', 'Settings', function ContainerFactory($resource, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-09 01:20:29 +00:00
// Resource for interacting with the docker containers
2015-08-29 07:38:03 +00:00
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#2-1-containers
return $resource(Settings.url + '/containers/:id/:action', {
name: '@name'
}, {
2015-03-31 21:37:03 +00:00
query: {method: 'GET', params: {all: 0, action: 'json'}, isArray: true},
get: {method: 'GET', params: {action: 'json'}},
2013-06-09 23:56:54 +00:00
start: {method: 'POST', params: {id: '@id', action: 'start'}},
stop: {method: 'POST', params: {id: '@id', t: 5, action: 'stop'}},
2015-03-31 21:37:03 +00:00
restart: {method: 'POST', params: {id: '@id', t: 5, action: 'restart'}},
kill: {method: 'POST', params: {id: '@id', action: 'kill'}},
pause: {method: 'POST', params: {id: '@id', action: 'pause'}},
unpause: {method: 'POST', params: {id: '@id', action: 'unpause'}},
2015-03-31 21:37:03 +00:00
changes: {method: 'GET', params: {action: 'changes'}, isArray: true},
create: {method: 'POST', params: {action: 'create'}},
remove: {method: 'DELETE', params: {id: '@id', v: 0}},
rename: {method: 'POST', params: {id: '@id', action: 'rename', name: '@name'}},
stats: {method: 'GET', params: {id: '@id', stream: false, action: 'stats'}, timeout: 5000},
exec: {method: 'POST', params: {id: '@id', action: 'exec'}}
2013-06-09 01:20:29 +00:00
});
}])
.factory('Exec', ['$resource', 'Settings', function ExecFactory($resource, Settings) {
'use strict';
// https://docs.docker.com/engine/reference/api/docker_remote_api_<%= remoteApiVersion %>/#/exec-resize
return $resource(Settings.url + '/exec/:id/:action', {}, {
resize: {method: 'POST', params: {id: '@id', action: 'resize', h: '@height', w: '@width'}}
});
}])
.factory('ContainerCommit', ['$resource', '$http', 'Settings', function ContainerCommitFactory($resource, $http, Settings) {
2015-05-12 16:53:19 +00:00
'use strict';
2015-08-29 07:38:03 +00:00
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#create-a-new-image-from-a-container-s-changes
return $resource(Settings.url + '/commit', {}, {
commit: {method: 'POST', params: {container: '@id', repo: '@repo', tag: '@tag'}}
});
}])
.factory('ContainerLogs', ['$resource', '$http', 'Settings', function ContainerLogsFactory($resource, $http, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2015-08-29 07:38:03 +00:00
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#get-container-logs
2014-12-15 22:26:10 +00:00
return {
2015-03-31 21:37:03 +00:00
get: function (id, params, callback) {
2014-12-15 22:26:10 +00:00
$http({
method: 'GET',
2015-03-31 21:37:03 +00:00
url: Settings.url + '/containers/' + id + '/logs',
params: {
'stdout': params.stdout || 0,
'stderr': params.stderr || 0,
'timestamps': params.timestamps || 0,
'tail': params.tail || 'all'
}
}).success(callback).error(function (data, status, headers, config) {
2014-12-15 22:26:10 +00:00
console.log(error, data);
});
}
2015-01-04 00:39:40 +00:00
};
}])
.factory('ContainerTop', ['$http', 'Settings', function ($http, Settings) {
2015-03-31 21:37:03 +00:00
'use strict';
2015-08-29 07:38:03 +00:00
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#list-processes-running-inside-a-container
2015-03-31 21:37:03 +00:00
return {
get: function (id, params, callback, errorCallback) {
$http({
method: 'GET',
url: Settings.url + '/containers/' + id + '/top',
params: {
ps_args: params.ps_args
}
}).success(callback);
}
};
}])
.factory('Image', ['$resource', 'Settings', function ImageFactory($resource, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2015-08-29 07:38:03 +00:00
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#2-2-images
2013-06-11 00:10:43 +00:00
return $resource(Settings.url + '/images/:id/:action', {}, {
2015-03-31 21:37:03 +00:00
query: {method: 'GET', params: {all: 0, action: 'json'}, isArray: true},
get: {method: 'GET', params: {action: 'json'}},
search: {method: 'GET', params: {action: 'search'}},
history: {method: 'GET', params: {action: 'history'}, isArray: true},
insert: {method: 'POST', params: {id: '@id', action: 'insert'}},
tag: {method: 'POST', params: {id: '@id', action: 'tag', force: 0, repo: '@repo', tag: '@tag'}},
inspect: {method: 'GET', params: {id: '@id', action: 'json'}},
push: {
method: 'POST', params: {action: 'push', id: '@tag'},
isArray: true, transformResponse: jsonObjectsToArrayHandler
},
create: {
method: 'POST', params: {action: 'create', fromImage: '@fromImage', tag: '@tag'},
isArray: true, transformResponse: jsonObjectsToArrayHandler
},
remove: {
method: 'DELETE', params: {id: '@id'},
isArray: true, transformResponse: deleteImageHandler
}
2013-06-09 01:20:29 +00:00
});
}])
.factory('Events', ['$resource', 'Settings', function EventFactory($resource, Settings) {
'use strict';
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#/monitor-docker-s-events
return $resource(Settings.url + '/events', {}, {
query: {
method: 'GET', params: {since: '@since', until: '@until'},
isArray: true, transformResponse: jsonObjectsToArrayHandler
}
});
}])
.factory('Version', ['$resource', 'Settings', function VersionFactory($resource, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2015-08-29 07:38:03 +00:00
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#show-the-docker-version-information
2013-06-11 00:10:43 +00:00
return $resource(Settings.url + '/version', {}, {
2013-06-10 01:31:05 +00:00
get: {method: 'GET'}
});
}])
.factory('Auth', ['$resource', 'Settings', function AuthFactory($resource, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2015-08-29 07:38:03 +00:00
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#check-auth-configuration
2013-06-11 00:10:43 +00:00
return $resource(Settings.url + '/auth', {}, {
2013-06-10 01:31:05 +00:00
get: {method: 'GET'},
update: {method: 'POST'}
});
}])
.factory('Info', ['$resource', 'Settings', function InfoFactory($resource, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2015-08-29 07:38:03 +00:00
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#display-system-wide-information
2013-06-11 00:10:43 +00:00
return $resource(Settings.url + '/info', {}, {
2013-06-10 01:31:05 +00:00
get: {method: 'GET'}
});
}])
.factory('Network', ['$resource', 'Settings', function NetworkFactory($resource, Settings) {
2015-12-18 05:35:04 +00:00
'use strict';
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#2-5-networks
return $resource(Settings.url + '/networks/:id/:action', {id: '@id'}, {
2015-12-18 05:35:04 +00:00
query: {method: 'GET', isArray: true},
get: {method: 'GET'},
create: {method: 'POST', params: {action: 'create'}},
remove: {method: 'DELETE'},
connect: {method: 'POST', params: {action: 'connect'}},
disconnect: {method: 'POST', params: {action: 'disconnect'}}
2015-12-18 05:35:04 +00:00
});
}])
.factory('Volume', ['$resource', 'Settings', function VolumeFactory($resource, Settings) {
'use strict';
// http://docs.docker.com/reference/api/docker_remote_api_<%= remoteApiVersion %>/#2-5-networks
return $resource(Settings.url + '/volumes/:name/:action', {name: '@name'}, {
query: {method: 'GET'},
get: {method: 'GET'},
create: {method: 'POST', params: {action: 'create'}},
remove: {method: 'DELETE'}
});
}])
.factory('Config', ['$resource', 'CONFIG_ENDPOINT', function ConfigFactory($resource, CONFIG_ENDPOINT) {
return $resource(CONFIG_ENDPOINT).get();
}])
.factory('Templates', ['$resource', 'TEMPLATES_ENDPOINT', function TemplatesFactory($resource, TEMPLATES_ENDPOINT) {
return $resource(TEMPLATES_ENDPOINT, {}, {
get: {method: 'GET', isArray: true}
});
}])
.factory('Settings', ['DOCKER_ENDPOINT', 'DOCKER_PORT', 'UI_VERSION', function SettingsFactory(DOCKER_ENDPOINT, DOCKER_PORT, UI_VERSION) {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-19 01:50:35 +00:00
var url = DOCKER_ENDPOINT;
if (DOCKER_PORT) {
url = url + DOCKER_PORT + '\\' + DOCKER_PORT;
}
var firstLoad = (localStorage.getItem('firstLoad') || 'true') === 'true';
2013-06-09 23:56:54 +00:00
return {
displayAll: true,
endpoint: DOCKER_ENDPOINT,
uiVersion: UI_VERSION,
url: url,
firstLoad: firstLoad
2013-06-19 01:50:35 +00:00
};
}])
.factory('Messages', ['$rootScope', '$sanitize', function MessagesFactory($rootScope, $sanitize) {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-20 02:40:58 +00:00
return {
2015-03-31 21:37:03 +00:00
send: function (title, text) {
$.gritter.add({
title: $sanitize(title),
text: $sanitize(text),
time: 2000,
2015-03-31 21:37:03 +00:00
before_open: function () {
if ($('.gritter-item-wrapper').length === 3) {
2013-08-08 19:18:51 +00:00
return false;
2015-03-31 21:37:03 +00:00
}
2013-08-08 19:18:51 +00:00
}
2015-03-31 21:37:03 +00:00
});
},
2015-03-31 21:37:03 +00:00
error: function (title, text) {
2013-08-08 19:18:51 +00:00
$.gritter.add({
title: $sanitize(title),
text: $sanitize(text),
time: 10000,
2015-03-31 21:37:03 +00:00
before_open: function () {
if ($('.gritter-item-wrapper').length === 4) {
2013-08-08 19:18:51 +00:00
return false;
2015-03-31 21:37:03 +00:00
}
2013-08-08 19:18:51 +00:00
}
});
}
2013-06-20 02:40:58 +00:00
};
}])
.factory('LineChart', ['Settings', function LineChartFactory(Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
return {
2015-03-31 21:37:03 +00:00
build: function (id, data, getkey) {
var chart = new Chart($(id).get(0).getContext("2d"));
var map = {};
for (var i = 0; i < data.length; i++) {
var c = data[i];
var key = getkey(c);
2015-03-31 21:37:03 +00:00
var count = map[key];
if (count === undefined) {
count = 0;
}
count += 1;
map[key] = count;
}
var labels = [];
2015-01-04 00:39:40 +00:00
data = [];
var keys = Object.keys(map);
var max = 1;
2015-01-04 00:39:40 +00:00
for (i = keys.length - 1; i > -1; i--) {
var k = keys[i];
labels.push(k);
data.push(map[k]);
if (map[k] > max) {
max = map[k];
}
}
2016-01-03 04:59:43 +00:00
var steps = Math.min(max, 10);
var dataset = {
2015-03-31 21:37:03 +00:00
fillColor: "rgba(151,187,205,0.5)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
data: data
};
chart.Line({
2015-03-31 21:37:03 +00:00
labels: labels,
datasets: [dataset]
},
{
2016-01-03 04:59:43 +00:00
scaleStepWidth: Math.ceil(max / steps),
2015-03-31 21:37:03 +00:00
pointDotRadius: 1,
2016-01-03 04:59:43 +00:00
scaleIntegersOnly: true,
2015-03-31 21:37:03 +00:00
scaleOverride: true,
2016-01-03 04:59:43 +00:00
scaleSteps: steps
2015-03-31 21:37:03 +00:00
});
}
};
}]);