package org.rhq.enterprise.server.storage; import java.util.List; import javax.ejb.Asynchronous; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.cloud.StorageNode; import org.rhq.core.domain.operation.OperationHistory; import org.rhq.core.domain.operation.ResourceOperationHistory; /** * @author John Sanda */ public interface StorageNodeOperationsHandlerLocal extends StorageNodeOperationsHandlerRemote { @Asynchronous void handleOperationUpdateIfNecessary(OperationHistory operationHistory); void handleAnnounce(ResourceOperationHistory operationHistory); void handleUnannounce(ResourceOperationHistory operationHistory); void handlePrepareForBootstrap(ResourceOperationHistory operationHistory); void handleAddNodeMaintenance(ResourceOperationHistory operationHistory); void handleRemoveNodeMaintenance(ResourceOperationHistory operationHistory); void handleDecommission(ResourceOperationHistory operationHistory); void handleUninstall(ResourceOperationHistory operationHistory); void announceStorageNode(Subject subject, StorageNode storageNode); void unannounceStorageNode(Subject subject, StorageNode storageNode); void bootstrapStorageNode(Subject subject, StorageNode storageNode); void performAddNodeMaintenance(Subject subject, StorageNode storageNode); void performAddMaintenance(Subject subject, StorageNode storageNode); void uninstall(Subject subject, StorageNode storageNode); void detachFromResource(StorageNode storageNode); void decommissionStorageNode(Subject subject, StorageNode storageNode); void performRemoveNodeMaintenance(Subject subject, StorageNode storageNode); void performRemoveMaintenance(Subject subject, StorageNode storageNode); void runRepair(Subject subject); void handleRepair(ResourceOperationHistory operationHistory); void logError(String address, String error, Exception e); StorageNode setMode(StorageNode storageNode, StorageNode.OperationMode newMode); List<StorageNode> getStorageNodesByMode(StorageNode.OperationMode mode); /** * sets all NORMAL StorageNodes to setMaintenancePending(true). * * @param storageNode * @param mode * @return the updated StorageNodes */ List<StorageNode> setMaintenancePending(); /** * Checks the NORMAL StorageNodes to see if they need a schema update, and if so, reflect that fact in * the storage node being manipulated. * * @param storageNode * @param mode * @return */ StorageNode setMaintenancePendingDecommissionStorageNode(StorageNode storageNode); /** * sets all NORMAL StorageNodes to setMaintenancePending(true) as well as the supplied StorageNode. And * returns them all in one List. * * @param storageNode * @param mode * @return the updated StorageNodes */ List<StorageNode> setMaintenancePendingPerformAddMaintenance(StorageNode storageNode); void finishUninstall(Subject subject, StorageNode storageNode); }