void beforeChange(ClusterVO vo, final ClusterStateEvent event) { final ClusterInventory cinv = ClusterInventory.valueOf(vo); final ClusterState next = AbstractCluster.getNextState(vo.getState(), event); CollectionUtils.safeForEach(changeExts, new ForEachFunction<ClusterChangeStateExtensionPoint>() { @Override public void run(ClusterChangeStateExtensionPoint extp) { extp.beforeChangeClusterState(cinv, event, next); } }); }
protected ClusterInventory changeState(ClusterStateEvent event) { ClusterState currentState = self.getState(); ClusterState next = AbstractCluster.getNextState(self.getState(), event); extpEmitter.beforeChange(self, event); self.setState(next); self = dbf.updateAndRefresh(self); ClusterInventory inv = ClusterInventory.valueOf(self); extpEmitter.afterChange(self, event, currentState); logger.debug("Cluster " + self.getName() + " uuid: " + self.getUuid() + " changed state from " + currentState + " to " + self.getState()); return inv; }
void preChange(ClusterVO vo, ClusterStateEvent event) throws ClusterException { ClusterState next = AbstractCluster.getNextState(vo.getState(), event); ClusterInventory cinv = ClusterInventory.valueOf(vo); for (ClusterChangeStateExtensionPoint extp : changeExts) { try { extp.preChangeClusterState(cinv, event, next); } catch (ClusterException ce) { logger.debug(String.format("Extension: %s refused cluster change state operation[ClusterStateEvent:%s] because %s", extp.getClass() .getCanonicalName(), event, ce.getMessage())); throw ce; } catch (Exception e) { logger.warn("Exception happened while calling " + extp.getClass().getCanonicalName() + ".preChangeClusterState(), " + "cluster name: " + cinv.getName() + " uuid: " + cinv.getUuid(), e); } } }
public static ClusterInventory valueOf(ClusterVO vo) { ClusterInventory inv = new ClusterInventory(); inv.setName(vo.getName()); inv.setDescription(vo.getDescription()); inv.setUuid(vo.getUuid()); inv.setState(vo.getState().toString()); inv.setCreateDate(vo.getCreateDate()); inv.setHypervisorType(vo.getHypervisorType()); inv.setZoneUuid(vo.getZoneUuid()); inv.setType(vo.getType()); inv.setLastOpDate(vo.getLastOpDate()); return inv; }