portainer/app/shared/services.js

197 lines
7.8 KiB
JavaScript
Raw Normal View History

angular.module('dockerui.services', ['ngResource'])
2013-06-11 00:10:43 +00:00
.factory('Container', function($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
// http://docs.docker.io/en/latest/api/docker_remote_api.html#containers
return $resource(Settings.url + '/containers/:id/:action', {
name: '@name'
}, {
2013-06-09 01:20:29 +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'}},
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'}},
changes: {method: 'GET', params: {action:'changes'}, isArray: true},
create: {method: 'POST', params: {action:'create'}},
remove: {method: 'DELETE', params: {id: '@id', v:0}}
2013-06-09 01:20:29 +00:00
});
})
2014-12-15 22:26:10 +00:00
.factory('ContainerLogs', function($resource, $http, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2014-12-15 22:26:10 +00:00
return {
get: function(id, params, callback) {
$http({
method: 'GET',
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) {
console.log(error, data);
});
}
2015-01-04 00:39:40 +00:00
};
2014-12-15 22:26:10 +00:00
})
2013-06-11 00:10:43 +00:00
.factory('Image', function($resource, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-09 01:20:29 +00:00
// Resource for docker images
// http://docs.docker.io/en/latest/api/docker_remote_api.html#images
2013-06-11 00:10:43 +00:00
return $resource(Settings.url + '/images/:id/:action', {}, {
2013-06-09 01:20:29 +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},
create: {method: 'POST', params: {action:'create'}},
insert: {method: 'POST', params: {id: '@id', action:'insert'}},
push: {method: 'POST', params: {id: '@id', action:'push'}},
tag: {method: 'POST', params: {id: '@id', action:'tag', force: 0, repo: '@repo'}},
remove: {method: 'DELETE', params: {id: '@id'}, isArray: true}
2013-06-09 01:20:29 +00:00
});
2013-06-09 23:56:54 +00:00
})
2013-06-11 00:10:43 +00:00
.factory('Docker', function($resource, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-10 01:31:05 +00:00
// Information for docker
// http://docs.docker.io/en/latest/api/docker_remote_api.html#display-system-wide-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'}
});
})
2013-06-11 00:10:43 +00:00
.factory('Auth', function($resource, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-10 01:31:05 +00:00
// Auto Information for docker
// http://docs.docker.io/en/latest/api/docker_remote_api.html#set-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'}
});
})
2013-06-11 00:10:43 +00:00
.factory('System', function($resource, Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-10 01:31:05 +00:00
// System for docker
// http://docs.docker.io/en/latest/api/docker_remote_api.html#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'}
});
})
2013-06-19 01:50:35 +00:00
.factory('Settings', function(DOCKER_ENDPOINT, DOCKER_PORT, DOCKER_API_VERSION, 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;
}
2013-06-09 23:56:54 +00:00
return {
2013-06-10 12:59:57 +00:00
displayAll: false,
2013-06-11 00:10:43 +00:00
endpoint: DOCKER_ENDPOINT,
version: DOCKER_API_VERSION,
2013-06-19 03:01:22 +00:00
rawUrl: DOCKER_ENDPOINT + DOCKER_PORT + '/' + DOCKER_API_VERSION,
2013-06-19 01:50:35 +00:00
uiVersion: UI_VERSION,
2013-09-03 00:18:54 +00:00
url: url,
2015-01-04 00:39:40 +00:00
firstLoad: true
2013-06-19 01:50:35 +00:00
};
})
2013-06-19 03:01:22 +00:00
.factory('ViewSpinner', function() {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-19 03:01:22 +00:00
var spinner = new Spinner();
var target = document.getElementById('view');
return {
spin: function() { spinner.spin(target); },
stop: function() { spinner.stop(); }
};
2013-06-19 03:01:22 +00:00
})
2013-06-20 02:40:58 +00:00
.factory('Messages', function($rootScope) {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-20 02:40:58 +00:00
return {
send: function(title, text) {
$.gritter.add({
title: title,
text: text,
time: 2000,
before_open: function() {
2015-01-04 00:39:40 +00:00
if($('.gritter-item-wrapper').length === 3) {
2013-08-08 19:18:51 +00:00
return false;
}
}
});
},
error: function(title, text) {
2013-08-08 19:18:51 +00:00
$.gritter.add({
title: title,
text: text,
time: 10000,
before_open: function() {
2015-01-04 00:39:40 +00:00
if($('.gritter-item-wrapper').length === 4) {
2013-08-08 19:18:51 +00:00
return false;
}
}
});
}
2013-06-20 02:40:58 +00:00
};
})
2013-06-19 01:50:35 +00:00
.factory('Dockerfile', function(Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
2013-06-22 18:23:25 +00:00
var url = Settings.rawUrl + '/build';
2013-06-19 01:50:35 +00:00
return {
build: function(file, callback) {
var data = new FormData();
var dockerfile = new Blob([file], { type: 'text/text' });
data.append('Dockerfile', dockerfile);
2013-06-19 01:50:35 +00:00
var request = new XMLHttpRequest();
request.onload = callback;
request.open('POST', url);
request.send(data);
}
2013-06-19 01:50:35 +00:00
};
})
.factory('LineChart', function(Settings) {
2015-01-04 00:39:40 +00:00
'use strict';
var url = Settings.rawUrl + '/build';
return {
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);
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);
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]);
}
var dataset = {
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({
labels: labels,
datasets: [dataset]
},
{
scaleStepWidth: 1,
pointDotRadius:1,
scaleOverride: true,
scaleSteps: labels.length
});
}
};
2013-06-09 00:12:14 +00:00
});