@Override public void attachHook(String clusterUuid, final Completion completion) { // get all hosts of cluster SimpleQuery<HostVO> q = dbf.createQuery(HostVO.class); q.select(HostVO_.uuid, HostVO_.status); q.add(HostVO_.clusterUuid, Op.EQ, clusterUuid); final List<Tuple> ts = q.listTuple(); if (ts.isEmpty()) { completion.success(); return; } List<String> connectedHostUuids = ts.stream() .filter(it -> it.get(1, HostStatus.class) == HostStatus.Connected) .map(it -> it.get(0, String.class)) .collect(Collectors.toList()); List<String> disconnectedHostUuids = ts.stream() .filter(it -> it.get(1, HostStatus.class) != HostStatus.Connected) .map(it -> it.get(0, String.class)) .collect(Collectors.toList()); // make init msg for each host initHosts(connectedHostUuids, completion); initHosts(disconnectedHostUuids, true, new NopeCompletion()); }
public Map<String, List<String>> getTags(List<String> resourceUuids, Class resourceClass) { SimpleQuery<SystemTagVO> q = dbf.createQuery(SystemTagVO.class); q.select(SystemTagVO_.tag, SystemTagVO_.resourceUuid); q.add(SystemTagVO_.resourceType, Op.EQ, resourceClass.getSimpleName()); q.add(SystemTagVO_.resourceUuid, Op.IN, resourceUuids); q.add(SystemTagVO_.tag, useOp(), useTagFormat()); List<Tuple> ts = q.listTuple(); Map<String, List<String>> ret = new HashMap<>(); for (Tuple t : ts) { String uuid = t.get(1, String.class); List<String> tags = ret.get(uuid); if (tags == null) { tags = new ArrayList<>(); ret.put(uuid, tags); } tags.add(t.get(0, String.class)); } return ret; }
clusterq.add(HostVO_.state,Op.EQ, HostState.Enabled); clusterq.add(HostVO_.status,Op.EQ, HostStatus.Connected); List<Tuple> clusterTuple = clusterq.listTuple();
public Map<String, Quota.QuotaPair> makeQuotaPairs(String accountUuid) { SimpleQuery<QuotaVO> q = dbf.createQuery(QuotaVO.class); q.select(QuotaVO_.name, QuotaVO_.value); q.add(QuotaVO_.identityType, SimpleQuery.Op.EQ, AccountVO.class.getSimpleName()); q.add(QuotaVO_.identityUuid, SimpleQuery.Op.EQ, accountUuid); List<Tuple> ts = q.listTuple(); Map<String, Quota.QuotaPair> pairs = new HashMap<>(); for (Tuple t : ts) { String name = t.get(0, String.class); long value = t.get(1, Long.class); Quota.QuotaPair p = new Quota.QuotaPair(); p.setName(name); p.setValue(value); pairs.put(name, p); } return pairs; }
zoneq.add(HostVO_.state,Op.EQ, HostState.Enabled); zoneq.add(HostVO_.status,Op.EQ, HostStatus.Connected); List<Tuple> zoneTuples = zoneq.listTuple();
private Bucket getHostManagedByUs() { int qun = 10000; long amount = dbf.count(HostVO.class); int times = (int) (amount / qun) + (amount % qun != 0 ? 1 : 0); List<String> connected = new ArrayList<String>(); List<String> disconnected = new ArrayList<String>(); int start = 0; for (int i = 0; i < times; i++) { SimpleQuery<HostVO> q = dbf.createQuery(HostVO.class); q.select(HostVO_.uuid, HostVO_.status); q.setLimit(qun); q.setStart(start); List<Tuple> lst = q.listTuple(); start += qun; for (Tuple t : lst) { String huuid = t.get(0, String.class); if (!destMaker.isManagedByUs(huuid)) { continue; } HostStatus state = t.get(1, HostStatus.class); if (state == HostStatus.Connected) { connected.add(huuid); } else { // for Disconnected and Connecting, treat as Disconnected disconnected.add(huuid); } } } return Bucket.newBucket(connected, disconnected); }
sq.select(SharedResourceVO_.receiverAccountUuid, SharedResourceVO_.toPublic, SharedResourceVO_.resourceUuid); sq.add(SharedResourceVO_.resourceUuid, Op.IN, resourceUuids); List<Tuple> ts = sq.listTuple(); for (Tuple t : ts) { String ruuid = t.get(0, String.class);
private List<Tuple> getDeletedImageManagedByUs() { int qun = 1000; SimpleQuery q = dbf.createQuery(ImageBackupStorageRefVO.class); q.add(ImageBackupStorageRefVO_.status, Op.EQ, ImageStatus.Deleted); long amount = q.count(); int times = (int) (amount / qun) + (amount % qun != 0 ? 1 : 0); int start = 0; List<Tuple> ret = new ArrayList<Tuple>(); for (int i = 0; i < times; i++) { q = dbf.createQuery(ImageBackupStorageRefVO.class); q.select(ImageBackupStorageRefVO_.imageUuid, ImageBackupStorageRefVO_.lastOpDate, ImageBackupStorageRefVO_.backupStorageUuid); q.add(ImageBackupStorageRefVO_.status, Op.EQ, ImageStatus.Deleted); q.setLimit(qun); q.setStart(start); List<Tuple> ts = q.listTuple(); start += qun; for (Tuple t : ts) { String imageUuid = t.get(0, String.class); if (!destMaker.isManagedByUs(imageUuid)) { continue; } ret.add(t); } } return ret; }
private List<Tuple> getDeletedVolumeManagedByUs() { int qun = 1000; SimpleQuery q = dbf.createQuery(VolumeVO.class); q.add(VolumeVO_.status, Op.EQ, VolumeStatus.Deleted); q.add(VolumeVO_.type, Op.EQ, VolumeType.Data); long amount = q.count(); int times = (int) (amount / qun) + (amount % qun != 0 ? 1 : 0); int start = 0; List<Tuple> ret = new ArrayList<Tuple>(); for (int i = 0; i < times; i++) { q = dbf.createQuery(VolumeVO.class); q.select(VolumeVO_.uuid, VolumeVO_.lastOpDate); q.add(VolumeVO_.status, Op.EQ, VolumeStatus.Deleted); q.add(VolumeVO_.type, Op.EQ, VolumeType.Data); q.setLimit(qun); q.setStart(start); List<Tuple> lst = q.listTuple(); start += qun; for (Tuple t : lst) { String uuid = t.get(0, String.class); if (!destMaker.isManagedByUs(uuid)) { continue; } ret.add(t); } } return ret; }
private VolumeTO convertVolumeToFusionstorIfNeeded(VolumeInventory vol, VolumeTO to) { if (!vol.getInstallPath().startsWith(VolumeTO.FUSIONSTOR)) { return to; } SimpleQuery<FusionstorPrimaryStorageMonVO> q = dbf.createQuery(FusionstorPrimaryStorageMonVO.class); q.select(FusionstorPrimaryStorageMonVO_.hostname, FusionstorPrimaryStorageMonVO_.monPort); q.add(FusionstorPrimaryStorageMonVO_.primaryStorageUuid, Op.EQ, vol.getPrimaryStorageUuid()); q.add(FusionstorPrimaryStorageMonVO_.status, Op.EQ, MonStatus.Connected); List<Tuple> ts = q.listTuple(); if (ts.isEmpty()) { throw new OperationFailureException(operr( "cannot find any Connected fusionstor mon for the primary storage[uuid:%s]", vol.getPrimaryStorageUuid() )); } List<MonInfo> monInfos = CollectionUtils.transformToList(ts, new Function<MonInfo, Tuple>() { @Override public MonInfo call(Tuple t) { String hostname = t.get(0, String.class); int port = t.get(1, Integer.class); MonInfo info = new MonInfo(); info.hostname = hostname; info.port = port; return info; } }); KVMFusionstorVolumeTO cto = new KVMFusionstorVolumeTO(to); cto.setMonInfo(monInfos); cto.setDeviceType(VolumeTO.FUSIONSTOR); return cto; }
private void findReservedCapacityByHypervisorType() { SimpleQuery<HostVO> hq = dbf.createQuery(HostVO.class); hq.select(HostVO_.uuid, HostVO_.hypervisorType); hq.add(HostVO_.uuid, Op.IN, hostUuids); hq.add(HostVO_.state,Op.EQ, HostState.Enabled); hq.add(HostVO_.status,Op.EQ, HostStatus.Connected); List<Tuple> tuples = hq.listTuple(); for (Tuple t : tuples) { String huuid = t.get(0, String.class); String hvType = t.get(1, String.class); HostReservedCapacityExtensionPoint ext = exts.get(hvType); if (ext == null) { continue; } ReservedHostCapacity hc = result.get(huuid); if (hc.getReservedMemoryCapacity() == -1) { hc.setReservedMemoryCapacity(ext.getReservedHostCapacity().getReservedMemoryCapacity()); } if (hc.getReservedCpuCapacity() == -1) { hc.setReservedCpuCapacity(ext.getReservedHostCapacity().getReservedCpuCapacity()); } } }
q.add(CephPrimaryStorageMonVO_.primaryStorageUuid, Op.EQ, vol.getPrimaryStorageUuid()); q.add(CephPrimaryStorageMonVO_.status, Op.EQ, MonStatus.Connected); List<Tuple> ts = q.listTuple();
protected boolean checkIpAvailability(String ip) { SimpleQuery<IpRangeVO> rq = dbf.createQuery(IpRangeVO.class); rq.select(IpRangeVO_.startIp, IpRangeVO_.endIp, IpRangeVO_.gateway); rq.add(IpRangeVO_.l3NetworkUuid, Op.EQ, self.getUuid()); List<Tuple> ts = rq.listTuple(); boolean inRange = false; boolean isGateway = false; for (Tuple t : ts) { String sip = t.get(0, String.class); String eip = t.get(1, String.class); String gw = t.get(2, String.class); if (ip.equals(gw)) { isGateway = true; break; } if (NetworkUtils.isInRange(ip, sip, eip)) { inRange = true; break; } } if (!inRange || isGateway) { // not an IP of this L3 or is a gateway return false; } else { SimpleQuery<UsedIpVO> q = dbf.createQuery(UsedIpVO.class); q.add(UsedIpVO_.l3NetworkUuid, Op.EQ, self.getUuid()); q.add(UsedIpVO_.ip, Op.EQ, ip); return !q.isExists(); } }
q.select(LocalStorageHostRefVO_.hostUuid, LocalStorageHostRefVO_.availableCapacity, LocalStorageResourceRefVO_.primaryStorageUuid); q.add(LocalStorageHostRefVO_.hostUuid, Op.IN, huuids); List<Tuple> ts = q.listTuple();
q.add(JobQueueEntryVO_.jobQueueId, SimpleQuery.Op.EQ, qvo.getId()); q.add(JobQueueEntryVO_.issuerManagementNodeId, SimpleQuery.Op.NULL); List<Tuple> ts = q.listTuple(); for (Tuple t : ts) { logger.debug(String.format("[Job Removed]: job[id:%s, name:%s] because its issuer management node[id:%s] became available", t.get(0), t.get(1), mgmtId));
List<Tuple> l3ts = l3q.listTuple(); for (Tuple t : l3ts) { String l3Uuid = t.get(0, String.class);