mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	- Fixes timezone issue where dates show up as nvalid in UI - Introduces new event timeline listing/filtering of events - Several UI improvements to add columns in list views - Bulk operations support in instance list view to shutdown and destroy multiple-selected VMs (limitation: after operation, redundant entries may show up in the list view, refreshing VM list view fixes that) - Align table thead/tbody to avoid splitting of tables Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
		
			
				
	
	
		
			731 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			731 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Licensed to the Apache Software Foundation (ASF) under one
 | |
| // or more contributor license agreements.  See the NOTICE file
 | |
| // distributed with this work for additional information
 | |
| // regarding copyright ownership.  The ASF licenses this file
 | |
| // to you 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(cloudStack) {
 | |
|     cloudStack.sections.metrics = {
 | |
|         title: 'label.metrics',
 | |
|         listView: {
 | |
|             id: 'metrics',
 | |
|             fields: {
 | |
|                 name: {
 | |
|                     label: 'metrics'
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     };
 | |
| 
 | |
| 
 | |
|     // Zones Metrics
 | |
|     cloudStack.sections.metrics.zones = {
 | |
|         title: 'label.metrics',
 | |
|         listView: {
 | |
|             id: 'physicalResources',
 | |
|             fields: {
 | |
|                 name: {
 | |
|                     label: 'label.metrics.name'
 | |
|                 },
 | |
|                 state: {
 | |
|                     label: 'label.metrics.state',
 | |
|                     converter: function (str) {
 | |
|                         // For localization
 | |
|                         return str;
 | |
|                     },
 | |
|                     indicator: {
 | |
|                         'Enabled': 'on',
 | |
|                         'Disabled': 'off'
 | |
|                     },
 | |
|                     compact: true
 | |
|                 },
 | |
|                 clusters : {
 | |
|                     label: 'label.metrics.clusters'
 | |
|                 },
 | |
|                 cpuused: {
 | |
|                     label: 'label.metrics.cpu.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         cpuused: {
 | |
|                             label: 'label.metrics.cpu.used.avg',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'cputhreshold',
 | |
|                                 disable: 'cpudisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         cpumaxdeviation: {
 | |
|                             label: 'label.metrics.cpu.max.dev'
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 cpuallocated: {
 | |
|                     label: 'label.metrics.cpu.allocated',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         cpuallocated: {
 | |
|                             label: 'label.metrics.allocated',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'cpuallocatedthreshold',
 | |
|                                 disable: 'cpuallocateddisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         cputotal: {
 | |
|                             label: 'label.metrics.cpu.total'
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 memused: {
 | |
|                     label: 'label.metrics.memory.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         memoryused: {
 | |
|                             label: 'label.metrics.memory.used.avg',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'memorythreshold',
 | |
|                                 disable: 'memorydisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         memorymaxdeviation: {
 | |
|                             label: 'label.metrics.memory.max.dev'
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 memallocated: {
 | |
|                     label: 'label.metrics.memory.allocated',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         memoryallocated: {
 | |
|                             label: 'label.metrics.allocated',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'memoryallocatedthreshold',
 | |
|                                 disable: 'memoryallocateddisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         memorytotal: {
 | |
|                             label: 'label.metrics.memory.total'
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             },
 | |
|             dataProvider: function(args) {
 | |
|                 var data = {};
 | |
|                 listViewDataProvider(args, data);
 | |
|                 $.ajax({
 | |
|                     url: createURL('listZonesMetrics'),
 | |
|                     data: data,
 | |
|                     success: function(json) {
 | |
|                         args.response.success({
 | |
|                             data: json.listzonesmetricsresponse.zone
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|             browseBy: {
 | |
|                 filterBy: 'zoneid',
 | |
|                 resource: 'clusters'
 | |
|             },
 | |
|             detailView: cloudStack.sections.system.physicalResourceSection.sections.physicalResources.listView.zones.detailView
 | |
|         }
 | |
|     };
 | |
| 
 | |
| 
 | |
|     // Clusters Metrics
 | |
|     cloudStack.sections.metrics.clusters = {
 | |
|         title: 'label.metrics',
 | |
|         listView: {
 | |
|             id: 'clusters',
 | |
|             fields: {
 | |
|                 name: {
 | |
|                     label: 'label.metrics.name'
 | |
|                 },
 | |
|                 state: {
 | |
|                     label: 'label.metrics.state',
 | |
|                     converter: function (str) {
 | |
|                         // For localization
 | |
|                         return str;
 | |
|                     },
 | |
|                     indicator: {
 | |
|                         'Enabled': 'on',
 | |
|                         'Unmanaged': 'warning',
 | |
|                         'Disabled': 'off'
 | |
|                     },
 | |
|                     compact: true
 | |
|                 },
 | |
|                 hosts: {
 | |
|                     label: 'label.metrics.hosts'
 | |
|                 },
 | |
|                 cpuused: {
 | |
|                     label: 'label.metrics.cpu.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         cpuused: {
 | |
|                             label: 'label.metrics.cpu.used.avg',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'cputhreshold',
 | |
|                                 disable: 'cpudisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         cpumaxdeviation: {
 | |
|                             label: 'label.metrics.cpu.max.dev'
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 cpuallocated: {
 | |
|                     label: 'label.metrics.cpu.allocated',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         cpuallocated: {
 | |
|                             label: 'label.metrics.allocated',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'cpuallocatedthreshold',
 | |
|                                 disable: 'cpuallocateddisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         cputotal: {
 | |
|                             label: 'label.metrics.cpu.total'
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 memused: {
 | |
|                     label: 'label.metrics.memory.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         memoryused: {
 | |
|                             label: 'label.metrics.memory.used.avg',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'memorythreshold',
 | |
|                                 disable: 'memorydisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         memorymaxdeviation: {
 | |
|                             label: 'label.metrics.memory.max.dev'
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 memallocated: {
 | |
|                     label: 'label.metrics.memory.allocated',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         memoryallocated: {
 | |
|                             label: 'label.metrics.allocated',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'memoryallocatedthreshold',
 | |
|                                 disable: 'memoryallocateddisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         memorytotal: {
 | |
|                             label: 'label.metrics.memory.total'
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             },
 | |
|             dataProvider: function(args) {
 | |
|                 var data = {};
 | |
|                 listViewDataProvider(args, data);
 | |
| 
 | |
|                 if ("zones" in args.context && args.context.zones[0]) {
 | |
|                     data['zoneid'] = args.context.zones[0].id;
 | |
|                 }
 | |
| 
 | |
|                 if ("pods" in args.context && args.context.pods[0]) {
 | |
|                     data['podid'] = args.context.pods[0].id;
 | |
|                 }
 | |
| 
 | |
|                 if (args.context.metricsFilterData && args.context.metricsFilterData.key && args.context.metricsFilterData.value) {
 | |
|                     data[args.context.metricsFilterData.key] = args.context.metricsFilterData.value;
 | |
|                 }
 | |
| 
 | |
|                 $.ajax({
 | |
|                     url: createURL('listClustersMetrics'),
 | |
|                     data: data,
 | |
|                     success: function(json) {
 | |
|                         args.response.success({
 | |
|                             data: json.listclustersmetricsresponse.cluster
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|             browseBy: {
 | |
|                 filterBy: 'clusterid',
 | |
|                 resource: 'hosts'
 | |
|             },
 | |
|             detailView: cloudStack.sections.system.subsections.clusters.listView.detailView
 | |
|         }
 | |
|     };
 | |
| 
 | |
| 
 | |
|     // Hosts Metrics
 | |
|     cloudStack.sections.metrics.hosts = {
 | |
|         title: 'label.metrics',
 | |
|         listView: {
 | |
|             id: 'hosts',
 | |
|             fields: {
 | |
|                 name: {
 | |
|                     label: 'label.metrics.name'
 | |
|                 },
 | |
|                 state: {
 | |
|                     label: 'label.metrics.state',
 | |
|                     converter: function (str) {
 | |
|                         // For localization
 | |
|                         return str;
 | |
|                     },
 | |
|                     indicator: {
 | |
|                         'Up': 'on',
 | |
|                         'Down': 'off',
 | |
|                         'Disconnected': 'off',
 | |
|                         'Removed': 'off',
 | |
|                         'Error': 'off',
 | |
|                         'Alert': 'warning'
 | |
|                     },
 | |
|                     compact: true
 | |
|                 },
 | |
|                 powerstate: {
 | |
|                     label: 'label.metrics.outofbandmanagementpowerstate',
 | |
|                     converter: function (str) {
 | |
|                         // For localization
 | |
|                         return str;
 | |
|                     },
 | |
|                     indicator: {
 | |
|                         'On': 'on',
 | |
|                         'Off': 'off',
 | |
|                         'Unknown': 'warning'
 | |
|                     },
 | |
|                     compact: true
 | |
|                 },
 | |
|                 instances: {
 | |
|                     label: 'label.instances'
 | |
|                 },
 | |
|                 cpuused: {
 | |
|                     label: 'label.metrics.cpu.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         cpunumber: {
 | |
|                             label: 'label.metrics.num.cpu.cores',
 | |
|                         },
 | |
|                         cputotalghz: {
 | |
|                             label: 'label.metrics.cpu.total'
 | |
|                         },
 | |
|                         cpuusedghz: {
 | |
|                             label: 'label.metrics.cpu.used.avg',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'cputhreshold',
 | |
|                                 disable: 'cpudisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         cpuallocatedghz: {
 | |
|                             label: 'label.metrics.allocated',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'cpuallocatedthreshold',
 | |
|                                 disable: 'cpuallocateddisablethreshold'
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 memused: {
 | |
|                     label: 'label.metrics.memory.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         memorytotalgb: {
 | |
|                             label: 'label.metrics.memory.total'
 | |
|                         },
 | |
|                         memoryusedgb: {
 | |
|                             label: 'label.metrics.memory.used.avg',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'memorythreshold',
 | |
|                                 disable: 'memorydisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         memoryallocatedgb: {
 | |
|                             label: 'label.metrics.allocated',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'memoryallocatedthreshold',
 | |
|                                 disable: 'memoryallocateddisablethreshold'
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 network: {
 | |
|                     label: 'label.metrics.network.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         networkread: {
 | |
|                             label: 'label.metrics.network.read'
 | |
|                         },
 | |
|                         networkwrite: {
 | |
|                             label: 'label.metrics.network.write'
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             },
 | |
|             dataProvider: function(args) {
 | |
|                 var data = {};
 | |
|                 data.type = 'routing';
 | |
|                 listViewDataProvider(args, data);
 | |
| 
 | |
|                 if (!args.context.instances) {
 | |
|                     if ("zones" in args.context && args.context.zones[0]) {
 | |
|                         data['zoneid'] = args.context.zones[0].id;
 | |
|                     }
 | |
| 
 | |
|                     if ("pods" in args.context && args.context.pods[0]) {
 | |
|                         data['podid'] = args.context.pods[0].id;
 | |
|                     }
 | |
| 
 | |
|                     if ("clusters" in args.context && args.context.clusters[0]) {
 | |
|                         data['clusterid'] = args.context.clusters[0].id;
 | |
|                     }
 | |
|                 } else {
 | |
|                     if (args.context.instances[0]) {
 | |
|                         data['id'] = args.context.instances[0].hostid;
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 if (args.context.metricsFilterData && args.context.metricsFilterData.key && args.context.metricsFilterData.value) {
 | |
|                     data[args.context.metricsFilterData.key] = args.context.metricsFilterData.value;
 | |
|                 }
 | |
| 
 | |
|                 $.ajax({
 | |
|                     url: createURL('listHostsMetrics'),
 | |
|                     data: data,
 | |
|                     success: function(json) {
 | |
|                         args.response.success({
 | |
|                             data: json.listhostsmetricsresponse.host
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|             browseBy: {
 | |
|                 filterBy: 'hostid',
 | |
|                 resource: 'vms'
 | |
|             },
 | |
|             detailView: cloudStack.sections.system.subsections.hosts.listView.detailView
 | |
|         }
 | |
|     };
 | |
| 
 | |
| 
 | |
|     // VMs Metrics
 | |
|     cloudStack.sections.metrics.instances = {
 | |
|         title: 'label.metrics',
 | |
|         listView: {
 | |
|             id: 'instances',
 | |
|             fields: {
 | |
|                 name: {
 | |
|                     label: 'label.metrics.name'
 | |
|                 },
 | |
|                 state: {
 | |
|                     label: 'label.metrics.state',
 | |
|                     converter: function (str) {
 | |
|                         // For localization
 | |
|                         return str;
 | |
|                     },
 | |
|                     indicator: {
 | |
|                         'Running': 'on',
 | |
|                         'Stopped': 'off',
 | |
|                         'Error': 'off',
 | |
|                         'Destroyed': 'off',
 | |
|                         'Expunging': 'off',
 | |
|                         'Stopping': 'warning',
 | |
|                         'Shutdowned': 'warning'
 | |
|                     },
 | |
|                     compact: true
 | |
|                 },
 | |
|                 ipaddress: {
 | |
|                     label: 'label.ip.address'
 | |
|                 },
 | |
|                 zonename: {
 | |
|                     label: 'label.zone'
 | |
|                 },
 | |
|                 cpuused: {
 | |
|                     label: 'label.metrics.cpu.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         cpunumber: {
 | |
|                             label: 'label.metrics.num.cpu.cores',
 | |
|                         },
 | |
|                         cputotal: {
 | |
|                             label: 'label.metrics.cpu.total'
 | |
|                         },
 | |
|                         cpuused: {
 | |
|                             label: 'label.metrics.cpu.used.avg',
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 memused: {
 | |
|                     label: 'label.metrics.memory.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         memorytotal: {
 | |
|                             label: 'label.metrics.allocated'
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 network: {
 | |
|                     label: 'label.metrics.network.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         networkread: {
 | |
|                             label: 'label.metrics.network.read'
 | |
|                         },
 | |
|                         networkwrite: {
 | |
|                             label: 'label.metrics.network.write'
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 disk: {
 | |
|                     label: 'label.metrics.disk.usage',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         diskioread: {
 | |
|                             label: 'label.metrics.disk.read'
 | |
|                         },
 | |
|                         diskiowrite: {
 | |
|                             label: 'label.metrics.disk.write'
 | |
|                         },
 | |
|                         diskiopstotal: {
 | |
|                             label: 'label.metrics.disk.iops.total'
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             },
 | |
|             dataProvider: function(args) {
 | |
|                 var data = {};
 | |
|                 listViewDataProvider(args, data);
 | |
| 
 | |
|                 if ("hosts" in args.context && args.context.hosts[0]) {
 | |
|                     data['hostid'] = args.context.hosts[0].id;
 | |
|                 }
 | |
| 
 | |
|                 if (args.context.metricsFilterData && args.context.metricsFilterData.key && args.context.metricsFilterData.value) {
 | |
|                     data[args.context.metricsFilterData.key] = args.context.metricsFilterData.value;
 | |
|                 }
 | |
| 
 | |
|                 $.ajax({
 | |
|                     url: createURL('listVirtualMachinesMetrics'),
 | |
|                     data: data,
 | |
|                     success: function(json) {
 | |
|                         args.response.success({
 | |
|                             data: json.listvirtualmachinesmetricsresponse.virtualmachine
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|             browseBy: {
 | |
|                 filterBy: 'virtualmachineid',
 | |
|                 resource: 'volumes'
 | |
|             },
 | |
|             detailView: cloudStack.sections.instances.listView.detailView
 | |
|         }
 | |
|     };
 | |
| 
 | |
| 
 | |
|     // Volumes Metrics
 | |
|     cloudStack.sections.metrics.volumes = {
 | |
|         title: 'label.metrics',
 | |
|         listView: {
 | |
|             id: 'volumes',
 | |
|             fields: {
 | |
|                 name: {
 | |
|                     label: 'label.metrics.name'
 | |
|                 },
 | |
|                 state: {
 | |
|                     label: 'label.metrics.state',
 | |
|                     converter: function (str) {
 | |
|                         // For localization
 | |
|                         return str;
 | |
|                     },
 | |
|                     indicator: {
 | |
|                         'Allocated': 'on',
 | |
|                         'Ready': 'on',
 | |
|                         'Destroy': 'off',
 | |
|                         'Expunging': 'off',
 | |
|                         'Migrating': 'warning',
 | |
|                         'UploadOp': 'warning',
 | |
|                         'Snapshotting': 'warning',
 | |
|                     },
 | |
|                     compact: true
 | |
|                 },
 | |
|                 vmname: {
 | |
|                     label: 'label.metrics.vm.name'
 | |
|                 },
 | |
|                 sizegb: {
 | |
|                     label: 'label.metrics.disk.size'
 | |
|                 },
 | |
|                 physicalsize: {
 | |
|                     label: 'label.disk.physicalsize',
 | |
|                     converter: function(args) {
 | |
|                         if (args == null || args == 0)
 | |
|                             return "";
 | |
|                         else
 | |
|                             return cloudStack.converters.convertBytes(args);
 | |
|                     }
 | |
|                 },
 | |
|                 utilization: {
 | |
|                     label: 'label.disk.utilisation'
 | |
|                 },
 | |
|                 storagetype: {
 | |
|                     label: 'label.metrics.disk.storagetype'
 | |
|                 },
 | |
|                 storage: {
 | |
|                     label: 'label.metrics.storagepool'
 | |
|                 },
 | |
|             },
 | |
|             dataProvider: function(args) {
 | |
|                 var data = {listAll: true};
 | |
|                 listViewDataProvider(args, data);
 | |
| 
 | |
|                 if ("instances" in args.context && args.context.instances[0]) {
 | |
|                     data['virtualmachineid'] = args.context.instances[0].id;
 | |
|                 }
 | |
| 
 | |
|                 if ("primarystorages" in args.context && args.context.primarystorages[0]) {
 | |
|                     data['storageid'] = args.context.primarystorages[0].id;
 | |
|                 }
 | |
| 
 | |
|                 if (args.context.metricsFilterData && args.context.metricsFilterData.key && args.context.metricsFilterData.value) {
 | |
|                     data[args.context.metricsFilterData.key] = args.context.metricsFilterData.value;
 | |
|                 }
 | |
| 
 | |
|                 $.ajax({
 | |
|                     url: createURL('listVolumesMetrics'),
 | |
|                     data: data,
 | |
|                     success: function(json) {
 | |
|                         args.response.success({
 | |
|                             data: json.listvolumesmetricsresponse.volume
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|             detailView: cloudStack.sections.storage.sections.volumes.listView.detailView
 | |
|         }
 | |
|     };
 | |
| 
 | |
| 
 | |
|     // Storage Pool Metrics
 | |
|     cloudStack.sections.metrics.storagepool = {
 | |
|         title: 'label.metrics',
 | |
|         listView: {
 | |
|             id: 'primarystorages',
 | |
|             fields: {
 | |
|                 name: {
 | |
|                     label: 'label.metrics.name'
 | |
|                 },
 | |
|                 property: {
 | |
|                     label: 'label.metrics.property',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         state: {
 | |
|                             label: 'label.metrics.state',
 | |
|                             converter: function (str) {
 | |
|                                 // For localization
 | |
|                                 return str;
 | |
|                             },
 | |
|                             indicator: {
 | |
|                                 'Up': 'on',
 | |
|                                 'Down': 'off',
 | |
|                                 'Removed': 'off',
 | |
|                                 'ErrorInMaintenance': 'off',
 | |
|                                 'PrepareForMaintenance': 'warning',
 | |
|                                 'CancelMaintenance': 'warning',
 | |
|                                 'Maintenance': 'warning',
 | |
|                             },
 | |
|                             compact: true
 | |
|                         },
 | |
|                         scope: {
 | |
|                             label: 'label.metrics.scope'
 | |
|                         },
 | |
|                         type: {
 | |
|                             label: 'label.metrics.disk.storagetype'
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
|                 disk: {
 | |
|                     label: 'label.metrics.disk',
 | |
|                     collapsible: true,
 | |
|                     columns: {
 | |
|                         disksizeusedgb: {
 | |
|                             label: 'label.metrics.disk.used',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'storageusagethreshold',
 | |
|                                 disable: 'storageusagedisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         disksizetotalgb: {
 | |
|                             label: 'label.metrics.disk.total'
 | |
|                         },
 | |
|                         disksizeallocatedgb: {
 | |
|                             label: 'label.metrics.disk.allocated',
 | |
|                             thresholdcolor: true,
 | |
|                             thresholds: {
 | |
|                                 notification: 'storageallocatedthreshold',
 | |
|                                 disable: 'storageallocateddisablethreshold'
 | |
|                             }
 | |
|                         },
 | |
|                         disksizeunallocatedgb: {
 | |
|                             label: 'label.metrics.disk.unallocated'
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             },
 | |
|             dataProvider: function(args) {
 | |
|                 var data = {};
 | |
|                 listViewDataProvider(args, data);
 | |
| 
 | |
|                 if ("zones" in args.context && args.context.zones[0]) {
 | |
|                     data['zoneid'] = args.context.zones[0].id;
 | |
|                 }
 | |
| 
 | |
|                 if ("pods" in args.context && args.context.pods[0]) {
 | |
|                     data['podid'] = args.context.pods[0].id;
 | |
|                 }
 | |
| 
 | |
|                 if ("clusters" in args.context && args.context.clusters[0]) {
 | |
|                     data['clusterid'] = args.context.clusters[0].id;
 | |
|                 }
 | |
| 
 | |
|                 if (args.context.metricsFilterData && args.context.metricsFilterData.key && args.context.metricsFilterData.value) {
 | |
|                     data[args.context.metricsFilterData.key] = args.context.metricsFilterData.value;
 | |
|                 }
 | |
| 
 | |
|                 $.ajax({
 | |
|                     url: createURL('listStoragePoolsMetrics'),
 | |
|                     data: data,
 | |
|                     success: function(json) {
 | |
|                         args.response.success({
 | |
|                             data: json.liststoragepoolsmetricsresponse.storagepool
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|             browseBy: {
 | |
|                 filterBy: 'storageid',
 | |
|                 resource: 'volumes'
 | |
|             },
 | |
|             detailView: cloudStack.sections.system.subsections['primary-storage'].listView.detailView
 | |
|         }
 | |
|     };
 | |
| 
 | |
| })(cloudStack);
 |