Updated Branches: refs/heads/master fdf7639eb -> c61d2eedf
CLOUDSTACK-4908: UI > Infrastructure > Sockets > (1) calculate total number of CPU Sockets for all hypervisors. (2) > view all > calculate CPU Sockets for each hypervisor. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/c61d2eed Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c61d2eed Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c61d2eed Branch: refs/heads/master Commit: c61d2eedf4a87107ae9a77c8c39b7f584995e617 Parents: fdf7639 Author: Jessica Wang <[email protected]> Authored: Tue Nov 5 11:55:06 2013 -0800 Committer: Jessica Wang <[email protected]> Committed: Tue Nov 5 11:55:06 2013 -0800 ---------------------------------------------------------------------- ui/scripts/sharedFunctions.js | 1 + ui/scripts/system.js | 113 ++++++++++++++++++++++++++++++++----- 2 files changed, 99 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c61d2eed/ui/scripts/sharedFunctions.js ---------------------------------------------------------------------- diff --git a/ui/scripts/sharedFunctions.js b/ui/scripts/sharedFunctions.js index 05d2d9d..fddbd70 100644 --- a/ui/scripts/sharedFunctions.js +++ b/ui/scripts/sharedFunctions.js @@ -46,6 +46,7 @@ var md5HashedLogin = false; //page size for API call (e.g."listXXXXXXX&pagesize=N" ) var pageSize = 20; +//var pageSize = 1; //for testing only var rootAccountId = 1; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c61d2eed/ui/scripts/system.js ---------------------------------------------------------------------- diff --git a/ui/scripts/system.js b/ui/scripts/system.js index 381d884..7d4ce2a 100644 --- a/ui/scripts/system.js +++ b/ui/scripts/system.js @@ -380,9 +380,64 @@ } }, - socketInfo: function(data) { + socketInfo: function(data) { + var socketCount = 0; + $.ajax({ + url: createURL('listHypervisors'), + async: false, + success: function(json) { + args.response.success({ + data: $(json.listhypervisorsresponse.hypervisor).map(function(index, hypervisor) { + var totalHostCount = 0; + var currentPage = 1; + var returnedHostCount = 0; + var returnedHostCpusocketsSum = 0; + var returnedHostHavingCpusockets = true; + + var callListHostsWithPage = function(setTotalHostCount) { + $.ajax({ + url: createURL('listHosts'), + async: false, + data: { + hypervisortype: hypervisor.name, + page: currentPage, + pagesize: pageSize //global variable + }, + success: function(json) { + if (setTotalHostCount) { + totalHostCount = json.listhostsresponse.count; + } + returnedHostCount += json.listhostsresponse.host.length; + + var items = json.listhostsresponse.host; + for (var i = 0; i < items.length; i++) { + if (items[i].cpusockets != undefined && isNaN(items[i].cpusockets) == false) { + returnedHostCpusocketsSum += items[i].cpusockets; + } else { + returnedHostHavingCpusockets = false; + } + } + + if (returnedHostCount < totalHostCount) { + currentPage++; + callListHostsWithPage(false); + } + } + }); + } + + callListHostsWithPage(true); + + if (returnedHostHavingCpusockets) { + socketCount += returnedHostCpusocketsSum; + } + }) + }); + } + }); + complete($.extend(data, { - socketCount: 0 + socketCount: socketCount })); } }; @@ -7135,22 +7190,50 @@ success: function(json) { args.response.success({ data: $(json.listhypervisorsresponse.hypervisor).map(function(index, hypervisor) { - var hostCount; - $.ajax({ - url: createURL('listHosts'), - async: false, - data: { - hypervisortype: hypervisor.name - }, - success: function(json) { - hostCount = json.listhostsresponse.count; - } - }); + var totalHostCount = 0; + var currentPage = 1; + var returnedHostCount = 0; + var returnedHostCpusocketsSum = 0; + var returnedHostHavingCpusockets = true; + + var callListHostsWithPage = function(setTotalHostCount) { + $.ajax({ + url: createURL('listHosts'), + async: false, + data: { + hypervisortype: hypervisor.name, + page: currentPage, + pagesize: pageSize //global variable + }, + success: function(json) { + if (setTotalHostCount) { + totalHostCount = json.listhostsresponse.count; + } + returnedHostCount += json.listhostsresponse.host.length; + + var items = json.listhostsresponse.host; + for (var i = 0; i < items.length; i++) { + if (items[i].cpusockets != undefined && isNaN(items[i].cpusockets) == false) { + returnedHostCpusocketsSum += items[i].cpusockets; + } else { + returnedHostHavingCpusockets = false; + } + } + + if (returnedHostCount < totalHostCount) { + currentPage++; + callListHostsWithPage(false); + } + } + }); + } + callListHostsWithPage(true); + return { hypervisor: hypervisor.name, - hosts: hostCount, - sockets: 0 + hosts: totalHostCount, + sockets: (returnedHostHavingCpusockets? returnedHostCpusocketsSum : 'unknown') }; }) });
