/** * Retrieves the plugin that is currently registered. * * If no plugin is currently registered, this full will throw a {@link PluginException} * instead of returning null. * * @return the currently registered plugin * @throws PluginException when no plugin is currently registered */ public Plugin getTicketerPlugin() throws PluginException { if (m_ticketerPlugin == null) { throw new PluginException("No ticketing plugin is currently registered."); } return m_ticketerPlugin; } }
/** {@inheritDoc} */ @Override public void cancelTicketForAlarm(int alarmId, String ticketId) { OnmsAlarm alarm = m_alarmDao.get(alarmId); if (alarm == null) { LOG.error("No alarm with id {} was found. Ticket with id '{}' will not be canceled.", alarmId, ticketId); return; } try { setTicketState(ticketId, Ticket.State.CANCELLED); alarm.setTTicketState(TroubleTicketState.CANCELLED); } catch (PluginException e) { alarm.setTTicketState(TroubleTicketState.CANCEL_FAILED); LOG.error("Unable to cancel ticket for alarm: {}", e.getMessage(), e); m_eventIpcManager.sendNow(createEvent(e.getMessage())); } m_alarmDao.saveOrUpdate(alarm); }
/** * Retrieves the plugin that is currently registered. * * If no plugin is currently registered, this full will throw a {@link PluginException} * instead of returning null. * * @return the currently registered plugin * @throws PluginException when no plugin is currently registered */ public Plugin getTicketerPlugin() throws PluginException { if (m_ticketerPlugin == null) { throw new PluginException("No ticketing plugin is currently registered."); } return m_ticketerPlugin; } }
/** {@inheritDoc} */ @Override public void cancelTicketForAlarm(int alarmId, String ticketId) { OnmsAlarm alarm = m_alarmDao.get(alarmId); if (alarm == null) { LOG.error("No alarm with id {} was found. Ticket with id '{}' will not be canceled.", alarmId, ticketId); return; } try { setTicketState(ticketId, Ticket.State.CANCELLED); alarm.setTTicketState(TroubleTicketState.CANCELLED); } catch (PluginException e) { alarm.setTTicketState(TroubleTicketState.CANCEL_FAILED); LOG.error("Unable to cancel ticket for alarm: {}", e.getMessage(), e); m_eventIpcManager.sendNow(createEvent(e.getMessage())); } m_alarmDao.saveOrUpdate(alarm); }
@Override public void saveOrUpdate(Ticket ticket) throws PluginException { try (JiraRestClient client = getConnection()) { saveOrUpdateInternal(ticket, client); } catch (IOException e) { throw new PluginException(e); } }
/** {@inheritDoc} */ @Override public void closeTicketForAlarm(int alarmId, String ticketId) { OnmsAlarm alarm = m_alarmDao.get(alarmId); if (alarm == null) { LOG.error("No alarm with id {} was found. Ticket with id '{}' will not be closed.", alarmId, ticketId); return; } if (SKIP_CLOSE_WHEN_NOT_CLEARED) { final OnmsSeverity currentSeverity = alarm.getSeverity(); if (currentSeverity != null && !currentSeverity.equals(OnmsSeverity.CLEARED)) { LOG.info("Alarm with id {} is not currently cleared. Ticket with id '{}' will not be closed.", alarmId, ticketId); return; } } try { setTicketState(ticketId, State.CLOSED); alarm.setTTicketState(TroubleTicketState.CLOSED); } catch (PluginException e) { alarm.setTTicketState(TroubleTicketState.CLOSE_FAILED); LOG.error("Unable to close ticket for alarm: {}", e.getMessage(), e); m_eventIpcManager.sendNow(createEvent(e.getMessage())); } m_alarmDao.saveOrUpdate(alarm); }
@Override public void saveOrUpdate(Ticket ticket) throws PluginException { try (JiraRestClient client = getConnection()) { saveOrUpdateInternal(ticket, client); } catch (IOException e) { throw new PluginException(e); } }
/** {@inheritDoc} */ @Override public void closeTicketForAlarm(int alarmId, String ticketId) { OnmsAlarm alarm = m_alarmDao.get(alarmId); if (alarm == null) { LOG.error("No alarm with id {} was found. Ticket with id '{}' will not be closed.", alarmId, ticketId); return; } if (SKIP_CLOSE_WHEN_NOT_CLEARED) { final OnmsSeverity currentSeverity = alarm.getSeverity(); if (currentSeverity != null && !currentSeverity.equals(OnmsSeverity.CLEARED)) { LOG.info("Alarm with id {} is not currently cleared. Ticket with id '{}' will not be closed.", alarmId, ticketId); return; } } try { setTicketState(ticketId, State.CLOSED); alarm.setTTicketState(TroubleTicketState.CLOSED); } catch (PluginException e) { alarm.setTTicketState(TroubleTicketState.CLOSE_FAILED); LOG.error("Unable to close ticket for alarm: {}", e.getMessage(), e); m_eventIpcManager.sendNow(createEvent(e.getMessage())); } m_alarmDao.saveOrUpdate(alarm); }
/** * Implementation of TicketerPlugin API call to retrieve a Jira trouble ticket. * * @return an OpenNMS * @throws PluginException */ @Override public Ticket get(String ticketId) throws PluginException { try (JiraRestClient client = getConnection()) { return getInternal(ticketId, client); } catch (IOException e) { throw new PluginException(e); } }
/** {@inheritDoc} */ @Override public void createTicketForAlarm(int alarmId, Map<String,String> attributes) { OnmsAlarm alarm = m_alarmDao.get(alarmId); if (alarm == null) { LOG.error("No alarm with id {} was found. No ticket will be created.", alarmId); return; } if (SKIP_CREATE_WHEN_CLEARED) { final OnmsSeverity currentSeverity = alarm.getSeverity(); if (currentSeverity != null && currentSeverity.equals(OnmsSeverity.CLEARED)) { LOG.info("Alarm with id {} is currently cleared. No ticket will be created.", alarmId); return; } } Ticket ticket = createTicketFromAlarm(alarm, attributes); try { m_ticketerPlugin.saveOrUpdate(ticket); alarm.setTTicketId(ticket.getId()); alarm.setTTicketState(TroubleTicketState.OPEN); } catch (PluginException e) { alarm.setTTicketState(TroubleTicketState.CREATE_FAILED); LOG.error("Unable to create ticket for alarm: {}", e.getMessage(), e); m_eventIpcManager.sendNow(createEvent(e.getMessage())); } m_alarmDao.saveOrUpdate(alarm); }
/** * Implementation of TicketerPlugin API call to retrieve a Jira trouble ticket. * * @return an OpenNMS * @throws PluginException */ @Override public Ticket get(String ticketId) throws PluginException { try (JiraRestClient client = getConnection()) { return getInternal(ticketId, client); } catch (IOException e) { throw new PluginException(e); } }
/** {@inheritDoc} */ @Override public void updateTicketForAlarm(int alarmId, String ticketId) { OnmsAlarm alarm = m_alarmDao.get(alarmId); if (alarm == null) { LOG.error("No alarm with id {} was found. Ticket with id '{}' will not be updated.", alarmId, ticketId); return; } Ticket ticket = null; try { ticket = m_ticketerPlugin.get(ticketId); if (ticket.getState() == Ticket.State.CANCELLED) { alarm.setTTicketState(TroubleTicketState.CANCELLED); } else if (ticket.getState() == Ticket.State.CLOSED) { alarm.setTTicketState(TroubleTicketState.CLOSED); } else if (ticket.getState() == Ticket.State.OPEN) { alarm.setTTicketState(TroubleTicketState.OPEN); } else { alarm.setTTicketState(TroubleTicketState.OPEN); } } catch (PluginException e) { alarm.setTTicketState(TroubleTicketState.UPDATE_FAILED); LOG.error("Unable to update ticket for alarm: {}", e.getMessage()); m_eventIpcManager.sendNow(createEvent(e.getMessage())); } m_alarmDao.saveOrUpdate(alarm); }
public static JiraRestClient createConnection(String url, String username, String password) throws PluginException { try { final URI jiraUri = new URL(url).toURI(); if (Strings.isNullOrEmpty(username)) { return new AsynchronousJiraRestClientFactory().create(jiraUri, new AnonymousAuthenticationHandler()); } return new AsynchronousJiraRestClientFactory().createWithBasicHttpAuthentication(jiraUri, username, password); } catch (MalformedURLException | URISyntaxException e) { throw new PluginException("Failed to parse URL: " + url); } } }
/** {@inheritDoc} */ @Override public void updateTicketForAlarm(int alarmId, String ticketId) { OnmsAlarm alarm = m_alarmDao.get(alarmId); if (alarm == null) { LOG.error("No alarm with id {} was found. Ticket with id '{}' will not be updated.", alarmId, ticketId); return; } Ticket ticket = null; try { ticket = m_ticketerPlugin.get(ticketId); if (ticket.getState() == Ticket.State.CANCELLED) { alarm.setTTicketState(TroubleTicketState.CANCELLED); } else if (ticket.getState() == Ticket.State.CLOSED) { alarm.setTTicketState(TroubleTicketState.CLOSED); } else if (ticket.getState() == Ticket.State.OPEN) { alarm.setTTicketState(TroubleTicketState.OPEN); } else { alarm.setTTicketState(TroubleTicketState.OPEN); } } catch (PluginException e) { alarm.setTTicketState(TroubleTicketState.UPDATE_FAILED); LOG.error("Unable to update ticket for alarm: {}", e.getMessage()); m_eventIpcManager.sendNow(createEvent(e.getMessage())); } m_alarmDao.saveOrUpdate(alarm); }
public static JiraRestClient createConnection(String url, String username, String password) throws PluginException { try { final URI jiraUri = new URL(url).toURI(); if (Strings.isNullOrEmpty(username)) { return new AsynchronousJiraRestClientFactory().create(jiraUri, new AnonymousAuthenticationHandler()); } return new AsynchronousJiraRestClientFactory().createWithBasicHttpAuthentication(jiraUri, username, password); } catch (MalformedURLException | URISyntaxException e) { throw new PluginException("Failed to parse URL: " + url); } } }
} catch (PluginException e) { alarm.setTTicketState(TroubleTicketState.CREATE_FAILED); LOG.error("Unable to create ticket for alarm: {}", e.getMessage(), e); m_eventIpcManager.sendNow(createEvent(e.getMessage()));
/** * Convenience method for initialising the ticketServicePort and correctly setting the endpoint. * * @return TicketServicePort to connect to the remote service. */ private HPD_IncidentInterface_Create_WSPortTypePortType getCreateTicketServicePort(String portname, String endpoint) throws PluginException { HPD_IncidentInterface_Create_WSServiceLocator service = new HPD_IncidentInterface_Create_WSServiceLocator(); HPD_IncidentInterface_Create_WSPortTypePortType port = null; try { service.setEndpointAddress(portname, endpoint); port = service.getHPD_IncidentInterface_Create_WSPortTypeSoap(); } catch (ServiceException e) { LOG.error("Failed initialzing Remedy TicketServicePort", e); throw new PluginException("Failed initialzing Remedy TicketServicePort", e); } return port; } }
/** * Convenience method for initializing the ticketServicePort and correctly setting the endpoint. * * @return TicketServicePort to connect to the remote service. */ private HPD_IncidentInterface_WSPortTypePortType getTicketServicePort(String portname, String endpoint) throws PluginException { HPD_IncidentInterface_WSServiceLocator service = new HPD_IncidentInterface_WSServiceLocator(); HPD_IncidentInterface_WSPortTypePortType port = null; try { service.setEndpointAddress(portname, endpoint); port = service.getHPD_IncidentInterface_WSPortTypeSoap(); } catch (ServiceException e) { LOG.error("Failed initialzing Remedy TicketServicePort", e); throw new PluginException("Failed initialzing Remedy TicketServicePort", e); } return port; }
/** * Convenience method for initialising the ticketServicePort and correctly setting the endpoint. * * @return TicketServicePort to connect to the remote service. */ private TicketServicePort_PortType getTicketServicePort(String endpoint) throws PluginException { TicketServiceLocator service = new TicketServiceLocator(); service.setTicketServicePortEndpointAddress(endpoint); TicketServicePort_PortType port = null; try { port = service.getTicketServicePort(); } catch (ServiceException e) { LOG.error("Failed initialzing OTRS TicketServicePort", e); throw new PluginException("Failed initialzing OTRS TicketServicePort"); } return port; }
private void save(Ticket newTicket) throws PluginException { HPD_IncidentInterface_Create_WSPortTypePortType port = getCreateTicketServicePort(m_createportname,m_createendpoint); try { String incident_number = port.helpDesk_Submit_Service(getRemedyAuthenticationHeader(), getRemedyCreateInputMap(newTicket)).getIncident_Number(); LOG.debug("created new remedy ticket with reported incident number: {}", incident_number); newTicket.setId(incident_number); } catch (RemoteException e) { e.printStackTrace(); throw new PluginException("Problem saving ticket", e); } }