package com.sequenceiq.cloudbreak.reactor.handler.orchestration; import javax.inject.Inject; import org.springframework.stereotype.Component; import com.sequenceiq.cloudbreak.cloud.event.Selectable; import com.sequenceiq.cloudbreak.reactor.api.event.EventSelectorUtil; import com.sequenceiq.cloudbreak.reactor.api.event.StackEvent; import com.sequenceiq.cloudbreak.reactor.api.event.orchestration.HostMetadataSetupFailed; import com.sequenceiq.cloudbreak.reactor.api.event.orchestration.HostMetadataSetupRequest; import com.sequenceiq.cloudbreak.reactor.api.event.orchestration.HostMetadataSetupSuccess; import com.sequenceiq.cloudbreak.reactor.handler.ReactorEventHandler; import com.sequenceiq.cloudbreak.service.stack.flow.HostMetadataSetup; import reactor.bus.Event; import reactor.bus.EventBus; @Component public class HostMetadataSetupHandler implements ReactorEventHandler<HostMetadataSetupRequest> { @Inject private EventBus eventBus; @Inject private HostMetadataSetup hostMetadataSetup; @Override public String selector() { return EventSelectorUtil.selector(HostMetadataSetupRequest.class); } @Override public void accept(Event<HostMetadataSetupRequest> event) { StackEvent request = event.getData(); Selectable response; try { hostMetadataSetup.setupHostMetadata(request.getStackId()); response = new HostMetadataSetupSuccess(request.getStackId()); } catch (Exception e) { response = new HostMetadataSetupFailed(request.getStackId(), e); } eventBus.notify(response.selector(), new Event<>(event.getHeaders(), response)); } }