/**
* NOTE: This copyright does *not* cover user programs that use HQ
* program services by normal system calls through the application
* program interfaces provided as part of the Hyperic Plug-in Development
* Kit or the Hyperic Client Development Kit - this is merely considered
* normal use of the program, and does *not* fall under the heading of
* "derived work".
*
* Copyright (C) [2009-2010], VMware, Inc.
* This file is part of HQ.
*
* HQ is free software; you can redistribute it and/or modify
* it under the terms version 2 of the GNU General Public License as
* published by the Free Software Foundation. This program is distributed
* in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*
*/
package org.hyperic.hq.bizapp.shared;
import java.util.List;
import java.util.Map;
import javax.security.auth.login.LoginException;
import org.hyperic.hq.appdef.shared.AppdefEntityID;
import org.hyperic.hq.appdef.shared.AppdefEntityNotFoundException;
import org.hyperic.hq.appdef.shared.AppdefEntityTypeID;
import org.hyperic.hq.auth.shared.SessionException;
import org.hyperic.hq.auth.shared.SessionNotFoundException;
import org.hyperic.hq.auth.shared.SessionTimeoutException;
import org.hyperic.hq.authz.server.session.AuthzSubject;
import org.hyperic.hq.authz.shared.PermissionException;
import org.hyperic.hq.common.ApplicationException;
import org.hyperic.hq.common.DuplicateObjectException;
import org.hyperic.hq.escalation.server.session.Escalatable;
import org.hyperic.hq.escalation.server.session.Escalation;
import org.hyperic.hq.escalation.server.session.EscalationAlertType;
import org.hyperic.hq.escalation.server.session.EscalationState;
import org.hyperic.hq.events.ActionConfigInterface;
import org.hyperic.hq.events.ActionCreateException;
import org.hyperic.hq.events.ActionExecuteException;
import org.hyperic.hq.events.AlertConditionCreateException;
import org.hyperic.hq.events.AlertDefinitionCreateException;
import org.hyperic.hq.events.AlertNotFoundException;
import org.hyperic.hq.events.MaintenanceEvent;
import org.hyperic.hq.events.TriggerCreateException;
import org.hyperic.hq.events.server.session.Action;
import org.hyperic.hq.events.server.session.Alert;
import org.hyperic.hq.events.shared.ActionValue;
import org.hyperic.hq.events.shared.AlertDefinitionValue;
import org.hyperic.util.ConfigPropertyException;
import org.hyperic.util.config.ConfigResponse;
import org.hyperic.util.config.ConfigSchema;
import org.hyperic.util.config.InvalidOptionException;
import org.hyperic.util.config.InvalidOptionValueException;
import org.hyperic.util.pager.PageControl;
import org.hyperic.util.pager.PageList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.quartz.SchedulerException;
import org.springframework.transaction.annotation.Transactional;
/**
* Local interface for EventsBoss.
*/
public interface EventsBoss {
/**
* Get the number of alerts for the given array of AppdefEntityID's
*/
public int[] getAlertCount(int sessionID, org.hyperic.hq.appdef.shared.AppdefEntityID[] ids)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Get the number of alerts for the given array of AppdefEntityID's, mapping AppdefEntityID to it's alerts count
*
*/
@Transactional(readOnly = true)
public Map<AppdefEntityID, Integer> getAlertCountMapped(int sessionID, AppdefEntityID[] ids)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Create an alert definition
*/
public AlertDefinitionValue createAlertDefinition(int sessionID, AlertDefinitionValue adval)
throws org.hyperic.hq.events.AlertDefinitionCreateException, PermissionException,
InvalidOptionException, InvalidOptionValueException, SessionException;
/**
* Create an alert definition for a resource type
*/
public AlertDefinitionValue createResourceTypeAlertDefinition(int sessionID,
AppdefEntityTypeID aetid,
AlertDefinitionValue adval)
throws org.hyperic.hq.events.AlertDefinitionCreateException, PermissionException,
InvalidOptionException, InvalidOptionValueException, SessionNotFoundException,
SessionTimeoutException;
public Action createAction(int sessionID, Integer adid, String className, ConfigResponse config)
throws SessionNotFoundException, SessionTimeoutException, ActionCreateException,
PermissionException;
/**
* Activate/deactivate a collection of alert definitions
*/
public void activateAlertDefinitions(int sessionID, java.lang.Integer[] ids, boolean activate)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Activate or deactivate alert definitions by AppdefEntityID.
*/
public void activateAlertDefinitions(int sessionID,
org.hyperic.hq.appdef.shared.AppdefEntityID[] eids,
boolean activate) throws SessionNotFoundException,
SessionTimeoutException, AppdefEntityNotFoundException, PermissionException;
/**
* Update just the basics
*/
public void updateAlertDefinitionBasic(int sessionID, Integer alertDefId, String name,
String desc, int priority, boolean activate)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
public void updateAlertDefinition(int sessionID, AlertDefinitionValue adval)
throws TriggerCreateException, InvalidOptionException, InvalidOptionValueException,
AlertConditionCreateException, ActionCreateException, SessionNotFoundException,
SessionTimeoutException;
/**
* Get actions for a given alert.
* @param alertId the alert id
*/
public List<ActionValue> getActionsForAlert(int sessionId, Integer alertId)
throws SessionNotFoundException, SessionTimeoutException;
/**
* Update an action
*/
public void updateAction(int sessionID, ActionValue aval) throws SessionNotFoundException,
SessionTimeoutException;
/**
* Delete a collection of alert definitions
*/
public void deleteAlertDefinitions(int sessionID, java.lang.Integer[] ids)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Delete list of alerts
*/
public void deleteAlerts(int sessionID, java.lang.Integer[] ids)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Delete all alerts for a list of alert definitions
*
*/
public int deleteAlertsForDefinitions(int sessionID, java.lang.Integer[] adids)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Get an alert definition by ID
*/
public AlertDefinitionValue getAlertDefinition(int sessionID, Integer id)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Find an alert by ID
*/
public Alert getAlert(int sessionID, Integer id) throws SessionNotFoundException,
SessionTimeoutException, AlertNotFoundException;
/**
* Get a list of all alert definitions
*/
public PageList<AlertDefinitionValue> findAllAlertDefinitions(int sessionID)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Get a collection of alert definitions for a resource
*/
public PageList<AlertDefinitionValue> findAlertDefinitions(int sessionID, AppdefEntityID id,
PageControl pc)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Get a collection of alert definitions for a resource or resource type
*/
public PageList<AlertDefinitionValue> findAlertDefinitions(int sessionID,
AppdefEntityTypeID id, PageControl pc)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Find all alert definition names for a resource
* @return Map of AlertDefinition names and IDs
*/
public Map<String, Integer> findAlertDefinitionNames(int sessionID, AppdefEntityID id,
Integer parentId)
throws SessionNotFoundException, SessionTimeoutException, AppdefEntityNotFoundException,
PermissionException;
/**
* Find all alerts for an appdef resource
*/
public PageList<Alert> findAlerts(int sessionID, AppdefEntityID id, long begin, long end,
PageControl pc) throws SessionNotFoundException,
SessionTimeoutException, PermissionException;
/**
* Search alerts given a set of criteria
* @param username the username
* @param count the maximum number of alerts to return
* @param priority allowable values: 0 (all), 1, 2, or 3
* @param timeRange the amount of time from current time to include
* @param ids the IDs of resources to include or null for ALL
* @return a list of {@link Escalatable}s
*/
public List<Escalatable> findRecentAlerts(String username, int count, int priority,
long timeRange,
org.hyperic.hq.appdef.shared.AppdefEntityID[] ids)
throws LoginException, ApplicationException, ConfigPropertyException;
/**
* Search recent alerts given a set of criteria
* @param sessionID the session token
* @param count the maximum number of alerts to return
* @param priority allowable values: 0 (all), 1, 2, or 3
* @param timeRange the amount of time from current time to include
* @param ids the IDs of resources to include or null for ALL
* @return a list of {@link Escalatable}s
*/
public List<Escalatable> findRecentAlerts(int sessionID, int count, int priority,
long timeRange,
org.hyperic.hq.appdef.shared.AppdefEntityID[] ids)
throws SessionNotFoundException, SessionTimeoutException, PermissionException;
/**
* Get config schema info for an action class
*/
public ConfigSchema getActionConfigSchema(int sessionID, String actionClass)
throws SessionNotFoundException, SessionTimeoutException,
org.hyperic.util.config.EncodingException;
/**
* Get config schema info for a trigger class
*/
public ConfigSchema getRegisteredTriggerConfigSchema(int sessionID, String triggerClass)
throws SessionNotFoundException, SessionTimeoutException,
org.hyperic.util.config.EncodingException;
public void deleteEscalationByName(int sessionID, String name) throws SessionTimeoutException,
SessionNotFoundException, PermissionException, org.hyperic.hq.common.ApplicationException;
public void deleteEscalationById(int sessionID, Integer id) throws SessionTimeoutException,
SessionNotFoundException, PermissionException, org.hyperic.hq.common.ApplicationException;
/**
* remove escalation by id
*/
public void deleteEscalationById(int sessionID, java.lang.Integer[] ids)
throws SessionTimeoutException, SessionNotFoundException, PermissionException,
org.hyperic.hq.common.ApplicationException;
/**
* retrieve escalation name by alert definition id.
*/
public Integer getEscalationIdByAlertDefId(int sessionID, Integer id,
EscalationAlertType alertType)
throws SessionTimeoutException, SessionNotFoundException, PermissionException;
/**
* set escalation name by alert definition id.
*/
public void setEscalationByAlertDefId(int sessionID, Integer id, Integer escId,
EscalationAlertType alertType)
throws SessionTimeoutException, SessionNotFoundException, PermissionException;
/**
* unset escalation by alert definition id.
*/
public void unsetEscalationByAlertDefId(int sessionID, Integer id, EscalationAlertType alertType)
throws SessionTimeoutException, SessionNotFoundException, PermissionException;
/**
* retrieve escalation JSONObject by alert definition id.
*/
public JSONObject jsonEscalationByAlertDefId(int sessionID, Integer id,
EscalationAlertType alertType)
throws org.hyperic.hq.auth.shared.SessionException, PermissionException, JSONException;
/**
* retrieve escalation object by escalation id.
*/
public Escalation findEscalationById(int sessionID, Integer id) throws SessionTimeoutException,
SessionNotFoundException, PermissionException;
public void addAction(int sessionID, Escalation e, ActionConfigInterface cfg, long waitTime)
throws SessionTimeoutException, SessionNotFoundException, PermissionException;
public void removeAction(int sessionID, Integer escId, Integer actId)
throws SessionTimeoutException, SessionNotFoundException, PermissionException;
/**
* Retrieve a list of {@link EscalationState}s, representing the active
* escalations in the system.
*/
public List<EscalationState> getActiveEscalations(int sessionId, int maxEscalations)
throws org.hyperic.hq.auth.shared.SessionException;
/**
* Gets the escalatable associated with the specified state
*/
public Escalatable getEscalatable(int sessionId, EscalationState state)
throws org.hyperic.hq.auth.shared.SessionException;
/**
* retrieve all escalation policy names as a Array of JSONObject. Escalation
* json finders begin with json* to be consistent with DAO finder convention
*/
public JSONArray listAllEscalationName(int sessionID) throws JSONException,
SessionTimeoutException, SessionNotFoundException, PermissionException;
/**
* Create a new escalation. If alertDefId is non-null, the escalation will
* also be associated with the given alert definition.
*/
public Escalation createEscalation(int sessionID, String name, String desc, boolean allowPause,
long maxWaitTime, boolean notifyAll, boolean repeat,
EscalationAlertType alertType, Integer alertDefId)
throws SessionTimeoutException, SessionNotFoundException, PermissionException,
DuplicateObjectException;
/**
* Update basic escalation properties
*/
public void updateEscalation(int sessionID, Escalation escalation, String name, String desc,
long maxWait, boolean pausable, boolean notifyAll, boolean repeat)
throws SessionTimeoutException, SessionNotFoundException, PermissionException,
DuplicateObjectException;
public boolean acknowledgeAlert(int sessionID, EscalationAlertType alertType, Integer alertID,
long pauseWaitTime, String moreInfo)
throws SessionTimeoutException, SessionNotFoundException, PermissionException,
ActionExecuteException;
/**
* Fix a single alert. Method is "NotSupported" since all the alert fixes
* may take longer than the transaction timeout. No need for a transaction
* in this context.
*/
public void fixAlert(int sessionID, EscalationAlertType alertType, Integer alertID,
String moreInfo) throws SessionTimeoutException, SessionNotFoundException,
PermissionException, ActionExecuteException;
/**
* Fix a batch of alerts. Method is "NotSupported" since all the alert fixes
* may take longer than the transaction timeout. No need for a transaction
* in this context.
*/
public void fixAlert(int sessionID, EscalationAlertType alertType, Integer alertID,
String moreInfo, boolean fixAllPrevious) throws SessionTimeoutException,
SessionNotFoundException, PermissionException, ActionExecuteException;
/**
* Get the last fix if available
*/
public String getLastFix(int sessionID, Integer defId) throws SessionNotFoundException,
SessionTimeoutException, PermissionException;
/**
* Get a maintenance event by group id
*/
public MaintenanceEvent getMaintenanceEvent(int sessionId, Integer groupId)
throws SessionNotFoundException, SessionTimeoutException, PermissionException,
SchedulerException;
/**
* Schedule a maintenance event
*/
public MaintenanceEvent scheduleMaintenanceEvent(int sessionId, MaintenanceEvent event)
throws SessionNotFoundException, SessionTimeoutException, PermissionException,
SchedulerException;
/**
* Schedule a maintenance event
*/
public void unscheduleMaintenanceEvent(int sessionId, MaintenanceEvent event)
throws SessionNotFoundException, SessionTimeoutException, PermissionException,
SchedulerException;
}