From 65eb3202c281cf75b9825387058343b9535729eb Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 5 Oct 2016 18:21:51 +0530 Subject: [PATCH 1/2] CLOUDSTACK-9534: Allow VR to be destroy in UI when in running state This allows admins/users to destroy a VR that is in running state from the UI. This action is possible via cloudmonkey/APIs. Signed-off-by: Rohit Yadav --- ui/scripts/system.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/ui/scripts/system.js b/ui/scripts/system.js index faa388c17c4..7e4200a2e73 100644 --- a/ui/scripts/system.js +++ b/ui/scripts/system.js @@ -2585,6 +2585,11 @@ label: 'label.destroy.router', messages: { confirm: function (args) { + if (args && args.context && args.context.routers[0]) { + if (args.context.routers[0].state == 'Running') { + return dictionary['message.action.stop.router'] + ' ' + dictionary['message.confirm.destroy.router']; + } + } return 'message.confirm.destroy.router'; }, notification: function (args) { @@ -3752,6 +3757,11 @@ label: 'label.destroy.router', messages: { confirm: function (args) { + if (args && args.context && args.context.routers[0]) { + if (args.context.routers[0].state == 'Running') { + return dictionary['message.action.stop.router'] + ' ' + dictionary['message.confirm.destroy.router']; + } + } return 'message.confirm.destroy.router'; }, notification: function (args) { @@ -6674,6 +6684,11 @@ label: 'label.destroy.router', messages: { confirm: function (args) { + if (args && args.context && args.context.routers[0]) { + if (args.context.routers[0].state == 'Running') { + return dictionary['message.action.stop.router'] + ' ' + dictionary['message.confirm.destroy.router']; + } + } return 'message.confirm.destroy.router'; }, notification: function (args) { @@ -9830,6 +9845,11 @@ label: 'label.destroy.router', messages: { confirm: function (args) { + if (args && args.context && args.context.routers[0]) { + if (args.context.routers[0].state == 'Running') { + return dictionary['message.action.stop.router'] + ' ' + dictionary['message.confirm.destroy.router']; + } + } return 'message.confirm.destroy.router'; }, notification: function (args) { @@ -20986,8 +21006,9 @@ } allowedActions.push("restart"); - + allowedActions.push("remove"); allowedActions.push("viewConsole"); + if (isAdmin()) allowedActions.push("migrate"); } else if (jsonObj.state == 'Stopped') { From 2767e1ade6cd9918ea952be4898d02ae30479feb Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 19 Oct 2016 11:41:08 +0530 Subject: [PATCH 2/2] CLOUDSTACK-9550: Use context to filter items in a metrics view Use available context to filter a metrics view based on zone, cluster, host in the context object. This fixes metrics view filtering when metrics view is viewed via Zone->Compute and Storage-> for a resource. Signed-off-by: Rohit Yadav --- ui/scripts/metrics.js | 60 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/ui/scripts/metrics.js b/ui/scripts/metrics.js index 6ac376e6f15..e9a947d2ac2 100644 --- a/ui/scripts/metrics.js +++ b/ui/scripts/metrics.js @@ -358,9 +358,19 @@ 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('listClusters'), data: data, @@ -623,9 +633,29 @@ 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('listHosts'), data: data, @@ -843,9 +873,15 @@ 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('listVirtualMachines'), data: data, @@ -942,9 +978,19 @@ 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('listVolumes'), data: data, @@ -1044,9 +1090,23 @@ 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('listStoragePools'), data: data,