diff --git a/app/agent/services/agentService.js b/app/agent/services/agentService.js index 5f011d01c..a1eb96681 100644 --- a/app/agent/services/agentService.js +++ b/app/agent/services/agentService.js @@ -1,24 +1,39 @@ -angular.module('portainer.agent') -.factory('AgentService', ['$q', 'Agent', function AgentServiceFactory($q, Agent) { - 'use strict'; - var service = {}; +angular.module('portainer.agent').factory('AgentService', [ + '$q', 'Agent', + function AgentServiceFactory($q, Agent) { + 'use strict'; + var service = {}; - service.agents = function() { - var deferred = $q.defer(); + service.agents = agents; + service.hostInfo = hostInfo; - Agent.query({}).$promise - .then(function success(data) { - var agents = data.map(function (item) { - return new AgentViewModel(item); + function hostInfo() { + return $q.when({ + PhysicalDeviceVendor: 'hello', + DeviceVersion: '1.9', + DeviceSerialNumber: '144f', + InstalledPCIDevices: ['usb', 'printer'], + PhysicalDisk: 'none' }); - deferred.resolve(agents); - }) - .catch(function error(err) { - deferred.reject({ msg: 'Unable to retrieve agents', err: err }); - }); + } - return deferred.promise; - }; + function agents() { + var deferred = $q.defer(); - return service; -}]); + Agent.query({}) + .$promise.then(function success(data) { + var agents = data.map(function(item) { + return new AgentViewModel(item); + }); + deferred.resolve(agents); + }) + .catch(function error(err) { + deferred.reject({ msg: 'Unable to retrieve agents', err: err }); + }); + + return deferred.promise; + } + + return service; + } +]); diff --git a/app/docker/components/host-view-panels/host-details-panel/host-details-panel.html b/app/docker/components/host-view-panels/host-details-panel/host-details-panel.html index a8cbcc027..f4e481b6c 100644 --- a/app/docker/components/host-view-panels/host-details-panel/host-details-panel.html +++ b/app/docker/components/host-view-panels/host-details-panel/host-details-panel.html @@ -31,7 +31,7 @@ Installed PCI devices - {{ $ctrl.host.pciDevices }} + {{ $ctrl.host.pciDevices |commaSeperated }} Physical disk diff --git a/app/docker/views/nodes/node-details/node-details-view-controller.js b/app/docker/views/nodes/node-details/node-details-view-controller.js index f419a51c1..c20bb8947 100644 --- a/app/docker/views/nodes/node-details/node-details-view-controller.js +++ b/app/docker/views/nodes/node-details/node-details-view-controller.js @@ -1,9 +1,9 @@ angular.module('portainer.docker').controller('NodeDetailsViewController', [ - '$stateParams', 'NodeService', 'LabelHelper', 'Notifications', '$state', 'StateManager', - function NodeDetailsViewController($stateParams, NodeService, LabelHelper, Notifications, $state, StateManager) { + '$stateParams', 'NodeService', 'LabelHelper', 'Notifications', '$state', 'StateManager', 'AgentService', + function NodeDetailsViewController($stateParams, NodeService, LabelHelper, Notifications, $state, StateManager, AgentService) { var ctrl = this; var originalNode; - + ctrl.$onInit = initView; ctrl.updateLabels = updateLabels; ctrl.updateAvailability = updateAvailability; @@ -13,15 +13,30 @@ angular.module('portainer.docker').controller('NodeDetailsViewController', [ }; function initView() { - NodeService.node($stateParams.id).then(function(node) { + var applicationState = StateManager.getState(); + ctrl.state.isAgent = applicationState.endpoint.mode.agentProxy; + + var nodeId = $stateParams.id; + NodeService.node(nodeId).then(function(node) { originalNode = node; ctrl.hostDetails = buildHostDetails(node); ctrl.engineDetails = buildEngineDetails(node); ctrl.nodeDetails = buildNodeDetails(node); + if (ctrl.state.isAgent) { + AgentService.hostInfo(nodeId).then(function onHostInfoLoad(agentHostInfo) { + console.log(agentHostInfo); + enhanceHostDetails(ctrl.hostDetails, agentHostInfo); + }); + } }); - var applicationState = StateManager.getState(); - ctrl.state.isAgent = applicationState.endpoint.mode.agentProxy; + + } + + function enhanceHostDetails(hostDetails, agentHostInfo) { + hostDetails.physicalDeviceInfo = agentHostInfo.PhysicalDeviceInfo; + hostDetails.pciDevices = agentHostInfo.InstalledPCIDevices; + hostDetails.physicalDisk = agentHostInfo.PhysicalDisk; } function buildHostDetails(node) { @@ -81,7 +96,7 @@ angular.module('portainer.docker').controller('NodeDetailsViewController', [ Id: node.Id, Version: node.Version }; - + NodeService.updateNode(config) .then(onUpdateSuccess) .catch(notifyOnError);