Search in sources :

Example 1 with StopDatabaseServerFailed

use of com.sequenceiq.redbeams.flow.redbeams.stop.event.StopDatabaseServerFailed in project cloudbreak by hortonworks.

the class StopDatabaseServerHandler method accept.

@Override
public void accept(Event<StopDatabaseServerRequest> event) {
    LOGGER.debug("Received event: {}", event);
    StopDatabaseServerRequest request = event.getData();
    CloudContext cloudContext = request.getCloudContext();
    try {
        CloudConnector<Object> connector = cloudPlatformConnectors.get(cloudContext.getPlatformVariant());
        AuthenticatedContext ac = connector.authentication().authenticate(cloudContext, request.getCloudCredential());
        ExternalDatabaseStatus status = connector.resources().getDatabaseServerStatus(ac, request.getDbStack());
        if (status != null && status.isTransient()) {
            LOGGER.debug("Database server '{}' is in '{}' status. Start waiting for a permanent status.", request.getDbStack(), status);
            PollTask<ExternalDatabaseStatus> task = statusCheckFactory.newPollPermanentExternalDatabaseStateTask(ac, request.getDbStack());
            status = externalDatabaseStatusPollingScheduler.schedule(task);
        }
        if (status != STOPPED) {
            LOGGER.debug("Database server '{}' is in '{}' status. Calling for '{}' status.", request.getDbStack(), status, STOPPED);
            connector.resources().stopDatabaseServer(ac, request.getDbStack());
        } else {
            LOGGER.debug("Database server '{}' is already in '{}' status.", request.getDbStack(), STOPPED);
        }
        RedbeamsEvent success = new StopDatabaseServerSuccess(request.getResourceId());
        eventBus.notify(success.selector(), new Event<>(event.getHeaders(), success));
        LOGGER.debug("Stopping the database server successfully finished for {}", cloudContext);
    } catch (Exception e) {
        StopDatabaseServerFailed failure = new StopDatabaseServerFailed(request.getResourceId(), e);
        LOGGER.warn("Error stopping the database server:", e);
        eventBus.notify(failure.selector(), new Event<>(event.getHeaders(), failure));
    }
}
Also used : StopDatabaseServerSuccess(com.sequenceiq.redbeams.flow.redbeams.stop.event.StopDatabaseServerSuccess) StopDatabaseServerFailed(com.sequenceiq.redbeams.flow.redbeams.stop.event.StopDatabaseServerFailed) CloudContext(com.sequenceiq.cloudbreak.cloud.context.CloudContext) AuthenticatedContext(com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext) StopDatabaseServerRequest(com.sequenceiq.redbeams.flow.redbeams.stop.event.StopDatabaseServerRequest) Event(reactor.bus.Event) RedbeamsEvent(com.sequenceiq.redbeams.flow.redbeams.common.RedbeamsEvent) RedbeamsEvent(com.sequenceiq.redbeams.flow.redbeams.common.RedbeamsEvent) ExternalDatabaseStatus(com.sequenceiq.cloudbreak.cloud.model.ExternalDatabaseStatus)

Aggregations

AuthenticatedContext (com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext)1 CloudContext (com.sequenceiq.cloudbreak.cloud.context.CloudContext)1 ExternalDatabaseStatus (com.sequenceiq.cloudbreak.cloud.model.ExternalDatabaseStatus)1 RedbeamsEvent (com.sequenceiq.redbeams.flow.redbeams.common.RedbeamsEvent)1 StopDatabaseServerFailed (com.sequenceiq.redbeams.flow.redbeams.stop.event.StopDatabaseServerFailed)1 StopDatabaseServerRequest (com.sequenceiq.redbeams.flow.redbeams.stop.event.StopDatabaseServerRequest)1 StopDatabaseServerSuccess (com.sequenceiq.redbeams.flow.redbeams.stop.event.StopDatabaseServerSuccess)1 Event (reactor.bus.Event)1