From 6cb3f3079909537c58b696b1f0d33767ebdf450d Mon Sep 17 00:00:00 2001 From: Ryan Morgan Date: Tue, 4 May 2010 14:53:44 -0700 Subject: [PATCH] [HHQ-3962] Allow deletion of alerts in bulk via stdin. --- ChangeLog | 2 ++ .../hyperic/hq/hqapi1/tools/AlertCommand.java | 26 ++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 07381059..1369ce2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ Changes in HQApi 3.2 + *) [HHQ-3962] Allow deletion of alerts in bulk via stdin. + *) Updated MetricDataApi to get metrics data summary for a resource or group within a specified time range. Functionality added primarily to do integration testing for HHQ-3803 and HHQ-3748. No diff --git a/src/org/hyperic/hq/hqapi1/tools/AlertCommand.java b/src/org/hyperic/hq/hqapi1/tools/AlertCommand.java index 275e2284..8b820680 100644 --- a/src/org/hyperic/hq/hqapi1/tools/AlertCommand.java +++ b/src/org/hyperic/hq/hqapi1/tools/AlertCommand.java @@ -30,11 +30,14 @@ import joptsimple.OptionParser; import joptsimple.OptionSet; +import java.io.InputStream; import java.util.Arrays; +import java.util.List; import org.hyperic.hq.hqapi1.HQApi; import org.hyperic.hq.hqapi1.XmlUtil; import org.hyperic.hq.hqapi1.AlertApi; +import org.hyperic.hq.hqapi1.types.Alert; import org.hyperic.hq.hqapi1.types.AlertsResponse; import org.hyperic.hq.hqapi1.types.ResourceResponse; import org.hyperic.hq.hqapi1.types.StatusResponse; @@ -221,11 +224,26 @@ private void delete(String[] args) throws Exception { HQApi api = getApi(options); AlertApi alertApi = api.getAlertApi(); - Integer id = (Integer)getRequired(options, OPT_ID); + if (options.has(OPT_ID)) { + Integer id = (Integer)getRequired(options, OPT_ID); + StatusResponse response = alertApi.delete(id); + checkSuccess(response); + System.out.println("Successfully deleted alert id " + id); + } else { + // Delete via stdin + InputStream is = getInputStream(options); - StatusResponse response = alertApi.delete(id); - checkSuccess(response); + AlertsResponse resp = XmlUtil.deserialize(AlertsResponse.class, is); + List alerts = resp.getAlert(); - System.out.println("Successfully deleted alert id " + id); + Integer[] alertIds = new Integer[alerts.size()]; + for (int i = 0; i < alerts.size(); i++) { + alertIds[i] = alerts.get(i).getId(); + } + + StatusResponse response = alertApi.delete(alertIds); + checkSuccess(response); + System.out.println("Successfully deleted " + alertIds.length + " alerts"); + } } }