Skip to content

Commit 8ab77bb

Browse files
authored
Reintroduce metrics and sparklines to pods (#871)
Fixes #825 Also, moved logs link into an incon in actions column.
1 parent e1c8f0e commit 8ab77bb

File tree

11 files changed

+128
-19
lines changed

11 files changed

+128
-19
lines changed

i18n/messages-en.xtb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,4 +361,6 @@
361361
<translation id="1076978057900823839" key="MSG_LIST_ACTION_BAR_UPLOAD_YAML_LABEL" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Label for upload YAML button.">Upload YAML</translation>
362362
<translation id="1984076222529061421" key="MSG_RC_DETAIL_ACTION_BAR_EDIT_PODS_LABEL" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Tooltip for the 'scale' button on the action bar of a replication controller details view.">Scale</translation>
363363
<translation id="8808405168042160441" key="MSG_RC_LIST_EDIT_POD_COUNT_ACTION" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Action 'Edit Pod Count' on the drop down menu for a single replication controller (replication controller list page).">Scale</translation>
364+
<translation id="1811662550159188281" key="MSG_POD_LIST_CPU_USAGE_LABEL" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Label which appears as a column label in the table of pods">CPU (cores)</translation>
365+
<translation id="9149343004693743620" key="MSG_POD_LIST_MEMORY_USAGE_LABEL" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Label which appears as a column label in the table of pods">Memory (bytes)</translation>
364366
</translationbundle>

i18n/messages-ja.xtb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,4 +361,6 @@
361361
<translation id="1076978057900823839" key="MSG_LIST_ACTION_BAR_UPLOAD_YAML_LABEL" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Label for upload YAML button.">Upload YAML</translation>
362362
<translation id="1984076222529061421" key="MSG_RC_DETAIL_ACTION_BAR_EDIT_PODS_LABEL" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Tooltip for the 'scale' button on the action bar of a replication controller details view.">Scale</translation>
363363
<translation id="8808405168042160441" key="MSG_RC_LIST_EDIT_POD_COUNT_ACTION" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Action 'Edit Pod Count' on the drop down menu for a single replication controller (replication controller list page).">Scale</translation>
364-
</translationbundle>
364+
<translation id="1811662550159188281" key="MSG_POD_LIST_CPU_USAGE_LABEL" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Label which appears as a column label in the table of pods">CPU (cores)</translation>
365+
<translation id="9149343004693743620" key="MSG_POD_LIST_MEMORY_USAGE_LABEL" source="/usr/local/google/home/bryk/src/github.com/dashboard/.tmp/serve/app-dev.js" desc="Label which appears as a column label in the table of pods">Memory (bytes)</translation>
366+
</translationbundle>

src/app/frontend/common/components/resourcecard/resourcecardcolumn.scss

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@ kd-resource-card-column {
3333

3434
// Add this class kd-resource-card-column to make it a compact column with icons.
3535
&.kd-icon-column {
36+
margin-bottom: -$baseline-grid / 2;
37+
padding-top: 0;
38+
3639
.md-button {
37-
height: auto;
3840
margin: 0;
39-
padding: 0;
4041
}
4142

4243
.kd-resource-card-column-container {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright 2015 Google Inc. All Rights Reserved.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
@import '../../../variables';
16+
17+
.kd-sparkline {
18+
background-color: $body;
19+
height: 2.5 * $baseline-grid;
20+
vertical-align: -$baseline-grid / 2; // 20% below baseline, to flow with text
21+
width: 12.5 * $baseline-grid;
22+
}
23+
24+
.kd-sparkline-series {
25+
fill: $chart-1;
26+
}

src/app/frontend/common/components/sparkline/sparkline_directive.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ export default function sparklineDirective() {
2525
templateUrl: 'common/components/sparkline/sparkline.html',
2626
templateNamespace: 'svg',
2727
scope: {},
28-
bindToController: {'timeseries': '='},
28+
bindToController: {'timeseries': '<'},
2929
};
3030
}

src/app/frontend/podlist/podcardlist.html

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@
1818
ng-if="::$ctrl.podList.pods">
1919
<kd-resource-card-header-columns>
2020
<kd-resource-card-header-column size="medium" grow="4">{{::$ctrl.i18n.MSG_POD_LIST_NAME_LABEL}}</kd-resource-card-header-column>
21-
<kd-resource-card-header-column>{{::$ctrl.i18n.MSG_POD_LIST_STATUS_LABEL}}</kd-resource-card-header-column>
21+
<kd-resource-card-header-column grow="nogrow">{{::$ctrl.i18n.MSG_POD_LIST_STATUS_LABEL}}</kd-resource-card-header-column>
2222
<kd-resource-card-header-column size="small" grow="nogrow">
2323
{{::$ctrl.i18n.MSG_POD_LIST_RESTARTS_LABEL}}
2424
</kd-resource-card-header-column>
25-
<kd-resource-card-header-column>{{::$ctrl.i18n.MSG_POD_LIST_AGE_LABEL}}</kd-resource-card-header-column>
26-
<kd-resource-card-header-column>{{::$ctrl.i18n.MSG_POD_LIST_CLUSTER_IP_LABEL}}</kd-resource-card-header-column>
27-
<kd-resource-card-header-column>{{::$ctrl.i18n.MSG_POD_LIST_LOGS_LABEL}}</kd-resource-card-header-column>
25+
<kd-resource-card-header-column grow="nogrow">{{::$ctrl.i18n.MSG_POD_LIST_AGE_LABEL}}</kd-resource-card-header-column>
26+
<kd-resource-card-header-column grow="nogrow">{{::$ctrl.i18n.MSG_POD_LIST_CLUSTER_IP_LABEL}}</kd-resource-card-header-column>
27+
<kd-resource-card-header-column ng-if="::$ctrl.showMetrics()">{{::$ctrl.i18n.MSG_POD_LIST_CPU_USAGE_LABEL}}</kd-resource-card-header-column>
28+
<kd-resource-card-header-column ng-if="::$ctrl.showMetrics()">{{::$ctrl.i18n.MSG_POD_LIST_MEMORY_USAGE_LABEL}}</kd-resource-card-header-column>
2829
<kd-resource-card-header-column size="small" grow="nogrow">
2930
</kd-resource-card-header-column>
3031
</kd-resource-card-header-columns>
@@ -69,16 +70,26 @@
6970
<div ng-if="::pod.podIP">{{::pod.podIP}}</div>
7071
<div ng-if="::!pod.podIP">-</div>
7172
</kd-resource-card-column>
72-
<kd-resource-card-column>
73-
<div ng-if="::$ctrl.getPodLogsHref(pod)">
74-
<a ng-href="{{::$ctrl.getPodLogsHref(pod)}}" target="_blank">
75-
{{::$ctrl.i18n.MSG_POD_LIST_LOGS_LABEL}}
76-
<i class="material-icons kd-text-icon">open_in_new</i>
77-
</a>
73+
<kd-resource-card-column ng-if="::$ctrl.showMetrics()">
74+
<div ng-if="::$ctrl.hasCpuUsage(pod)">
75+
<kd-sparkline timeseries="::pod.metrics.cpuUsageHistory"></kd-sparkline>
76+
{{::(pod.metrics.cpuUsage | kdCores)}}
77+
</div>
78+
<div ng-if="::!$ctrl.hasCpuUsage(pod)">-</div>
79+
</kd-resource-card-column>
80+
<kd-resource-card-column ng-if="::$ctrl.showMetrics()">
81+
<div ng-if="::$ctrl.hasMemoryUsage(pod)">
82+
<kd-sparkline timeseries="::pod.metrics.memoryUsageHistory"></kd-sparkline>
83+
{{::(pod.metrics.memoryUsage | kdMemory)}}
7884
</div>
79-
<div ng-hide="::$ctrl.getPodLogsHref(pod)">-</div>
85+
<div ng-if="::!$ctrl.hasMemoryUsage(pod)">-</div>
8086
</kd-resource-card-column>
8187
<kd-resource-card-column class="kd-row-layout-column kd-icon-column">
88+
<md-button ng-if="::$ctrl.getPodLogsHref(pod)"
89+
ng-href="{{::$ctrl.getPodLogsHref(pod)}}" target="_blank" class="md-icon-button">
90+
<md-icon md-font-library="material-icons">subject</md-icon>
91+
<md-tooltip>{{::$ctrl.i18n.MSG_POD_LIST_LOGS_LABEL}}</md-tooltip>
92+
</md-button>
8293
<kd-resource-card-menu>
8394
<kd-resource-card-delete-menu-item resource-kind-name="{{::$ctrl.i18n.MSG_POD_LIST_POD_TITLE}}">
8495
</kd-resource-card-delete-menu-item>

src/app/frontend/podlist/podcardlist_component.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,37 @@ export class PodCardListController {
4949
this.i18n = i18n;
5050
}
5151

52+
/**
53+
* @return {boolean}
54+
* @export
55+
*/
56+
showMetrics() {
57+
if (this.podList.pods && this.podList.pods.length > 0) {
58+
let firstPod = this.podList.pods[0];
59+
return !!firstPod.metrics;
60+
}
61+
return false;
62+
}
63+
64+
/**
65+
* @param {!backendApi.Pod} pod
66+
* @return {boolean}
67+
* @export
68+
*/
69+
hasMemoryUsage(pod) {
70+
return !!pod.metrics && !!pod.metrics.memoryUsageHistory &&
71+
pod.metrics.memoryUsageHistory.length > 0;
72+
}
73+
74+
/**
75+
* @param {!backendApi.Pod} pod
76+
* @return {boolean}
77+
* @export
78+
*/
79+
hasCpuUsage(pod) {
80+
return !!pod.metrics && !!pod.metrics.cpuUsageHistory && pod.metrics.cpuUsageHistory.length > 0;
81+
}
82+
5283
/**
5384
* @param {!backendApi.Pod} pod
5485
* @return {string}
@@ -145,6 +176,10 @@ const i18n = {
145176
/** @export {string} @desc Label 'Cluster IP' which appears as a column label in the table of
146177
pods (pod list view). */
147178
MSG_POD_LIST_CLUSTER_IP_LABEL: goog.getMsg('Cluster IP'),
179+
/** @export {string} @desc Label which appears as a column label in the table of pods */
180+
MSG_POD_LIST_CPU_USAGE_LABEL: goog.getMsg('CPU (cores)'),
181+
/** @export {string} @desc Label which appears as a column label in the table of pods */
182+
MSG_POD_LIST_MEMORY_USAGE_LABEL: goog.getMsg('Memory (bytes)'),
148183
/** @export {string} @desc Label 'Logs' for the pod's logs which appears as a column label in the
149184
table of pods (pod list view). */
150185
MSG_POD_LIST_LOGS_LABEL: goog.getMsg('Logs'),

src/app/frontend/servicelist/servicecardlist.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
limitations under the License.
1515
-->
1616

17-
<kd-resource-card-list selectable="::$ctrl.selectable" with-statuses="::$ctrl.withStatuses">
17+
<kd-resource-card-list selectable="::$ctrl.selectable" with-statuses="true">
1818
<kd-resource-card-header-columns>
1919
<kd-resource-card-header-column>Name</kd-resource-card-header-column>
2020
<kd-resource-card-header-column>Labels</kd-resource-card-header-column>

src/app/frontend/servicelist/servicecardlist_component.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ export const serviceCardListComponent = {
8686
'services': '<',
8787
/** {boolean} */
8888
'selectable': '<',
89-
/** {boolean} */
90-
'withStatuses': '<',
9189
},
9290
};
9391

src/app/frontend/servicelist/servicelist.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@
1616

1717
<kd-content-card>
1818
<kd-content>
19-
<kd-service-card-list services="::ctrl.serviceList.services" with-statuses="true"></kd-service-card-list>
19+
<kd-service-card-list services="::ctrl.serviceList.services"></kd-service-card-list>
2020
</kd-content>
2121
</kd-content-card>

0 commit comments

Comments
 (0)