feat(container-inspect): add the ability to inspect containers

pull/1289/merge
G07cha 2017-10-17 09:56:40 +03:00 committed by Anthony Lapenna
parent 925326e8aa
commit 7eaaf9a2a7
7 changed files with 62 additions and 12 deletions

View File

@ -20,6 +20,7 @@ angular.module('portainer', [
'containerConsole',
'containerLogs',
'containerStats',
'containerInspect',
'serviceLogs',
'containers',
'createContainer',

View File

@ -83,6 +83,7 @@
<a class="btn btn-outline-secondary" type="button" ui-sref="stats({id: container.Id})"><i class="fa fa-area-chart space-right" aria-hidden="true"></i>Stats</a>
<a class="btn btn-outline-secondary" type="button" ui-sref="containerlogs({id: container.Id})"><i class="fa fa-exclamation-circle space-right" aria-hidden="true"></i>Logs</a>
<a class="btn btn-outline-secondary" type="button" ui-sref="console({id: container.Id})"><i class="fa fa-terminal space-right" aria-hidden="true"></i>Console</a>
<a class="btn btn-outline-secondary" type="button" ui-sref="inspect({id: container.Id})"><i class="fa fa-info-circle space-right" aria-hidden="true"></i>Inspect</a>
</div>
</td>
</tr>

View File

@ -0,0 +1,19 @@
<rd-header>
<rd-header-title title="Container inspect">
</rd-header-title>
<rd-header-content>
<a ui-sref="containers">Containers</a> &gt; <a ui-sref="container({id: containerInfo.Id})">{{ containerInfo.Name|trimcontainername }}</a> &gt; Inspect
</rd-header-content>
</rd-header>
<div class="row">
<div class="col-lg-12 col-md-12 col-xs-12">
<rd-widget>
<rd-widget-header icon="fa-icon-circle" title="Inspect">
</rd-widget-header>
<rd-widget-body>
<pre>{{ containerInfo|json:4 }}</pre>
</rd-widget-body>
</rd-widget>
</div>
</div>

View File

@ -0,0 +1,20 @@
angular.module('containerInspect', [])
.controller('ContainerInspectController', ['$scope', '$transition$', 'Notifications', 'ContainerService',
function ($scope, $transition$, Notifications, ContainerService) {
function initView() {
$('#loadingViewSpinner').show();
ContainerService.inspect($transition$.params().id)
.then(function success(d) {
$scope.containerInfo = d;
})
.catch(function error(e) {
Notifications.error('Failure', e, 'Unable to inspect container');
})
.finally(function final() {
$('#loadingViewSpinner').hide();
});
}
initView();
}]);

View File

@ -40,6 +40,9 @@ angular.module('portainer.rest')
exec: {
method: 'POST', params: {id: '@id', action: 'exec'},
transformResponse: genericHandler
},
inspect: {
method: 'GET', params: { id: '@id', action: 'json' }
}
});
}]);

View File

@ -105,6 +105,19 @@ function configureRoutes($stateProvider) {
}
}
})
.state('inspect', {
url: '^/containers/:id/inspect',
views: {
'content@': {
templateUrl: 'app/components/containerInspect/containerInspect.html',
controller: 'ContainerInspectController'
},
'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController'
}
}
})
.state('dashboard', {
parent: 'root',
url: '/dashboard',

View File

@ -140,18 +140,11 @@ angular.module('portainer.services')
};
service.containerTop = function(id) {
var deferred = $q.defer();
Container.top({id: id}).$promise
.then(function success(data) {
var containerTop = data;
deferred.resolve(containerTop);
})
.catch(function error(err) {
deferred.reject(err);
});
return deferred.promise;
return Container.top({id: id}).$promise;
};
service.inspect = function(id) {
return Container.inspect({id: id}).$promise;
};
return service;