From 7fe6ee4510365708e4bae6b96a0c5f917033fd97 Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Thu, 24 Sep 2015 18:13:57 +0530 Subject: [PATCH 01/11] alert api implementation --- pom.xml | 6 + .../org/hawkular/client/ClientResponse.java | 4 + .../org/hawkular/client/HawkularClient.java | 9 + .../hawkular/client/alert/AlertsClient.java | 42 ++++ .../client/alert/AlertsClientImpl.java | 50 +++++ .../hawkular/client/alert/AlertsRestApi.java | 188 ++++++++++++++++++ 6 files changed, 299 insertions(+) create mode 100644 src/main/java/org/hawkular/client/alert/AlertsClient.java create mode 100644 src/main/java/org/hawkular/client/alert/AlertsClientImpl.java create mode 100644 src/main/java/org/hawkular/client/alert/AlertsRestApi.java diff --git a/pom.xml b/pom.xml index 261e0b5..dee6478 100644 --- a/pom.xml +++ b/pom.xml @@ -49,6 +49,7 @@ 0.5.0.Final 0.3.2.Final 0.3.2.Final + 0.4.0-SNAPSHOT 3.0.8.Final nothing-to-exclude @@ -72,6 +73,11 @@ ${hawkular.inventory.json.helper.version} + + org.hawkular.alerts + hawkular-alerts-api + ${hawkular.alerts.version} + com.fasterxml.jackson.core diff --git a/src/main/java/org/hawkular/client/ClientResponse.java b/src/main/java/org/hawkular/client/ClientResponse.java index 4e679eb..8d3208b 100644 --- a/src/main/java/org/hawkular/client/ClientResponse.java +++ b/src/main/java/org/hawkular/client/ClientResponse.java @@ -48,6 +48,10 @@ public ClientResponse(Class clazz, Response response, int statusCode, String this(clazz, response, statusCode, tenantId, false); } + public ClientResponse(Class clazz, Response response, int statusCode, boolean isEntityList) { + this(clazz, response, statusCode, null, isEntityList); + } + @SuppressWarnings("unchecked") public ClientResponse(Class clazz, Response response, int statusCode, String tenantId, boolean isEntityList) { try { diff --git a/src/main/java/org/hawkular/client/HawkularClient.java b/src/main/java/org/hawkular/client/HawkularClient.java index 5d48770..b021971 100644 --- a/src/main/java/org/hawkular/client/HawkularClient.java +++ b/src/main/java/org/hawkular/client/HawkularClient.java @@ -19,6 +19,8 @@ import java.net.URI; import java.util.Objects; +import org.hawkular.client.alert.AlertsClient; +import org.hawkular.client.alert.AlertsClientImpl; import org.hawkular.client.inventory.InventoryClient; import org.hawkular.client.inventory.InventoryClientImpl; import org.hawkular.client.metrics.MetricsClient; @@ -29,12 +31,14 @@ public class HawkularClient { private MetricsClient metricsClient; private InventoryClient inventoryClient; + private AlertsClient alertsClient; private URI endpointUri; public HawkularClient(URI endpointUri, String username, String password) throws Exception { this.endpointUri = endpointUri; metricsClient = new MetricsClientImpl(endpointUri, username, password); inventoryClient = new InventoryClientImpl(endpointUri, username, password); + alertsClient = new AlertsClientImpl(endpointUri, username, password); } public MetricsClient metrics() { @@ -45,6 +49,10 @@ public InventoryClient inventory() { return inventoryClient; } + public AlertsClient alerts() { + return alertsClient; + } + public int hashcode() { return Objects.hash(endpointUri.hashCode()); } @@ -54,4 +62,5 @@ public String toString() { add("endpoint", endpointUri) .toString(); } + } diff --git a/src/main/java/org/hawkular/client/alert/AlertsClient.java b/src/main/java/org/hawkular/client/alert/AlertsClient.java new file mode 100644 index 0000000..3ca5a57 --- /dev/null +++ b/src/main/java/org/hawkular/client/alert/AlertsClient.java @@ -0,0 +1,42 @@ +package org.hawkular.client.alert; + +import java.util.List; + +import org.hawkular.alerts.api.model.condition.Condition; +import org.hawkular.alerts.api.model.trigger.Trigger; +import org.hawkular.client.ClientResponse; + +/** + * @author jkandasa@redhat.com (Jeeva Kandasamy) + */ +public interface AlertsClient { + public enum RESPONSE_CODE { + GET_SUCCESS(200), + CREATE_SUCCESS(201), + ADD_SUCCESS(201), + REGISTER_SUCCESS(201), + UPDATE_SUCCESS(204), + DELETE_SUCCESS(204), + REMOVE_SUCCESS(204); + + private int code; + + private RESPONSE_CODE(int code) { + this.code = code; + } + + public int value() { + return this.code; + } + } + + public ClientResponse> findTriggers(); + + public ClientResponse getTrigger(String triggerId); + + public ClientResponse createTrigger(Trigger trigger); + + public ClientResponse> getTriggerConditions(Trigger trigger); + + public ClientResponse> getTriggerConditions(String triggerId); +} diff --git a/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java new file mode 100644 index 0000000..e96cdae --- /dev/null +++ b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java @@ -0,0 +1,50 @@ +package org.hawkular.client.alert; + +import java.net.URI; +import java.util.List; + +import org.hawkular.alerts.api.model.condition.Condition; +import org.hawkular.alerts.api.model.trigger.Trigger; +import org.hawkular.client.BaseClient; +import org.hawkular.client.ClientResponse; +import org.hawkular.client.RestFactory; + +/** + * @author jkandasa@redhat.com (Jeeva Kandasamy) + */ +public class AlertsClientImpl extends BaseClient implements AlertsClient { + + public AlertsClientImpl(URI endpointUri, String username, String password) throws Exception { + super(endpointUri, username, password, new RestFactory(AlertsRestApi.class)); + } + + //Triggers + @Override + public ClientResponse> findTriggers() { + return new ClientResponse>(Trigger.class, restApi().findTriggers(), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + + @Override + public ClientResponse getTrigger(String triggerId) { + return new ClientResponse(Trigger.class, restApi().getTrigger(triggerId), + RESPONSE_CODE.GET_SUCCESS.value()); + } + + @Override + public ClientResponse createTrigger(Trigger trigger) { + return new ClientResponse(String.class, restApi().createTrigger(trigger), + RESPONSE_CODE.CREATE_SUCCESS.value()); + } + + @Override + public ClientResponse> getTriggerConditions(Trigger trigger) { + return getTriggerConditions(trigger.getId()); + } + + @Override + public ClientResponse> getTriggerConditions(String triggerId) { + return new ClientResponse>(Condition.class, restApi().getTriggerConditions(triggerId), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } +} diff --git a/src/main/java/org/hawkular/client/alert/AlertsRestApi.java b/src/main/java/org/hawkular/client/alert/AlertsRestApi.java new file mode 100644 index 0000000..b658ca0 --- /dev/null +++ b/src/main/java/org/hawkular/client/alert/AlertsRestApi.java @@ -0,0 +1,188 @@ +package org.hawkular.client.alert; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import org.hawkular.alerts.api.json.GroupMemberInfo; +import org.hawkular.alerts.api.json.UnorphanMemberInfo; +import org.hawkular.alerts.api.model.dampening.Dampening; +import org.hawkular.alerts.api.model.trigger.Mode; +import org.hawkular.alerts.api.model.trigger.Tag; +import org.hawkular.alerts.api.model.trigger.Trigger; + +/** + * @author jkandasa@redhat.com (Jeeva Kandasamy) + */ + +@Path("/hawkular/alerts") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public interface AlertsRestApi { + + //Triggers + @GET + @Path("/triggers/") + public Response findTriggers(); + + @GET + @Path("/triggers/tag") + public Response findTriggersByTag(@QueryParam("category") final String category, + @QueryParam("name") final String name); + + @GET + @Path("/triggers/groups/{groupId}/members") + public Response findGroupMembers(@PathParam("groupId") final String groupId, + @QueryParam("includeOrphans") final boolean includeOrphans); + + @POST + @Path("/triggers/") + public Response createTrigger(final Trigger trigger); + + @POST + @Path("/triggers/groups") + public Response createGroupTrigger(final Trigger groupTrigger); + + @POST + @Path("/triggers/groups/members") + public Response createGroupMember(final GroupMemberInfo groupMember); + + @GET + @Path("/triggers/{triggerId}") + public Response getTrigger(@PathParam("triggerId") final String triggerId); + + @PUT + @Path("/triggers/{triggerId}") + public Response updateTrigger(@PathParam("triggerId") final String triggerId, final Trigger trigger); + + @PUT + @Path("/triggers/groups/{groupId}") + public Response updateGroupTrigger(@PathParam("groupId") final String groupId, final Trigger groupTrigger); + + @POST + @Path("/triggers/groups/members/{memberId}/orphan") + public Response orphanMemberTrigger(@PathParam("memberId") final String memberId); + + @POST + @Path("/triggers/groups/members/{memberId}/unorphan") + public Response unorphanMemberTrigger(@PathParam("memberId") final String memberId, + final UnorphanMemberInfo unorphanMemberInfo); + + @DELETE + @Path("/triggers/{triggerId}") + public Response deleteTrigger(@PathParam("triggerId") final String triggerId); + + @DELETE + @Path("/triggers/groups/{groupId}") + public Response deleteGroupTrigger(@PathParam("groupId") final String groupId, + @QueryParam("keepNonOrphans") final boolean keepNonOrphans, + @QueryParam("keepOrphans") final boolean keepOrphans); + + @GET + @Path("/triggers/{triggerId}/dampenings") + public Response getTriggerDampenings(@PathParam("triggerId") final String triggerId); + + @GET + @Path("/triggers/{triggerId}/dampenings/mode/{triggerMode}") + public Response getTriggerModeDampenings(@PathParam("triggerId") final String triggerId, + @PathParam("triggerMode") final Mode triggerMode); + + @GET + @Path("/triggers/{triggerId}/dampenings/{dampeningId}") + public Response getDampening(@PathParam("triggerId") final String triggerId, + @PathParam("dampeningId") final String dampeningId); + + @POST + @Path("/triggers/{triggerId}/dampenings") + public Response createDampening(@PathParam("triggerId") final String triggerId, final Dampening dampening); + + @POST + @Path("/triggers/groups/{groupId}/dampenings") + public Response createGroupDampening(@PathParam("groupId") final String groupId, final Dampening dampening); + + @PUT + @Path("/triggers/{triggerId}/dampenings/{dampeningId}") + public Response updateDampening(@PathParam("triggerId") final String triggerId, + @PathParam("dampeningId") final String dampeningId, final Dampening dampening); + + @PUT + @Path("/triggers/groups/{groupId}/dampenings/{dampeningId}") + public Response updateGroupDampening(@PathParam("groupId") final String groupId, + @PathParam("dampeningId") final String dampeningId, final Dampening dampening); + + @DELETE + @Path("/triggers/{triggerId}/dampenings/{dampeningId}") + public Response deleteDampening(@PathParam("triggerId") final String triggerId, + @PathParam("dampeningId") final String dampeningId); + + @DELETE + @Path("/triggers/groups/{groupId}/dampenings/{dampeningId}") + public Response deleteGroupDampening(@PathParam("groupId") final String groupId, + @PathParam("dampeningId") final String dampeningId); + + @GET + @Path("/triggers/{triggerId}/conditions") + public Response getTriggerConditions(@PathParam("triggerId") final String triggerId); + + @GET + @Path("/triggers/{triggerId}/conditions/{conditionId}") + public Response getTriggerCondition(@PathParam("triggerId") final String triggerId, + @PathParam("conditionId") final String conditionId); + + @PUT + @Path("/triggers/{triggerId}/conditions/{triggerMode}") + public Response setConditions(@PathParam("triggerId") final String triggerId, + @PathParam("triggerMode") final Mode triggerMode, String jsonConditions); + + @PUT + @Path("/triggers/groups/{groupId}/conditions/{triggerMode}") + public Response setGroupConditions(@PathParam("groupId") final String groupId, + @PathParam("triggerMode") final Mode triggerMode, String jsonGroupConditionsInfo); + + @POST + @Path("/triggers/{triggerId}/conditions") + public Response createCondition(@PathParam("triggerId") final String triggerId, String jsonCondition); + + @PUT + @Path("/triggers/{triggerId}/conditions/{conditionId}") + public Response updateCondition(@PathParam("triggerId") final String triggerId, + @PathParam("conditionId") final String conditionId, String jsonCondition); + + @DELETE + @Path("/triggers/{triggerId}/conditions/{conditionId}") + public Response deleteCondition(@PathParam("triggerId") final String triggerId, + @PathParam("conditionId") final String conditionId); + + @POST + @Path("/triggers/tags") + public Response createTag(final Tag tag); + + @POST + @Path("/triggers/groups/tags") + public Response createGroupTag(final Tag tag); + + @PUT + @Path("/triggers/{triggerId}/tags") + public Response deleteTags(@PathParam("triggerId") final String triggerId, + @QueryParam("category") final String category, @QueryParam("name") final String name); + + @PUT + @Path("/triggers/groups/{groupId}/tags") + public Response deleteGroupTags(@PathParam("groupId") final String groupId, + @QueryParam("category") final String category, + @QueryParam("name") final String name); + + @GET + @Path("/triggers/{triggerId}/tags") + public Response getTriggerTags(@PathParam("triggerId") final String triggerId, + @QueryParam("category") final String category); + +} From 77f67f19bf6ea72c9ab5e416dac8a578650f7227 Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Wed, 30 Sep 2015 20:39:07 +0530 Subject: [PATCH 02/11] added set of REST API implementation for alert feature --- pom.xml | 9 +- .../org/hawkular/client/ClientResponse.java | 32 ++- .../hawkular/client/alert/AlertsClient.java | 104 ++++++- .../client/alert/AlertsClientImpl.java | 272 +++++++++++++++++- .../hawkular/client/alert/AlertsRestApi.java | 140 ++++++--- 5 files changed, 512 insertions(+), 45 deletions(-) diff --git a/pom.xml b/pom.xml index dee6478..fb8486e 100644 --- a/pom.xml +++ b/pom.xml @@ -49,8 +49,9 @@ 0.5.0.Final 0.3.2.Final 0.3.2.Final - 0.4.0-SNAPSHOT + 0.5.0-SNAPSHOT 3.0.8.Final + 3.3.0.Final nothing-to-exclude @@ -161,6 +162,12 @@ httpclient 4.4.1 + + org.jboss.logging + jboss-logging + ${org.jboss.logging.version} + + diff --git a/src/main/java/org/hawkular/client/ClientResponse.java b/src/main/java/org/hawkular/client/ClientResponse.java index 8d3208b..104800c 100644 --- a/src/main/java/org/hawkular/client/ClientResponse.java +++ b/src/main/java/org/hawkular/client/ClientResponse.java @@ -17,6 +17,7 @@ package org.hawkular.client; import java.io.IOException; +import java.util.Collection; import java.util.List; import javax.ws.rs.core.Response; @@ -41,19 +42,29 @@ public class ClientResponse { private boolean success = false; public ClientResponse(Class clazz, Response response, int statusCode) { - this(clazz, response, statusCode, null, false); + this(clazz, response, statusCode, null, null); } public ClientResponse(Class clazz, Response response, int statusCode, String tenantId) { - this(clazz, response, statusCode, tenantId, false); + this(clazz, response, statusCode, tenantId, null); } public ClientResponse(Class clazz, Response response, int statusCode, boolean isEntityList) { - this(clazz, response, statusCode, null, isEntityList); + this(clazz, response, statusCode, null, isEntityList == true ? List.class : null); } - @SuppressWarnings("unchecked") public ClientResponse(Class clazz, Response response, int statusCode, String tenantId, boolean isEntityList) { + this(clazz, response, statusCode, tenantId, isEntityList == true ? List.class : null); + } + + public ClientResponse(Class clazz, Response response, int statusCode, + @SuppressWarnings("rawtypes") Class collectionType) { + this(clazz, response, statusCode, null, collectionType); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public ClientResponse(Class clazz, Response response, int statusCode, String tenantId, + Class collectionType) { try { this.setStatusCode(response.getStatus()); if (response.getStatus() == statusCode) { @@ -69,9 +80,9 @@ public ClientResponse(Class clazz, Response response, int statusCode, String PathDeserializer.setCurrentCanonicalOrigin(CanonicalPath.of() .tenant(tenantId).get()); } - if (isEntityList) { + if (collectionType != null) { this.setEntity(objectMapper.readValue(response.readEntity(String.class), - objectMapper.getTypeFactory().constructCollectionType(List.class, clazz))); + objectMapper.getTypeFactory().constructCollectionType(collectionType, clazz))); } else { this.setEntity((T) objectMapper.readValue(response.readEntity(String.class), clazz)); @@ -122,4 +133,13 @@ public String getErrorMsg() { public void setErrorMsg(String errorMsg) { this.errorMsg = errorMsg; } + + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("Status Code:").append(this.statusCode); + builder.append(", Is Success:").append(this.success); + builder.append(", Error Message:").append(this.errorMsg); + builder.append(", Entity:[").append(this.entity).append("]"); + return builder.toString(); + } } diff --git a/src/main/java/org/hawkular/client/alert/AlertsClient.java b/src/main/java/org/hawkular/client/alert/AlertsClient.java index 3ca5a57..706ab08 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsClient.java +++ b/src/main/java/org/hawkular/client/alert/AlertsClient.java @@ -1,8 +1,16 @@ package org.hawkular.client.alert; import java.util.List; +import java.util.Map; +import java.util.Set; +import org.hawkular.alerts.api.json.GroupMemberInfo; +import org.hawkular.alerts.api.json.UnorphanMemberInfo; +import org.hawkular.alerts.api.model.condition.Alert; import org.hawkular.alerts.api.model.condition.Condition; +import org.hawkular.alerts.api.model.dampening.Dampening; +import org.hawkular.alerts.api.model.data.MixedData; +import org.hawkular.alerts.api.model.trigger.Mode; import org.hawkular.alerts.api.model.trigger.Trigger; import org.hawkular.client.ClientResponse; @@ -30,13 +38,107 @@ public int value() { } } + //Triggers + public ClientResponse> findTriggers(); - public ClientResponse getTrigger(String triggerId); + public ClientResponse> findTriggersByTag(String category, String name); + + public ClientResponse> findGroupMembers(String groupId, boolean includeOrphans); public ClientResponse createTrigger(Trigger trigger); + public ClientResponse createGroupTrigger(Trigger groupTrigger); + + public ClientResponse createGroupMember(GroupMemberInfo groupMember); + + public ClientResponse getTrigger(String triggerId); + + public ClientResponse updateTrigger(String triggerId, Trigger trigger); + + public ClientResponse updateGroupTrigger(String groupId, Trigger groupTrigger); + + public ClientResponse orphanMemberTrigger(String memberId); + + public ClientResponse unorphanMemberTrigger(String memberId, UnorphanMemberInfo unorphanMemberInfo); + + public ClientResponse deleteTrigger(String triggerId); + + public ClientResponse deleteGroupTrigger(String groupId, boolean keepNonOrphans, boolean keepOrphans); + + public ClientResponse> getTriggerDampenings(String triggerId); + + public ClientResponse> getTriggerModeDampenings(String triggerId, Mode triggerMode); + + public ClientResponse getDampening(String triggerId, String dampeningId); + + public ClientResponse createDampening(String triggerId, Dampening dampening); + + public ClientResponse createGroupDampening(String groupId, Dampening dampening); + + public ClientResponse updateDampening(String triggerId, String dampeningId, Dampening dampening); + + public ClientResponse updateGroupDampening(String groupId, String dampeningId, Dampening dampening); + + public ClientResponse deleteDampening(String triggerId, String dampeningId); + + public ClientResponse deleteGroupDampening(String groupId, String dampeningId); + public ClientResponse> getTriggerConditions(Trigger trigger); public ClientResponse> getTriggerConditions(String triggerId); + + public ClientResponse> setConditions(String triggerId, String triggerMode, String jsonConditions); + + public ClientResponse> setGroupConditions(String groupId, String triggerMode, + String jsonGroupConditionsInfo); + + //Alerts + + public ClientResponse> findAlerts( + Long startTime, Long endTime, String alertIds, String triggerIds, + String statuses, String severities, String tags, Boolean thin); + + public ClientResponse findAlerts(); + + public ClientResponse ackAlert(String alertId, String ackBy, String ackNotes); + + public ClientResponse ackAlerts(String alertIds, String ackBy, String ackNotes); + + public ClientResponse deleteAlert(String alertId); + + public ClientResponse deleteAlerts( + Long startTime, Long endTime, String alertIds, String triggerIds, + String statuses, String severities, String tags); + + public ClientResponse getAlert(String alertId, Boolean thin); + + public ClientResponse resolveAlert(String alertId, String resolvedBy, String resolvedNotes); + + public ClientResponse resolveAlerts(String alertIds, String resolvedBy, String resolvedNotes); + + public ClientResponse sendData(MixedData mixedData); + + public ClientResponse reloadAlerts(); + + public ClientResponse reloadTrigger(String triggerId); + + //Actions + + public ClientResponse>> findActions(); + + public ClientResponse> findActionsByPlugin(String actionPlugin); + + public ClientResponse> createAction(Map actionProperties); + + public ClientResponse> updateAction(String actionPlugin, String actionId, + Map actionProperties); + + public ClientResponse deleteAction(String actionPlugin, String actionId); + + //Plugins + + public ClientResponse> findActionPlugins(); + + public ClientResponse> getActionPlugin(String actionPlugin); } diff --git a/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java index e96cdae..67fe0c9 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java +++ b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java @@ -2,8 +2,16 @@ import java.net.URI; import java.util.List; +import java.util.Map; +import java.util.Set; +import org.hawkular.alerts.api.json.GroupMemberInfo; +import org.hawkular.alerts.api.json.UnorphanMemberInfo; +import org.hawkular.alerts.api.model.condition.Alert; import org.hawkular.alerts.api.model.condition.Condition; +import org.hawkular.alerts.api.model.dampening.Dampening; +import org.hawkular.alerts.api.model.data.MixedData; +import org.hawkular.alerts.api.model.trigger.Mode; import org.hawkular.alerts.api.model.trigger.Trigger; import org.hawkular.client.BaseClient; import org.hawkular.client.ClientResponse; @@ -25,6 +33,36 @@ public ClientResponse> findTriggers() { RESPONSE_CODE.GET_SUCCESS.value(), true); } + @Override + public ClientResponse> findTriggersByTag(String category, String name) { + return new ClientResponse>(Trigger.class, restApi().findTriggersByTag(category, name), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + + @Override + public ClientResponse> findGroupMembers(String groupId, boolean includeOrphans) { + return new ClientResponse>(Trigger.class, restApi().findGroupMembers(groupId, includeOrphans), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + + @Override + public ClientResponse createTrigger(Trigger trigger) { + return new ClientResponse(String.class, restApi().createTrigger(trigger), + RESPONSE_CODE.CREATE_SUCCESS.value()); + } + + @Override + public ClientResponse createGroupTrigger(Trigger groupTrigger) { + return new ClientResponse(String.class, restApi().createTrigger(groupTrigger), + RESPONSE_CODE.CREATE_SUCCESS.value()); + } + + @Override + public ClientResponse createGroupMember(GroupMemberInfo groupMember) { + return new ClientResponse(String.class, restApi().createGroupMember(groupMember), + RESPONSE_CODE.CREATE_SUCCESS.value()); + } + @Override public ClientResponse getTrigger(String triggerId) { return new ClientResponse(Trigger.class, restApi().getTrigger(triggerId), @@ -32,11 +70,97 @@ public ClientResponse getTrigger(String triggerId) { } @Override - public ClientResponse createTrigger(Trigger trigger) { - return new ClientResponse(String.class, restApi().createTrigger(trigger), + public ClientResponse updateTrigger(String triggerId, Trigger trigger) { + return new ClientResponse(String.class, restApi().updateTrigger(triggerId, trigger), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse updateGroupTrigger(String groupId, Trigger groupTrigger) { + return new ClientResponse(String.class, restApi().updateGroupTrigger(groupId, groupTrigger), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse orphanMemberTrigger(String memberId) { + return new ClientResponse(String.class, restApi().orphanMemberTrigger(memberId), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse unorphanMemberTrigger(String memberId, UnorphanMemberInfo unorphanMemberInfo) { + return new ClientResponse(String.class, restApi().unorphanMemberTrigger(memberId, unorphanMemberInfo), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse deleteTrigger(String triggerId) { + return new ClientResponse(String.class, restApi().deleteTrigger(triggerId), + RESPONSE_CODE.DELETE_SUCCESS.value()); + } + + @Override + public ClientResponse deleteGroupTrigger(String groupId, boolean keepNonOrphans, boolean keepOrphans) { + return new ClientResponse(String.class, restApi().deleteGroupTrigger(groupId, keepNonOrphans, + keepOrphans), RESPONSE_CODE.DELETE_SUCCESS.value()); + } + + @Override + public ClientResponse> getTriggerDampenings(String triggerId) { + return new ClientResponse>(Dampening.class, restApi().getTriggerDampenings(triggerId), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + + @Override + public ClientResponse> getTriggerModeDampenings(String triggerId, Mode triggerMode) { + return new ClientResponse>(Dampening.class, restApi().getTriggerModeDampenings(triggerId, + triggerMode), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + + @Override + public ClientResponse getDampening(String triggerId, String dampeningId) { + return new ClientResponse(Dampening.class, restApi().getDampening(triggerId, dampeningId), + RESPONSE_CODE.GET_SUCCESS.value()); + } + + @Override + public ClientResponse createDampening(String triggerId, Dampening dampening) { + return new ClientResponse(Dampening.class, restApi().createDampening(triggerId, dampening), RESPONSE_CODE.CREATE_SUCCESS.value()); } + @Override + public ClientResponse createGroupDampening(String groupId, Dampening dampening) { + return new ClientResponse(Dampening.class, restApi().createGroupDampening(groupId, dampening), + RESPONSE_CODE.CREATE_SUCCESS.value()); + } + + @Override + public ClientResponse updateDampening(String triggerId, String dampeningId, Dampening dampening) { + return new ClientResponse(Dampening.class, restApi().updateDampening(triggerId, dampeningId, + dampening), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse updateGroupDampening(String groupId, String dampeningId, Dampening dampening) { + return new ClientResponse(Dampening.class, restApi().updateGroupDampening(groupId, dampeningId, + dampening), RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse deleteDampening(String triggerId, String dampeningId) { + return new ClientResponse(String.class, restApi().deleteDampening(triggerId, dampeningId), + RESPONSE_CODE.DELETE_SUCCESS.value()); + } + + @Override + public ClientResponse deleteGroupDampening(String groupId, String dampeningId) { + return new ClientResponse(String.class, restApi().deleteGroupDampening(groupId, dampeningId), + RESPONSE_CODE.DELETE_SUCCESS.value()); + } + @Override public ClientResponse> getTriggerConditions(Trigger trigger) { return getTriggerConditions(trigger.getId()); @@ -47,4 +171,146 @@ public ClientResponse> getTriggerConditions(String triggerId) { return new ClientResponse>(Condition.class, restApi().getTriggerConditions(triggerId), RESPONSE_CODE.GET_SUCCESS.value(), true); } -} + + @Override + public ClientResponse> setConditions(String triggerId, String triggerMode, String jsonConditions) { + return new ClientResponse>(Condition.class, restApi().setConditions(triggerId, triggerMode, + jsonConditions), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + + @Override + public ClientResponse> setGroupConditions(String groupId, String triggerMode, + String jsonGroupConditionsInfo) { + return new ClientResponse>(Condition.class, restApi().setGroupConditions(groupId, triggerMode, + jsonGroupConditionsInfo), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + + //Alert + + @Override + public ClientResponse> findAlerts(Long startTime, Long endTime, String alertIds, String triggerIds, + String statuses, String severities, String tags, Boolean thin) { + return new ClientResponse>(Alert.class, restApi().findAlerts(startTime, endTime, alertIds, + triggerIds, statuses, severities, tags, thin), + RESPONSE_CODE.GET_SUCCESS.value(), List.class); + } + + @Override + public ClientResponse findAlerts() { + return new ClientResponse(String.class, restApi().findAlerts(null, null, null, + null, null, null, null, null), + RESPONSE_CODE.GET_SUCCESS.value()); + } + + @Override + public ClientResponse ackAlert(String alertId, String ackBy, String ackNotes) { + return new ClientResponse(String.class, restApi().ackAlert(alertId, ackBy, ackNotes), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse ackAlerts(String alertIds, String ackBy, String ackNotes) { + return new ClientResponse(String.class, restApi().ackAlerts(alertIds, ackBy, ackNotes), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse deleteAlert(String alertId) { + return new ClientResponse(String.class, restApi().deleteAlert(alertId), + RESPONSE_CODE.DELETE_SUCCESS.value()); + } + + @Override + public ClientResponse deleteAlerts(Long startTime, Long endTime, String alertIds, String triggerIds, + String statuses, String severities, String tags) { + return new ClientResponse(Integer.class, restApi().deleteAlerts(startTime, endTime, alertIds, + triggerIds, statuses, severities, tags), + RESPONSE_CODE.DELETE_SUCCESS.value()); + } + + @Override + public ClientResponse getAlert(String alertId, Boolean thin) { + return new ClientResponse(Alert.class, restApi().getAlert(alertId, thin), + RESPONSE_CODE.GET_SUCCESS.value()); + } + + @Override + public ClientResponse resolveAlert(String alertId, String resolvedBy, String resolvedNotes) { + return new ClientResponse(String.class, restApi().resolveAlert(alertId, resolvedBy, resolvedNotes), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse resolveAlerts(String alertIds, String resolvedBy, String resolvedNotes) { + return new ClientResponse(String.class, restApi().resolveAlerts(alertIds, resolvedBy, resolvedNotes), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse sendData(MixedData mixedData) { + return new ClientResponse(String.class, restApi().sendData(mixedData), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse reloadAlerts() { + return new ClientResponse(String.class, restApi().reloadAlerts(), + RESPONSE_CODE.GET_SUCCESS.value()); + } + + @Override + public ClientResponse reloadTrigger(String triggerId) { + return new ClientResponse(String.class, restApi().reloadTrigger(triggerId), + RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + //Actions + + @Override + public ClientResponse>> findActions() { + return new ClientResponse>>(Map.class, restApi().findActions(), + RESPONSE_CODE.GET_SUCCESS.value()); + } + + @Override + public ClientResponse> findActionsByPlugin(String actionPlugin) { + return new ClientResponse>(String.class, restApi().findActionsByPlugin(actionPlugin), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + + @Override + public ClientResponse> createAction(Map actionProperties) { + return new ClientResponse>(Map.class, restApi().createAction(actionProperties), + RESPONSE_CODE.CREATE_SUCCESS.value()); + } + + @Override + public ClientResponse> updateAction(String actionPlugin, String actionId, + Map actionProperties) { + return new ClientResponse>(Map.class, restApi().updateAction(actionPlugin, actionId, + actionProperties), RESPONSE_CODE.UPDATE_SUCCESS.value()); + } + + @Override + public ClientResponse deleteAction(String actionPlugin, String actionId) { + return new ClientResponse(String.class, restApi().deleteAction(actionPlugin, actionId), + RESPONSE_CODE.DELETE_SUCCESS.value()); + } + + //Plugins + + @Override + public ClientResponse> findActionPlugins() { + return new ClientResponse>(String.class, restApi().findActionPlugins(), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + + @Override + public ClientResponse> getActionPlugin(String actionPlugin) { + return new ClientResponse>(String.class, restApi().getActionPlugin(actionPlugin), + RESPONSE_CODE.GET_SUCCESS.value(), true); + } + +} \ No newline at end of file diff --git a/src/main/java/org/hawkular/client/alert/AlertsRestApi.java b/src/main/java/org/hawkular/client/alert/AlertsRestApi.java index b658ca0..726bab7 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsRestApi.java +++ b/src/main/java/org/hawkular/client/alert/AlertsRestApi.java @@ -1,5 +1,7 @@ package org.hawkular.client.alert; +import java.util.Map; + import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; @@ -15,8 +17,8 @@ import org.hawkular.alerts.api.json.GroupMemberInfo; import org.hawkular.alerts.api.json.UnorphanMemberInfo; import org.hawkular.alerts.api.model.dampening.Dampening; +import org.hawkular.alerts.api.model.data.MixedData; import org.hawkular.alerts.api.model.trigger.Mode; -import org.hawkular.alerts.api.model.trigger.Tag; import org.hawkular.alerts.api.model.trigger.Trigger; /** @@ -29,14 +31,14 @@ public interface AlertsRestApi { //Triggers + //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts/rest/TriggersHandler.java @GET @Path("/triggers/") public Response findTriggers(); @GET @Path("/triggers/tag") - public Response findTriggersByTag(@QueryParam("category") final String category, - @QueryParam("name") final String name); + public Response findTriggersByTag(@QueryParam("name") final String name, @QueryParam("value") final String value); @GET @Path("/triggers/groups/{groupId}/members") @@ -132,57 +134,127 @@ public Response deleteGroupDampening(@PathParam("groupId") final String groupId, @Path("/triggers/{triggerId}/conditions") public Response getTriggerConditions(@PathParam("triggerId") final String triggerId); - @GET - @Path("/triggers/{triggerId}/conditions/{conditionId}") - public Response getTriggerCondition(@PathParam("triggerId") final String triggerId, - @PathParam("conditionId") final String conditionId); - @PUT @Path("/triggers/{triggerId}/conditions/{triggerMode}") public Response setConditions(@PathParam("triggerId") final String triggerId, - @PathParam("triggerMode") final Mode triggerMode, String jsonConditions); + @PathParam("triggerMode") final String triggerMode, String jsonConditions); @PUT @Path("/triggers/groups/{groupId}/conditions/{triggerMode}") public Response setGroupConditions(@PathParam("groupId") final String groupId, - @PathParam("triggerMode") final Mode triggerMode, String jsonGroupConditionsInfo); + @PathParam("triggerMode") final String triggerMode, String jsonGroupConditionsInfo); - @POST - @Path("/triggers/{triggerId}/conditions") - public Response createCondition(@PathParam("triggerId") final String triggerId, String jsonCondition); + //Alerts + //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts/rest/AlertsHandler.java + @GET + @Path("/") + public Response findAlerts( + @QueryParam("startTime") final Long startTime, + @QueryParam("endTime") final Long endTime, + @QueryParam("alertIds") final String alertIds, + @QueryParam("triggerIds") final String triggerIds, + @QueryParam("statuses") final String statuses, + @QueryParam("severities") final String severities, + @QueryParam("tags") final String tags, + @QueryParam("thin") final Boolean thin); + + @PUT + @Path("/ack/{alertId}") + public Response ackAlert( + @PathParam("alertId") final String alertId, + @QueryParam("ackBy") final String ackBy, + @QueryParam("ackNotes") final String ackNotes); @PUT - @Path("/triggers/{triggerId}/conditions/{conditionId}") - public Response updateCondition(@PathParam("triggerId") final String triggerId, - @PathParam("conditionId") final String conditionId, String jsonCondition); + @Path("/ack") + public Response ackAlerts( + @QueryParam("alertIds") final String alertIds, + @QueryParam("ackBy") final String ackBy, + @QueryParam("ackNotes") final String ackNotes); @DELETE - @Path("/triggers/{triggerId}/conditions/{conditionId}") - public Response deleteCondition(@PathParam("triggerId") final String triggerId, - @PathParam("conditionId") final String conditionId); + @Path("/{alertId}") + public Response deleteAlert(@PathParam("alertId") final String alertId); + + @PUT + @Path("/delete") + public Response deleteAlerts( + @QueryParam("startTime") final Long startTime, + @QueryParam("endTime") final Long endTime, + @QueryParam("alertIds") final String alertIds, + @QueryParam("triggerIds") final String triggerIds, + @QueryParam("statuses") final String statuses, + @QueryParam("severities") final String severities, + @QueryParam("tags") final String tags); + + @GET + @Path("/alert/{alertId}") + public Response getAlert( + @PathParam("alertId") final String alertId, + @QueryParam("thin") final Boolean thin); + + @PUT + @Path("/resolve/{alertId}") + public Response resolveAlert( + @PathParam("alertId") final String alertId, + @QueryParam("resolvedBy") final String resolvedBy, + @QueryParam("resolvedNotes") final String resolvedNotes); + + @PUT + @Path("/resolve") + public Response resolveAlerts( + @QueryParam("alertIds") final String alertIds, + @QueryParam("resolvedBy") final String resolvedBy, + @QueryParam("resolvedNotes") final String resolvedNotes); @POST - @Path("/triggers/tags") - public Response createTag(final Tag tag); + @Path("/data") + public Response sendData(final MixedData mixedData); + + @GET + @Path("/reload") + public Response reloadAlerts(); + + @GET + @Path("/reload/{triggerId}") + public Response reloadTrigger(@PathParam("triggerId") final String triggerId); + + //Actions + //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts/rest/ActionsHandler.java + @GET + @Path("/actions/") + public Response findActions(); + + @GET + @Path("/actions/plugin/{actionPlugin}") + public Response findActionsByPlugin(@PathParam("actionPlugin") final String actionPlugin); @POST - @Path("/triggers/groups/tags") - public Response createGroupTag(final Tag tag); + @Path("/actions/") + public Response createAction(final Map actionProperties); - @PUT - @Path("/triggers/{triggerId}/tags") - public Response deleteTags(@PathParam("triggerId") final String triggerId, - @QueryParam("category") final String category, @QueryParam("name") final String name); + @GET + @Path("/actions/{actionPlugin}/{actionId}") + public Response getAction(final String actionPlugin, @PathParam("actionId") final String actionId); @PUT - @Path("/triggers/groups/{groupId}/tags") - public Response deleteGroupTags(@PathParam("groupId") final String groupId, - @QueryParam("category") final String category, - @QueryParam("name") final String name); + @Path("/actions/{actionPlugin}/{actionId}") + public Response updateAction( + final String actionPlugin, + @PathParam("actionId") final String actionId, + final Map actionProperties); + @DELETE + @Path("/actions/{actionPlugin}/{actionId}") + public Response deleteAction(final String actionPlugin, @PathParam("actionId") final String actionId); + + //Plugins + //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts/rest/ActionPluginHandler.java @GET - @Path("/triggers/{triggerId}/tags") - public Response getTriggerTags(@PathParam("triggerId") final String triggerId, - @QueryParam("category") final String category); + @Path("/plugins/") + public Response findActionPlugins(); + @GET + @Path("/plugins/{actionPlugin}") + public Response getActionPlugin(@PathParam("actionPlugin") final String actionPlugin); } From f4885b80cbe30c055fd735fead28e47ef4ef2232 Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Thu, 1 Oct 2015 19:44:33 +0530 Subject: [PATCH 03/11] Fixed issues and added unit tests for alert module --- .../org/hawkular/client/ClientResponse.java | 11 ++- .../hawkular/client/alert/AlertsClient.java | 21 +++-- .../client/alert/AlertsClientImpl.java | 64 +++++++++++---- .../hawkular/client/alert/AlertsRestApi.java | 4 +- .../org/hawkular/client/test/BaseTest.java | 20 +++-- .../client/test/alerts/ConditionsTest.java | 39 +++++++++ .../client/test/alerts/PluginsTest.java | 46 +++++++++++ .../client/test/alerts/TriggerTest.java | 81 +++++++++++++++++++ 8 files changed, 251 insertions(+), 35 deletions(-) create mode 100644 src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java create mode 100644 src/test/java/org/hawkular/client/test/alerts/PluginsTest.java create mode 100644 src/test/java/org/hawkular/client/test/alerts/TriggerTest.java diff --git a/src/main/java/org/hawkular/client/ClientResponse.java b/src/main/java/org/hawkular/client/ClientResponse.java index 104800c..a6cd0b7 100644 --- a/src/main/java/org/hawkular/client/ClientResponse.java +++ b/src/main/java/org/hawkular/client/ClientResponse.java @@ -17,6 +17,7 @@ package org.hawkular.client; import java.io.IOException; +import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -83,7 +84,6 @@ public ClientResponse(Class clazz, Response response, int statusCode, String if (collectionType != null) { this.setEntity(objectMapper.readValue(response.readEntity(String.class), objectMapper.getTypeFactory().constructCollectionType(collectionType, clazz))); - } else { this.setEntity((T) objectMapper.readValue(response.readEntity(String.class), clazz)); } @@ -134,12 +134,17 @@ public void setErrorMsg(String errorMsg) { this.errorMsg = errorMsg; } + @SuppressWarnings("unchecked") public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Status Code:").append(this.statusCode); builder.append(", Is Success:").append(this.success); - builder.append(", Error Message:").append(this.errorMsg); - builder.append(", Entity:[").append(this.entity).append("]"); + builder.append(", Error Message:").append(this.errorMsg == null ? "-" : this.errorMsg); + if (this.entity instanceof Object[]) { + builder.append(", Entity:").append(Arrays.toString((T[]) this.entity)); + } else { + builder.append(", Entity:[").append(this.entity).append("]"); + } return builder.toString(); } } diff --git a/src/main/java/org/hawkular/client/alert/AlertsClient.java b/src/main/java/org/hawkular/client/alert/AlertsClient.java index 706ab08..6e62b25 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsClient.java +++ b/src/main/java/org/hawkular/client/alert/AlertsClient.java @@ -38,6 +38,15 @@ public int value() { } } + public enum TRIGGER_CONDITION_TYPE { + AVAILABILITY_CONDITION, + COMPARE_CONDITION, + EXTERNAL_CONDITION, + STRING_CONDITION, + THRESHOLD_CONDITION, + THRESHOLD_RANGE_CONDITION + } + //Triggers public ClientResponse> findTriggers(); @@ -46,7 +55,7 @@ public int value() { public ClientResponse> findGroupMembers(String groupId, boolean includeOrphans); - public ClientResponse createTrigger(Trigger trigger); + public ClientResponse createTrigger(Trigger trigger); public ClientResponse createGroupTrigger(Trigger groupTrigger); @@ -84,11 +93,11 @@ public int value() { public ClientResponse deleteGroupDampening(String groupId, String dampeningId); - public ClientResponse> getTriggerConditions(Trigger trigger); + public ClientResponse> getTriggerConditions(Trigger trigger, TRIGGER_CONDITION_TYPE conditionType); - public ClientResponse> getTriggerConditions(String triggerId); + public ClientResponse> getTriggerConditions(String triggerId, TRIGGER_CONDITION_TYPE conditionType); - public ClientResponse> setConditions(String triggerId, String triggerMode, String jsonConditions); + public ClientResponse> setConditions(String triggerId, String triggerMode, List conditions); public ClientResponse> setGroupConditions(String groupId, String triggerMode, String jsonGroupConditionsInfo); @@ -138,7 +147,7 @@ public ClientResponse> updateAction(String actionPlugin, Str //Plugins - public ClientResponse> findActionPlugins(); + public ClientResponse findActionPlugins(); - public ClientResponse> getActionPlugin(String actionPlugin); + public ClientResponse getActionPlugin(String actionPlugin); } diff --git a/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java index 67fe0c9..d1a7248 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java +++ b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java @@ -8,7 +8,13 @@ import org.hawkular.alerts.api.json.GroupMemberInfo; import org.hawkular.alerts.api.json.UnorphanMemberInfo; import org.hawkular.alerts.api.model.condition.Alert; +import org.hawkular.alerts.api.model.condition.AvailabilityCondition; +import org.hawkular.alerts.api.model.condition.CompareCondition; import org.hawkular.alerts.api.model.condition.Condition; +import org.hawkular.alerts.api.model.condition.ExternalCondition; +import org.hawkular.alerts.api.model.condition.StringCondition; +import org.hawkular.alerts.api.model.condition.ThresholdCondition; +import org.hawkular.alerts.api.model.condition.ThresholdRangeCondition; import org.hawkular.alerts.api.model.dampening.Dampening; import org.hawkular.alerts.api.model.data.MixedData; import org.hawkular.alerts.api.model.trigger.Mode; @@ -46,8 +52,8 @@ public ClientResponse> findGroupMembers(String groupId, boolean in } @Override - public ClientResponse createTrigger(Trigger trigger) { - return new ClientResponse(String.class, restApi().createTrigger(trigger), + public ClientResponse createTrigger(Trigger trigger) { + return new ClientResponse(Trigger.class, restApi().createTrigger(trigger), RESPONSE_CODE.CREATE_SUCCESS.value()); } @@ -162,20 +168,44 @@ public ClientResponse deleteGroupDampening(String groupId, String dampen } @Override - public ClientResponse> getTriggerConditions(Trigger trigger) { - return getTriggerConditions(trigger.getId()); - } - - @Override - public ClientResponse> getTriggerConditions(String triggerId) { - return new ClientResponse>(Condition.class, restApi().getTriggerConditions(triggerId), + public ClientResponse> getTriggerConditions(Trigger trigger, TRIGGER_CONDITION_TYPE conditionType) { + return getTriggerConditions(trigger.getId(), conditionType); + } + + @Override + public ClientResponse> getTriggerConditions(String triggerId, TRIGGER_CONDITION_TYPE conditionType) { + Class condition = null; + switch (conditionType) { + case AVAILABILITY_CONDITION: + condition = AvailabilityCondition.class; + break; + case COMPARE_CONDITION: + condition = CompareCondition.class; + break; + case EXTERNAL_CONDITION: + condition = ExternalCondition.class; + break; + case STRING_CONDITION: + condition = StringCondition.class; + break; + case THRESHOLD_CONDITION: + condition = ThresholdCondition.class; + break; + case THRESHOLD_RANGE_CONDITION: + condition = ThresholdRangeCondition.class; + break; + default: + break; + } + return new ClientResponse>(condition, restApi().getTriggerConditions( + triggerId), RESPONSE_CODE.GET_SUCCESS.value(), true); } @Override - public ClientResponse> setConditions(String triggerId, String triggerMode, String jsonConditions) { + public ClientResponse> setConditions(String triggerId, String triggerMode, List conditions) { return new ClientResponse>(Condition.class, restApi().setConditions(triggerId, triggerMode, - jsonConditions), + conditions), RESPONSE_CODE.GET_SUCCESS.value(), true); } @@ -302,15 +332,15 @@ public ClientResponse deleteAction(String actionPlugin, String actionId) //Plugins @Override - public ClientResponse> findActionPlugins() { - return new ClientResponse>(String.class, restApi().findActionPlugins(), - RESPONSE_CODE.GET_SUCCESS.value(), true); + public ClientResponse findActionPlugins() { + return new ClientResponse(String[].class, restApi().findActionPlugins(), + RESPONSE_CODE.GET_SUCCESS.value()); } @Override - public ClientResponse> getActionPlugin(String actionPlugin) { - return new ClientResponse>(String.class, restApi().getActionPlugin(actionPlugin), - RESPONSE_CODE.GET_SUCCESS.value(), true); + public ClientResponse getActionPlugin(String actionPlugin) { + return new ClientResponse(String[].class, restApi().getActionPlugin(actionPlugin), + RESPONSE_CODE.GET_SUCCESS.value()); } } \ No newline at end of file diff --git a/src/main/java/org/hawkular/client/alert/AlertsRestApi.java b/src/main/java/org/hawkular/client/alert/AlertsRestApi.java index 726bab7..b5cf655 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsRestApi.java +++ b/src/main/java/org/hawkular/client/alert/AlertsRestApi.java @@ -1,5 +1,6 @@ package org.hawkular.client.alert; +import java.util.List; import java.util.Map; import javax.ws.rs.Consumes; @@ -16,6 +17,7 @@ import org.hawkular.alerts.api.json.GroupMemberInfo; import org.hawkular.alerts.api.json.UnorphanMemberInfo; +import org.hawkular.alerts.api.model.condition.Condition; import org.hawkular.alerts.api.model.dampening.Dampening; import org.hawkular.alerts.api.model.data.MixedData; import org.hawkular.alerts.api.model.trigger.Mode; @@ -137,7 +139,7 @@ public Response deleteGroupDampening(@PathParam("groupId") final String groupId, @PUT @Path("/triggers/{triggerId}/conditions/{triggerMode}") public Response setConditions(@PathParam("triggerId") final String triggerId, - @PathParam("triggerMode") final String triggerMode, String jsonConditions); + @PathParam("triggerMode") final String triggerMode, List conditions); @PUT @Path("/triggers/groups/{groupId}/conditions/{triggerMode}") diff --git a/src/test/java/org/hawkular/client/test/BaseTest.java b/src/test/java/org/hawkular/client/test/BaseTest.java index 9aaa479..b814d26 100644 --- a/src/test/java/org/hawkular/client/test/BaseTest.java +++ b/src/test/java/org/hawkular/client/test/BaseTest.java @@ -33,6 +33,7 @@ public class BaseTest { public BaseTest() throws Exception { init(); } + public void init() throws Exception { URI endpoint = getEndpointFromEnv(); Reporter.log(endpoint.toString()); @@ -59,17 +60,20 @@ public HawkularClient client() { } public static Tenant randomTenant() { - Tenant tenant = new Tenant(RandomStringUtils.randomAlphanumeric(8).toLowerCase()); - return tenant; + return new Tenant(getRandomId()); } public static MetricId randomMetricId() { - return new MetricId(RandomStringUtils.randomAlphanumeric(8).toLowerCase()); + return new MetricId(getRandomId()); + } + + public static String getRandomId() { + return RandomStringUtils.randomAlphanumeric(8).toLowerCase(); } -// public static AvailabilityMetric randomAvailabilityMetric() { -// MetricId id = new MetricId(RandomStringUtils.randomAlphanumeric(8)); -// AvailabilityMetric avail = new AvailabilityMetric(id); -// return avail; -// } + // public static AvailabilityMetric randomAvailabilityMetric() { + // MetricId id = new MetricId(RandomStringUtils.randomAlphanumeric(8)); + // AvailabilityMetric avail = new AvailabilityMetric(id); + // return avail; + // } } diff --git a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java new file mode 100644 index 0000000..62c8467 --- /dev/null +++ b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java @@ -0,0 +1,39 @@ +package org.hawkular.client.test.alerts; + +import java.util.ArrayList; +import java.util.List; + +import org.hawkular.alerts.api.model.condition.AvailabilityCondition; +import org.hawkular.alerts.api.model.condition.AvailabilityCondition.Operator; +import org.hawkular.alerts.api.model.condition.Condition; +import org.hawkular.alerts.api.model.trigger.Mode; +import org.hawkular.alerts.api.model.trigger.Trigger; +import org.hawkular.client.ClientResponse; +import org.hawkular.client.test.BaseTest; +import org.testng.Assert; +import org.testng.Reporter; +import org.testng.annotations.Test; + +public class ConditionsTest extends BaseTest { + + public ConditionsTest() throws Exception { + super(); + } + + @Test + public void testConditions() { + String triggerId = "New-Trigger-" + getRandomId(); + String dataId = "Data-ID-new-trigger"; + //Create New trigger to add condition + Trigger triggerNew = new Trigger(triggerId, dataId); + ClientResponse triggerCreateResult = client().alerts().createTrigger(triggerNew); + Reporter.log("Trigger Creation Status:" + triggerCreateResult, true); + Assert.assertTrue(triggerCreateResult.isSuccess()); + + //Create Condition + AvailabilityCondition availabilityCondition = new AvailabilityCondition(triggerId, dataId, Operator.DOWN); + List conditions = new ArrayList(); + conditions.add(availabilityCondition); + client().alerts().setConditions(triggerId, Mode.FIRING.name(), conditions); + } +} diff --git a/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java b/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java new file mode 100644 index 0000000..2364f70 --- /dev/null +++ b/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java @@ -0,0 +1,46 @@ +package org.hawkular.client.test.alerts; + +import java.util.Arrays; +import java.util.List; + +import org.hawkular.client.ClientResponse; +import org.hawkular.client.test.BaseTest; +import org.testng.Assert; +import org.testng.Reporter; +import org.testng.annotations.Test; + +/** + * @author jkandasa@redhat.com (Jeeva Kandasamy) + */ +public class PluginsTest extends BaseTest { + public PluginsTest() throws Exception { + super(); + } + + public static final String EMAIL_PLUGIN_NAME = "email"; + + @Test + public void findPlugins() { + ClientResponse response = client().alerts().findActionPlugins(); + Reporter.log("Alert available Plugins Result: "+response.toString(), true); + Assert.assertTrue(response.isSuccess()); + Assert.assertTrue(response.getEntity().length > 0); + } + + @Test + public void findEmailPlugin() { + ClientResponse response = client().alerts().getActionPlugin(EMAIL_PLUGIN_NAME); + Reporter.log("Alert Email Plugin variables Result: "+response.toString(), true); + Assert.assertTrue(response.isSuccess()); + List result = Arrays.asList(response.getEntity()); + Assert.assertTrue(result.contains("cc")); + Assert.assertTrue(result.contains("from")); + Assert.assertTrue(result.contains("from-name")); + Assert.assertTrue(result.contains("template.hawkular.url")); + Assert.assertTrue(result.contains("template.html")); + Assert.assertTrue(result.contains("template.locale")); + Assert.assertTrue(result.contains("template.plain")); + Assert.assertTrue(result.contains("to")); + } + +} diff --git a/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java b/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java new file mode 100644 index 0000000..5a7005f --- /dev/null +++ b/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java @@ -0,0 +1,81 @@ +package org.hawkular.client.test.alerts; + +import org.hawkular.alerts.api.model.Severity; +import org.hawkular.alerts.api.model.trigger.Trigger; +import org.hawkular.client.ClientResponse; +import org.hawkular.client.test.BaseTest; +import org.testng.Assert; +import org.testng.Reporter; +import org.testng.annotations.Test; + +/** + * @author jkandasa@redhat.com (Jeeva Kandasamy) + */ +public class TriggerTest extends BaseTest { + + public TriggerTest() throws Exception { + super(); + } + + @Test + public void testTrigger() { + String triggerId = "trigger-id-" + getRandomId(); + //Create Trigger Test + Trigger sampleTrigger = new Trigger(triggerId, "Sample Trigger"); + ClientResponse creationResult = client().alerts().createTrigger(sampleTrigger); + Reporter.log("Trigger Creation Status: " + creationResult, true); + Assert.assertTrue(creationResult.isSuccess()); + Assert.assertEquals(creationResult.getEntity().getId(), sampleTrigger.getId()); + Assert.assertEquals(creationResult.getEntity().getId(), sampleTrigger.getName()); + + //Update Trigger + sampleTrigger.setName("Sample Trigger - Edited"); + sampleTrigger.setEnabled(false); + sampleTrigger.setDescription("created from REST unit test"); + sampleTrigger.setSeverity(Severity.LOW); + ClientResponse updateResult = client().alerts().updateTrigger(triggerId, sampleTrigger); + Reporter.log("Trigger Update Status: " + updateResult, true); + Assert.assertTrue(updateResult.isSuccess()); + + //Fetch this trigger from hawkular and validate + ClientResponse getResult = client().alerts().getTrigger(triggerId); + Reporter.log("Trigger Get Status: " + getResult, true); + Assert.assertTrue(getResult.isSuccess()); + Trigger fromHawkular = getResult.getEntity(); + Assert.assertEquals(fromHawkular.getId(), sampleTrigger.getId()); + Assert.assertEquals(fromHawkular.getDescription(), sampleTrigger.getDescription()); + Assert.assertEquals(fromHawkular.getName(), sampleTrigger.getName()); + Assert.assertEquals(fromHawkular.getSeverity().name(), sampleTrigger.getSeverity().name()); + Assert.assertEquals(fromHawkular.isEnabled(), sampleTrigger.isEnabled()); + + //Enable Trigger + sampleTrigger.setEnabled(true); + updateResult = client().alerts().updateTrigger(triggerId, sampleTrigger); + Reporter.log("Trigger Update Status: " + updateResult, true); + Assert.assertTrue(updateResult.isSuccess()); + getResult = client().alerts().getTrigger(triggerId); + Reporter.log("Trigger Get Status: " + getResult, true); + Assert.assertTrue(getResult.isSuccess()); + fromHawkular = getResult.getEntity(); + Assert.assertEquals(fromHawkular.isEnabled(), sampleTrigger.isEnabled()); + + //Create No Id Trigger + Trigger noIdTrigger = new Trigger(); + noIdTrigger.setName("No Id Trigger"); + creationResult = client().alerts().createTrigger(noIdTrigger); + Reporter.log("No Id Trigger Creation Status: " + creationResult, true); + Assert.assertTrue(creationResult.isSuccess()); + noIdTrigger = creationResult.getEntity(); + Assert.assertNotNull(noIdTrigger.getId()); + + //Delete Trigger + ClientResponse deleteResult = client().alerts().deleteTrigger(sampleTrigger.getId()); + Reporter.log("Trigger Deletion Status(sample Trigger): " + deleteResult, true); + Assert.assertTrue(deleteResult.isSuccess()); + + deleteResult = client().alerts().deleteTrigger(noIdTrigger.getId()); + Reporter.log("Trigger Deletion Status(No Id Trigger): " + deleteResult, true); + Assert.assertTrue(deleteResult.isSuccess()); + } + +} From 871d515277c41f8b358c080340e6642fe1d939bc Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Mon, 5 Oct 2015 17:46:46 +0530 Subject: [PATCH 04/11] updated condition json parser --- .../org/hawkular/client/ClientResponse.java | 21 +++++++++ .../hawkular/client/alert/AlertsClient.java | 13 ++--- .../client/alert/AlertsClientImpl.java | 47 ++++--------------- .../client/test/alerts/ConditionsTest.java | 6 ++- .../client/test/alerts/PluginsTest.java | 5 +- .../client/test/alerts/TriggerTest.java | 3 +- 6 files changed, 46 insertions(+), 49 deletions(-) diff --git a/src/main/java/org/hawkular/client/ClientResponse.java b/src/main/java/org/hawkular/client/ClientResponse.java index a6cd0b7..f5a3199 100644 --- a/src/main/java/org/hawkular/client/ClientResponse.java +++ b/src/main/java/org/hawkular/client/ClientResponse.java @@ -17,12 +17,15 @@ package org.hawkular.client; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import javax.ws.rs.core.Response; +import org.hawkular.alerts.api.json.JacksonDeserializer; +import org.hawkular.alerts.api.model.condition.Condition; import org.hawkular.inventory.api.model.CanonicalPath; import org.hawkular.inventory.api.model.Tenant; import org.hawkular.inventory.json.InventoryJacksonConfig; @@ -33,6 +36,7 @@ import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class ClientResponse { @@ -72,6 +76,23 @@ public ClientResponse(Class clazz, Response response, int statusCode, String this.setSuccess(true); if (clazz.getName().equalsIgnoreCase(String.class.getName())) { this.setEntity((T) response.readEntity(clazz)); + } else if (clazz.getName().equalsIgnoreCase(Condition.class.getName())) { + ObjectMapper objectMapper = new ObjectMapper(); + String jsonConditions = response.readEntity(String.class); + JsonNode rootNode = objectMapper.readTree(jsonConditions); + List conditions = new ArrayList<>(); + if (!(null == jsonConditions || jsonConditions.trim().isEmpty())) { + for (JsonNode conditionNode : rootNode) { + Condition condition = JacksonDeserializer.deserializeCondition(conditionNode); + if (condition == null) { + this.setSuccess(false); + this.setErrorMsg("Bad json conditions: " + jsonConditions); + return; + } + conditions.add(condition); + } + } + this.setEntity((T) conditions); } else { ObjectMapper objectMapper = new ObjectMapper(); InventoryJacksonConfig.configure(objectMapper); diff --git a/src/main/java/org/hawkular/client/alert/AlertsClient.java b/src/main/java/org/hawkular/client/alert/AlertsClient.java index 6e62b25..8cf4c63 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsClient.java +++ b/src/main/java/org/hawkular/client/alert/AlertsClient.java @@ -20,11 +20,11 @@ public interface AlertsClient { public enum RESPONSE_CODE { GET_SUCCESS(200), - CREATE_SUCCESS(201), + CREATE_SUCCESS(200), ADD_SUCCESS(201), REGISTER_SUCCESS(201), - UPDATE_SUCCESS(204), - DELETE_SUCCESS(204), + UPDATE_SUCCESS(200), + DELETE_SUCCESS(200), REMOVE_SUCCESS(204); private int code; @@ -93,11 +93,12 @@ public enum TRIGGER_CONDITION_TYPE { public ClientResponse deleteGroupDampening(String groupId, String dampeningId); - public ClientResponse> getTriggerConditions(Trigger trigger, TRIGGER_CONDITION_TYPE conditionType); + public ClientResponse> getTriggerConditions(Trigger trigger); - public ClientResponse> getTriggerConditions(String triggerId, TRIGGER_CONDITION_TYPE conditionType); + public ClientResponse> getTriggerConditions(String triggerId); - public ClientResponse> setConditions(String triggerId, String triggerMode, List conditions); + public ClientResponse> setConditions(String triggerId, String triggerMode, + List conditions); public ClientResponse> setGroupConditions(String groupId, String triggerMode, String jsonGroupConditionsInfo); diff --git a/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java index d1a7248..29f0164 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java +++ b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java @@ -8,13 +8,7 @@ import org.hawkular.alerts.api.json.GroupMemberInfo; import org.hawkular.alerts.api.json.UnorphanMemberInfo; import org.hawkular.alerts.api.model.condition.Alert; -import org.hawkular.alerts.api.model.condition.AvailabilityCondition; -import org.hawkular.alerts.api.model.condition.CompareCondition; import org.hawkular.alerts.api.model.condition.Condition; -import org.hawkular.alerts.api.model.condition.ExternalCondition; -import org.hawkular.alerts.api.model.condition.StringCondition; -import org.hawkular.alerts.api.model.condition.ThresholdCondition; -import org.hawkular.alerts.api.model.condition.ThresholdRangeCondition; import org.hawkular.alerts.api.model.dampening.Dampening; import org.hawkular.alerts.api.model.data.MixedData; import org.hawkular.alerts.api.model.trigger.Mode; @@ -168,36 +162,13 @@ public ClientResponse deleteGroupDampening(String groupId, String dampen } @Override - public ClientResponse> getTriggerConditions(Trigger trigger, TRIGGER_CONDITION_TYPE conditionType) { - return getTriggerConditions(trigger.getId(), conditionType); - } - - @Override - public ClientResponse> getTriggerConditions(String triggerId, TRIGGER_CONDITION_TYPE conditionType) { - Class condition = null; - switch (conditionType) { - case AVAILABILITY_CONDITION: - condition = AvailabilityCondition.class; - break; - case COMPARE_CONDITION: - condition = CompareCondition.class; - break; - case EXTERNAL_CONDITION: - condition = ExternalCondition.class; - break; - case STRING_CONDITION: - condition = StringCondition.class; - break; - case THRESHOLD_CONDITION: - condition = ThresholdCondition.class; - break; - case THRESHOLD_RANGE_CONDITION: - condition = ThresholdRangeCondition.class; - break; - default: - break; - } - return new ClientResponse>(condition, restApi().getTriggerConditions( + public ClientResponse> getTriggerConditions(Trigger trigger) { + return getTriggerConditions(trigger.getId()); + } + + @Override + public ClientResponse> getTriggerConditions(String triggerId) { + return new ClientResponse>(Condition.class, restApi().getTriggerConditions( triggerId), RESPONSE_CODE.GET_SUCCESS.value(), true); } @@ -206,7 +177,7 @@ public ClientResponse> getTriggerConditions(String triggerId, TR public ClientResponse> setConditions(String triggerId, String triggerMode, List conditions) { return new ClientResponse>(Condition.class, restApi().setConditions(triggerId, triggerMode, conditions), - RESPONSE_CODE.GET_SUCCESS.value(), true); + RESPONSE_CODE.UPDATE_SUCCESS.value(), true); } @Override @@ -214,7 +185,7 @@ public ClientResponse> setGroupConditions(String groupId, String String jsonGroupConditionsInfo) { return new ClientResponse>(Condition.class, restApi().setGroupConditions(groupId, triggerMode, jsonGroupConditionsInfo), - RESPONSE_CODE.GET_SUCCESS.value(), true); + RESPONSE_CODE.UPDATE_SUCCESS.value(), true); } //Alert diff --git a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java index 62c8467..b227c4d 100644 --- a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java @@ -30,10 +30,14 @@ public void testConditions() { Reporter.log("Trigger Creation Status:" + triggerCreateResult, true); Assert.assertTrue(triggerCreateResult.isSuccess()); - //Create Condition + //Create Conditions AvailabilityCondition availabilityCondition = new AvailabilityCondition(triggerId, dataId, Operator.DOWN); List conditions = new ArrayList(); conditions.add(availabilityCondition); client().alerts().setConditions(triggerId, Mode.FIRING.name(), conditions); + + //Get Conditions + ClientResponse> result = client().alerts().getTriggerConditions(triggerId); + Reporter.log("Conditions List: " + result, true); } } diff --git a/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java b/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java index 2364f70..a860145 100644 --- a/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java @@ -22,7 +22,7 @@ public PluginsTest() throws Exception { @Test public void findPlugins() { ClientResponse response = client().alerts().findActionPlugins(); - Reporter.log("Alert available Plugins Result: "+response.toString(), true); + Reporter.log("Alert available Plugins Result: " + response.toString(), true); Assert.assertTrue(response.isSuccess()); Assert.assertTrue(response.getEntity().length > 0); } @@ -30,7 +30,7 @@ public void findPlugins() { @Test public void findEmailPlugin() { ClientResponse response = client().alerts().getActionPlugin(EMAIL_PLUGIN_NAME); - Reporter.log("Alert Email Plugin variables Result: "+response.toString(), true); + Reporter.log("Alert Email Plugin variables Result: " + response.toString(), true); Assert.assertTrue(response.isSuccess()); List result = Arrays.asList(response.getEntity()); Assert.assertTrue(result.contains("cc")); @@ -38,7 +38,6 @@ public void findEmailPlugin() { Assert.assertTrue(result.contains("from-name")); Assert.assertTrue(result.contains("template.hawkular.url")); Assert.assertTrue(result.contains("template.html")); - Assert.assertTrue(result.contains("template.locale")); Assert.assertTrue(result.contains("template.plain")); Assert.assertTrue(result.contains("to")); } diff --git a/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java b/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java index 5a7005f..718c127 100644 --- a/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java @@ -26,7 +26,7 @@ public void testTrigger() { Reporter.log("Trigger Creation Status: " + creationResult, true); Assert.assertTrue(creationResult.isSuccess()); Assert.assertEquals(creationResult.getEntity().getId(), sampleTrigger.getId()); - Assert.assertEquals(creationResult.getEntity().getId(), sampleTrigger.getName()); + Assert.assertEquals(creationResult.getEntity().getName(), sampleTrigger.getName()); //Update Trigger sampleTrigger.setName("Sample Trigger - Edited"); @@ -62,6 +62,7 @@ public void testTrigger() { //Create No Id Trigger Trigger noIdTrigger = new Trigger(); noIdTrigger.setName("No Id Trigger"); + noIdTrigger.setId(null); creationResult = client().alerts().createTrigger(noIdTrigger); Reporter.log("No Id Trigger Creation Status: " + creationResult, true); Assert.assertTrue(creationResult.isSuccess()); From ee5c0c73d16f3f5d4478a5d81e5eb562de9e2f84 Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Mon, 5 Oct 2015 17:55:24 +0530 Subject: [PATCH 05/11] updated condition test --- .../hawkular/client/test/alerts/ConditionsTest.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java index b227c4d..4734601 100644 --- a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java @@ -37,7 +37,14 @@ public void testConditions() { client().alerts().setConditions(triggerId, Mode.FIRING.name(), conditions); //Get Conditions - ClientResponse> result = client().alerts().getTriggerConditions(triggerId); - Reporter.log("Conditions List: " + result, true); + ClientResponse> conditionsResult = client().alerts().getTriggerConditions(triggerId); + Reporter.log("Conditions List: " + conditionsResult, true); + Assert.assertTrue(conditionsResult.isSuccess()); + + //Delete trigger + ClientResponse deleteResult = client().alerts().deleteTrigger(triggerId); + Reporter.log("Trigger[" + triggerId + "] Delete Status: " + deleteResult, true); + Assert.assertTrue(deleteResult.isSuccess()); + } } From 8e9d9165501963f147c7a4f89fdb2319cc8bbaac Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Mon, 5 Oct 2015 20:47:10 +0530 Subject: [PATCH 06/11] added unit test for conditions --- .../client/test/alerts/ConditionsTest.java | 89 ++++++++++++++++--- 1 file changed, 79 insertions(+), 10 deletions(-) diff --git a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java index 4734601..8f99d6c 100644 --- a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java @@ -5,7 +5,11 @@ import org.hawkular.alerts.api.model.condition.AvailabilityCondition; import org.hawkular.alerts.api.model.condition.AvailabilityCondition.Operator; +import org.hawkular.alerts.api.model.condition.CompareCondition; import org.hawkular.alerts.api.model.condition.Condition; +import org.hawkular.alerts.api.model.condition.StringCondition; +import org.hawkular.alerts.api.model.condition.ThresholdCondition; +import org.hawkular.alerts.api.model.condition.ThresholdRangeCondition; import org.hawkular.alerts.api.model.trigger.Mode; import org.hawkular.alerts.api.model.trigger.Trigger; import org.hawkular.client.ClientResponse; @@ -14,6 +18,9 @@ import org.testng.Reporter; import org.testng.annotations.Test; +/** + * @author jkandasa@redhat.com (Jeeva Kandasamy) + */ public class ConditionsTest extends BaseTest { public ConditionsTest() throws Exception { @@ -21,30 +28,92 @@ public ConditionsTest() throws Exception { } @Test - public void testConditions() { + public void testAvailabilityCondition() { String triggerId = "New-Trigger-" + getRandomId(); - String dataId = "Data-ID-new-trigger"; + String dataId = "no-data-id"; + //Make Conditions + AvailabilityCondition availabilityCondition = new AvailabilityCondition(triggerId, dataId, Operator.DOWN); + List conditions = new ArrayList(); + conditions.add(availabilityCondition); + testeCondition(triggerId, conditions, Mode.FIRING); + } + + @Test + public void testCompareCondition() { + String triggerId = "New-Trigger-" + getRandomId(); + String dataId = "no-data-id"; + //Make Conditions + CompareCondition compareCondition = new CompareCondition(triggerId, dataId, CompareCondition.Operator.GTE, + 1.0, "no-data-id-2"); + List conditions = new ArrayList(); + conditions.add(compareCondition); + testeCondition(triggerId, conditions, Mode.AUTORESOLVE); + } + + @Test + public void testStringCondition() { + String triggerId = "New-Trigger-" + getRandomId(); + String dataId = "no-data-id"; + //Make Conditions + StringCondition stringCondition = new StringCondition(triggerId, dataId, StringCondition.Operator.CONTAINS, + "find-me", false); + List conditions = new ArrayList(); + conditions.add(stringCondition); + testeCondition(triggerId, conditions, Mode.FIRING); + } + + @Test + public void testThresholdCondition() { + String triggerId = "New-Trigger-" + getRandomId(); + String dataId = "no-data-id"; + //Make Conditions + ThresholdCondition thresholdCondition = new ThresholdCondition(triggerId, dataId, + ThresholdCondition.Operator.LTE, 21.45); + List conditions = new ArrayList(); + conditions.add(thresholdCondition); + testeCondition(triggerId, conditions, Mode.FIRING); + } + + @Test + public void testThresholdRangeCondition() { + String triggerId = "New-Trigger-" + getRandomId(); + String dataId = "no-data-id"; + //Make Conditions + ThresholdRangeCondition thresholdRangeCondition = new ThresholdRangeCondition( + triggerId, dataId, ThresholdRangeCondition.Operator.INCLUSIVE, + ThresholdRangeCondition.Operator.INCLUSIVE, 21.45, 10.45, true); + List conditions = new ArrayList(); + conditions.add(thresholdRangeCondition); + testeCondition(triggerId, conditions, Mode.FIRING); + } + + private void testeCondition(String triggerId, List conditions, Mode mode) { //Create New trigger to add condition - Trigger triggerNew = new Trigger(triggerId, dataId); + Trigger triggerNew = new Trigger(triggerId, "automation-unit-test"); ClientResponse triggerCreateResult = client().alerts().createTrigger(triggerNew); Reporter.log("Trigger Creation Status:" + triggerCreateResult, true); Assert.assertTrue(triggerCreateResult.isSuccess()); //Create Conditions - AvailabilityCondition availabilityCondition = new AvailabilityCondition(triggerId, dataId, Operator.DOWN); - List conditions = new ArrayList(); - conditions.add(availabilityCondition); - client().alerts().setConditions(triggerId, Mode.FIRING.name(), conditions); + ClientResponse> conditionsResult = client().alerts().setConditions(triggerId, + mode.name(), conditions); + Reporter.log("Conditions Creation Status: " + conditionsResult, true); + Assert.assertTrue(conditionsResult.isSuccess()); //Get Conditions - ClientResponse> conditionsResult = client().alerts().getTriggerConditions(triggerId); - Reporter.log("Conditions List: " + conditionsResult, true); + conditionsResult = client().alerts().getTriggerConditions(triggerId); + Reporter.log("Conditions get status: " + conditionsResult, true); + Assert.assertTrue(conditionsResult.isSuccess()); + + //Clear Conditions + conditions.clear(); + conditionsResult = client().alerts().setConditions(triggerId, mode.name(), conditions); + Reporter.log("Clear Conditions Status: " + conditionsResult, true); Assert.assertTrue(conditionsResult.isSuccess()); //Delete trigger ClientResponse deleteResult = client().alerts().deleteTrigger(triggerId); Reporter.log("Trigger[" + triggerId + "] Delete Status: " + deleteResult, true); Assert.assertTrue(deleteResult.isSuccess()); - } } From 15f16b96f00ad77a5b75efb1a8726bd4ab82fcc0 Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Mon, 5 Oct 2015 20:57:31 +0530 Subject: [PATCH 07/11] formated checkstyle --- pom.xml | 2 +- .../hawkular/client/alert/AlertsClient.java | 108 +++++++++------- .../client/alert/AlertsClientImpl.java | 19 ++- .../hawkular/client/alert/AlertsRestApi.java | 116 ++++++++++-------- .../client/test/alerts/ConditionsTest.java | 16 +++ .../client/test/alerts/PluginsTest.java | 16 +++ .../client/test/alerts/TriggerTest.java | 16 +++ 7 files changed, 197 insertions(+), 96 deletions(-) diff --git a/pom.xml b/pom.xml index fb8486e..2b71f15 100644 --- a/pom.xml +++ b/pom.xml @@ -167,7 +167,7 @@ jboss-logging ${org.jboss.logging.version} - + diff --git a/src/main/java/org/hawkular/client/alert/AlertsClient.java b/src/main/java/org/hawkular/client/alert/AlertsClient.java index 8cf4c63..2f184df 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsClient.java +++ b/src/main/java/org/hawkular/client/alert/AlertsClient.java @@ -1,3 +1,19 @@ +/* + * Copyright 2015 Red Hat, Inc. and/or its affiliates + * and other contributors as indicated by the @author tags. + * + * Licensed 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. + */ package org.hawkular.client.alert; import java.util.List; @@ -33,7 +49,7 @@ private RESPONSE_CODE(int code) { this.code = code; } - public int value() { + int value() { return this.code; } } @@ -49,106 +65,106 @@ public enum TRIGGER_CONDITION_TYPE { //Triggers - public ClientResponse> findTriggers(); + ClientResponse> findTriggers(); - public ClientResponse> findTriggersByTag(String category, String name); + ClientResponse> findTriggersByTag(String category, String name); - public ClientResponse> findGroupMembers(String groupId, boolean includeOrphans); + ClientResponse> findGroupMembers(String groupId, boolean includeOrphans); - public ClientResponse createTrigger(Trigger trigger); + ClientResponse createTrigger(Trigger trigger); - public ClientResponse createGroupTrigger(Trigger groupTrigger); + ClientResponse createGroupTrigger(Trigger groupTrigger); - public ClientResponse createGroupMember(GroupMemberInfo groupMember); + ClientResponse createGroupMember(GroupMemberInfo groupMember); - public ClientResponse getTrigger(String triggerId); + ClientResponse getTrigger(String triggerId); - public ClientResponse updateTrigger(String triggerId, Trigger trigger); + ClientResponse updateTrigger(String triggerId, Trigger trigger); - public ClientResponse updateGroupTrigger(String groupId, Trigger groupTrigger); + ClientResponse updateGroupTrigger(String groupId, Trigger groupTrigger); - public ClientResponse orphanMemberTrigger(String memberId); + ClientResponse orphanMemberTrigger(String memberId); - public ClientResponse unorphanMemberTrigger(String memberId, UnorphanMemberInfo unorphanMemberInfo); + ClientResponse unorphanMemberTrigger(String memberId, UnorphanMemberInfo unorphanMemberInfo); - public ClientResponse deleteTrigger(String triggerId); + ClientResponse deleteTrigger(String triggerId); - public ClientResponse deleteGroupTrigger(String groupId, boolean keepNonOrphans, boolean keepOrphans); + ClientResponse deleteGroupTrigger(String groupId, boolean keepNonOrphans, boolean keepOrphans); - public ClientResponse> getTriggerDampenings(String triggerId); + ClientResponse> getTriggerDampenings(String triggerId); - public ClientResponse> getTriggerModeDampenings(String triggerId, Mode triggerMode); + ClientResponse> getTriggerModeDampenings(String triggerId, Mode triggerMode); - public ClientResponse getDampening(String triggerId, String dampeningId); + ClientResponse getDampening(String triggerId, String dampeningId); - public ClientResponse createDampening(String triggerId, Dampening dampening); + ClientResponse createDampening(String triggerId, Dampening dampening); - public ClientResponse createGroupDampening(String groupId, Dampening dampening); + ClientResponse createGroupDampening(String groupId, Dampening dampening); - public ClientResponse updateDampening(String triggerId, String dampeningId, Dampening dampening); + ClientResponse updateDampening(String triggerId, String dampeningId, Dampening dampening); - public ClientResponse updateGroupDampening(String groupId, String dampeningId, Dampening dampening); + ClientResponse updateGroupDampening(String groupId, String dampeningId, Dampening dampening); - public ClientResponse deleteDampening(String triggerId, String dampeningId); + ClientResponse deleteDampening(String triggerId, String dampeningId); - public ClientResponse deleteGroupDampening(String groupId, String dampeningId); + ClientResponse deleteGroupDampening(String groupId, String dampeningId); - public ClientResponse> getTriggerConditions(Trigger trigger); + ClientResponse> getTriggerConditions(Trigger trigger); - public ClientResponse> getTriggerConditions(String triggerId); + ClientResponse> getTriggerConditions(String triggerId); - public ClientResponse> setConditions(String triggerId, String triggerMode, + ClientResponse> setConditions(String triggerId, String triggerMode, List conditions); - public ClientResponse> setGroupConditions(String groupId, String triggerMode, + ClientResponse> setGroupConditions(String groupId, String triggerMode, String jsonGroupConditionsInfo); //Alerts - public ClientResponse> findAlerts( + ClientResponse> findAlerts( Long startTime, Long endTime, String alertIds, String triggerIds, String statuses, String severities, String tags, Boolean thin); - public ClientResponse findAlerts(); + ClientResponse findAlerts(); - public ClientResponse ackAlert(String alertId, String ackBy, String ackNotes); + ClientResponse ackAlert(String alertId, String ackBy, String ackNotes); - public ClientResponse ackAlerts(String alertIds, String ackBy, String ackNotes); + ClientResponse ackAlerts(String alertIds, String ackBy, String ackNotes); - public ClientResponse deleteAlert(String alertId); + ClientResponse deleteAlert(String alertId); - public ClientResponse deleteAlerts( + ClientResponse deleteAlerts( Long startTime, Long endTime, String alertIds, String triggerIds, String statuses, String severities, String tags); - public ClientResponse getAlert(String alertId, Boolean thin); + ClientResponse getAlert(String alertId, Boolean thin); - public ClientResponse resolveAlert(String alertId, String resolvedBy, String resolvedNotes); + ClientResponse resolveAlert(String alertId, String resolvedBy, String resolvedNotes); - public ClientResponse resolveAlerts(String alertIds, String resolvedBy, String resolvedNotes); + ClientResponse resolveAlerts(String alertIds, String resolvedBy, String resolvedNotes); - public ClientResponse sendData(MixedData mixedData); + ClientResponse sendData(MixedData mixedData); - public ClientResponse reloadAlerts(); + ClientResponse reloadAlerts(); - public ClientResponse reloadTrigger(String triggerId); + ClientResponse reloadTrigger(String triggerId); //Actions - public ClientResponse>> findActions(); + ClientResponse>> findActions(); - public ClientResponse> findActionsByPlugin(String actionPlugin); + ClientResponse> findActionsByPlugin(String actionPlugin); - public ClientResponse> createAction(Map actionProperties); + ClientResponse> createAction(Map actionProperties); - public ClientResponse> updateAction(String actionPlugin, String actionId, + ClientResponse> updateAction(String actionPlugin, String actionId, Map actionProperties); - public ClientResponse deleteAction(String actionPlugin, String actionId); + ClientResponse deleteAction(String actionPlugin, String actionId); //Plugins - public ClientResponse findActionPlugins(); + ClientResponse findActionPlugins(); - public ClientResponse getActionPlugin(String actionPlugin); + ClientResponse getActionPlugin(String actionPlugin); } diff --git a/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java index 29f0164..e23f408 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java +++ b/src/main/java/org/hawkular/client/alert/AlertsClientImpl.java @@ -1,3 +1,19 @@ +/* + * Copyright 2015 Red Hat, Inc. and/or its affiliates + * and other contributors as indicated by the @author tags. + * + * Licensed 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. + */ package org.hawkular.client.alert; import java.net.URI; @@ -174,7 +190,8 @@ public ClientResponse> getTriggerConditions(String triggerId) { } @Override - public ClientResponse> setConditions(String triggerId, String triggerMode, List conditions) { + public ClientResponse> setConditions(String triggerId, String triggerMode, + List conditions) { return new ClientResponse>(Condition.class, restApi().setConditions(triggerId, triggerMode, conditions), RESPONSE_CODE.UPDATE_SUCCESS.value(), true); diff --git a/src/main/java/org/hawkular/client/alert/AlertsRestApi.java b/src/main/java/org/hawkular/client/alert/AlertsRestApi.java index b5cf655..e20c4c6 100644 --- a/src/main/java/org/hawkular/client/alert/AlertsRestApi.java +++ b/src/main/java/org/hawkular/client/alert/AlertsRestApi.java @@ -1,3 +1,19 @@ +/* + * Copyright 2015 Red Hat, Inc. and/or its affiliates + * and other contributors as indicated by the @author tags. + * + * Licensed 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. + */ package org.hawkular.client.alert; import java.util.List; @@ -33,124 +49,126 @@ public interface AlertsRestApi { //Triggers - //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts/rest/TriggersHandler.java + //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts + ///rest/TriggersHandler.java @GET @Path("/triggers/") - public Response findTriggers(); + Response findTriggers(); @GET @Path("/triggers/tag") - public Response findTriggersByTag(@QueryParam("name") final String name, @QueryParam("value") final String value); + Response findTriggersByTag(@QueryParam("name") final String name, @QueryParam("value") final String value); @GET @Path("/triggers/groups/{groupId}/members") - public Response findGroupMembers(@PathParam("groupId") final String groupId, + Response findGroupMembers(@PathParam("groupId") final String groupId, @QueryParam("includeOrphans") final boolean includeOrphans); @POST @Path("/triggers/") - public Response createTrigger(final Trigger trigger); + Response createTrigger(final Trigger trigger); @POST @Path("/triggers/groups") - public Response createGroupTrigger(final Trigger groupTrigger); + Response createGroupTrigger(final Trigger groupTrigger); @POST @Path("/triggers/groups/members") - public Response createGroupMember(final GroupMemberInfo groupMember); + Response createGroupMember(final GroupMemberInfo groupMember); @GET @Path("/triggers/{triggerId}") - public Response getTrigger(@PathParam("triggerId") final String triggerId); + Response getTrigger(@PathParam("triggerId") final String triggerId); @PUT @Path("/triggers/{triggerId}") - public Response updateTrigger(@PathParam("triggerId") final String triggerId, final Trigger trigger); + Response updateTrigger(@PathParam("triggerId") final String triggerId, final Trigger trigger); @PUT @Path("/triggers/groups/{groupId}") - public Response updateGroupTrigger(@PathParam("groupId") final String groupId, final Trigger groupTrigger); + Response updateGroupTrigger(@PathParam("groupId") final String groupId, final Trigger groupTrigger); @POST @Path("/triggers/groups/members/{memberId}/orphan") - public Response orphanMemberTrigger(@PathParam("memberId") final String memberId); + Response orphanMemberTrigger(@PathParam("memberId") final String memberId); @POST @Path("/triggers/groups/members/{memberId}/unorphan") - public Response unorphanMemberTrigger(@PathParam("memberId") final String memberId, + Response unorphanMemberTrigger(@PathParam("memberId") final String memberId, final UnorphanMemberInfo unorphanMemberInfo); @DELETE @Path("/triggers/{triggerId}") - public Response deleteTrigger(@PathParam("triggerId") final String triggerId); + Response deleteTrigger(@PathParam("triggerId") final String triggerId); @DELETE @Path("/triggers/groups/{groupId}") - public Response deleteGroupTrigger(@PathParam("groupId") final String groupId, + Response deleteGroupTrigger(@PathParam("groupId") final String groupId, @QueryParam("keepNonOrphans") final boolean keepNonOrphans, @QueryParam("keepOrphans") final boolean keepOrphans); @GET @Path("/triggers/{triggerId}/dampenings") - public Response getTriggerDampenings(@PathParam("triggerId") final String triggerId); + Response getTriggerDampenings(@PathParam("triggerId") final String triggerId); @GET @Path("/triggers/{triggerId}/dampenings/mode/{triggerMode}") - public Response getTriggerModeDampenings(@PathParam("triggerId") final String triggerId, + Response getTriggerModeDampenings(@PathParam("triggerId") final String triggerId, @PathParam("triggerMode") final Mode triggerMode); @GET @Path("/triggers/{triggerId}/dampenings/{dampeningId}") - public Response getDampening(@PathParam("triggerId") final String triggerId, + Response getDampening(@PathParam("triggerId") final String triggerId, @PathParam("dampeningId") final String dampeningId); @POST @Path("/triggers/{triggerId}/dampenings") - public Response createDampening(@PathParam("triggerId") final String triggerId, final Dampening dampening); + Response createDampening(@PathParam("triggerId") final String triggerId, final Dampening dampening); @POST @Path("/triggers/groups/{groupId}/dampenings") - public Response createGroupDampening(@PathParam("groupId") final String groupId, final Dampening dampening); + Response createGroupDampening(@PathParam("groupId") final String groupId, final Dampening dampening); @PUT @Path("/triggers/{triggerId}/dampenings/{dampeningId}") - public Response updateDampening(@PathParam("triggerId") final String triggerId, + Response updateDampening(@PathParam("triggerId") final String triggerId, @PathParam("dampeningId") final String dampeningId, final Dampening dampening); @PUT @Path("/triggers/groups/{groupId}/dampenings/{dampeningId}") - public Response updateGroupDampening(@PathParam("groupId") final String groupId, + Response updateGroupDampening(@PathParam("groupId") final String groupId, @PathParam("dampeningId") final String dampeningId, final Dampening dampening); @DELETE @Path("/triggers/{triggerId}/dampenings/{dampeningId}") - public Response deleteDampening(@PathParam("triggerId") final String triggerId, + Response deleteDampening(@PathParam("triggerId") final String triggerId, @PathParam("dampeningId") final String dampeningId); @DELETE @Path("/triggers/groups/{groupId}/dampenings/{dampeningId}") - public Response deleteGroupDampening(@PathParam("groupId") final String groupId, + Response deleteGroupDampening(@PathParam("groupId") final String groupId, @PathParam("dampeningId") final String dampeningId); @GET @Path("/triggers/{triggerId}/conditions") - public Response getTriggerConditions(@PathParam("triggerId") final String triggerId); + Response getTriggerConditions(@PathParam("triggerId") final String triggerId); @PUT @Path("/triggers/{triggerId}/conditions/{triggerMode}") - public Response setConditions(@PathParam("triggerId") final String triggerId, + Response setConditions(@PathParam("triggerId") final String triggerId, @PathParam("triggerMode") final String triggerMode, List conditions); @PUT @Path("/triggers/groups/{groupId}/conditions/{triggerMode}") - public Response setGroupConditions(@PathParam("groupId") final String groupId, + Response setGroupConditions(@PathParam("groupId") final String groupId, @PathParam("triggerMode") final String triggerMode, String jsonGroupConditionsInfo); //Alerts - //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts/rest/AlertsHandler.java + //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular + ///alerts/rest/AlertsHandler.java @GET @Path("/") - public Response findAlerts( + Response findAlerts( @QueryParam("startTime") final Long startTime, @QueryParam("endTime") final Long endTime, @QueryParam("alertIds") final String alertIds, @@ -162,25 +180,25 @@ public Response findAlerts( @PUT @Path("/ack/{alertId}") - public Response ackAlert( + Response ackAlert( @PathParam("alertId") final String alertId, @QueryParam("ackBy") final String ackBy, @QueryParam("ackNotes") final String ackNotes); @PUT @Path("/ack") - public Response ackAlerts( + Response ackAlerts( @QueryParam("alertIds") final String alertIds, @QueryParam("ackBy") final String ackBy, @QueryParam("ackNotes") final String ackNotes); @DELETE @Path("/{alertId}") - public Response deleteAlert(@PathParam("alertId") final String alertId); + Response deleteAlert(@PathParam("alertId") final String alertId); @PUT @Path("/delete") - public Response deleteAlerts( + Response deleteAlerts( @QueryParam("startTime") final Long startTime, @QueryParam("endTime") final Long endTime, @QueryParam("alertIds") final String alertIds, @@ -191,72 +209,74 @@ public Response deleteAlerts( @GET @Path("/alert/{alertId}") - public Response getAlert( + Response getAlert( @PathParam("alertId") final String alertId, @QueryParam("thin") final Boolean thin); @PUT @Path("/resolve/{alertId}") - public Response resolveAlert( + Response resolveAlert( @PathParam("alertId") final String alertId, @QueryParam("resolvedBy") final String resolvedBy, @QueryParam("resolvedNotes") final String resolvedNotes); @PUT @Path("/resolve") - public Response resolveAlerts( + Response resolveAlerts( @QueryParam("alertIds") final String alertIds, @QueryParam("resolvedBy") final String resolvedBy, @QueryParam("resolvedNotes") final String resolvedNotes); @POST @Path("/data") - public Response sendData(final MixedData mixedData); + Response sendData(final MixedData mixedData); @GET @Path("/reload") - public Response reloadAlerts(); + Response reloadAlerts(); @GET @Path("/reload/{triggerId}") - public Response reloadTrigger(@PathParam("triggerId") final String triggerId); + Response reloadTrigger(@PathParam("triggerId") final String triggerId); //Actions - //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts/rest/ActionsHandler.java + //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/ + //alerts/rest/ActionsHandler.java @GET @Path("/actions/") - public Response findActions(); + Response findActions(); @GET @Path("/actions/plugin/{actionPlugin}") - public Response findActionsByPlugin(@PathParam("actionPlugin") final String actionPlugin); + Response findActionsByPlugin(@PathParam("actionPlugin") final String actionPlugin); @POST @Path("/actions/") - public Response createAction(final Map actionProperties); + Response createAction(final Map actionProperties); @GET @Path("/actions/{actionPlugin}/{actionId}") - public Response getAction(final String actionPlugin, @PathParam("actionId") final String actionId); + Response getAction(final String actionPlugin, @PathParam("actionId") final String actionId); @PUT @Path("/actions/{actionPlugin}/{actionId}") - public Response updateAction( + Response updateAction( final String actionPlugin, @PathParam("actionId") final String actionId, final Map actionProperties); @DELETE @Path("/actions/{actionPlugin}/{actionId}") - public Response deleteAction(final String actionPlugin, @PathParam("actionId") final String actionId); + Response deleteAction(final String actionPlugin, @PathParam("actionId") final String actionId); //Plugins - //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts/rest/ActionPluginHandler.java + //https://github.com/hawkular/hawkular-alerts/blob/master/hawkular-alerts-rest/src/main/java/org/hawkular/alerts + ///rest/ActionPluginHandler.java @GET @Path("/plugins/") - public Response findActionPlugins(); + Response findActionPlugins(); @GET @Path("/plugins/{actionPlugin}") - public Response getActionPlugin(@PathParam("actionPlugin") final String actionPlugin); + Response getActionPlugin(@PathParam("actionPlugin") final String actionPlugin); } diff --git a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java index 8f99d6c..e8d5b1c 100644 --- a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java @@ -1,3 +1,19 @@ +/* + * Copyright 2015 Red Hat, Inc. and/or its affiliates + * and other contributors as indicated by the @author tags. + * + * Licensed 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. + */ package org.hawkular.client.test.alerts; import java.util.ArrayList; diff --git a/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java b/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java index a860145..3417b40 100644 --- a/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java @@ -1,3 +1,19 @@ +/* + * Copyright 2015 Red Hat, Inc. and/or its affiliates + * and other contributors as indicated by the @author tags. + * + * Licensed 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. + */ package org.hawkular.client.test.alerts; import java.util.Arrays; diff --git a/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java b/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java index 718c127..6715da5 100644 --- a/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/TriggerTest.java @@ -1,3 +1,19 @@ +/* + * Copyright 2015 Red Hat, Inc. and/or its affiliates + * and other contributors as indicated by the @author tags. + * + * Licensed 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. + */ package org.hawkular.client.test.alerts; import org.hawkular.alerts.api.model.Severity; From 8107393860b4a8855ae474229d6691cd356dbec6 Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Tue, 6 Oct 2015 14:39:54 +0530 Subject: [PATCH 08/11] typo fixed --- .../hawkular/client/test/alerts/ConditionsTest.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java index e8d5b1c..05840bc 100644 --- a/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/ConditionsTest.java @@ -51,7 +51,7 @@ public void testAvailabilityCondition() { AvailabilityCondition availabilityCondition = new AvailabilityCondition(triggerId, dataId, Operator.DOWN); List conditions = new ArrayList(); conditions.add(availabilityCondition); - testeCondition(triggerId, conditions, Mode.FIRING); + testCondition(triggerId, conditions, Mode.FIRING); } @Test @@ -63,7 +63,7 @@ public void testCompareCondition() { 1.0, "no-data-id-2"); List conditions = new ArrayList(); conditions.add(compareCondition); - testeCondition(triggerId, conditions, Mode.AUTORESOLVE); + testCondition(triggerId, conditions, Mode.AUTORESOLVE); } @Test @@ -75,7 +75,7 @@ public void testStringCondition() { "find-me", false); List conditions = new ArrayList(); conditions.add(stringCondition); - testeCondition(triggerId, conditions, Mode.FIRING); + testCondition(triggerId, conditions, Mode.FIRING); } @Test @@ -87,7 +87,7 @@ public void testThresholdCondition() { ThresholdCondition.Operator.LTE, 21.45); List conditions = new ArrayList(); conditions.add(thresholdCondition); - testeCondition(triggerId, conditions, Mode.FIRING); + testCondition(triggerId, conditions, Mode.FIRING); } @Test @@ -100,10 +100,10 @@ public void testThresholdRangeCondition() { ThresholdRangeCondition.Operator.INCLUSIVE, 21.45, 10.45, true); List conditions = new ArrayList(); conditions.add(thresholdRangeCondition); - testeCondition(triggerId, conditions, Mode.FIRING); + testCondition(triggerId, conditions, Mode.FIRING); } - private void testeCondition(String triggerId, List conditions, Mode mode) { + private void testCondition(String triggerId, List conditions, Mode mode) { //Create New trigger to add condition Trigger triggerNew = new Trigger(triggerId, "automation-unit-test"); ClientResponse triggerCreateResult = client().alerts().createTrigger(triggerNew); From 6fdc407afc6be97e911b674c4a1a4da477a4eff5 Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Tue, 6 Oct 2015 18:45:07 +0530 Subject: [PATCH 09/11] Fix for Inventory ping date failure --- .../java/org/hawkular/client/inventory/InventoryClient.java | 3 +-- .../org/hawkular/client/inventory/InventoryClientImpl.java | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/hawkular/client/inventory/InventoryClient.java b/src/main/java/org/hawkular/client/inventory/InventoryClient.java index c826d8b..dec77d5 100644 --- a/src/main/java/org/hawkular/client/inventory/InventoryClient.java +++ b/src/main/java/org/hawkular/client/inventory/InventoryClient.java @@ -23,7 +23,6 @@ import org.hawkular.client.ClientResponse; import org.hawkular.client.inventory.json.Endpoints; import org.hawkular.client.inventory.json.IdJSON; -import org.hawkular.client.inventory.json.StringValue; import org.hawkular.inventory.api.model.Environment; import org.hawkular.inventory.api.model.Feed; import org.hawkular.inventory.api.model.Metric; @@ -63,7 +62,7 @@ public int value() { //PingHandler/Ping ClientResponse pingHello(); - ClientResponse pingTime(); + ClientResponse pingTime(); //Tenant ClientResponse getTenant(); diff --git a/src/main/java/org/hawkular/client/inventory/InventoryClientImpl.java b/src/main/java/org/hawkular/client/inventory/InventoryClientImpl.java index 9d6a7ec..8bea7d1 100644 --- a/src/main/java/org/hawkular/client/inventory/InventoryClientImpl.java +++ b/src/main/java/org/hawkular/client/inventory/InventoryClientImpl.java @@ -28,7 +28,6 @@ import org.hawkular.client.RestFactory; import org.hawkular.client.inventory.json.Endpoints; import org.hawkular.client.inventory.json.IdJSON; -import org.hawkular.client.inventory.json.StringValue; import org.hawkular.inventory.api.model.Environment; import org.hawkular.inventory.api.model.Feed; import org.hawkular.inventory.api.model.Metric; @@ -60,8 +59,8 @@ public String getTenantId() { } @Override - public ClientResponse pingTime() { - return new ClientResponse(StringValue.class, + public ClientResponse pingTime() { + return new ClientResponse(String.class, restApi().pingTime(), RESPONSE_CODE.GET_SUCCESS.value()); } From 5a458ee8d2dbbb5b489900275d1fd4aa9b8c27ac Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Wed, 7 Oct 2015 23:10:35 +0530 Subject: [PATCH 10/11] Adding failures to known group --- .../java/org/hawkular/client/test/alerts/PluginsTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java b/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java index 3417b40..6a65cf1 100644 --- a/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java +++ b/src/test/java/org/hawkular/client/test/alerts/PluginsTest.java @@ -35,7 +35,7 @@ public PluginsTest() throws Exception { public static final String EMAIL_PLUGIN_NAME = "email"; - @Test + @Test(groups={"known-failure"}) public void findPlugins() { ClientResponse response = client().alerts().findActionPlugins(); Reporter.log("Alert available Plugins Result: " + response.toString(), true); @@ -43,7 +43,7 @@ public void findPlugins() { Assert.assertTrue(response.getEntity().length > 0); } - @Test + @Test(groups={"known-failure"}) public void findEmailPlugin() { ClientResponse response = client().alerts().getActionPlugin(EMAIL_PLUGIN_NAME); Reporter.log("Alert Email Plugin variables Result: " + response.toString(), true); From fe202ad42a857e6d370603ff702d49a61c49afd8 Mon Sep 17 00:00:00 2001 From: Jeeva Kandasamy Date: Thu, 8 Oct 2015 15:44:47 +0530 Subject: [PATCH 11/11] Fixed checkstyle error: Array brackets at illegal position --- .../client/test/metrics/openshift/CollectionRateDetailTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/hawkular/client/test/metrics/openshift/CollectionRateDetailTest.java b/src/test/java/org/hawkular/client/test/metrics/openshift/CollectionRateDetailTest.java index 364edb4..c4d045e 100644 --- a/src/test/java/org/hawkular/client/test/metrics/openshift/CollectionRateDetailTest.java +++ b/src/test/java/org/hawkular/client/test/metrics/openshift/CollectionRateDetailTest.java @@ -85,7 +85,7 @@ private void getData(String metricID, String testID, long start, long end, Durat double[] d = ArrayUtils.toPrimitive(result); // drop the first and last as they are usually outliers - double samples[] = Arrays.copyOfRange(d,1, d.length-1); + double[] samples = Arrays.copyOfRange(d,1, d.length-1); DescriptiveStatistics stats = new DescriptiveStatistics(samples); Reporter.log(hist.toString(), true);