use of com.sequenceiq.environment.environment.flow.loadbalancer.event.LoadBalancerUpdateFailedEvent in project cloudbreak by hortonworks.
the class LoadBalancerUpdateActions method failedAction.
@Bean(name = "LOAD_BALANCER_UPDATE_FAILED_STATE")
public Action<?, ?> failedAction() {
return new AbstractLoadBalancerUpdateAction<>(LoadBalancerUpdateFailedEvent.class) {
@Override
protected void doExecute(CommonContext context, LoadBalancerUpdateFailedEvent payload, Map<Object, Object> variables) {
LOGGER.warn(String.format("Failed to update load balancer on environment '%s'. Status: '%s'.", payload.getEnvironmentDto(), payload.getEnvironmentStatus()), payload.getException());
EnvironmentDto environmentDto = environmentStatusUpdateService.updateFailedEnvironmentStatusAndNotify(context, payload, payload.getEnvironmentStatus(), convertStatus(payload.getEnvironmentStatus()), LoadBalancerUpdateState.LOAD_BALANCER_UPDATE_FAILED_STATE);
metricService.incrementMetricCounter(MetricType.ENV_LOAD_BALANCER_UPDATE_FAILED, environmentDto, payload.getException());
sendEvent(context, HANDLED_FAILED_LOAD_BALANCER_UPDATE_EVENT.event(), payload);
}
};
}
use of com.sequenceiq.environment.environment.flow.loadbalancer.event.LoadBalancerUpdateFailedEvent 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());
}
}
use of com.sequenceiq.environment.environment.flow.loadbalancer.event.LoadBalancerUpdateFailedEvent in project cloudbreak by hortonworks.
the class LoadBalancerStackUpdateHandler method accept.
@Override
public void accept(Event<EnvironmentLoadBalancerDto> envLoadBalancerDtoEvent) {
EnvironmentLoadBalancerDto environmentLoadBalancerDto = envLoadBalancerDtoEvent.getData();
EnvironmentDto environmentDto = environmentLoadBalancerDto.getEnvironmentDto();
try {
LOGGER.debug("Initating stack load balancer update");
loadBalancerPollerService.updateStackWithLoadBalancer(environmentDto.getId(), environmentDto.getResourceCrn(), environmentDto.getName(), environmentLoadBalancerDto.getEndpointAccessGateway());
LOGGER.debug("Stack load balancer update complete.");
LoadBalancerUpdateEvent loadBalancerUpdateEvent = LoadBalancerUpdateEvent.LoadBalancerUpdateEventBuilder.aLoadBalancerUpdateEvent().withSelector(LoadBalancerUpdateStateSelectors.FINISH_LOAD_BALANCER_UPDATE_EVENT.selector()).withResourceId(environmentDto.getResourceId()).withResourceName(environmentDto.getName()).withResourceCrn(environmentDto.getResourceCrn()).withEnvironmentDto(environmentDto).withPublicEndpointAccessGateway(environmentLoadBalancerDto.getEndpointAccessGateway()).withSubnetIds(environmentLoadBalancerDto.getEndpointGatewaySubnetIds()).build();
eventSender().sendEvent(loadBalancerUpdateEvent, envLoadBalancerDtoEvent.getHeaders());
} catch (Exception e) {
LoadBalancerUpdateFailedEvent failedEvent = new LoadBalancerUpdateFailedEvent(environmentDto, e, EnvironmentStatus.LOAD_BALANCER_STACK_UPDATE_FAILED);
eventSender().sendEvent(failedEvent, envLoadBalancerDtoEvent.getHeaders());
}
}
Aggregations