use of org.opennms.api.integration.ticketing.PluginException in project opennms by OpenNMS.
the class JiraTicketerPlugin method saveOrUpdateInternal.
private void saveOrUpdateInternal(Ticket ticket, JiraRestClient jira) throws PluginException {
Config config = getConfig();
if (ticket.getId() == null || ticket.getId().equals("")) {
// If we can't find a ticket with the specified ID then create one.
IssueInputBuilder builder = new IssueInputBuilder(config.getProjectKey(), config.getIssueTypeId());
builder.setReporterName(config.getUsername());
builder.setSummary(ticket.getSummary());
builder.setDescription(ticket.getDetails());
populateFields(ticket, builder);
BasicIssue createdIssue;
try {
createdIssue = jira.getIssueClient().createIssue(builder.build()).get();
} catch (InterruptedException | ExecutionException e) {
throw new PluginException("Failed to create issue.", e);
}
LOG.info("created ticket " + createdIssue);
ticket.setId(createdIssue.getKey());
} else {
// Otherwise update the existing ticket
LOG.info("Received ticket: {}", ticket.getId());
Issue issue;
try {
issue = jira.getIssueClient().getIssue(ticket.getId()).get();
} catch (InterruptedException | ExecutionException e) {
throw new PluginException("Failed to get issue with id:" + ticket.getId(), e);
}
Iterable<Transition> transitions;
try {
transitions = jira.getIssueClient().getTransitions(issue).get();
} catch (InterruptedException | ExecutionException e) {
throw new PluginException("Failed to get transitions for issue with id:" + issue.getId(), e);
}
if (Ticket.State.CLOSED.equals(ticket.getState())) {
Comment comment = Comment.valueOf("Issue resolved by OpenNMS.");
for (Transition transition : transitions) {
if (config.getResolveTransitionName().equals(transition.getName())) {
LOG.info("Resolving ticket {}", ticket.getId());
// Resolve the issue
try {
jira.getIssueClient().transition(issue, new TransitionInput(transition.getId(), comment)).get();
} catch (InterruptedException | ExecutionException e) {
throw new PluginException("Failed to get resolve issue with id:" + issue.getId(), e);
}
return;
}
}
LOG.warn("Could not resolve ticket {}, no '{}' operation available.", ticket.getId(), getConfig().getResolveTransitionName());
} else if (Ticket.State.OPEN.equals(ticket.getState())) {
Comment comment = Comment.valueOf("Issue reopened by OpenNMS.");
for (Transition transition : transitions) {
if (getConfig().getReopentransitionName().equals(transition.getName())) {
LOG.info("Reopening ticket {}", ticket.getId());
// Resolve the issue
try {
jira.getIssueClient().transition(issue, new TransitionInput(transition.getId(), comment)).get();
} catch (InterruptedException | ExecutionException e) {
throw new PluginException("Failed to reopen issue with id:" + issue.getId(), e);
}
return;
}
}
LOG.warn("Could not reopen ticket {}, no '{}' operation available.", ticket.getId(), getConfig().getReopentransitionName());
}
}
}
use of org.opennms.api.integration.ticketing.PluginException in project opennms by OpenNMS.
the class RemedyTicketerPluginTest method testSaveAndGet.
public void testSaveAndGet() {
try {
m_ticketer.saveOrUpdate(m_ticket);
m_ticketId = m_ticket.getId();
Ticket ticket = m_ticketer.get(m_ticketId);
assertEquals(m_ticketId, ticket.getId());
assertEquals(State.OPEN, ticket.getState());
} catch (PluginException e) {
e.printStackTrace();
}
}
use of org.opennms.api.integration.ticketing.PluginException in project opennms by OpenNMS.
the class OtrsTicketerPluginTest method testStateUpdate.
/*
* This test deliberately removed.
* As there is no two way update, there is no need to ensure that
* the OTRS ticket contents and the OpenNMS ticket contents match
* after the initial save.
*
* public void testUpdate() {
*
* String firstArticle = new String("First Article");
* String secondArticle = new String("Second Article");
*
* // save with first article
*
* m_ticket.setDetails(firstArticle);
*
* m_ticketer.saveOrUpdate(m_ticket);
*
* // update with first article
*
* m_ticket.setDetails(secondArticle);
*
* m_ticketer.saveOrUpdate(m_ticket);
*
* // get a clean copy from the ID
*
* Ticket retrievedTicket = m_ticketer.get(m_ticket.getId());
*
* // compare the opennms ticket to one retrieved from OTRS
*
* assertTicketEquals(m_ticket, retrievedTicket);
*
* // should also have the first article as history
*
* // ensure that old ticket details still exist somewhere in the OTRS ticket
*
* if (retrievedTicket.getDetails().indexOf(firstArticle) <= 0 ) {
* fail("could not find " + firstArticle + " in " + retrievedTicket.getDetails());
* }
*
* }
*/
public void testStateUpdate() throws InterruptedException {
try {
m_ticketer.saveOrUpdate(m_ticket);
// my new ticket should be open
assertEquals(m_ticket.getState(), Ticket.State.OPEN);
// set it cancelled
m_ticket.setState(Ticket.State.CANCELLED);
// and save it
m_ticketer.saveOrUpdate(m_ticket);
// sleep for a bit
Thread.sleep(100);
// get a new copy
Ticket retrievedTicket = m_ticketer.get(m_ticket.getId());
// my new copy should be closed
assertEquals(retrievedTicket.getState(), Ticket.State.CANCELLED);
} catch (PluginException e) {
e.printStackTrace();
}
}
use of org.opennms.api.integration.ticketing.PluginException in project opennms by OpenNMS.
the class OtrsTicketerPluginTest method testSave.
public void testSave() {
Ticket retrievedTicket = null;
try {
m_ticketer.saveOrUpdate(m_ticket);
retrievedTicket = m_ticketer.get(m_ticket.getId());
} catch (PluginException e) {
e.printStackTrace();
}
assertTicketEquals(m_ticket, retrievedTicket);
}
use of org.opennms.api.integration.ticketing.PluginException in project opennms by OpenNMS.
the class RemedyTicketerPluginTest method testClosedToCancelledStatus.
public void testClosedToCancelledStatus() {
testSaveAndGet();
try {
Ticket ticket = m_ticketer.get(m_ticketId);
assertEquals(State.OPEN, ticket.getState());
//Close the Ticket
m_ticket.setState(State.CLOSED);
m_ticketer.saveOrUpdate(m_ticket);
ticket = m_ticketer.get(m_ticketId);
assertEquals(State.CLOSED, ticket.getState());
//Cancel the Ticket
m_ticket.setState(State.CANCELLED);
m_ticketer.saveOrUpdate(m_ticket);
ticket = m_ticketer.get(m_ticketId);
assertEquals(State.CANCELLED, ticket.getState());
// try to re open
m_ticket.setState(State.OPEN);
m_ticketer.saveOrUpdate(m_ticket);
// but still cancelled
ticket = m_ticketer.get(m_ticketId);
assertEquals(State.CANCELLED, ticket.getState());
// try to close
m_ticket.setState(State.CLOSED);
m_ticketer.saveOrUpdate(m_ticket);
// but still cancelled
ticket = m_ticketer.get(m_ticketId);
assertEquals(State.CANCELLED, ticket.getState());
} catch (PluginException e) {
e.printStackTrace();
}
}
Aggregations