enrichers().add(Enrichers.builder().propagating(Startable.SERVICE_UP).from(child).build()); enrichers().add(ServiceStateLogic.newEnricherFromChildrenState() .suppressDuplicates(true) .configure(ComputeServiceIndicatorsFromChildrenAndMembers.RUNNING_QUORUM_CHECK, QuorumCheck.QuorumChecks.all())); if (Boolean.TRUE.equals(propagate)) { if (sensors.isEmpty()) { enrichers().add(Enrichers.builder().propagatingAllButUsualAnd().from(child).build()); } else { enrichers().add(Enrichers.builder().propagating(sensors).from(child).build());
@Override public Iterator<Enricher> iterator() { return asList().iterator(); }
@Override public void add(Enricher enricher) { Enricher old = findApparentlyEqualAndWarnIfNotSameUniqueTag(enrichersInternal, enricher); if (old!=null) { LOG.debug("Removing "+old+" when adding "+enricher+" to "+AbstractEntity.this); remove(old); } CatalogUtils.setCatalogItemIdOnAddition(AbstractEntity.this, enricher); enrichersInternal.add((AbstractEnricher) enricher); ((AbstractEnricher)enricher).setEntity(AbstractEntity.this); ConfigConstraints.assertValid(enricher); getManagementSupport().getEntityChangeListener().onEnricherAdded(enricher); // TODO Could add equivalent of AbstractEntity.POLICY_ADDED for enrichers; no use-case for that yet }
.build()); enrichers().add(Enrichers.builder() .propagating(DOCKER_CONTAINER_COUNT, MachineAttributes.AVERAGE_CPU_USAGE) .from(hosts) .build()); enrichers().add(Enrichers.builder() .propagating(ImmutableMap.of(DynamicCluster.GROUP_SIZE, DOCKER_HOST_COUNT)) .from(hosts) Double headroomPercent = config().get(ContainerHeadroomEnricher.CONTAINER_HEADROOM_PERCENTAGE); if ((headroom != null && headroom > 0) || (headroomPercent != null && headroomPercent > 0d)) { enrichers().add(EnricherSpec.create(ContainerHeadroomEnricher.class) .configure(ContainerHeadroomEnricher.CONTAINER_HEADROOM, headroom) .configure(ContainerHeadroomEnricher.CONTAINER_HEADROOM_PERCENTAGE, headroomPercent)); enrichers().add(EnricherSpec.create(ComputeServiceIndicatorsFromChildrenAndMembers.class) .uniqueTag(ComputeServiceIndicatorsFromChildrenAndMembers.DEFAULT_UNIQUE_TAG) .configure(ComputeServiceIndicatorsFromChildrenAndMembers.FROM_CHILDREN, true)
enrichers().add(Enrichers.builder() .propagating(LoadBalancer.PROXY_HTTP_PORT, LoadBalancer.PROXY_HTTPS_PORT) .from(controller)
.build(); enrichers().add(Enrichers.builder().updatingMap(Attributes.SERVICE_NOT_UP_INDICATORS) .from(MANAGEMENT_URL_UP) .computing(Functionals.ifNotEquals(true).value("Management URL not reachable") )
enrichers().add(Enrichers.builder().propagating(Startable.SERVICE_UP).from(child).build()); enrichers().add(ServiceStateLogic.newEnricherFromChildrenState() .suppressDuplicates(true) .configure(ComputeServiceIndicatorsFromChildrenAndMembers.RUNNING_QUORUM_CHECK, QuorumCheck.QuorumChecks.all())); if (Boolean.TRUE.equals(propagate)) { if (sensors.isEmpty()) { enrichers().add(Enrichers.builder().propagatingAllButUsualAnd().from(child).build()); } else { enrichers().add(Enrichers.builder().propagating(sensors).from(child).build());
enrichers().add(Enrichers.builder().updatingMap(Attributes.SERVICE_NOT_UP_INDICATORS) .from(WEB_CONSOLE_ACCESSIBLE) .computing(Functionals.ifNotEquals(true).value("URL where Brooklyn listens is not answering correctly") )
enrichers().add(EnricherSpec.create(ComputeServiceIndicatorsFromChildrenAndMembers.class) .uniqueTag(ComputeServiceIndicatorsFromChildrenAndMembers.DEFAULT_UNIQUE_TAG) .configure(ComputeServiceIndicatorsFromChildrenAndMembers.FROM_CHILDREN, true)
enrichers().add(Enrichers.builder().updatingMap(Attributes.SERVICE_NOT_UP_INDICATORS) .uniqueTag("not-up-unless-url-answers") .from(NGINX_URL_ANSWERS_NICELY)
AttributeSensor<? extends Number> t = es.get(0); AttributeSensor<? extends Number> total = es.get(1); enrichers().add(Enrichers.builder() .aggregating(t) .publishing(total) @SuppressWarnings("unchecked") AttributeSensor<Double> average = (AttributeSensor<Double>) es.get(1); enrichers().add(Enrichers.builder() .aggregating(t) .publishing(average)
.build(); enrichers().add(Enrichers.builder().updatingMap(Attributes.SERVICE_NOT_UP_INDICATORS) .from(URL_REACHABLE) .computing(Functionals.ifNotEquals(true).value("URL not reachable"))
enrichers().add(Enrichers.builder() .combining(RESPONSES_4XX_COUNT, RESPONSES_5XX_COUNT) .publishing(ERROR_COUNT)
enrichers().add(Enrichers.builder() .propagating(ImmutableMap.of(BasicGroup.GROUP_SIZE, DockerAttributes.DOCKER_CONTAINER_COUNT)) .from(containers)
.build(); enrichers().add(Enrichers.builder().updatingMap(Attributes.SERVICE_NOT_UP_INDICATORS) .from(SERVER_OK) .computing(Functionals.ifNotEquals(true).value("Crate server reports it is not ok."))
@Override public void init() { super.init(); String imageName = config().get(DockerContainer.IMAGE_NAME); if (!Strings.isNullOrEmpty(imageName)) { config().set(PROVISIONING_PROPERTIES.subKey("imageId"), imageName); } if (Boolean.TRUE.equals(config().get(DockerContainer.DISABLE_SSH))) { config().set(BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION, true); config().set(PROVISIONING_PROPERTIES.subKey("useJcloudsSshInit"), false); config().set(PROVISIONING_PROPERTIES.subKey("waitForSshable"), false); config().set(PROVISIONING_PROPERTIES.subKey("pollForFirstReachableAddress"), false); config().set(EmptySoftwareProcessImpl.USE_SSH_MONITORING, false); } ImmutableSet.Builder<AttributeSensor<Integer>> builder = ImmutableSet.builder(); List<String> portRanges = MutableList.copyOf(config().get(DockerContainer.INBOUND_TCP_PORTS)); for (String portRange : portRanges) { Iterator<Integer> iterator = PortRanges.fromString(portRange).iterator(); while (iterator.hasNext()) { Integer port = iterator.next(); AttributeSensor<Integer> element = Sensors.newIntegerSensor("docker.port." + port); sensors().set(element, port); builder.add(element); } } enrichers().add(EnricherSpec.create(OnPublicNetworkEnricher.class).configure(OnPublicNetworkEnricher.SENSORS, builder.build())); }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected void initEnrichers() { super.initEnrichers(); propagateMasterAttribute(MySqlNode.HOSTNAME); propagateMasterAttribute(MySqlNode.ADDRESS); propagateMasterAttribute(MySqlNode.SUBNET_HOSTNAME); propagateMasterAttribute(MySqlNode.SUBNET_ADDRESS); propagateMasterAttribute(MySqlNode.MYSQL_PORT); propagateMasterAttribute(MySqlNode.DATASTORE_URL); enrichers().add(Enrichers.builder() .aggregating(MySqlNode.DATASTORE_URL) .publishing(SLAVE_DATASTORE_URL_LIST) .computing((Function<Collection<String>, List<String>>)(Function)Functions.identity()) .entityFilter(Predicates.not(MySqlClusterUtils.IS_MASTER)) .fromMembers() .build()); enrichers().add(Enrichers.builder() .aggregating(MySqlNode.QUERIES_PER_SECOND_FROM_MYSQL) .publishing(QUERIES_PER_SECOND_FROM_MYSQL_PER_NODE) .fromMembers() .computingAverage() .defaultValueForUnreportedSensors(0d) .build()); }
@Override public void init() { super.init(); getMutableEntityType().addEffector(SelectMasterEffectorBody.SELECT_MASTER); getMutableEntityType().addEffector(BrooklynClusterUpgradeEffectorBody.UPGRADE_CLUSTER); ServiceProblemsLogic.updateProblemsIndicator(this, MASTER_NODE, MSG_NO_MASTER); addFeed(FunctionFeed.builder() .entity(this) .poll(new FunctionPollConfig<Object, BrooklynNode>(MASTER_NODE) .period(Duration.ONE_SECOND) .callable(new MasterChildFinder())) .build()); enrichers().add( Enrichers.builder().transforming(MASTER_NODE) .uniqueTag("master-node-web-uri") .publishing(BrooklynNode.WEB_CONSOLE_URI) .computing(EntityFunctions.attribute(BrooklynNode.WEB_CONSOLE_URI)) .build() ); }