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; }
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; }
@Deferred private void handle(APICreateClusterMsg msg) { String clusterType = msg.getType(); if (clusterType == null) { clusterType = BaseClusterFactory.type.toString(); } APICreateClusterEvent evt = new APICreateClusterEvent(msg.getId()); ClusterFactory factory = this.getClusterFactory(ClusterType.valueOf(clusterType)); ClusterVO vo = new ClusterVO(); if (msg.getResourceUuid() != null) { vo.setUuid(msg.getResourceUuid()); } else { vo.setUuid(Platform.getUuid()); } vo.setDescription(msg.getDescription()); vo.setHypervisorType(msg.getHypervisorType()); vo.setManagementNodeId(Platform.getManagementServerId()); vo.setZoneUuid(msg.getZoneUuid()); vo.setState(ClusterState.Enabled); vo.setName(msg.getClusterName()); vo = factory.createCluster(vo, msg); tagMgr.createTagsFromAPICreateMessage(msg, vo.getUuid(), ClusterVO.class.getSimpleName()); ClusterInventory inv = ClusterInventory.valueOf(vo); evt.setInventory(inv); logger.debug(String.format("Created new cluster: %s", printer.print(inv))); bus.publish(evt); }
hvo.setUuid(Platform.getUuid()); hvo.setClusterUuid(cluster.getUuid()); hvo.setZoneUuid(cluster.getZoneUuid()); hvo.setName(msg.getName()); hvo.setDescription(msg.getDescription()); hvo.setHypervisorType(cluster.getHypervisorType()); hvo.setManagementIp(msg.getManagementIp()); hvo.setStatus(HostStatus.Connecting); hvo.setState(HostState.Enabled); final HypervisorFactory factory = getHypervisorFactory(HypervisorType.valueOf(cluster.getHypervisorType())); final HostVO vo = factory.createHost(hvo, msg); final AddHostMsg amsg = getAddHostMsg(msg);
@Override public String getSyncSignature() { return self.getUuid(); }
@Transactional(readOnly = true) protected List<FactoryCluster> getAllFactoriesForAttachedClusters() { String sql = "select cluster" + " from ClusterVO cluster, PrimaryStorageClusterRefVO ref" + " where ref.clusterUuid = cluster.uuid" + " and ref.primaryStorageUuid = :uuid"; TypedQuery<ClusterVO> q = dbf.getEntityManager().createQuery(sql, ClusterVO.class); q.setParameter("uuid", self.getUuid()); List<ClusterVO> clusters = q.getResultList(); if (clusters.isEmpty()) { return new ArrayList<>(); } Map<String, FactoryCluster> m = new HashMap<>(); for (ClusterVO c : clusters) { FactoryCluster fc = m.get(c.getHypervisorType()); if (fc == null) { fc = new FactoryCluster(); fc.factory = getHypervisorBackendFactory(c.getHypervisorType()); fc.clusters = new ArrayList<>(); m.put(c.getHypervisorType(), fc); } fc.clusters.add(ClusterInventory.valueOf(c)); } List<FactoryCluster> fcs = new ArrayList<>(); fcs.addAll(m.values()); return fcs; }
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); } }); }
private void passThrough(ClusterMessage msg) { ClusterVO vo = dbf.findByUuid(msg.getClusterUuid(), ClusterVO.class); if (vo == null && allowedMessageAfterSoftDeletion.contains(msg.getClass())) { ClusterEO eo = dbf.findByUuid(msg.getClusterUuid(), ClusterEO.class); vo = ObjectUtils.newAndCopy(eo, ClusterVO.class); } if (vo == null) { String err = String.format("Cannot find cluster: %s, it may have been deleted", msg.getClusterUuid()); bus.replyErrorByMessageType((Message) msg, err); return; } ClusterFactory factory = this.getClusterFactory(ClusterType.valueOf(vo.getType())); Cluster cluster = factory.getCluster(vo); cluster.handleMessage((Message) msg); }
@Override public String getSyncSignature() { return self.getUuid(); }
private void handle(PrimaryStorageRemoveCachedImageMsg msg) { if (self.getAttachedClusterRefs().isEmpty()) { PrimaryStorageRemoveCachedImageReply reply = new PrimaryStorageRemoveCachedImageReply(); reply.setError(operr("primary storage[uuid:%s] doesn't attach to any cluster", self.getUuid())); bus.reply(msg, reply); return; } PrimaryStorageClusterRefVO ref = self.getAttachedClusterRefs().iterator().next(); ClusterVO cluster = dbf.findByUuid(ref.getClusterUuid(), ClusterVO.class); getBackend(HypervisorType.valueOf(cluster.getHypervisorType())).deleteImageCache(msg.getInventory()); }
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); } } }
List<String> hostIps = q(HostVO.class) .select(HostVO_.managementIp) .eq(HostVO_.clusterUuid, cls.getUuid()) .listValues();