magnum-ui/magnum_ui/static/dashboard/container-infra/clusters/cluster-stats.controller.js
Shu Muto 7f06143158 Add stats and quota information for cluster table view
Change-Id: I8d3fa946667429eb9b7581858a586f6cb783fa5b
2018-01-16 12:45:03 +09:00

95 lines
2.9 KiB
JavaScript

/**
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
(function() {
'use strict';
/**
* @ngdoc controller
* @name clusterStatsController
* @ngController
*
* @description
* Controller to show stats and quota charts for cluster in cluster table view
*/
angular
.module('horizon.dashboard.container-infra.clusters')
.controller(
'horizon.dashboard.container-infra.clusters.clusterStatsController',
clusterStatsController);
clusterStatsController.$inject = [
'$q',
'$scope',
'horizon.app.core.openstack-service-api.magnum',
'horizon.app.core.openstack-service-api.userSession'
];
function clusterStatsController($q, $scope, magnum, userSession) {
var ctrl = this;
ctrl.chartSettings = {
innerRadius: 24,
outerRadius: 48,
titleClass: "pie-chart-title-medium",
showTitle: false,
showLabel: true,
showLegend: false,
tooltipIcon: 'fa-square'
};
// Chart data is watched by pie-chart directive.
// So to refresh chart after retrieving data, update whole of 'data' array.
ctrl.chartDataClusters = {
maxLimit: 20,
data: []
};
// container for temporal chart data
var dataClusters = [];
userSession.get().then(onGetUserSession);
function onGetUserSession(session) {
ctrl.projectId = session.project_id;
magnum.getStats().then(onGetStats);
}
function onGetStats(response) {
ctrl.stats = response.data.stats;
dataClusters = [
{label: gettext("Exists"), value: response.data.stats.clusters, colorClass: "exists"},
{label: gettext("Margin"), value: 20 - response.data.stats.clusters, colorClass: "margin"}
];
magnum.getQuota(ctrl.projectId, "Cluster", true).then(onGetQuotaCluster, onGetQuotaCluster);
}
function onGetQuotaCluster(response) {
// set data for clusters chart
var sum = dataClusters[0].value;
var max = dataClusters[1].value;
if (response.data.hard_limit) {
max = response.data.hard_limit;
dataClusters[1].value = max - sum;
}
var percent = Math.round(sum / max * 100);
var overMax = percent > 100;
ctrl.chartDataClusters = {
title: gettext("Clusters"),
label: percent + '%',
maxLimit: max,
overMax: overMax,
data: dataClusters
};
ctrl.quota = {clusters: max};
}
}
})();