use of com.sequenceiq.flow.reactor.api.event.EventSender in project cloudbreak by hortonworks.
the class LoadBalancerEnvUpdateHandler method accept.
@Override
public void accept(Event<EnvironmentLoadBalancerDto> envLoadBalancerDtoEvent) {
EnvironmentLoadBalancerDto environmentLoadBalancerDto = envLoadBalancerDtoEvent.getData();
EnvironmentDto environmentDto = environmentLoadBalancerDto.getEnvironmentDto();
requireNonNull(environmentDto);
requireNonNull(environmentDto.getNetwork());
try {
Environment environment = environmentService.findEnvironmentByIdOrThrow(environmentDto.getResourceId());
requireNonNull(environment);
requireNonNull(environment.getNetwork());
LOGGER.debug("Starting endpoint gateway update for environment {}", environmentDto.getResourceCrn());
NetworkDto networkDto = environmentDto.getNetwork();
if (PublicEndpointAccessGateway.ENABLED.equals(environmentLoadBalancerDto.getEndpointAccessGateway())) {
LOGGER.debug("Enabling endpoint gateway on environment network.");
networkDto.setPublicEndpointAccessGateway(PublicEndpointAccessGateway.ENABLED);
Map<String, CloudSubnet> tempSubnetMetas = environmentLoadBalancerDto.getEndpointGatewaySubnetIds().stream().collect(toMap(id -> id, id -> new CloudSubnet(id, null)));
networkDto.setEndpointGatewaySubnetMetas(tempSubnetMetas);
LOGGER.debug("Fetching metadata for endpoint gateway subnets.");
Map<String, CloudSubnet> endpointGatewaySubnetMetas = networkValidationService.getEndpointGatewaySubnetMetadata(environment, environmentDto);
LOGGER.debug("Updating environment network settings.");
environment.getNetwork().setPublicEndpointAccessGateway(PublicEndpointAccessGateway.ENABLED);
environment.getNetwork().setEndpointGatewaySubnetMetas(endpointGatewaySubnetMetas);
LOGGER.debug("Persisting updated network to database.");
networkService.save(environment.getNetwork());
}
LOGGER.debug("Environment network load balancer update complete.");
LoadBalancerUpdateEvent loadBalancerUpdateEvent = LoadBalancerUpdateEvent.LoadBalancerUpdateEventBuilder.aLoadBalancerUpdateEvent().withSelector(LoadBalancerUpdateStateSelectors.LOAD_BALANCER_STACK_UPDATE_EVENT.selector()).withResourceId(environment.getId()).withResourceName(environment.getResourceName()).withResourceCrn(environment.getResourceCrn()).withEnvironmentDto(environmentDto).withEnvironment(environment).withPublicEndpointAccessGateway(environmentLoadBalancerDto.getEndpointAccessGateway()).withSubnetIds(environmentLoadBalancerDto.getEndpointGatewaySubnetIds()).build();
eventSender().sendEvent(loadBalancerUpdateEvent, envLoadBalancerDtoEvent.getHeaders());
} catch (Exception e) {
LOGGER.error("Caught exception while updating environment state with laod balancers.", e);
LoadBalancerUpdateFailedEvent failedEvent = new LoadBalancerUpdateFailedEvent(environmentDto, e, EnvironmentStatus.LOAD_BALANCER_ENV_UPDATE_FAILED);
eventSender().sendEvent(failedEvent, envLoadBalancerDtoEvent.getHeaders());
}
}
Aggregations