/** * @deprecated since 0.12.0; see {@link MathAggregatorFunctions}; */ @Deprecated protected static <T extends Number> T average(Collection<T> vals, Number defaultValueForUnreportedSensors, Number valueToReportIfNoSensors, TypeToken<T> type) { Double doubleValueToReportIfNoSensors = (valueToReportIfNoSensors == null) ? null : valueToReportIfNoSensors.doubleValue(); int count = count(vals, defaultValueForUnreportedSensors!=null); Double result = (count==0) ? doubleValueToReportIfNoSensors : (Double) ((sum(vals, defaultValueForUnreportedSensors, 0, TypeToken.of(Double.class)) / count)); return cast(result, type); }
@Override public T apply(Collection<T> input) { return (T) average(input, defaultValueForUnreportedSensors, valueToReportIfNoSensors, typeToken); } }
@Override public T apply(Collection<T> input) { return (T) sum(input, defaultValueForUnreportedSensors, valueToReportIfNoSensors, typeToken); } }
/** * @deprecated since 0.12.0; see {@link MathAggregatorFunctions}; */ @Deprecated public static <N extends Number> N sum(Iterable<? extends Number> vals, Number valueIfNull, Number valueIfNone, TypeToken<N> type) { double result = 0d; int count = 0; if (vals!=null) { for (Number val : vals) { if (val!=null) { result += val.doubleValue(); count++; } else if (valueIfNull!=null) { result += valueIfNull.doubleValue(); count++; } } } if (count==0) return cast(valueIfNone, type); return cast(result, type); }
@Override public Number apply(Collection<S> input) { return sum((Collection)input, (Number)defaultValueForUnreportedSensors, (Number)valueToReportIfNoSensors, (TypeToken) publishing.getTypeToken()); }}; this.computing((Function)function);
@Override public void init() { super.init(); ConfigToAttributes.apply(this, MESOS_SLAVE_ID); EnricherSpec<?> serviceUp = Enrichers.builder() .propagating(ImmutableMap.of(SLAVE_ACTIVE, SERVICE_UP)) .suppressDuplicates(true) .from(this) .build(); enrichers().add(serviceUp); }
@Override public Number apply(Collection<S> input) { return sum((Collection)input, (Number)defaultValueForUnreportedSensors, (Number)valueToReportIfNoSensors, (TypeToken) publishing.getTypeToken()); }}; this.computing((Function)function);
@Override public Number apply(Collection<S> input) { return average((Collection)input, (Number)defaultValueForUnreportedSensors, (Number)valueToReportIfNoSensors, (TypeToken) publishing.getTypeToken()); }}; this.computing((Function)function);
void connectSensors() { // FIXME no longer needed enrichers().add(Enrichers.builder() .propagatingAllButUsualAnd(Attributes.MAIN_URI, ROOT_URL, GROUP_MEMBERS, GROUP_SIZE) .from(getCluster()) .build()); enrichers().add(Enrichers.builder() // include hostname and address of controller (need both in case hostname only resolves to internal/private ip) .propagating(LoadBalancer.HOSTNAME, Attributes.ADDRESS, Attributes.MAIN_URI, ROOT_URL) .from(getController()) .build()); }
@Override public Object apply(Iterable<Integer> input) { if (input != null && Iterables.contains(input, 123)) { return Enrichers.sum(input, 0, 0, new TypeToken<Integer>(){}); } else { return Entities.UNCHANGED; } }}) .build());
@Override public Number apply(Collection<S> input) { return average((Collection)input, (Number)defaultValueForUnreportedSensors, (Number)valueToReportIfNoSensors, (TypeToken) publishing.getTypeToken()); }}; this.computing((Function)function);
@Override public Object apply(Iterable<Integer> input) { if (input != null && Iterables.contains(input, 123)) { return Enrichers.sum(input, 0, 0, new TypeToken<Integer>(){}); } else { return Entities.UNCHANGED; } }}) .build());
@Override public void init() { Entity delegate = getConfig(DELEGATE_ENTITY); Preconditions.checkNotNull(delegate, "delegate"); // Propagate all sensors from the delegate entity enrichers().add(Enrichers.builder() .propagatingAll() .from(delegate) .build()); // Publish the entity as an attribute for linking sensors().set(DELEGATE_ENTITY, delegate); sensors().set(DELEGATE_ENTITY_LINK, EntityUrl.entityUrl().apply(delegate)); } }
@Override protected void initEnrichers() { super.initEnrichers(); EnricherSpec<?> zks = Enrichers.builder() .aggregating(ZooKeeperNode.ZOOKEEPER_ENDPOINT) .publishing(ZOOKEEPER_SERVERS) .fromMembers() .build(); EnricherSpec<?> zke = Enrichers.builder() .joining(ZOOKEEPER_SERVERS) .publishing(ZOOKEEPER_ENDPOINTS) .quote(false) .separator(",") .build(); enrichers().add(zks); enrichers().add(zke); }
@Override public void apply(EntitySpec<?> entitySpec, String nodeId, ToscaApplication toscaApplication) { // for tosca.capabilities.Endpoint and derivatives (and alien Compute) entitySpec.enricher(Enrichers.builder().transforming(Attributes.ADDRESS) .computing(Functions.identity()) .publishing(Sensors.newStringSensor("ip_address")).build()); entitySpec.enricher(Enrichers.builder().transforming(Attributes.SUBNET_ADDRESS) .computing(Functions.identity()) .publishing(Sensors.newStringSensor("private_address")).build()); entitySpec.enricher(Enrichers.builder().transforming(Attributes.ADDRESS) .computing(Functions.identity()) .publishing(Sensors.newStringSensor("public_address")).build()); // alien specific entitySpec.enricher(Enrichers.builder().transforming(Attributes.ADDRESS) .computing(Functions.identity()) .publishing(Sensors.newStringSensor("public_ip_address")).build()); // open up any ports that end with "_port" in addition to the default ".port" entitySpec.configure(SoftwareProcess.INBOUND_PORTS_CONFIG_REGEX, "(.*[\\._])?port$"); } }
@Test public void testPropagatingAndRenaming() { entity.enrichers().add(Enrichers.builder() .propagating(ImmutableMap.of(STR1, STR2)) .from(entity2) .build()); entity2.sensors().set(STR1, "myval"); EntityAsserts.assertAttributeEqualsEventually(entity, STR2, "myval"); }
@Test public void testTransformingCastsResult() { entity.enrichers().add(Enrichers.builder() .transforming(NUM1) .publishing(LONG1) .computing(Functions.constant(Long.valueOf(1))) .build()); entity.sensors().set(NUM1, 123); EntityAsserts.assertAttributeEqualsEventually(entity, LONG1, Long.valueOf(1)); }
@Test public void testSummingEnricherWhenNoSensorValuesYetDefaultsToNull() { entity.enrichers().add(Enrichers.builder() .aggregating(intSensor) .publishing(target) .computingSum() .fromHardcodedProducers(ImmutableList.of(entity)) .build()); EntityAsserts.assertAttributeEqualsContinually(MutableMap.of("timeout", 50), entity, target, null); }