mirror of https://github.com/portainer/portainer
61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
angular.module('portainer.docker').controller('ContainersController', ContainersController);
|
|
import _ from 'lodash';
|
|
|
|
/* @ngInject */
|
|
function ContainersController($scope, ContainerService, Notifications, endpoint) {
|
|
$scope.offlineMode = endpoint.Status !== 1;
|
|
$scope.endpoint = endpoint;
|
|
|
|
$scope.getContainers = getContainers;
|
|
|
|
function getContainers() {
|
|
$scope.containers = null;
|
|
$scope.containers_t = null;
|
|
ContainerService.containers(1)
|
|
.then(function success(data) {
|
|
$scope.containers_t = data;
|
|
if ($scope.containers_t.length === 0) {
|
|
$scope.containers = $scope.containers_t;
|
|
return;
|
|
}
|
|
for (let item of $scope.containers_t) {
|
|
ContainerService.container(item.Id).then(function success(data) {
|
|
var Id = data.Id;
|
|
for (var i = 0; i < $scope.containers_t.length; i++) {
|
|
if (Id == $scope.containers_t[i].Id) {
|
|
const gpuOptions = _.find(data.HostConfig.DeviceRequests, function (o) {
|
|
return o.Driver === 'nvidia' || o.Capabilities[0][0] === 'gpu';
|
|
});
|
|
if (!gpuOptions) {
|
|
$scope.containers_t[i]['Gpus'] = 'none';
|
|
} else {
|
|
let gpuStr = 'all';
|
|
if (gpuOptions.Count !== -1) {
|
|
gpuStr = `id:${_.join(gpuOptions.DeviceIDs, ',')}`;
|
|
}
|
|
$scope.containers_t[i]['Gpus'] = `${gpuStr}`;
|
|
}
|
|
}
|
|
}
|
|
for (let item of $scope.containers_t) {
|
|
if (!Object.keys(item).includes('Gpus')) {
|
|
return;
|
|
}
|
|
}
|
|
$scope.containers = $scope.containers_t;
|
|
});
|
|
}
|
|
})
|
|
.catch(function error(err) {
|
|
Notifications.error('Failure', err, 'Unable to retrieve containers');
|
|
$scope.containers = [];
|
|
});
|
|
}
|
|
|
|
function initView() {
|
|
getContainers();
|
|
}
|
|
|
|
initView();
|
|
}
|