You're on your way to the next level! Join the Kudos program to earn points and save your progress.
Level 1: Seed
25 / 150 points
Next: Root
1 badge earned
Challenges come and go, but your rewards stay with you. Do more to earn more!
What goes around comes around! Share the love by gifting kudos to your peers.
Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!
Join now to unlock these features and more
I follow the page https://docs.opsgenie.com/docs/opsgenie-java-api to download the java SDK and use the sample code in this document page to create, close, delete, get current all alerts. I successfully can get all the alerts ( alerts created via Default API from the web page) and delete an alert by using OpsGenie Java SDK. However, when I try to create, close, and ack an alert via the java SDK, I am getting a same error. below is error from "ack" an alert. I am not sure what the real problem here in my test code. Of course I have all the libraries (+ third_party) from the SDK on my classpath in order to have List and Delete working, so I don't think I miss any libraries. My ant build already merge all the SDK libraries into my test jar file and here is for reference:
<zipgroupfileset dir="../opsgenie-java-sdk/third_party" includes="**.jar" />
<zipgroupfileset dir="../opsgenie-java-sdk" includes="**.jar" />
Here is my error capture:
Here is my Test code for reference:
package com.networks.tol.alert;
import java.util.ArrayList;
import java.util.List;
import com.ifountain.opsgenie.client.swagger.api.AlertApi;
import com.ifountain.opsgenie.client.swagger.model.AcknowledgeAlertRequest;
import com.ifountain.opsgenie.client.swagger.model.BaseAlert;
import com.ifountain.opsgenie.client.swagger.model.CloseAlertRequest;
import com.ifountain.opsgenie.client.swagger.model.CreateAlertRequest;
import com.ifountain.opsgenie.client.swagger.model.CreateAlertRequest.PriorityEnum;
import com.ifountain.opsgenie.client.swagger.model.DeleteAlertRequest;
import com.ifountain.opsgenie.client.swagger.model.ListAlertsRequest;
import com.ifountain.opsgenie.client.swagger.model.ListAlertsResponse;
import com.ifountain.opsgenie.client.swagger.model.Recipient;
import com.ifountain.opsgenie.client.swagger.model.Recipient.TypeEnum;
import com.ifountain.opsgenie.client.swagger.model.SuccessResponse;
import com.ifountain.opsgenie.client.swagger.model.TeamRecipient;
import com.ifountain.opsgenie.client.swagger.model.UserRecipient;
import com.ifountain.opsgenie.client.OpsGenieClient;
import com.ifountain.opsgenie.client.swagger.ApiException;
public class OpsGenieAlertMgr
{
String defaultApiKey = "I do have a valid key here";
String action;
String apiKey;
String message = null;
String alias = null;
String desc = null;
String recipient = null;
String visibleRecipient = null;
String actions = null;
String tags = null;
String entity = null;
String priority = null;
String user = null;
String note = null;
String id = null;
String tinyId = null;
String[] params;
public OpsGenieAlertMgr(String[] params)
{
this.params = params;
////////////////process args here
int optindex = 0;
int count = 0;
final int MaxLoop = 100;
// look for action and api key only;
while (optindex < params.length && count < MaxLoop) {
count++;
int remaining = params.length - optindex;
if (params[optindex].equals("-action")) {
if (remaining > 1) {
action = params[optindex + 1];
System.out.println("action=" + action);
}
optindex += 2;
} else if (params[optindex].equals("-key")) {
if (remaining > 1) {
apiKey = params[optindex + 1];
System.out.println("apiKey=" + apiKey);
}
optindex += 2;
}
else if (params[optindex].equals("-m")) {
if (remaining > 1) {
message = params[optindex + 1];
System.out.println("message=" + message);
}
optindex += 2;
} else if (params[optindex].equals("-d")) {
if (remaining > 1) {
desc = params[optindex + 1];
System.out.println("desc=" + desc);
}
optindex += 2;
} else if (params[optindex].equals("-r")) {
if (remaining > 1) {
recipient = params[optindex + 1];
System.out.println("recipient=" + recipient);
}
optindex += 2;
} else if (params[optindex].equals("-vr")) {
if (remaining > 1) {
visibleRecipient = params[optindex + 1];
System.out.println("visibleRecipient=" + visibleRecipient);
}
optindex += 2;
} else if (params[optindex].equals("-a")) {
if (remaining > 1) {
actions = params[optindex + 1];
System.out.println("actions=" + actions);
}
optindex += 2;
} else if (params[optindex].equals("-t")) {
if (remaining > 1) {
tags = params[optindex + 1];
System.out.println("tags=" + tags);
}
optindex += 2;
}
else if (params[optindex].equals("-e")) {
if (remaining > 1) {
entity = params[optindex + 1];
System.out.println("entity=" + entity);
}
optindex += 2;
}
else if (params[optindex].equals("-p")) {
if (remaining > 1) {
priority = params[optindex + 1];
System.out.println("priority=" + priority);
}
optindex += 2;
}
else if (params[optindex].equals("-u")) {
if (remaining > 1) {
user = params[optindex + 1];
System.out.println("user=" + user);
}
optindex += 2;
}
else if (params[optindex].equals("-n")) {
if (remaining > 1) {
note = params[optindex + 1];
System.out.println("note=" + note);
}
optindex += 2;
}
else if (params[optindex].equals("-id")) {
if (remaining > 1) {
id = params[optindex + 1];
System.out.println("id=" + id);
}
optindex += 2;
}
else if (params[optindex].equals("-tid")) {
if (remaining > 1) {
tinyId = params[optindex + 1];
System.out.println("tinyId=" + tinyId);
}
optindex += 2;
}
else
{
optindex += 1;
}
}
///////////////
}
private String getKey()
{
if( apiKey == null || apiKey.length() == 0)
return this.defaultApiKey;
else
return apiKey;
}
public SuccessResponse createAlert(String[] params) throws IllegalArgumentException
{
// look for create alert data
if(message == null)
throw new IllegalArgumentException("alert message is empty");
if(recipient == null)
recipient = "OpsG Administrator";
if(alias == null)
alias = "No Alias1";
if(desc==null)
desc = "No description";
if(visibleRecipient==null)
visibleRecipient = recipient;
if(actions==null)
actions = "No actions";
if(tags==null)
tags = "No tags";
if(entity==null)
entity = "No entity";
if(user==null)
user = "dt.pham@parsons.com";
if(note==null)
note = "Alert Create";
AlertApi client = new OpsGenieClient().alertV2();
client.getApiClient().setApiKey(getKey());
CreateAlertRequest request = new CreateAlertRequest();
request.setMessage(message);
request.setAlias(alias + "-" + System.currentTimeMillis());
request.setDescription(desc);
request.setTeams(toTeamRecipients(recipient));
request.setVisibleTo(toVisibleRecipients(visibleRecipient));
request.setActions(getStringList(actions));
request.setTags(getStringList(tags));
request.setEntity(entity);
request.setPriority(getPriority(priority));
request.setUser(user);
request.setNote(note);
SuccessResponse response = null;
try {
response = client.createAlert(request);
printResp(response);
return response;
} catch (ApiException e) {
e.printStackTrace();
}
return response;
}
private void printResp(SuccessResponse response) {
Float took = response.getTook();
String requestId = response.getRequestId();
String respMessage = response.getResult();
System.out.println("Response: action '" + action + "' took " + took + ". reqId=" +requestId + ". resp=" + respMessage);
}
private PriorityEnum getPriority(String priority) {
if("1".equals(priority))
return CreateAlertRequest.PriorityEnum.P1;
else if("2".equals(priority))
return CreateAlertRequest.PriorityEnum.P2;
else if("3".equals(priority))
return CreateAlertRequest.PriorityEnum.P3;
else if("4".equals(priority))
return CreateAlertRequest.PriorityEnum.P4;
else if("5".equals(priority))
return CreateAlertRequest.PriorityEnum.P5;
else
return CreateAlertRequest.PriorityEnum.P1;
}
private List<String> getStringList(String values) {
List<String> reps= new ArrayList<String>();
String [] rcps = values.split(",");
for(String rcp: rcps)
{
reps.add(rcp);
}
return reps;
}
private List<Recipient> toVisibleRecipients(String visibleRecipient) {
List<Recipient> reps= new ArrayList<Recipient>();
// valid user hard code for testing
Recipient tp = new UserRecipient();
tp.setId("a35e7ff7-421a-48c9-b949-2443247dc57b-1578527320761");
tp.setType(TypeEnum.USER);
reps.add(tp);
return reps;
}
private List<TeamRecipient> toTeamRecipients(String recipient) {
List<TeamRecipient> reps= new ArrayList<TeamRecipient>();
TeamRecipient tp = new TeamRecipient();
// valid team hard code for testing
tp.setId("605bd3fb-ceef-4f26-9071-75fca61e14db");
tp.setType(TypeEnum.TEAM);
reps.add(tp);
return reps;
}
public SuccessResponse deleteAlert(String[] params) throws IllegalArgumentException
{
AlertApi client = new OpsGenieClient().alertV2();
client.getApiClient().setApiKey(getKey());
DeleteAlertRequest.IdentifierTypeEnum idType = DeleteAlertRequest.IdentifierTypeEnum.ID;
String theId = null;
if(id != null)
{
theId = id;
}
else if(tinyId != null)
{
theId = tinyId;
idType = DeleteAlertRequest.IdentifierTypeEnum.TINY;
}
if(theId == null)
{
throw new IllegalArgumentException("id and tinyId are null. Use -id ############## or -tid ### in command line");
}
if( entity == null )
entity = "System";
if( user == null)
user = "dt.pham@parsons.com";
DeleteAlertRequest request = new DeleteAlertRequest();
request.setIdentifier(theId);
request.setIdentifierType(idType);
request.setSource(entity);
request.setUser(user);
try {
SuccessResponse response = client.deleteAlert(request);
printResp(response);
return response;
} catch (ApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public SuccessResponse closeAlert(String[] params) throws IllegalArgumentException
{
AlertApi client = new OpsGenieClient().alertV2();
client.getApiClient().setApiKey(getKey());
CloseAlertRequest request = new CloseAlertRequest();
String idType = "id";
String theId = null;
if(id != null)
{
theId = id;
}
else if(tinyId != null)
{
theId = tinyId;
idType = "tiny";
}
if(theId == null)
{
throw new IllegalArgumentException("id and tinyId are null. Use -id ############## or -tid ### in command line");
}
if( entity == null )
entity = "System";
if( user == null)
user = "dt.pham@parsons.com";
request.setUser(user);
request.user(user);
request.setNote("Alert was unnecessary, closed by Java API");
request.setSource(entity);
try {
SuccessResponse response = client.closeAlert(theId, idType, request);
printResp(response);
return response;
} catch (ApiException e) {
e.printStackTrace();
}
return null;
}
public List<BaseAlert> getAlerts(String[] params)
{
System.out.println("Calling get first 20 alerts");
AlertApi client = new OpsGenieClient().alertV2();
client.getApiClient().setApiKey(getKey());
ListAlertsRequest request = new ListAlertsRequest();
//request.setQuery("status: open");
request.setLimit(20);
request.setOrder(ListAlertsRequest.OrderEnum.DESC);
request.setSort(ListAlertsRequest.SortEnum.CREATEDAT);
ListAlertsResponse response;
try {
response = client.listAlerts(request);
List<BaseAlert> alerts = response.getData();
for(BaseAlert alert: alerts)
{
System.out.println(alert.getId() + ". " + alert.getTinyId() + ". " + alert.getMessage() + ". " + alert.getOwner() + ". " + alert.getStatus());
}
return alerts;
} catch (ApiException e) {
e.printStackTrace();
}
return null;
}
public SuccessResponse ackAlert(String[] params) throws IllegalArgumentException
{
AlertApi client = new OpsGenieClient().alertV2();
client.getApiClient().setApiKey(getKey());
AcknowledgeAlertRequest request = new AcknowledgeAlertRequest();
String idType = "id";
String theId = null;
if(id != null)
{
theId = id;
}
else if(tinyId != null)
{
theId = tinyId;
idType = "tiny";
}
if(theId == null)
{
throw new IllegalArgumentException("id and tinyId are null. Use -id ############## or -tid ### in command line");
}
if( entity == null )
entity = "System";
if( user == null)
user = "dt.pham@parsons.com";
request.setUser(user);
request.user(user);
request.setNote("Alert was unnecessary, closed by Java API");
request.setSource(entity);
try {
SuccessResponse response = client.acknowledgeAlert(theId, idType, request);
printResp(response);
return response;
} catch (ApiException e) {
e.printStackTrace();
}
return null;
}
public Object process(String[] params)
{
if("create".equalsIgnoreCase(action))
return createAlert(params);
else if("delete".equalsIgnoreCase(action))
return deleteAlert(params);
else if("close".equalsIgnoreCase(action))
return closeAlert(params);
else if("get".equalsIgnoreCase(action))
return getAlerts(params);
else if("ack".equalsIgnoreCase(action))
return ackAlert(params);
else
throw new RuntimeException("Unexpect action " + action);
}
public static void main(String[] args) {
OpsGenieAlertMgr alertMgr = new OpsGenieAlertMgr(args);
alertMgr.process(args);
}
}
@DT_Pham glad you got it working! Thanks for posting and sharing your experience. :)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.