public void setGroupOperationHistory(GroupOperationHistory groupOperationHistory) { this.groupOperationHistory = groupOperationHistory; if (this.groupOperationHistory != null) { groupOperationHistory.addResourceOperationHistory(this); } }
if (doomedHistory.getStatus() != OperationRequestStatus.INPROGRESS) { throw new IllegalStateException("The group job is no longer in-progress - cannot cancel it: " + doomedHistory); List<ResourceOperationHistory> doomedResourceHistories = doomedHistory.getResourceOperationHistories(); for (ResourceOperationHistory doomedResourceHistory : doomedResourceHistories) { try { doomedHistory.setStatus(OperationRequestStatus.CANCELED); // we expect doomedHistory to be jpa attached notifyAlertConditionCacheManager("cancelGroupOperation", doomedHistory);
for (GroupOperationHistory groupHistory : groupHistories) { long timeout = getOperationTimeout(groupHistory.getOperationDefinition(), groupHistory.getParameters()); if (groupHistory.getDuration() < timeout) { for (ResourceOperationHistory resourceHistory : groupHistory.getResourceOperationHistories()) { if (resourceHistory.getStatus() == OperationRequestStatus.INPROGRESS) { groupHistory.setErrorMessage("This group operation timed out " + "before all child resource operations could complete normally, " + "those still in progress will attempt to be canceled."); groupHistory.setStatus(OperationRequestStatus.FAILURE); for (ResourceOperationHistory resourceHistory : groupHistory.getResourceOperationHistories()) { if (resourceHistory.getStatus() != OperationRequestStatus.SUCCESS) { groupHistory.setErrorMessage("One or more resource operations timed out and/or did not complete"); groupHistory.setStatus(groupStatus); groupHistory.setStatus(OperationRequestStatus.SUCCESS);
List<ResourceOperationHistory> allResourceHistories = groupHistory.getResourceOperationHistories(); boolean stillInProgress = false; // assume all are finished groupHistory.setErrorMessage((groupErrorMessage == null) ? null : groupErrorMessage.toString()); groupHistory.setStatus(groupStatus); notifyAlertConditionCacheManager("checkForCompletedGroupOperation", groupHistory);
List<ResourceOperationHistory> roh = groupHistory.getResourceOperationHistories(); if (roh != null && roh.size() > 0) { List<ResourceOperationHistory> attached = new ArrayList<ResourceOperationHistory>(roh.size()); attached.add(entityManager.getReference(ResourceOperationHistory.class, unattachedHistory.getId())); groupHistory.setResourceOperationHistories(attached);
groupHistory = new GroupOperationHistory(jobDetail.getName(), jobDetail.getGroup(), user.getName(), op, parameters, group); groupHistory.setErrorMessage(ThrowableUtil.getStackAsString(e)); groupHistory = (GroupOperationHistory) operationManager.updateOperationHistory( getUserWithSession(user, true), groupHistory); groupHistory.setErrorMessage(ThrowableUtil.getStackAsString(e)); groupHistory = (GroupOperationHistory) operationManager.updateOperationHistory( getUserWithSession(user, true), groupHistory);
private void ensureControlPermission(Subject subject, OperationHistory history) throws PermissionException { if (history instanceof GroupOperationHistory) { ResourceGroup group = ((GroupOperationHistory) history).getGroup(); ensureControlPermission(subject, group); } else { Resource resource = ((ResourceOperationHistory) history).getResource(); ensureControlPermission(subject, resource); } }
@Override public void deleteOperationHistory(Subject subject, int historyId, boolean purgeInProgress) { OperationHistory doomedHistory = getOperationHistoryByHistoryId(subject, historyId); // this also checks authorization so we don't have to do it again ensureControlPermission(subject, doomedHistory); if ((doomedHistory.getStatus() == OperationRequestStatus.INPROGRESS) && !purgeInProgress) { throw new IllegalStateException( "The job is still in the in-progress state. Please wait for it to complete: " + doomedHistory.getId()); } if (doomedHistory instanceof GroupOperationHistory) { List<ResourceOperationHistory> resourceHistories = ((GroupOperationHistory) doomedHistory) .getResourceOperationHistories(); for (ResourceOperationHistory child : resourceHistories) { deleteOperationHistory_helper(child.getId()); } } deleteOperationHistory_helper(doomedHistory.getId()); }
private void ensureViewPermission(Subject subject, OperationHistory history) throws PermissionException { if (history instanceof GroupOperationHistory) { ResourceGroup group = ((GroupOperationHistory) history).getGroup(); if (!authorizationManager.canViewGroup(subject, group.getId())) { throw new PermissionException("User [" + subject.getName() + "] does not have permission to view operation history for group [" + group + "]"); } } else { Resource resource = ((ResourceOperationHistory) history).getResource(); if (!authorizationManager.canViewResource(subject, resource.getId())) { throw new PermissionException("User [" + subject.getName() + "] does not have permission to view operation history for resource [" + resource + "]"); } } }