use of com.sequenceiq.cloudbreak.cloud.event.resource.migration.aws.CreateResourcesResult in project cloudbreak by hortonworks.
the class CreateResourcesHandlerTest method testAcceptWhenPersistSuccess.
@Test
public void testAcceptWhenPersistSuccess() throws Exception {
ReflectionTestUtils.setField(underTest, "resourceRecreators", emptyList());
String hostGroupName = "hostGroupName";
CreateResourcesRequest request = new CreateResourcesRequest(cloudContext, cloudCredential, cloudStack, hostGroupName);
Event<CreateResourcesRequest> event = new Event<>(request);
ArgumentCaptor<Event<CreateResourcesResult>> resultCaptor = ArgumentCaptor.forClass(Event.class);
when(cloudStack.getNetwork()).thenReturn(network);
when(awsAuthenticator.authenticate(cloudContext, cloudCredential)).thenReturn(ac);
when(awsContextBuilder.contextInit(cloudContext, ac, network, List.of(), true)).thenReturn(awsContext);
underTest.accept(event);
verify(eventBus).notify(eq("CREATERESOURCESRESULT"), resultCaptor.capture());
Event<CreateResourcesResult> result = resultCaptor.getValue();
Assertions.assertNotNull(result);
}
use of com.sequenceiq.cloudbreak.cloud.event.resource.migration.aws.CreateResourcesResult in project cloudbreak by hortonworks.
the class CreateResourcesHandlerTest method testAcceptWhenPersistNotSuccess.
@Test
public void testAcceptWhenPersistNotSuccess() throws Exception {
String hostGroupName = "hostGroupName";
CreateResourcesRequest request = new CreateResourcesRequest(cloudContext, cloudCredential, cloudStack, hostGroupName);
Event<CreateResourcesRequest> event = new Event<>(request);
ArgumentCaptor<Event<CreateResourcesResult>> resultCaptor = ArgumentCaptor.forClass(Event.class);
when(cloudStack.getNetwork()).thenReturn(network);
when(awsAuthenticator.authenticate(cloudContext, cloudCredential)).thenReturn(ac);
RuntimeException value = new RuntimeException();
when(awsContextBuilder.contextInit(cloudContext, ac, network, List.of(), true)).thenThrow(value);
underTest.accept(event);
verify(eventBus).notify(eq("AWSVARIANTMIGRATIONFAILEDEVENT"), resultCaptor.capture());
Event<CreateResourcesResult> result = resultCaptor.getValue();
Assertions.assertNotNull(result);
Assertions.assertEquals(value, result.getData().getErrorDetails());
}
use of com.sequenceiq.cloudbreak.cloud.event.resource.migration.aws.CreateResourcesResult in project cloudbreak by hortonworks.
the class CreateResourcesHandler method accept.
@Override
public void accept(Event<CreateResourcesRequest> event) {
LOGGER.info("Re-create the resources during the AWS migration");
CreateResourcesRequest request = event.getData();
try {
CloudContext cloudContext = request.getCloudContext();
CloudCredential cloudCredential = request.getCloudCredential();
CloudStack cloudStack = request.getCloudStack();
AuthenticatedContext ac = awsAuthenticator.authenticate(cloudContext, cloudCredential);
Network network = cloudStack.getNetwork();
AwsContext awsContext = awsContextBuilder.contextInit(cloudContext, ac, network, List.of(), true);
for (ResourceRecreator resourceRecreator : resourceRecreators) {
resourceRecreator.recreate(request, awsContext, ac);
}
CreateResourcesResult result = new CreateResourcesResult(request.getResourceId());
request.getResult().onNext(result);
eventBus.notify(result.selector(), new Event<>(event.getHeaders(), result));
} catch (Exception e) {
LOGGER.error("Cannot re-create the AWS security group during the variant migration", e);
CreateResourcesResult result = new CreateResourcesResult(e.getMessage(), e, request.getResourceId());
request.getResult().onNext(result);
eventBus.notify(AWS_VARIANT_MIGRATION_FAILED_EVENT.event(), new Event<>(event.getHeaders(), result));
}
}
Aggregations