Search in sources :

Example 1 with CcmKeyDeregisterRequest

use of com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest in project cloudbreak by hortonworks.

the class CcmKeyDeregisterAction method createRequest.

@Override
protected CcmKeyDeregisterRequest createRequest(StackTerminationContext context) {
    Stack stack = context.getStack();
    String userCrn = ThreadBasedUserCrnProvider.getUserCrn();
    String actorCrn = Objects.requireNonNull(userCrn, "userCrn is null");
    String accountId = ThreadBasedUserCrnProvider.getAccountId();
    String keyId = CcmResourceUtil.getKeyId(stack.getResourceCrn());
    return new CcmKeyDeregisterRequest(stack.getId(), actorCrn, accountId, keyId, stack.getTunnel());
}
Also used : CcmKeyDeregisterRequest(com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest) Stack(com.sequenceiq.cloudbreak.domain.stack.Stack)

Example 2 with CcmKeyDeregisterRequest

use of com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest in project cloudbreak by hortonworks.

the class CcmKeyDeregisterAction method doExecute.

@Override
protected void doExecute(StackTerminationContext context, ClusterProxyDeregisterSuccess payload, Map<Object, Object> variables) {
    CcmKeyDeregisterRequest deregisterRequest = createRequest(context);
    sendEvent(context, deregisterRequest.selector(), deregisterRequest);
}
Also used : CcmKeyDeregisterRequest(com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest)

Example 3 with CcmKeyDeregisterRequest

use of com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest in project cloudbreak by hortonworks.

the class CcmKeyDeregisterHandler method accept.

@Override
public void accept(Event<CcmKeyDeregisterRequest> requestEvent) {
    CcmKeyDeregisterRequest request = requestEvent.getData();
    Selectable result;
    try {
        Stack stack = stackService.getByIdWithListsInTransaction(request.getResourceId());
        try {
            if (request.getTunnel().useCcmV1()) {
                LOGGER.debug("De-registering MinaSshdServiceId '{}' from CCM. Cluster CRN: {}", stack.getMinaSshdServiceId(), stack.getResourceCrn());
                ccmResourceTerminationListener.deregisterCcmSshTunnelingKey(request.getActorCrn(), request.getAccountId(), request.getKeyId(), stack.getMinaSshdServiceId());
                LOGGER.debug("De-registered MinaSshdServiceId '{}' from CCM. Cluster CRN: {}", stack.getMinaSshdServiceId(), stack.getResourceCrn());
            } else if (request.getTunnel().useCcmV2OrJumpgate() && StringUtils.isNotBlank(stack.getCcmV2AgentCrn())) {
                LOGGER.debug("De-registering CcmV2AgentCrn '{}' from CCM. Cluster CRN: {}", stack.getCcmV2AgentCrn(), stack.getResourceCrn());
                ccmV2AgentTerminationListener.deregisterInvertingProxyAgent(stack.getCcmV2AgentCrn());
                LOGGER.debug("De-registered CcmV2AgentCrn '{}' from CCM. Cluster CRN: {}", stack.getCcmV2AgentCrn(), stack.getResourceCrn());
            } else {
                LOGGER.debug("CCM is DISABLED, skipping de-registering of key from CCM. Cluster CRN: {}", stack.getResourceCrn());
            }
        } catch (Exception ex) {
            LOGGER.warn("CCM key deregistration failed", ex);
        }
        result = new CcmKeyDeregisterSuccess(stack.getId());
    } catch (Exception ex) {
        LOGGER.error("Stack retrieval for CCM key deregistration failed", ex);
        result = new StackFailureEvent(StackTerminationEvent.CCM_KEY_DEREGISTER_FAILED_EVENT.event(), request.getResourceId(), ex);
    }
    eventBus.notify(result.selector(), new Event<>(requestEvent.getHeaders(), result));
}
Also used : Selectable(com.sequenceiq.cloudbreak.common.event.Selectable) StackFailureEvent(com.sequenceiq.cloudbreak.reactor.api.event.StackFailureEvent) CcmKeyDeregisterRequest(com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest) CcmKeyDeregisterSuccess(com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterSuccess) Stack(com.sequenceiq.cloudbreak.domain.stack.Stack)

Example 4 with CcmKeyDeregisterRequest

use of com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest in project cloudbreak by hortonworks.

the class CcmKeyDeregisterHandlerTest method testWhenTunnelIsNotCcmV2ThenNoCcmV2AgentDeregistrationIsCalled.

@ParameterizedTest
@EnumSource(value = Tunnel.class, names = { "CCMV2", "CCMV2_JUMPGATE" }, mode = EnumSource.Mode.EXCLUDE)
void testWhenTunnelIsNotCcmV2ThenNoCcmV2AgentDeregistrationIsCalled(Tunnel tunnel) {
    setupBasicStack();
    CcmKeyDeregisterRequest request = new CcmKeyDeregisterRequest(STACK_ID, ACTOR_CRN, ACCOUNT, KEY_ID, tunnel);
    Event<CcmKeyDeregisterRequest> event = new Event<>(request);
    underTest.accept(event);
    verifyNoMoreInteractions(ccmV2AgentTerminationListener);
    checkSuccess();
}
Also used : CcmKeyDeregisterRequest(com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest) StackFailureEvent(com.sequenceiq.cloudbreak.reactor.api.event.StackFailureEvent) Event(reactor.bus.Event) EnumSource(org.junit.jupiter.params.provider.EnumSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 5 with CcmKeyDeregisterRequest

use of com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest in project cloudbreak by hortonworks.

the class CcmKeyDeregisterHandlerTest method testWhenErrorHappensDuringDeregistrationStillSuccess.

@Test
void testWhenErrorHappensDuringDeregistrationStillSuccess() {
    Stack stack = setupBasicStack();
    stack.setCcmV2AgentCrn(AGENT_CRN);
    CcmKeyDeregisterRequest request = new CcmKeyDeregisterRequest(STACK_ID, ACTOR_CRN, ACCOUNT, KEY_ID, CCMV2_JUMPGATE);
    Event<CcmKeyDeregisterRequest> event = new Event<>(request);
    doAnswer(a -> {
        throw new Exception("failed");
    }).when(ccmV2AgentTerminationListener).deregisterInvertingProxyAgent(anyString());
    underTest.accept(event);
    verifyNoMoreInteractions(ccmResourceTerminationListener);
    verifyNoMoreInteractions(ccmV2AgentTerminationListener);
    checkSuccess();
}
Also used : CcmKeyDeregisterRequest(com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest) StackFailureEvent(com.sequenceiq.cloudbreak.reactor.api.event.StackFailureEvent) Event(reactor.bus.Event) Stack(com.sequenceiq.cloudbreak.domain.stack.Stack) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Aggregations

CcmKeyDeregisterRequest (com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterRequest)9 StackFailureEvent (com.sequenceiq.cloudbreak.reactor.api.event.StackFailureEvent)7 Stack (com.sequenceiq.cloudbreak.domain.stack.Stack)6 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)6 Event (reactor.bus.Event)6 Test (org.junit.jupiter.api.Test)4 EnumSource (org.junit.jupiter.params.provider.EnumSource)2 Selectable (com.sequenceiq.cloudbreak.common.event.Selectable)1 CcmKeyDeregisterSuccess (com.sequenceiq.cloudbreak.reactor.api.event.recipe.CcmKeyDeregisterSuccess)1