Skip to content

Commit ad59283

Browse files
committed
CLOUDSTACK-9020: Metrics views for CloudStack UI
Implements various metrics views based on a listView based widget that has following properties: - vertically and horizontally scrollable with pagination/infinite scrolling - sortable columns (client side) - groupable/collapsible columns - alternate row coloring - refresh button to refresh views - threshold table cell coloring - panel/breadcrumb navigation - quick view action column - translatable labels - sorts after metrics is refreshed, if a column was previously sorted - sorts after adding rows on infinite scrolling if a column was pre-sorted - Metrics views: Zones, Clusters, Hosts, Instances, Storage pools, Volumes - Resource filtering/navigation: Zones->Clusters->Hosts->Instances->Volumes, Storage Pool->Volumes Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
1 parent 0845edc commit ad59283

10 files changed

Lines changed: 1447 additions & 10 deletions

File tree

client/WEB-INF/classes/resources/messages.properties

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -842,6 +842,41 @@ label.menu.virtual.appliances=Virtual Appliances
842842
label.menu.virtual.resources=Virtual Resources
843843
label.menu.volumes=Volumes
844844
label.menu.sshkeypair=SSH KeyPair
845+
label.metrics=Metrics
846+
label.metrics.allocated=Allocated
847+
label.metrics.clusters=Clusters
848+
label.metrics.cpu.allocated=CPU Allocation
849+
label.metrics.cpu.max.dev=Deviation
850+
label.metrics.cpu.total=Total
851+
label.metrics.cpu.usage=CPU Usage
852+
label.metrics.cpu.used.avg=Used
853+
label.metrics.disk=Disk
854+
label.metrics.disk.iops.total=IOPS
855+
label.metrics.disk.read=Read
856+
label.metrics.disk.size=Size
857+
label.metrics.disk.storagetype=Type
858+
label.metrics.disk.usage=Disk Usage
859+
label.metrics.disk.used=Used
860+
label.metrics.disk.total=Total
861+
label.metrics.disk.allocated=Allocated
862+
label.metrics.disk.unallocated=Unallocated
863+
label.metrics.disk.write=Write
864+
label.metrics.hosts=Hosts
865+
label.metrics.memory.allocated=Mem Allocation
866+
label.metrics.memory.max.dev=Deviation
867+
label.metrics.memory.total=Total
868+
label.metrics.memory.usage=Mem Usage
869+
label.metrics.memory.used.avg=Used
870+
label.metrics.name=Name
871+
label.metrics.network.usage=Network Usage
872+
label.metrics.network.read=Read
873+
label.metrics.network.write=Write
874+
label.metrics.num.cpu.cores=Cores
875+
label.metrics.property=Property
876+
label.metrics.scope=Scope
877+
label.metrics.state=State
878+
label.metrics.storagepool=Storage Pool
879+
label.metrics.vm.name=VM Name
845880
label.migrate.instance.to.host=Migrate instance to another host
846881
label.migrate.instance.to.ps=Migrate instance to another primary storage
847882
label.migrate.instance.to=Migrate instance to

ui/css/cloudstack3.css

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12495,6 +12495,22 @@ div.ui-dialog div.autoscaler div.field-group div.form-container form div.form-it
1249512495
background-position: 0px -707px;
1249612496
}
1249712497

12498+
.viewMetrics .icon {
12499+
background-position: -40px -32px;
12500+
}
12501+
12502+
.viewMetrics:hover .icon {
12503+
background-position: -40px -32px;
12504+
}
12505+
12506+
.refreshMetrics .icon {
12507+
background-position: 0px -62px;
12508+
}
12509+
12510+
.refreshMetrics:hover .icon {
12511+
background-position: 0px -62px;
12512+
}
12513+
1249812514
.attach .icon,
1249912515
.attachISO .icon,
1250012516
.attachDisk .icon,

ui/dictionary.jsp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,41 @@ dictionary = {
837837
'label.menu.virtual.resources': '<fmt:message key="label.menu.virtual.resources" />',
838838
'label.menu.volumes': '<fmt:message key="label.menu.volumes" />',
839839
'label.menu.sshkeypair': '<fmt:message key="label.menu.sshkeypair" />',
840+
'label.metrics': '<fmt:message key="label.metrics" />',
841+
'label.metrics.allocated': '<fmt:message key="label.metrics.allocated" />',
842+
'label.metrics.clusters': '<fmt:message key="label.metrics.clusters" />',
843+
'label.metrics.cpu.allocated': '<fmt:message key="label.metrics.cpu.allocated" />',
844+
'label.metrics.cpu.max.dev': '<fmt:message key="label.metrics.cpu.max.dev" />',
845+
'label.metrics.cpu.total': '<fmt:message key="label.metrics.cpu.total" />',
846+
'label.metrics.cpu.usage': '<fmt:message key="label.metrics.cpu.usage" />',
847+
'label.metrics.cpu.used.avg': '<fmt:message key="label.metrics.cpu.used.avg" />',
848+
'label.metrics.disk': '<fmt:message key="label.metrics.disk" />',
849+
'label.metrics.disk.iops.total': '<fmt:message key="label.metrics.disk.iops.total" />',
850+
'label.metrics.disk.read': '<fmt:message key="label.metrics.disk.read" />',
851+
'label.metrics.disk.size': '<fmt:message key="label.metrics.disk.size" />',
852+
'label.metrics.disk.storagetype': '<fmt:message key="label.metrics.disk.storagetype" />',
853+
'label.metrics.disk.usage': '<fmt:message key="label.metrics.disk.usage" />',
854+
'label.metrics.disk.used': '<fmt:message key="label.metrics.disk.used" />',
855+
'label.metrics.disk.total': '<fmt:message key="label.metrics.disk.total" />',
856+
'label.metrics.disk.allocated': '<fmt:message key="label.metrics.disk.allocated" />',
857+
'label.metrics.disk.unallocated': '<fmt:message key="label.metrics.disk.unallocated" />',
858+
'label.metrics.disk.write': '<fmt:message key="label.metrics.disk.write" />',
859+
'label.metrics.hosts': '<fmt:message key="label.metrics.hosts" />',
860+
'label.metrics.memory.allocated': '<fmt:message key="label.metrics.memory.allocated" />',
861+
'label.metrics.memory.max.dev': '<fmt:message key="label.metrics.memory.max.dev" />',
862+
'label.metrics.memory.total': '<fmt:message key="label.metrics.memory.total" />',
863+
'label.metrics.memory.usage': '<fmt:message key="label.metrics.memory.usage" />',
864+
'label.metrics.memory.used.avg': '<fmt:message key="label.metrics.memory.used.avg" />',
865+
'label.metrics.name': '<fmt:message key="label.metrics.name" />',
866+
'label.metrics.network.read': '<fmt:message key="label.metrics.network.read" />',
867+
'label.metrics.network.usage': '<fmt:message key="label.metrics.network.usage" />',
868+
'label.metrics.network.write': '<fmt:message key="label.metrics.network.write" />',
869+
'label.metrics.num.cpu.cores': '<fmt:message key="label.metrics.num.cpu.cores" />',
870+
'label.metrics.property': '<fmt:message key="label.metrics.property" />',
871+
'label.metrics.scope': '<fmt:message key="label.metrics.scope" />',
872+
'label.metrics.state': '<fmt:message key="label.metrics.state" />',
873+
'label.metrics.storagepool': '<fmt:message key="label.metrics.storagepool" />',
874+
'label.metrics.vm.name': '<fmt:message key="label.metrics.vm.name" />',
840875
'label.migrate.instance.to': '<fmt:message key="label.migrate.instance.to" />',
841876
'label.migrate.instance.to.host': '<fmt:message key="label.migrate.instance.to.host" />',
842877
'label.migrate.instance.to.ps': '<fmt:message key="label.migrate.instance.to.ps" />',

ui/index.jsp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1800,6 +1800,7 @@
18001800
<script type="text/javascript" src="scripts/ui-custom/granularSettings.js"></script>
18011801
<script type="text/javascript" src="scripts/ui-custom/zoneChart.js"></script>
18021802
<script type="text/javascript" src="scripts/ui-custom/dashboard.js"></script>
1803+
<script type="text/javascript" src="scripts/ui-custom/metricsView.js"></script>
18031804
<script type="text/javascript" src="scripts/installWizard.js"></script>
18041805
<script type="text/javascript" src="scripts/ui-custom/installWizard.js"></script>
18051806
<script type="text/javascript" src="scripts/projects.js"></script>
@@ -1836,6 +1837,7 @@
18361837
<script type="text/javascript" src="scripts/vm_snapshots.js"></script>
18371838
<script type="text/javascript" src="scripts/ui-custom/projectSelect.js"></script>
18381839
<script type="text/javascript" src="scripts/ui-custom/saml.js"></script>
1840+
<script type="text/javascript" src="scripts/metrics.js"></script>
18391841

18401842
<!-- Plugin/module API -->
18411843
<script type="text/javascript" src="scripts/ui-custom/pluginListing.js"></script>

ui/scripts/instances.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,20 @@
294294
poll: pollAsyncJobResult
295295
}
296296
},
297-
snapshot: vmSnapshotAction({ listView: true })
297+
snapshot: vmSnapshotAction({ listView: true }),
298+
viewMetrics: {
299+
label: 'label.metrics',
300+
isHeader: true,
301+
addRow: false,
302+
action: {
303+
custom: cloudStack.uiCustom.metricsView({resource: 'vms'})
304+
},
305+
messages: {
306+
notification: function (args) {
307+
return 'label.metrics';
308+
}
309+
}
310+
},
298311
},
299312

300313
dataProvider: function(args) {

0 commit comments

Comments
 (0)