public static ServingStatusAggregator computeServingStatusAggregator(Ring ring, DomainGroup domainGroup) throws IOException { ServingStatusAggregator servingStatusAggregator = new ServingStatusAggregator(); for (Host host : ring.getHosts()) { servingStatusAggregator.aggregate(Hosts.computeServingStatusAggregator(host, domainGroup)); } return servingStatusAggregator; }
public void add(Domain domain, int partitionNumber, boolean servedAndUpToDate) { ServingStatus partitionServingStatus = getPartitionServingStatus(domain, partitionNumber); // Compute counts partitionServingStatus.numPartitions += 1; if (servedAndUpToDate) { partitionServingStatus.numPartitionsServedAndUpToDate += 1; } }
public static ServingStatusAggregator computeServingStatusAggregator(Host host, DomainGroup domainGroup) throws IOException { ServingStatusAggregator result = new ServingStatusAggregator(); for (HostDomain hostDomain : host.getAssignedDomains()) { DomainAndVersion domainVersion = domainGroup.getDomainVersion(hostDomain.getDomain()); // Ignore domains that are not relevant if (domainVersion != null) { for (HostDomainPartition partition : hostDomain.getPartitions()) { // Ignore deletable partitions if (!partition.isDeletable()) { // Check if partition is served and up to date boolean servedAndUpToDate = host.getState() == HostState.SERVING && partition.getCurrentDomainVersion() != null && partition.getCurrentDomainVersion().equals(domainVersion.getVersionNumber()); // Aggregate counts result.add(hostDomain.getDomain(), partition.getPartitionNumber(), servedAndUpToDate); } } } } return result; }
protected DomainGroupDeployStatusForRingGroup getDomainGroupDeployStatusForRingGroup(RingGroup ringGroup) throws IOException { DomainGroupDeployStatusForRingGroup status = new DomainGroupDeployStatusForRingGroup(); status.ringGroupName = ringGroup.getName(); ServingStatus servingStatus = RingGroups.computeServingStatusAggregator(ringGroup, ringGroup.getDomainGroup()).computeServingStatus(); status.numPartitions = servingStatus.getNumPartitions(); status.numPartitionsServedAndUpToDate = servingStatus.getNumPartitionsServedAndUpToDate(); return status; }
private DomainDeployStatusForRingGroup getDomainDeployStatusForRingGroup(DomainGroup domainGroup, Domain domain, RingGroup ringGroup) throws IOException { DomainDeployStatusForRingGroup status = new DomainDeployStatusForRingGroup(); status.ringGroupName = ringGroup.getName(); if (domainGroup != null) { status.targetDomainVersion = domainGroup.getDomainVersion(domain) == null ? null : domainGroup.getDomainVersion(domain).getVersionNumber(); } ServingStatus servingStatus = RingGroups.computeServingStatusAggregator(ringGroup, domainGroup).computeServingStatus(); status.numPartitions = servingStatus.getNumPartitions(); status.numPartitionsServedAndUpToDate = servingStatus.getNumPartitionsServedAndUpToDate(); return status; }
public static ServingStatusAggregator computeServingStatusAggregator(RingGroup ringGroup, DomainGroup domainGroup) throws IOException { ServingStatusAggregator servingStatusAggregator = new ServingStatusAggregator(); for (Ring ring : ringGroup.getRings()) { servingStatusAggregator.aggregate(Rings.computeServingStatusAggregator(ring, domainGroup)); } return servingStatusAggregator; }
protected RingGroupData getRingGroupData(RingGroup ringGroup) throws IOException { RingGroupData data = new RingGroupData(); data.name = ringGroup.getName(); data.isRingGroupConductorOnline = ringGroup.isRingGroupConductorOnline(); data.ringGroupConductorMode = ringGroup.getRingGroupConductorMode(); data.domainGroupName = ringGroup.getDomainGroup().getName(); ServingStatus servingStatus = RingGroups.computeServingStatusAggregator(ringGroup, ringGroup.getDomainGroup()).computeServingStatus(); data.numPartitions = servingStatus.getNumPartitions(); data.numPartitionsServedAndUpToDate = servingStatus.getNumPartitionsServedAndUpToDate(); Map<Integer, RingData> ringsMap = new HashMap<Integer, RingData>(); for (Ring ring : ringGroup.getRings()) { ringsMap.put(ring.getRingNumber(), getRingData(ring)); } data.ringsMap = ringsMap; data.clients = Maps.newHashMap(); for (ClientMetadata clientData : ringGroup.getClients()) { data.clients.put(clientData.get_host(), new ConnectedHostData( clientData.get_host(), Long.toString(clientData.get_connected_at()), clientData.get_type(), clientData.get_version() )); } return data; }
public void aggregate(ServingStatusAggregator other) { for (Map.Entry<Domain, Map<Integer, ServingStatus>> entry1 : other.domainToPartitionToPartitionServingStatus.entrySet()) { Domain domain = entry1.getKey(); for (Map.Entry<Integer, ServingStatus> entry2 : entry1.getValue().entrySet()) { Integer partitionNumber = entry2.getKey(); ServingStatus partitionServingStatus = entry2.getValue(); ServingStatus partitionServingStatusAggregate = getPartitionServingStatus(domain, partitionNumber); partitionServingStatusAggregate.aggregate(partitionServingStatus); } } }