@Override public void changeStateHook(BackupStorageStateEvent evt, BackupStorageState nextState) { logger.debug(String.format("SimulatorBackupStorage[uuid:%s] changes state from %s to %s", self.getUuid(), self.getState(), nextState)); }
void preChange(BackupStorageVO vo, BackupStorageStateEvent evt) throws BackupStorageException { BackupStorageState next = AbstractBackupStorage.getNextState(vo.getState(), evt); BackupStorageInventory inv = BackupStorageInventory.valueOf(vo); for (BackupStorageChangeStateExtensionPoint extp : changeExts) { try { extp.preChangeSecondaryStorageState(inv, evt, next); } catch(BackupStorageException be) { logger.debug(String.format("%s refused to change backup storage[uuid:%s] state from %s to %s because %s", extp.getClass().getCanonicalName(), vo.getUuid(), vo.getState(), next, be.getMessage())); throw be; } catch (Exception e) { logger.warn("Exception happened when calling preChangeBackupStorageState of BackupStorageChangeStateExtensionPoint", e); } } }
void beforeChange(BackupStorageVO vo, final BackupStorageStateEvent evt) { final BackupStorageInventory inv = BackupStorageInventory.valueOf(vo); final BackupStorageState next = AbstractBackupStorage.getNextState(vo.getState(), evt); CollectionUtils.safeForEach(changeExts, new ForEachFunction<BackupStorageChangeStateExtensionPoint>() { @Override public void run(BackupStorageChangeStateExtensionPoint arg) { arg.beforeChangeSecondaryStorageState(inv, evt, next); } }); }
protected BackupStorageInventory(BackupStorageVO vo) { this.setCreateDate(vo.getCreateDate()); this.setDescription(vo.getDescription()); this.setLastOpDate(vo.getLastOpDate()); this.setName(vo.getName()); this.setState(vo.getState().toString()); this.setStatus(vo.getStatus().toString()); this.setTotalCapacity(vo.getTotalCapacity()); this.setAvailableCapacity(vo.getAvailableCapacity()); this.setType(vo.getType()); this.setUrl(vo.getUrl()); this.setUuid(vo.getUuid()); this.attachedZoneUuids = new ArrayList<String>(vo.getAttachedZoneRefs().size()); for (BackupStorageZoneRefVO ref : vo.getAttachedZoneRefs()) { if (!this.attachedZoneUuids.contains(ref.getZoneUuid())) { this.attachedZoneUuids.add(ref.getZoneUuid()); } } }
protected void handle(APIChangeBackupStorageStateMsg msg) { APIChangeBackupStorageStateEvent evt = new APIChangeBackupStorageStateEvent(msg.getId()); BackupStorageState currState = self.getState(); BackupStorageStateEvent event = BackupStorageStateEvent.valueOf(msg.getStateEvent()); BackupStorageState nextState = AbstractBackupStorage.getNextState(currState, event); try { extpEmitter.preChange(self, event); } catch (BackupStorageException e) { evt.setError(err(SysErrors.CHANGE_RESOURCE_STATE_ERROR, e.getMessage())); bus.publish(evt); return; } extpEmitter.beforeChange(self, event); changeStateHook(event, nextState); self.setState(nextState); self = dbf.updateAndRefresh(self); extpEmitter.afterChange(self, event, currState); evt.setInventory(getSelfInventory()); bus.publish(evt); }
protected BackupStorageVO(BackupStorageVO vo) { this.setUuid(vo.getUuid()); this.setAttachedZoneRefs(vo.getAttachedZoneRefs()); this.setCreateDate(vo.getCreateDate()); this.setDescription(vo.getDescription()); this.setLastOpDate(vo.getLastOpDate()); this.setName(vo.getName()); this.setState(vo.getState()); this.setStatus(vo.getStatus()); this.setTotalCapacity(vo.getTotalCapacity()); this.setType(vo.getType()); this.setUrl(vo.getUrl()); this.setAvailableCapacity(vo.getAvailableCapacity()); }