use of com.sequenceiq.redbeams.flow.redbeams.common.RedbeamsEvent in project cloudbreak by hortonworks.
the class StartDatabaseServerHandler method accept.
@Override
public void accept(Event<StartDatabaseServerRequest> event) {
LOGGER.debug("Received event: {}", event);
StartDatabaseServerRequest 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 != STARTED) {
LOGGER.debug("Database server '{}' is in '{}' status. Calling for '{}' status.", request.getDbStack(), status, STARTED);
connector.resources().startDatabaseServer(ac, request.getDbStack());
} else {
LOGGER.debug("Database server '{}' is already in '{}' status.", request.getDbStack(), STARTED);
}
RedbeamsEvent success = new StartDatabaseServerSuccess(request.getResourceId());
eventBus.notify(success.selector(), new Event<>(event.getHeaders(), success));
LOGGER.debug("Starting the database server successfully finished for {}", cloudContext);
} catch (Exception e) {
StartDatabaseServerFailed failure = new StartDatabaseServerFailed(request.getResourceId(), e);
LOGGER.warn("Error starting the database server:", e);
eventBus.notify(failure.selector(), new Event<>(event.getHeaders(), failure));
}
}
use of com.sequenceiq.redbeams.flow.redbeams.common.RedbeamsEvent in project cloudbreak by hortonworks.
the class RedbeamsProvisionActionsTest method allocateDatabaseServerTestPrepareExecution.
@Test
void allocateDatabaseServerTestPrepareExecution() {
RedbeamsEvent payload = new RedbeamsEvent(RESOURCE_ID);
new AbstractActionTestSupport<>(getAllocateDatabaseServerAction()).prepareExecution(payload, Map.of());
verify(dbStackStatusUpdater).updateStatus(RESOURCE_ID, DetailedDBStackStatus.CREATING_INFRASTRUCTURE);
}
use of com.sequenceiq.redbeams.flow.redbeams.common.RedbeamsEvent in project cloudbreak by hortonworks.
the class StartDatabaseServerActionTest method shouldUpdateStatusOnPrepare.
@Test
public void shouldUpdateStatusOnPrepare() {
RedbeamsEvent event = new RedbeamsEvent(RESOURCE_ID);
victim.prepareExecution(event, null);
verify(dbStackStatusUpdater).updateStatus(RESOURCE_ID, DetailedDBStackStatus.START_IN_PROGRESS);
}
use of com.sequenceiq.redbeams.flow.redbeams.common.RedbeamsEvent in project cloudbreak by hortonworks.
the class StartDatabaseServerFinishedActionTest method shouldIncrementMetricOnCreateRequest.
@Test
public void shouldIncrementMetricOnCreateRequest() {
RedbeamsStartContext context = new RedbeamsStartContext(flowParameters, cloudContext, cloudCredential, databaseStack);
RedbeamsEvent redbeamsEvent = (RedbeamsEvent) victim.createRequest(context);
assertEquals(RedbeamsStartEvent.REDBEAMS_START_FINISHED_EVENT.name(), redbeamsEvent.selector());
}
use of com.sequenceiq.redbeams.flow.redbeams.common.RedbeamsEvent in project cloudbreak by hortonworks.
the class StopDatabaseServerFailedActionTest method shouldCreateRequest.
@Test
public void shouldCreateRequest() {
RedbeamsEvent request = (RedbeamsEvent) victim.createRequest(null);
assertEquals(RedbeamsStopEvent.REDBEAMS_STOP_FAILURE_HANDLED_EVENT.event(), request.selector());
}
Aggregations