diff --git a/app/docker/__module.js b/app/docker/__module.js index e3f1cd3b6..23ce18433 100644 --- a/app/docker/__module.js +++ b/app/docker/__module.js @@ -238,8 +238,7 @@ angular.module('portainer.docker', ['portainer.app']) url: '/:id', views: { 'content@': { - templateUrl: 'app/docker/views/nodes/edit/node.html', - controller: 'NodeController' + component: 'nodeDetailsView' } } }; 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 new file mode 100644 index 000000000..b34cc5315 --- /dev/null +++ b/app/docker/views/nodes/node-details/node-details-view-controller.js @@ -0,0 +1,66 @@ +angular.module('portainer.docker').controller('NodeDetailsViewController', [ + '$stateParams', + 'NodeService', + function NodeDetailsViewController($stateParams, NodeService) { + var ctrl = this; + + ctrl.$onInit = initView; + + function initView() { + NodeService.node($stateParams.id).then(function(node) { + console.log(node) + ctrl.hostDetails = buildHostDetails(node); + ctrl.engineDetails = buildEngineDetails(node); + ctrl.nodeDetails = buildNodeDetails(node); + }); + } + + function buildHostDetails(node) { + return { + os: { + arch: node.PlatformArchitecture, + type: node.PlatformOS + // name: node.OperatingSystem TODO + }, + name: node.Hostname, + // kernelVersion: node.KernelVersion, + totalCPU: node.CPUs / 1e9, + totalMemory: node.Memory + }; + } + + function buildEngineDetails(node) { + return { + releaseVersion: node.EngineVersion, + // apiVersion: versionDetails.ApiVersion, TODO + // rootDirectory: node.DockerRootDir, TODO + // storageDriver: node.Driver, + // loggingDriver: node.LoggingDriver, + volumePlugins: getPlugins(node.Plugins, 'Volume'), + networkPlugins: getPlugins(node.Plugins, 'Network') + }; + } + + function buildNodeDetails(node) { + return { + name: node.Name, + role: node.Role, + managerAddress: node.ManagerAddr, + availability: node.Availability, + status: node.Status, + engineLabels: node.EngineLabels, + nodeLabels: node.Labels + }; + } + + function getPlugins(pluginsList, type) { + return pluginsList + .filter(function(plugin) { + return plugin.Type === type; + }) + .map(function(plugin) { + return plugin.Name; + }); + } + } +]); diff --git a/app/docker/views/nodes/node-details/node-details-view.html b/app/docker/views/nodes/node-details/node-details-view.html new file mode 100644 index 000000000..ccada1c29 --- /dev/null +++ b/app/docker/views/nodes/node-details/node-details-view.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/app/docker/views/nodes/node-details/node-details-view.js b/app/docker/views/nodes/node-details/node-details-view.js new file mode 100644 index 000000000..5b1c76e2b --- /dev/null +++ b/app/docker/views/nodes/node-details/node-details-view.js @@ -0,0 +1,4 @@ +angular.module('portainer.docker').component('nodeDetailsView', { + templateUrl: 'app/docker/views/nodes/node-details/node-details-view.html', + controller: 'NodeDetailsViewController' +});