use of com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext in project cloudbreak by hortonworks.
the class ASGroupStatusCheckerTaskTest method successTest.
@Test
public void successTest() throws Exception {
int requiredInstances = 160;
AuthenticatedContext authenticatedContext = mock(AuthenticatedContext.class);
CloudContext cloudContext = mock(CloudContext.class);
String regionName = "eu-west-1";
when(cloudContext.getLocation()).thenReturn(Location.location(Region.region(regionName)));
when(authenticatedContext.getCloudContext()).thenReturn(cloudContext);
CloudCredential cloudCredential = mock(CloudCredential.class);
when(authenticatedContext.getCloudCredential()).thenReturn(cloudCredential);
String asGroupName = "as-group";
AwsClient awsClient = mock(AwsClient.class);
AmazonEC2Client amazonEC2Client = mock(AmazonEC2Client.class);
when(awsClient.createAccess(any(AwsCredentialView.class), eq(regionName))).thenReturn(amazonEC2Client);
DescribeInstanceStatusResult firstDescribeInstanceStatusResult = new DescribeInstanceStatusResult();
List<InstanceStatus> firstInstanceStatuses = returnInstanceStatus(0, 100);
firstDescribeInstanceStatusResult.setInstanceStatuses(firstInstanceStatuses);
DescribeInstanceStatusResult secondDescribeInstanceStatusResult = new DescribeInstanceStatusResult();
List<InstanceStatus> secondInstanceStatuses = returnInstanceStatus(100, 160);
secondDescribeInstanceStatusResult.setInstanceStatuses(secondInstanceStatuses);
when(amazonEC2Client.describeInstanceStatus(any(DescribeInstanceStatusRequest.class))).thenReturn(firstDescribeInstanceStatusResult).thenReturn(secondDescribeInstanceStatusResult);
CloudFormationStackUtil cloudFormationStackUtil = mock(CloudFormationStackUtil.class);
List<String> instancIds = new ArrayList<>();
for (int i = 0; i < requiredInstances; i++) {
instancIds.add(Integer.toString(i));
}
AmazonAutoScalingClient autoScalingClient = mock(AmazonAutoScalingClient.class);
when(awsClient.createAutoScalingClient(any(AwsCredentialView.class), anyString())).thenReturn(autoScalingClient);
when(autoScalingClient.describeScalingActivities(any(DescribeScalingActivitiesRequest.class))).thenReturn(new DescribeScalingActivitiesResult());
when(cloudFormationStackUtil.getInstanceIds(any(AmazonAutoScalingClient.class), eq(asGroupName))).thenReturn(instancIds);
ASGroupStatusCheckerTask asGroupStatusCheckerTask = new ASGroupStatusCheckerTask(authenticatedContext, asGroupName, requiredInstances, awsClient, cloudFormationStackUtil);
Boolean taskResult = asGroupStatusCheckerTask.call();
ArgumentCaptor<DescribeInstanceStatusRequest> instanceStatusRequestArgumentCaptor = ArgumentCaptor.forClass(DescribeInstanceStatusRequest.class);
verify(amazonEC2Client, times(2)).describeInstanceStatus(instanceStatusRequestArgumentCaptor.capture());
List<DescribeInstanceStatusRequest> allValues = instanceStatusRequestArgumentCaptor.getAllValues();
assertEquals(100, allValues.get(0).getInstanceIds().size());
assertEquals(60, allValues.get(1).getInstanceIds().size());
assertTrue(taskResult);
}
use of com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext in project cloudbreak by hortonworks.
the class ASGroupStatusCheckerTaskTest method failTest.
@Test
public void failTest() throws Exception {
int requiredInstances = 160;
AuthenticatedContext authenticatedContext = mock(AuthenticatedContext.class);
CloudContext cloudContext = mock(CloudContext.class);
String regionName = "eu-west-1";
when(cloudContext.getLocation()).thenReturn(Location.location(Region.region(regionName)));
when(authenticatedContext.getCloudContext()).thenReturn(cloudContext);
CloudCredential cloudCredential = mock(CloudCredential.class);
when(authenticatedContext.getCloudCredential()).thenReturn(cloudCredential);
String asGroupName = "as-group";
AwsClient awsClient = mock(AwsClient.class);
AmazonEC2Client amazonEC2Client = mock(AmazonEC2Client.class);
when(awsClient.createAccess(any(AwsCredentialView.class), eq(regionName))).thenReturn(amazonEC2Client);
DescribeInstanceStatusResult firstDescribeInstanceStatusResult = new DescribeInstanceStatusResult();
List<InstanceStatus> firstInstanceStatuses = returnInstanceStatus(0, 99);
firstDescribeInstanceStatusResult.setInstanceStatuses(firstInstanceStatuses);
DescribeInstanceStatusResult secondDescribeInstanceStatusResult = new DescribeInstanceStatusResult();
List<InstanceStatus> secondInstanceStatuses = returnInstanceStatus(100, 160);
secondDescribeInstanceStatusResult.setInstanceStatuses(secondInstanceStatuses);
when(amazonEC2Client.describeInstanceStatus(any(DescribeInstanceStatusRequest.class))).thenReturn(firstDescribeInstanceStatusResult).thenReturn(secondDescribeInstanceStatusResult);
CloudFormationStackUtil cloudFormationStackUtil = mock(CloudFormationStackUtil.class);
List<String> instancIds = new ArrayList<>();
for (int i = 0; i < requiredInstances; i++) {
instancIds.add(Integer.toString(i));
}
AmazonAutoScalingClient autoScalingClient = mock(AmazonAutoScalingClient.class);
when(awsClient.createAutoScalingClient(any(AwsCredentialView.class), anyString())).thenReturn(autoScalingClient);
when(autoScalingClient.describeScalingActivities(any(DescribeScalingActivitiesRequest.class))).thenReturn(new DescribeScalingActivitiesResult());
when(cloudFormationStackUtil.getInstanceIds(any(AmazonAutoScalingClient.class), eq(asGroupName))).thenReturn(instancIds);
ASGroupStatusCheckerTask asGroupStatusCheckerTask = new ASGroupStatusCheckerTask(authenticatedContext, asGroupName, requiredInstances, awsClient, cloudFormationStackUtil);
Boolean taskResult = asGroupStatusCheckerTask.call();
ArgumentCaptor<DescribeInstanceStatusRequest> instanceStatusRequestArgumentCaptor = ArgumentCaptor.forClass(DescribeInstanceStatusRequest.class);
verify(amazonEC2Client, times(2)).describeInstanceStatus(instanceStatusRequestArgumentCaptor.capture());
List<DescribeInstanceStatusRequest> allValues = instanceStatusRequestArgumentCaptor.getAllValues();
assertEquals(100, allValues.get(0).getInstanceIds().size());
assertEquals(60, allValues.get(1).getInstanceIds().size());
assertFalse(taskResult);
}
use of com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext in project cloudbreak by hortonworks.
the class GcpCredentialConnectorTest method testForFailedStatusBecauseMissingPrjId.
/**
* Testing the GcpContext checking mechanism. If the inner created
* GcpContext does not contains a valid project id then a FAILED
* status should come back.
*/
@Test
public void testForFailedStatusBecauseMissingPrjId() {
final AuthenticatedContext authContext = createAuthContext();
when(contextBuilder.contextInit(authContext.getCloudContext(), authContext, null, null, false)).thenReturn(context);
when(context.getProjectId()).thenReturn(null);
when(context.getServiceAccountId()).thenReturn("some service id");
final CloudCredentialStatus status = underTest.verify(authContext);
Assert.assertNotNull("The returned CloudCredentialStatus instance is null!", status);
Assert.assertEquals("Invalid credential status has specified!", CredentialStatus.FAILED, status.getStatus());
}
use of com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext in project cloudbreak by hortonworks.
the class GcpInstanceResourceBuilderTest method setUp.
@Before
public void setUp() {
privateId = 0L;
name = "master";
flavor = "m1.medium";
instanceId = "SOME_ID";
volumes = Arrays.asList(new Volume("/hadoop/fs1", "HDD", 1), new Volume("/hadoop/fs2", "HDD", 1));
List<SecurityRule> rules = Collections.singletonList(new SecurityRule("0.0.0.0/0", new PortDefinition[] { new PortDefinition("22", "22"), new PortDefinition("443", "443") }, "tcp"));
security = new Security(rules, null);
Location location = Location.location(Region.region("region"), AvailabilityZone.availabilityZone("az"));
Map<InstanceGroupType, String> userData = ImmutableMap.of(InstanceGroupType.CORE, "CORE", InstanceGroupType.GATEWAY, "GATEWAY");
image = new Image("cb-centos66-amb200-2015-05-25", userData, "redhat6", "", "default", "default-id");
CloudContext cloudContext = new CloudContext(privateId, "testname", "GCP", "owner");
CloudCredential cloudCredential = new CloudCredential(privateId, "credentialname");
cloudCredential.putParameter("projectId", "projectId");
String projectId = GcpStackUtil.getProjectId(cloudCredential);
String serviceAccountId = GcpStackUtil.getServiceAccountId(cloudCredential);
authenticatedContext = new AuthenticatedContext(cloudContext, cloudCredential);
context = new GcpContext(cloudContext.getName(), location, projectId, serviceAccountId, compute, false, 30, false);
List<CloudResource> networkResources = Arrays.asList(new Builder().type(ResourceType.GCP_NETWORK).name("network-test").build());
context.addNetworkResources(networkResources);
operation = new Operation();
operation.setName("operation");
operation.setHttpErrorStatusCode(null);
GcpResourceNameService resourceNameService = new GcpResourceNameService();
ReflectionTestUtils.setField(resourceNameService, "maxResourceNameLength", 50);
ReflectionTestUtils.setField(builder, "resourceNameService", resourceNameService);
}
use of com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext in project cloudbreak by hortonworks.
the class CollectMetadataHandler method accept.
@Override
public void accept(Event<CollectMetadataRequest> collectMetadataRequestEvent) {
LOGGER.info("Received event: {}", collectMetadataRequestEvent);
CollectMetadataRequest request = collectMetadataRequestEvent.getData();
try {
CloudConnector connector = cloudPlatformConnectors.get(request.getCloudContext().getPlatformVariant());
AuthenticatedContext ac = connector.authentication().authenticate(request.getCloudContext(), request.getCloudCredential());
List<CloudVmMetaDataStatus> instanceStatuses = connector.metadata().collect(ac, request.getCloudResource(), request.getVms());
CollectMetadataResult collectMetadataResult = new CollectMetadataResult(request, instanceStatuses);
request.getResult().onNext(collectMetadataResult);
eventBus.notify(collectMetadataResult.selector(), new Event<>(collectMetadataRequestEvent.getHeaders(), collectMetadataResult));
LOGGER.info("Metadata collection successfully finished");
} catch (RuntimeException e) {
CollectMetadataResult failure = new CollectMetadataResult(e, request);
request.getResult().onNext(failure);
eventBus.notify(failure.selector(), new Event<>(collectMetadataRequestEvent.getHeaders(), failure));
}
}
Aggregations