public Iterable<ServiceDescriptor> getServiceDescriptors(String type, String pool) { return serviceDescriptors.get().stream() .filter(descriptor -> descriptor.getType().equals(type)) .filter(descriptor -> descriptor.getPool().equals(pool)) .collect(toList()); }
@Override public boolean apply(ServiceDescriptor serviceDescriptor) { return serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool); } });
@Override public boolean apply(ServiceDescriptor serviceDescriptor) { return serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool); } });
public StaticServiceSelector(Iterable<ServiceDescriptor> serviceDescriptors) { Preconditions.checkNotNull(serviceDescriptors, "serviceDescriptors is null"); ServiceDescriptor serviceDescriptor = Iterables.getFirst(serviceDescriptors, null); if (serviceDescriptor != null) { this.type = serviceDescriptor.getType(); this.pool = serviceDescriptor.getPool(); } else { this.type = "unknown"; this.pool = DEFAULT_POOL; } for (ServiceDescriptor descriptor : serviceDescriptors) { Preconditions.checkArgument(descriptor.getType().equals(type)); Preconditions.checkArgument(descriptor.getPool().equals(pool)); } this.serviceDescriptors = ImmutableList.copyOf(serviceDescriptors); }
public StaticServiceSelector(Iterable<ServiceDescriptor> serviceDescriptors) { Preconditions.checkNotNull(serviceDescriptors, "serviceDescriptors is null"); ServiceDescriptor serviceDescriptor = Iterables.getFirst(serviceDescriptors, null); if (serviceDescriptor != null) { this.type = serviceDescriptor.getType(); this.pool = serviceDescriptor.getPool(); } else { this.type = "unknown"; this.pool = DEFAULT_POOL; } for (ServiceDescriptor descriptor : serviceDescriptors) { Preconditions.checkArgument(descriptor.getType().equals(type)); Preconditions.checkArgument(descriptor.getPool().equals(pool)); } this.serviceDescriptors = ImmutableList.copyOf(serviceDescriptors); }
public StaticServiceSelector(Iterable<ServiceDescriptor> serviceDescriptors) { requireNonNull(serviceDescriptors, "serviceDescriptors is null"); ServiceDescriptor serviceDescriptor = Iterables.getFirst(serviceDescriptors, null); if (serviceDescriptor != null) { this.type = serviceDescriptor.getType(); this.pool = serviceDescriptor.getPool(); } else { this.type = "unknown"; this.pool = DEFAULT_POOL; } for (ServiceDescriptor descriptor : serviceDescriptors) { Preconditions.checkArgument(descriptor.getType().equals(type)); Preconditions.checkArgument(descriptor.getPool().equals(pool)); } this.serviceDescriptors = ImmutableList.copyOf(serviceDescriptors); }
@Override public ListenableFuture<ServiceDescriptors> getServices(String type, String pool) { requireNonNull(type, "type is null"); requireNonNull(pool, "pool is null"); ImmutableList.Builder<ServiceDescriptor> builder = ImmutableList.builder(); for (ServiceDescriptor serviceDescriptor : this.announcements.get()) { if (serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool)) { builder.add(serviceDescriptor); } } for (ServiceDescriptor serviceDescriptor : this.discovered.values()) { if (serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool)) { builder.add(serviceDescriptor); } } return immediateFuture(new ServiceDescriptors(type, pool, builder.build(), maxAge, UUID.randomUUID().toString())); }
@Override public CheckedFuture<ServiceDescriptors, DiscoveryException> getServices(String type, String pool) { Preconditions.checkNotNull(type, "type is null"); Preconditions.checkNotNull(pool, "pool is null"); ImmutableList.Builder<ServiceDescriptor> builder = ImmutableList.builder(); for (ServiceDescriptor serviceDescriptor : this.announcements.get()) { if (serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool)) { builder.add(serviceDescriptor); } } for (ServiceDescriptor serviceDescriptor : this.discovered.values()) { if (serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool)) { builder.add(serviceDescriptor); } } return Futures.immediateCheckedFuture(new ServiceDescriptors(type, pool, builder.build(), maxAge, UUID.randomUUID().toString())); }
@Override public CheckedFuture<ServiceDescriptors, DiscoveryException> getServices(String type, String pool) { Preconditions.checkNotNull(type, "type is null"); Preconditions.checkNotNull(pool, "pool is null"); ImmutableList.Builder<ServiceDescriptor> builder = ImmutableList.builder(); for (ServiceDescriptor serviceDescriptor : this.announcements.get()) { if (serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool)) { builder.add(serviceDescriptor); } } for (ServiceDescriptor serviceDescriptor : this.discovered.values()) { if (serviceDescriptor.getType().equals(type) && serviceDescriptor.getPool().equals(pool)) { builder.add(serviceDescriptor); } } return Futures.immediateCheckedFuture(new ServiceDescriptors(type, pool, builder.build(), maxAge, UUID.randomUUID().toString())); }
private List<ServiceDescriptor> merge(Set<ServiceAnnouncement> serviceAnnouncements, List<ServiceDescriptor> serviceDescriptors) { Set<ServiceDescriptor> set = new HashSet<>(); for (ServiceAnnouncement announcement : serviceAnnouncements) { ServiceDescriptor descriptor = announcement.toServiceDescriptor(nodeInfo); if (descriptor.getType().equals(getType()) && descriptor.getPool().equals(getPool())) { set.add(descriptor); } } set.addAll(serviceDescriptors); return ImmutableList.copyOf(set); } }
private List<ServiceDescriptor> merge(Set<ServiceAnnouncement> serviceAnnouncements, List<ServiceDescriptor> serviceDescriptors) { Set<ServiceDescriptor> set = new HashSet<>(); for (ServiceAnnouncement announcement : serviceAnnouncements) { ServiceDescriptor descriptor = announcement.toServiceDescriptor(nodeInfo); if (descriptor.getType().equals(getType()) && descriptor.getPool().equals(getPool())) { set.add(descriptor); } } set.addAll(serviceDescriptors); return ImmutableList.copyOf(set); } }
public ServiceDescriptors(String type, String pool, List<ServiceDescriptor> serviceDescriptors, Duration maxAge, String eTag) { Preconditions.checkNotNull(type, "type is null"); Preconditions.checkNotNull(serviceDescriptors, "serviceDescriptors is null"); Preconditions.checkNotNull(maxAge, "maxAge is null"); this.type = type; this.pool = pool; this.serviceDescriptors = ImmutableList.copyOf(serviceDescriptors); this.maxAge = maxAge; this.eTag = eTag; // verify service descriptors match expected type for (ServiceDescriptor serviceDescriptor : this.serviceDescriptors) { if (!type.equals(serviceDescriptor.getType()) || (pool != null && !pool.equals(serviceDescriptor.getPool()))) { throw new DiscoveryException(format("Expected %s service descriptor from pool %s, but was %s service descriptor from pool %s", type, pool, serviceDescriptor.getType(), serviceDescriptor.getPool())); } } }
public ServiceDescriptors(String type, String pool, List<ServiceDescriptor> serviceDescriptors, Duration maxAge, String eTag) { Preconditions.checkNotNull(type, "type is null"); Preconditions.checkNotNull(serviceDescriptors, "serviceDescriptors is null"); Preconditions.checkNotNull(maxAge, "maxAge is null"); this.type = type; this.pool = pool; this.serviceDescriptors = ImmutableList.copyOf(serviceDescriptors); this.maxAge = maxAge; this.eTag = eTag; // verify service descriptors match expected type for (ServiceDescriptor serviceDescriptor : this.serviceDescriptors) { if (!type.equals(serviceDescriptor.getType()) || (pool != null && !pool.equals(serviceDescriptor.getPool()))) { throw new DiscoveryException(format("Expected %s service descriptor from pool %s, but was %s service descriptor from pool %s", type, pool, serviceDescriptor.getType(), serviceDescriptor.getPool())); } } }
@Override public ImmutableList<ServiceDescriptor> getServiceInventory(Iterable<SlotStatus> allSlotStatus) { ImmutableList.Builder<ServiceDescriptor> newDescriptors = ImmutableList.builder(); for (SlotStatus slotStatus : allSlotStatus) { // if the self reference is null, the slot is totally offline so skip for now if (slotStatus.getSelf() == null) { continue; } List<ServiceDescriptor> serviceDescriptors = getServiceInventory(slotStatus); if (serviceDescriptors == null) { continue; } for (ServiceDescriptor serviceDescriptor : serviceDescriptors) { newDescriptors.add(new ServiceDescriptor(null, slotStatus.getId().toString(), serviceDescriptor.getType(), serviceDescriptor.getPool(), slotStatus.getLocation(), slotStatus.getState() == SlotLifecycleState.RUNNING ? ServiceState.RUNNING : ServiceState.STOPPED, interpolateProperties(serviceDescriptor.getProperties(), slotStatus))); } } return newDescriptors.build(); }
private static void assertDescriptorEquals(ServiceDescriptor expected, ServiceDescriptor actual) { assertEquals(actual, expected); assertEquals(actual.getId(), expected.getId()); assertEquals(actual.getNodeId(), expected.getNodeId()); assertEquals(actual.getType(), expected.getType()); assertEquals(actual.getPool(), expected.getPool()); assertEquals(actual.getLocation(), expected.getLocation()); assertEquals(actual.getProperties(), expected.getProperties()); } }
private static void assertDescriptorEquals(ServiceDescriptor expected, ServiceDescriptor actual) { assertEquals(actual, expected); assertEquals(actual.getId(), expected.getId()); assertEquals(actual.getNodeId(), expected.getNodeId()); assertEquals(actual.getType(), expected.getType()); assertEquals(actual.getPool(), expected.getPool()); assertEquals(actual.getLocation(), expected.getLocation()); assertEquals(actual.getProperties(), expected.getProperties()); } }
@Test public void testJsonDecode() throws Exception { ServiceDescriptor expected = new ServiceDescriptor(UUID.fromString("12345678-1234-1234-1234-123456789012"), "node", "type", "pool", "location", ServiceState.RUNNING, ImmutableMap.of("a", "apple", "b", "banana")); String json = Resources.toString(Resources.getResource("service-descriptor.json"), Charsets.UTF_8); ServiceDescriptor actual = serviceDescriptorCodec.fromJson(json); assertEquals(actual, expected); assertEquals(actual.getId(), expected.getId()); assertEquals(actual.getNodeId(), expected.getNodeId()); assertEquals(actual.getType(), expected.getType()); assertEquals(actual.getPool(), expected.getPool()); assertEquals(actual.getLocation(), expected.getLocation()); assertEquals(actual.getProperties(), expected.getProperties()); }
private void assertAnnounced(ServiceAnnouncement... serviceAnnouncements) { Future<ServiceDescriptors> future = discoveryClient.getServices(serviceType.value(), "pool"); ServiceDescriptors serviceDescriptors = getFutureValue(future, DiscoveryException.class); assertEquals(serviceDescriptors.getType(), serviceType.value()); assertEquals(serviceDescriptors.getPool(), "pool"); assertNotNull(serviceDescriptors.getETag()); assertEquals(serviceDescriptors.getMaxAge(), MAX_AGE); List<ServiceDescriptor> descriptors = serviceDescriptors.getServiceDescriptors(); assertEquals(descriptors.size(), serviceAnnouncements.length); ImmutableMap.Builder<UUID, ServiceDescriptor> builder = ImmutableMap.builder(); for (ServiceDescriptor descriptor : descriptors) { builder.put(descriptor.getId(), descriptor); } Map<UUID, ServiceDescriptor> descriptorMap = builder.build(); for (ServiceAnnouncement serviceAnnouncement : serviceAnnouncements) { ServiceDescriptor serviceDescriptor = descriptorMap.get(serviceAnnouncement.getId()); assertNotNull(serviceDescriptor, "No descriptor for announcement " + serviceAnnouncement.getId()); assertEquals(serviceDescriptor.getType(), serviceType.value()); assertEquals(serviceDescriptor.getPool(), "pool"); assertEquals(serviceDescriptor.getId(), serviceAnnouncement.getId()); assertEquals(serviceDescriptor.getProperties(), serviceAnnouncement.getProperties()); assertEquals(serviceDescriptor.getNodeId(), nodeInfo.getNodeId()); } } }
@Test public void testBuilderNodeId() { ServiceDescriptor expected = new ServiceDescriptor( UUID.fromString("12345678-1234-1234-1234-123456789012"), "node", "type", "pool", "location", ServiceState.RUNNING, ImmutableMap.of("a", "apple", "b", "banana")); ServiceDescriptorBuilder builder = serviceDescriptor(expected.getType()) .setId(expected.getId()) .setLocation(expected.getLocation()) .setNodeId(expected.getNodeId()) .setPool(expected.getPool()) .setState(expected.getState()); for (Map.Entry<String, String> entry : expected.getProperties().entrySet()) { builder.addProperty(entry.getKey(), entry.getValue()); } assertDescriptorEquals(expected, builder.build()); }
@Test public void testBuilderNodeId() { ServiceDescriptor expected = new ServiceDescriptor( UUID.fromString("12345678-1234-1234-1234-123456789012"), "node", "type", "pool", "location", ServiceState.RUNNING, ImmutableMap.of("a", "apple", "b", "banana")); ServiceDescriptorBuilder builder = serviceDescriptor(expected.getType()) .setId(expected.getId()) .setLocation(expected.getLocation()) .setNodeId(expected.getNodeId()) .setPool(expected.getPool()) .setState(expected.getState()); for (Map.Entry<String, String> entry : expected.getProperties().entrySet()) { builder.addProperty(entry.getKey(), entry.getValue()); } assertDescriptorEquals(expected, builder.build()); }