in software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/ControlledDynamicWebAppClusterImpl.java [61:126]
public void init() {
super.init();
ConfigToAttributes.apply(this, MEMBER_SPEC);
ConfigToAttributes.apply(this, CONTROLLER);
ConfigToAttributes.apply(this, CONTROLLER_SPEC);
ConfigToAttributes.apply(this, WEB_CLUSTER_SPEC);
ConfigToAttributes.apply(this, CONTROLLED_GROUP);
EntitySpec<? extends WebAppService> webServerSpec = getAttribute(MEMBER_SPEC);
if (webServerSpec == null) {
log.debug("creating default web server spec for {}", this);
webServerSpec = EntitySpec.create(TomcatServer.class);
sensors().set(MEMBER_SPEC, webServerSpec);
}
log.debug("creating cluster child for {}", this);
// Note relies on initial_size being inherited by DynamicWebAppCluster, because key id is identical
EntitySpec<? extends DynamicWebAppCluster> webClusterSpec = getAttribute(WEB_CLUSTER_SPEC);
Map<String,Object> webClusterFlags = MutableMap.<String,Object>of("memberSpec", webServerSpec);
if (webClusterSpec == null) {
log.debug("creating default web cluster spec for {}", this);
webClusterSpec = EntitySpec.create(DynamicWebAppCluster.class);
}
boolean hasMemberSpec = webClusterSpec.getConfig().containsKey(DynamicWebAppCluster.MEMBER_SPEC) || webClusterSpec.getFlags().containsKey("memberSpec");
if (!hasMemberSpec) {
webClusterSpec.configure(webClusterFlags);
} else {
log.warn("In {}, not setting cluster's {} because already set on webClusterSpec", new Object[] {this, webClusterFlags.keySet()});
}
sensors().set(WEB_CLUSTER_SPEC, webClusterSpec);
DynamicWebAppCluster cluster = addChild(webClusterSpec);
sensors().set(CLUSTER, cluster);
setEntityFilter(EntityPredicates.isMemberOf(cluster));
LoadBalancer controller = getAttribute(CONTROLLER);
if (controller == null) {
EntitySpec<? extends LoadBalancer> controllerSpec = getAttribute(CONTROLLER_SPEC);
if (controllerSpec == null) {
log.debug("creating controller using default spec for {}", this);
controllerSpec = EntitySpec.create(NginxController.class);
sensors().set(CONTROLLER_SPEC, controllerSpec);
} else {
log.debug("creating controller using custom spec for {}", this);
}
controller = addChild(controllerSpec);
enrichers().add(Enrichers.builder()
.propagating(LoadBalancer.PROXY_HTTP_PORT, LoadBalancer.PROXY_HTTPS_PORT)
.from(controller)
.build());
sensors().set(CONTROLLER, controller);
}
Group controlledGroup = getAttribute(CONTROLLED_GROUP);
if (controlledGroup == null) {
log.debug("using cluster as controlledGroup for {}", this);
controlledGroup = cluster;
sensors().set(CONTROLLED_GROUP, cluster);
} else {
log.debug("using custom controlledGroup {} for {}", controlledGroup, this);
}
doBind();
}