com.amazonaws.services.autoscaling.model.DescribeAutoScalingGroupsResult Java Examples
The following examples show how to use
com.amazonaws.services.autoscaling.model.DescribeAutoScalingGroupsResult.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: InventoryUtilTest.java From pacbot with Apache License 2.0 | 6 votes |
/** * Fetch launch configurations test. * * @throws Exception the exception */ @SuppressWarnings("static-access") @Test public void fetchLaunchConfigurationsTest() throws Exception { mockStatic(AmazonAutoScalingClientBuilder.class); AmazonAutoScaling asgClient = PowerMockito.mock(AmazonAutoScaling.class); AmazonAutoScalingClientBuilder amazonAutoScalingClientBuilder = PowerMockito.mock(AmazonAutoScalingClientBuilder.class); AWSStaticCredentialsProvider awsStaticCredentialsProvider = PowerMockito.mock(AWSStaticCredentialsProvider.class); PowerMockito.whenNew(AWSStaticCredentialsProvider.class).withAnyArguments().thenReturn(awsStaticCredentialsProvider); when(amazonAutoScalingClientBuilder.standard()).thenReturn(amazonAutoScalingClientBuilder); when(amazonAutoScalingClientBuilder.withCredentials(anyObject())).thenReturn(amazonAutoScalingClientBuilder); when(amazonAutoScalingClientBuilder.withRegion(anyString())).thenReturn(amazonAutoScalingClientBuilder); when(amazonAutoScalingClientBuilder.build()).thenReturn(asgClient); DescribeAutoScalingGroupsResult autoScalingGroupsResult = new DescribeAutoScalingGroupsResult(); List<AutoScalingGroup> asgList = new ArrayList<>(); asgList.add(new AutoScalingGroup()); autoScalingGroupsResult.setAutoScalingGroups(asgList); when(asgClient.describeAutoScalingGroups(anyObject())).thenReturn(autoScalingGroupsResult); assertThat(inventoryUtil.fetchAsg(new BasicSessionCredentials("awsAccessKey", "awsSecretKey", "sessionToken"), "skipRegions", "account","accountName").size(), is(1)); }
Example #2
Source File: AwsTerminateServiceTest.java From cloudbreak with Apache License 2.0 | 6 votes |
@Test public void testTerminateWhenResourcesHasNoCfButStackNotExist() { CloudResource cf = new Builder().name("cfn-87654321").type(ResourceType.CLOUDFORMATION_STACK).build(); CloudResource lc = new Builder().name("lc-87654321").type(ResourceType.AWS_LAUNCHCONFIGURATION).build(); Group group = new Group("alma", InstanceGroupType.GATEWAY, List.of(), null, null, null, null, "", 0, Optional.empty()); DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = new DescribeAutoScalingGroupsResult(); describeAutoScalingGroupsResult.setAutoScalingGroups(List.of()); when(cloudStack.getGroups()).thenReturn(List.of(group)); when(cfStackUtil.getCloudFormationStackResource(any())).thenReturn(cf); when(retryService.testWith2SecDelayMax15Times(any())).thenThrow(new Retry.ActionFailedException("Fail no more")); when(awsClient.createAutoScalingClient(any(), any())).thenReturn(amazonAutoScalingClient); List<CloudResourceStatus> result = underTest.terminate(authenticatedContext(), cloudStack, List.of( new Builder().name("ami-87654321").type(ResourceType.AWS_ENCRYPTED_AMI).build(), cf, lc )); verify(awsResourceConnector, times(1)).check(any(), any()); verify(awsComputeResourceService, times(1)).deleteComputeResources(any(), any(), any()); verify(encryptedImageCopyService, times(1)).deleteResources(any(), any(), any()); verify(cloudFormationRetryClient, never()).deleteStack(any()); verify(amazonAutoScalingRetryClient, never()).describeAutoScalingGroups(any()); Assertions.assertEquals(0, result.size(), "Resources result should be empty"); }
Example #3
Source File: AwsTerminateServiceIntegrationTest.java From cloudbreak with Apache License 2.0 | 6 votes |
@Test public void testTerminateWhenResourcesHasNoCfButStackNotExist() { CloudResource cf = new Builder().name("cfn-87654321").type(ResourceType.CLOUDFORMATION_STACK).build(); CloudResource lc = new Builder().name("lc-87654321").type(ResourceType.AWS_LAUNCHCONFIGURATION).build(); Group group = new Group("alma", InstanceGroupType.GATEWAY, List.of(), null, null, null, null, "", 0, Optional.empty()); DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = new DescribeAutoScalingGroupsResult(); describeAutoScalingGroupsResult.setAutoScalingGroups(List.of()); when(cloudStack.getGroups()).thenReturn(List.of(group)); when(cfStackUtil.getCloudFormationStackResource(any())).thenReturn(cf); when(retryService.testWith2SecDelayMax15Times(any())).thenThrow(new Retry.ActionFailedException("Fail no more")); when(awsClient.createAutoScalingClient(any(), any())).thenReturn(amazonAutoScalingClient); List<CloudResourceStatus> result = underTest.terminate(authenticatedContext(), cloudStack, List.of( new Builder().name("ami-87654321").type(ResourceType.AWS_ENCRYPTED_AMI).build(), cf, lc )); verify(awsResourceConnector, times(1)).check(any(), any()); verify(awsComputeResourceService, times(1)).deleteComputeResources(any(), any(), any()); verify(encryptedImageCopyService, times(1)).deleteResources(any(), any(), any()); verify(cloudFormationRetryClient, never()).deleteStack(any()); verify(amazonAutoScalingRetryClient, never()).describeAutoScalingGroups(any()); Assertions.assertEquals(0, result.size(), "Resources result should be empty"); }
Example #4
Source File: CustomAmazonWaiterProvider.java From cloudbreak with Apache License 2.0 | 6 votes |
public Waiter<DescribeAutoScalingGroupsRequest> getAutoscalingInstancesInServiceWaiter(AmazonAutoScalingClient asClient, Integer requiredCount) { return new WaiterBuilder<DescribeAutoScalingGroupsRequest, DescribeAutoScalingGroupsResult>() .withSdkFunction(new DescribeAutoScalingGroupsFunction(asClient)) .withAcceptors(new WaiterAcceptor<DescribeAutoScalingGroupsResult>() { @Override public boolean matches(DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult) { return describeAutoScalingGroupsResult.getAutoScalingGroups().get(0).getInstances() .stream().filter(instance -> IN_SERVICE.equals(instance.getLifecycleState())).count() == requiredCount; } @Override public WaiterState getState() { return WaiterState.SUCCESS; } }) .withDefaultPollingStrategy(new PollingStrategy(new MaxAttemptsRetryStrategy(DEFAULT_MAX_ATTEMPTS), new FixedDelayStrategy(DEFAULT_DELAY_IN_SECONDS))) .withExecutorService(WaiterExecutorServiceFactory.buildExecutorServiceForWaiter("AmazonRDSWaiters")).build(); }
Example #5
Source File: CloudFormationStackUtil.java From cloudbreak with Apache License 2.0 | 5 votes |
public List<String> getInstanceIds(AmazonAutoScalingRetryClient amazonASClient, String asGroupName) { DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = amazonASClient .describeAutoScalingGroups(new DescribeAutoScalingGroupsRequest().withAutoScalingGroupNames(asGroupName)); List<String> instanceIds = new ArrayList<>(); if (!describeAutoScalingGroupsResult.getAutoScalingGroups().isEmpty() && describeAutoScalingGroupsResult.getAutoScalingGroups().get(0).getInstances() != null) { for (Instance instance : describeAutoScalingGroupsResult.getAutoScalingGroups().get(0).getInstances()) { if (INSTANCE_LIFECYCLE_IN_SERVICE.equals(instance.getLifecycleState())) { instanceIds.add(instance.getInstanceId()); } } } return instanceIds; }
Example #6
Source File: AwsRepairTest.java From cloudbreak with Apache License 2.0 | 5 votes |
private void upscaleStack() throws Exception { AuthenticatedContext authenticatedContext = componentTestUtil.getAuthenticatedContext(); CloudStack stack = componentTestUtil.getStack(InstanceStatus.CREATE_REQUESTED, InstanceStatus.STARTED); List<CloudResource> cloudResources = List.of( CloudResource.builder() .name(AWS_SUBNET_ID) .type(ResourceType.AWS_SUBNET) .build(), createVolumeResource(VOLUME_ID_1, INSTANCE_ID_1, SIZE_DISK_1, FSTAB_1, CommonStatus.DETACHED), createVolumeResource(VOLUME_ID_2, INSTANCE_ID_2, SIZE_DISK_2, FSTAB_2, CommonStatus.DETACHED), createVolumeResource(VOLUME_ID_3, INSTANCE_ID_3, SIZE_DISK_2, FSTAB_2, CommonStatus.CREATED)); InMemoryStateStore.putStack(1L, PollGroup.POLLABLE); when(amazonCloudFormationRetryClient.describeStackResource(any())) .thenReturn(new DescribeStackResourceResult() .withStackResourceDetail(new StackResourceDetail().withPhysicalResourceId(AUTOSCALING_GROUP_NAME))); when(amazonAutoScalingRetryClient.describeAutoScalingGroups(any())) .thenReturn(new DescribeAutoScalingGroupsResult() .withAutoScalingGroups(new AutoScalingGroup() .withAutoScalingGroupName(AUTOSCALING_GROUP_NAME) .withInstances(List.of( new Instance().withInstanceId(INSTANCE_ID_1).withLifecycleState(LifecycleState.InService), new Instance().withInstanceId(INSTANCE_ID_2).withLifecycleState(LifecycleState.InService))) )); when(amazonEC2Client.describeVolumes(any())) .thenReturn(new DescribeVolumesResult().withVolumes( new com.amazonaws.services.ec2.model.Volume().withVolumeId(VOLUME_ID_1).withState(VolumeState.Available), new com.amazonaws.services.ec2.model.Volume().withVolumeId(VOLUME_ID_2).withState(VolumeState.Available), new com.amazonaws.services.ec2.model.Volume().withVolumeId(VOLUME_ID_3).withState(VolumeState.InUse) )); when(amazonEC2Client.describeInstances(any())).thenReturn( new DescribeInstancesResult().withReservations( new Reservation().withInstances(new com.amazonaws.services.ec2.model.Instance().withInstanceId("i-instance"))) ); AmazonEC2Waiters waiters = mock(AmazonEC2Waiters.class); when(amazonEC2Client.waiters()).thenReturn(waiters); Waiter<DescribeInstancesRequest> instanceWaiter = mock(Waiter.class); when(waiters.instanceRunning()).thenReturn(instanceWaiter); when(amazonAutoScalingClient.waiters()).thenReturn(asWaiters); when(asWaiters.groupInService()).thenReturn(describeAutoScalingGroupsRequestWaiter); underTest.upscale(authenticatedContext, stack, cloudResources); verify(amazonAutoScalingRetryClient).resumeProcesses(argThat(argument -> AUTOSCALING_GROUP_NAME.equals(argument.getAutoScalingGroupName()) && argument.getScalingProcesses().contains("Launch"))); verify(amazonAutoScalingRetryClient).updateAutoScalingGroup(argThat(argument -> { Group workerGroup = stack.getGroups().get(1); return AUTOSCALING_GROUP_NAME.equals(argument.getAutoScalingGroupName()) && workerGroup.getInstancesSize().equals(argument.getMaxSize()) && workerGroup.getInstancesSize().equals(argument.getDesiredCapacity()); })); verify(amazonAutoScalingRetryClient, times(stack.getGroups().size())) .suspendProcesses(argThat(argument -> AUTOSCALING_GROUP_NAME.equals(argument.getAutoScalingGroupName()) && SUSPENDED_PROCESSES.equals(argument.getScalingProcesses()))); ArgumentCaptor<CloudResource> updatedCloudResourceArgumentCaptor = ArgumentCaptor.forClass(CloudResource.class); verify(resourceNotifier, times(4)).notifyUpdate(updatedCloudResourceArgumentCaptor.capture(), any()); assertVolumeResource(updatedCloudResourceArgumentCaptor.getAllValues(), INSTANCE_ID_1, SIZE_DISK_1, FSTAB_1); assertVolumeResource(updatedCloudResourceArgumentCaptor.getAllValues(), INSTANCE_ID_2, SIZE_DISK_2, FSTAB_2); }
Example #7
Source File: AwsLaunchTest.java From cloudbreak with Apache License 2.0 | 5 votes |
private void setupAutoscalingResponses() { DescribeScalingActivitiesResult describeScalingActivitiesResult = new DescribeScalingActivitiesResult(); when(amazonAutoScalingRetryClient.describeScalingActivities(any())).thenReturn(describeScalingActivitiesResult); DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = new DescribeAutoScalingGroupsResult() .withAutoScalingGroups( new AutoScalingGroup() .withInstances(new Instance().withLifecycleState(LifecycleState.InService).withInstanceId(INSTANCE_ID)) .withAutoScalingGroupName(AUTOSCALING_GROUP_NAME) ); when(amazonAutoScalingRetryClient.describeAutoScalingGroups(any())).thenReturn(describeAutoScalingGroupsResult); }
Example #8
Source File: AutoScalingGroupHandlerTest.java From cloudbreak with Apache License 2.0 | 5 votes |
@Test public void testGetAutoScalingGroups() { CloudResource cfResource = CloudResource.builder() .type(ResourceType.CLOUDFORMATION_STACK) .name("cf") .build(); DescribeStackResourcesResult resourcesResult = new DescribeStackResourcesResult(); StackResource stackResource = new StackResource() .withLogicalResourceId("logicalResourceId") .withPhysicalResourceId("physicalResourceId") .withResourceType("AWS::AutoScaling::AutoScalingGroup"); resourcesResult.getStackResources().add(stackResource); resourcesResult.getStackResources().add(new StackResource().withResourceType("other")); when(cloudFormationClient.describeStackResources(any(DescribeStackResourcesRequest.class))).thenReturn(resourcesResult); DescribeAutoScalingGroupsResult scalingGroupsResult = new DescribeAutoScalingGroupsResult(); AutoScalingGroup autoScalingGroup = new AutoScalingGroup().withAutoScalingGroupName(stackResource.getPhysicalResourceId()); scalingGroupsResult.getAutoScalingGroups().add(autoScalingGroup); when(autoScalingClient.describeAutoScalingGroups(any(DescribeAutoScalingGroupsRequest.class))).thenReturn(scalingGroupsResult); Map<AutoScalingGroup, String> autoScalingGroups = underTest.getAutoScalingGroups(cloudFormationClient, autoScalingClient, cfResource); assertEquals(1, autoScalingGroups.size()); assertEquals(autoScalingGroup, autoScalingGroups.entrySet().stream().findFirst().get().getKey()); assertEquals(stackResource.getLogicalResourceId(), autoScalingGroups.entrySet().stream().findFirst().get().getValue()); ArgumentCaptor<DescribeStackResourcesRequest> stackResourcesRequestArgumentCaptor = ArgumentCaptor.forClass(DescribeStackResourcesRequest.class); verify(cloudFormationClient).describeStackResources(stackResourcesRequestArgumentCaptor.capture()); assertEquals(cfResource.getName(), stackResourcesRequestArgumentCaptor.getValue().getStackName()); ArgumentCaptor<DescribeAutoScalingGroupsRequest> scalingGroupsRequestArgumentCaptor = ArgumentCaptor.forClass(DescribeAutoScalingGroupsRequest.class); verify(autoScalingClient).describeAutoScalingGroups(scalingGroupsRequestArgumentCaptor.capture()); assertEquals(1, scalingGroupsRequestArgumentCaptor.getValue().getAutoScalingGroupNames().size()); assertEquals(stackResource.getPhysicalResourceId(), scalingGroupsRequestArgumentCaptor.getValue().getAutoScalingGroupNames().get(0)); }
Example #9
Source File: AwsTerminateServiceTest.java From cloudbreak with Apache License 2.0 | 5 votes |
@Test public void testTerminateWhenResourcesHasCf() { CloudResource cf = new Builder().name("cfn-87654321").type(ResourceType.CLOUDFORMATION_STACK).build(); CloudResource lc = new Builder().name("lc-87654321").type(ResourceType.AWS_LAUNCHCONFIGURATION).build(); Group group = new Group("alma", InstanceGroupType.GATEWAY, List.of(), null, null, null, null, "", 0, Optional.empty()); DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = new DescribeAutoScalingGroupsResult(); describeAutoScalingGroupsResult.setAutoScalingGroups(List.of()); when(cloudStack.getGroups()).thenReturn(List.of(group)); when(cfStackUtil.getCloudFormationStackResource(any())).thenReturn(cf); when(cfStackUtil.getAutoscalingGroupName(any(), anyString(), anyString())).thenReturn("alma"); when(awsClient.createCloudFormationRetryClient(any())).thenReturn(cloudFormationRetryClient); when(awsClient.createCloudFormationClient(any(), any())).thenReturn(cloudFormationClient); when(awsClient.createAutoScalingClient(any(), any())).thenReturn(amazonAutoScalingClient); when(awsClient.createAutoScalingRetryClient(any(), any())).thenReturn(amazonAutoScalingRetryClient); when(amazonAutoScalingRetryClient.describeAutoScalingGroups(any())).thenReturn(describeAutoScalingGroupsResult); when(cloudFormationClient.waiters()).thenReturn(cfWaiters); when(cfWaiters.stackDeleteComplete()).thenReturn(deletionWaiter); List<CloudResourceStatus> result = underTest.terminate(authenticatedContext(), cloudStack, List.of( new Builder().name("ami-87654321").type(ResourceType.AWS_ENCRYPTED_AMI).build(), cf, lc )); verify(awsResourceConnector, times(1)).check(any(), any()); verify(awsComputeResourceService, times(1)).deleteComputeResources(any(), any(), any()); verify(encryptedImageCopyService, times(1)).deleteResources(any(), any(), any()); verify(cloudFormationRetryClient, times(1)).deleteStack(any()); verify(amazonAutoScalingRetryClient, times(1)).describeAutoScalingGroups(any()); Assertions.assertEquals(0, result.size(), "Resources result should have one size list"); }
Example #10
Source File: AwsTerminateServiceIntegrationTest.java From cloudbreak with Apache License 2.0 | 5 votes |
@Test public void testTerminateWhenResourcesHasCf() { CloudResource cf = new Builder().name("cfn-87654321").type(ResourceType.CLOUDFORMATION_STACK).build(); CloudResource lc = new Builder().name("lc-87654321").type(ResourceType.AWS_LAUNCHCONFIGURATION).build(); Group group = new Group("alma", InstanceGroupType.GATEWAY, List.of(), null, null, null, null, "", 0, Optional.empty()); DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = new DescribeAutoScalingGroupsResult(); describeAutoScalingGroupsResult.setAutoScalingGroups(List.of()); when(cloudStack.getGroups()).thenReturn(List.of(group)); when(cfStackUtil.getCloudFormationStackResource(any())).thenReturn(cf); when(cfStackUtil.getAutoscalingGroupName(any(), anyString(), anyString())).thenReturn("alma"); when(awsClient.createCloudFormationRetryClient(any())).thenReturn(cloudFormationRetryClient); when(awsClient.createCloudFormationClient(any(), any())).thenReturn(cloudFormationClient); when(awsClient.createAutoScalingClient(any(), any())).thenReturn(amazonAutoScalingClient); when(awsClient.createAutoScalingRetryClient(any(), any())).thenReturn(amazonAutoScalingRetryClient); when(amazonAutoScalingRetryClient.describeAutoScalingGroups(any())).thenReturn(describeAutoScalingGroupsResult); when(cloudFormationClient.waiters()).thenReturn(cfWaiters); when(cfWaiters.stackDeleteComplete()).thenReturn(deletionWaiter); List<CloudResourceStatus> result = underTest.terminate(authenticatedContext(), cloudStack, List.of( new Builder().name("ami-87654321").type(ResourceType.AWS_ENCRYPTED_AMI).build(), cf, lc )); verify(awsResourceConnector, times(1)).check(any(), any()); verify(awsComputeResourceService, times(1)).deleteComputeResources(any(), any(), any()); verify(encryptedImageCopyService, times(1)).deleteResources(any(), any(), any()); verify(cloudFormationRetryClient, times(1)).deleteStack(any()); verify(amazonAutoScalingRetryClient, times(1)).describeAutoScalingGroups(any()); Assertions.assertEquals(0, result.size(), "Resources result should have one size list"); }
Example #11
Source File: InventoryUtil.java From pacbot with Apache License 2.0 | 5 votes |
/** * Fetch asg. * * @param temporaryCredentials the temporary credentials * @param skipRegions the skip regions * @param accountId the accountId * @param accountName the account name * @return the map */ public static Map<String,List<AutoScalingGroup>> fetchAsg(BasicSessionCredentials temporaryCredentials, String skipRegions,String accountId,String accountName){ AmazonAutoScaling asgClient; Map<String,List<AutoScalingGroup>> asgList = new LinkedHashMap<>(); String expPrefix = InventoryConstants.ERROR_PREFIX_CODE+accountId + "\",\"Message\": \"Exception in fetching info for resource in specific region\" ,\"type\": \"ASG\" , \"region\":\"" ; for(Region region : RegionUtils.getRegions()){ try{ if(!skipRegions.contains(region.getName())){ List<AutoScalingGroup> asgListTemp = new ArrayList<>(); asgClient = AmazonAutoScalingClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(temporaryCredentials)).withRegion(region.getName()).build(); String nextToken = null; DescribeAutoScalingGroupsResult describeResult ; do{ describeResult = asgClient.describeAutoScalingGroups(new DescribeAutoScalingGroupsRequest().withNextToken(nextToken).withMaxRecords(asgMaxRecord)); asgListTemp.addAll(describeResult.getAutoScalingGroups()); nextToken = describeResult.getNextToken(); }while(nextToken!=null); if(!asgListTemp.isEmpty() ){ log.debug(InventoryConstants.ACCOUNT + accountId + " Type : ASG "+region.getName()+" >> " + asgListTemp.size()); asgList.put(accountId+delimiter+accountName+delimiter+region.getName(), asgListTemp); } } }catch(Exception e){ log.warn(expPrefix+ region.getName()+InventoryConstants.ERROR_CAUSE +e.getMessage()+"\"}"); ErrorManageUtil.uploadError(accountId,region.getName(),"asg",e.getMessage()); } } return asgList; }
Example #12
Source File: CloudFormationStackUtil.java From cloudbreak with Apache License 2.0 | 5 votes |
public Map<Group, List<String>> getInstanceIdsByGroups(AmazonAutoScalingRetryClient amazonASClient, Map<String, Group> groupNameMapping) { DescribeAutoScalingGroupsResult result = amazonASClient .describeAutoScalingGroups(new DescribeAutoScalingGroupsRequest().withAutoScalingGroupNames(groupNameMapping.keySet())); return result.getAutoScalingGroups().stream() .collect(Collectors.toMap( ag -> groupNameMapping.get(ag.getAutoScalingGroupName()), ag -> ag.getInstances().stream() .filter(instance -> INSTANCE_LIFECYCLE_IN_SERVICE.equals(instance.getLifecycleState())) .map(Instance::getInstanceId) .collect(Collectors.toList()))); }
Example #13
Source File: AsgLocalMasterReadinessResolver.java From titus-control-plane with Apache License 2.0 | 5 votes |
private ReadinessStatus resolveStatus(DescribeAutoScalingGroupsResult response) { ReadinessState effectiveState = null; String message = null; if (response.getAutoScalingGroups().size() < 1) { setNewTagValue(""); effectiveState = ReadinessState.Disabled; message = "ASG not found: " + configuration.getTitusMasterAsgName(); } else { AutoScalingGroup autoScalingGroup = response.getAutoScalingGroups().get(0); if (autoScalingGroup.getTags() != null) { for (TagDescription tagDescription : autoScalingGroup.getTags()) { if (TAG_MASTER_ENABLED.equals(tagDescription.getKey())) { String value = tagDescription.getValue(); setNewTagValue(value); boolean enabled = Boolean.valueOf(value); effectiveState = enabled ? ReadinessState.Enabled : ReadinessState.Disabled; message = "Set as tag on ASG: " + configuration.getTitusMasterAsgName(); } } } if (effectiveState == null) { setNewTagValue(""); effectiveState = ReadinessState.Disabled; message = String.format("ASG tag %s not found: %s", TAG_MASTER_ENABLED, configuration.getTitusMasterAsgName()); } } return ReadinessStatus.newBuilder() .withState(effectiveState) .withMessage(message) .withTimestamp(clock.wallTime()) .build(); }
Example #14
Source File: AsgLocalMasterReadinessResolver.java From titus-control-plane with Apache License 2.0 | 5 votes |
private Mono<ReadinessStatus> refresh() { return AwsReactorExt .<DescribeAutoScalingGroupsRequest, DescribeAutoScalingGroupsResult>toMono( () -> { DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest(); request.setAutoScalingGroupNames(Collections.singletonList(configuration.getTitusMasterAsgName())); return request; }, autoScalingClient::describeAutoScalingGroupsAsync ) .map(this::resolveStatus); }
Example #15
Source File: AwsInstanceCloudConnector.java From titus-control-plane with Apache License 2.0 | 5 votes |
@Override public Observable<List<InstanceGroup>> getInstanceGroups(List<String> instanceGroupIds) { if (instanceGroupIds.isEmpty()) { return Observable.just(Collections.emptyList()); } DescribeAutoScalingGroupsRequest request = new DescribeAutoScalingGroupsRequest().withAutoScalingGroupNames(instanceGroupIds); Observable<DescribeAutoScalingGroupsResult> observable = toObservable(request, autoScalingClient::describeAutoScalingGroupsAsync); return observable.map( response -> toInstanceGroups(response.getAutoScalingGroups()) ).timeout(configuration.getAwsRequestTimeoutMs(), TimeUnit.MILLISECONDS); }
Example #16
Source File: AwsInstanceCloudConnector.java From titus-control-plane with Apache License 2.0 | 5 votes |
@Override public Observable<List<InstanceGroup>> getInstanceGroups() { PageCollector<DescribeAutoScalingGroupsRequest, AutoScalingGroup> pageCollector = new PageCollector<>( token -> new DescribeAutoScalingGroupsRequest().withMaxRecords(AWS_PAGE_MAX).withNextToken(token), request -> { Observable<DescribeAutoScalingGroupsResult> observable = toObservable(request, autoScalingClient::describeAutoScalingGroupsAsync); return observable.map(result -> Pair.of(result.getAutoScalingGroups(), result.getNextToken())); } ); return pageCollector.getAll() .map(this::toInstanceGroups) .timeout(configuration.getInstanceGroupsFetchTimeoutMs(), TimeUnit.MILLISECONDS); }
Example #17
Source File: ASGInventoryUtilTest.java From pacbot with Apache License 2.0 | 5 votes |
/** * Fetch scaling policies test. * * @throws Exception the exception */ @SuppressWarnings("static-access") @Test public void fetchScalingPoliciesTest() throws Exception { mockStatic(AmazonAutoScalingClientBuilder.class); AmazonAutoScaling asgClient = PowerMockito.mock(AmazonAutoScaling.class); AmazonAutoScalingClientBuilder amazonAutoScalingClientBuilder = PowerMockito.mock(AmazonAutoScalingClientBuilder.class); AWSStaticCredentialsProvider awsStaticCredentialsProvider = PowerMockito.mock(AWSStaticCredentialsProvider.class); PowerMockito.whenNew(AWSStaticCredentialsProvider.class).withAnyArguments().thenReturn(awsStaticCredentialsProvider); when(amazonAutoScalingClientBuilder.standard()).thenReturn(amazonAutoScalingClientBuilder); when(amazonAutoScalingClientBuilder.withCredentials(anyObject())).thenReturn(amazonAutoScalingClientBuilder); when(amazonAutoScalingClientBuilder.withRegion(anyString())).thenReturn(amazonAutoScalingClientBuilder); when(amazonAutoScalingClientBuilder.build()).thenReturn(asgClient); DescribeAutoScalingGroupsResult autoScalingGroupsResult = new DescribeAutoScalingGroupsResult(); List<AutoScalingGroup> asgList = new ArrayList<>(); AutoScalingGroup autoScalingGroup = new AutoScalingGroup(); autoScalingGroup.setAutoScalingGroupName("autoScalingGrpName"); asgList.add(autoScalingGroup); autoScalingGroupsResult.setAutoScalingGroups(asgList); when(asgClient.describeAutoScalingGroups(anyObject())).thenReturn(autoScalingGroupsResult); DescribePoliciesResult policiesResult = new DescribePoliciesResult(); List<ScalingPolicy> scalingPolicies = new ArrayList<>(); scalingPolicies.add(new ScalingPolicy()); policiesResult.setScalingPolicies(scalingPolicies); when(asgClient.describePolicies(anyObject())).thenReturn(policiesResult); assertThat(asgInventoryUtil.fetchScalingPolicies(new BasicSessionCredentials("awsAccessKey", "awsSecretKey", "sessionToken"), "skipRegions", "account","accountName").size(), is(1)); }
Example #18
Source File: ASGInventoryUtilTest.java From pacbot with Apache License 2.0 | 5 votes |
/** * Fetch launch configurations test. * * @throws Exception the exception */ @SuppressWarnings("static-access") @Test public void fetchLaunchConfigurationsTest() throws Exception { mockStatic(AmazonAutoScalingClientBuilder.class); AmazonAutoScaling asgClient = PowerMockito.mock(AmazonAutoScaling.class); AmazonAutoScalingClientBuilder amazonAutoScalingClientBuilder = PowerMockito.mock(AmazonAutoScalingClientBuilder.class); AWSStaticCredentialsProvider awsStaticCredentialsProvider = PowerMockito.mock(AWSStaticCredentialsProvider.class); PowerMockito.whenNew(AWSStaticCredentialsProvider.class).withAnyArguments().thenReturn(awsStaticCredentialsProvider); when(amazonAutoScalingClientBuilder.standard()).thenReturn(amazonAutoScalingClientBuilder); when(amazonAutoScalingClientBuilder.withCredentials(anyObject())).thenReturn(amazonAutoScalingClientBuilder); when(amazonAutoScalingClientBuilder.withRegion(anyString())).thenReturn(amazonAutoScalingClientBuilder); when(amazonAutoScalingClientBuilder.build()).thenReturn(asgClient); DescribeAutoScalingGroupsResult autoScalingGroupsResult = new DescribeAutoScalingGroupsResult(); List<AutoScalingGroup> asgList = new ArrayList<>(); AutoScalingGroup autoScalingGroup = new AutoScalingGroup(); autoScalingGroup.setLaunchConfigurationName("launchConfigurationName"); asgList.add(autoScalingGroup); autoScalingGroupsResult.setAutoScalingGroups(asgList); when(asgClient.describeAutoScalingGroups(anyObject())).thenReturn(autoScalingGroupsResult); DescribeLaunchConfigurationsResult launchConfigurationsResult = new DescribeLaunchConfigurationsResult(); List<LaunchConfiguration> launchConfigurations = new ArrayList<>(); launchConfigurations.add(new LaunchConfiguration()); launchConfigurationsResult.setLaunchConfigurations(launchConfigurations); when(asgClient.describeLaunchConfigurations(anyObject())).thenReturn(launchConfigurationsResult); assertThat(asgInventoryUtil.fetchLaunchConfigurations(new BasicSessionCredentials("awsAccessKey", "awsSecretKey", "sessionToken"), "skipRegions", "account","accountName").size(), is(1)); }
Example #19
Source File: ASGInventoryUtil.java From pacbot with Apache License 2.0 | 5 votes |
/** * Fetch scaling policies. * * @param temporaryCredentials the temporary credentials * @param skipRegions the skip regions * @param accountId the accountId * @return the map */ public static Map<String,List<ScalingPolicy>> fetchScalingPolicies(BasicSessionCredentials temporaryCredentials, String skipRegions,String accountId,String accountName){ AmazonAutoScaling asgClient; Map<String,List<ScalingPolicy>> scalingPolicyList = new LinkedHashMap<>(); String expPrefix = "{\"errcode\": \"NO_RES_REG\" ,\"accountId\": \""+accountId + "\",\"Message\": \"Exception in fetching info for resource in specific region\" ,\"type\": \"ASG\" , \"region\":\"" ; for(Region region : RegionUtils.getRegions()){ try{ if(!skipRegions.contains(region.getName())){ //!skipRegions List<ScalingPolicy> _scalingPolicyList = new ArrayList<>(); asgClient = AmazonAutoScalingClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(temporaryCredentials)).withRegion(region.getName()).build(); String nextToken = null; DescribeAutoScalingGroupsResult describeResult ; do{ describeResult = asgClient.describeAutoScalingGroups(new DescribeAutoScalingGroupsRequest().withNextToken(nextToken).withMaxRecords(asgMaxRecord)); for(AutoScalingGroup _asg : describeResult.getAutoScalingGroups()) { _scalingPolicyList.addAll(asgClient.describePolicies(new DescribePoliciesRequest().withAutoScalingGroupName(_asg.getAutoScalingGroupName())).getScalingPolicies()); } nextToken = describeResult.getNextToken(); }while(nextToken!=null); if(!_scalingPolicyList.isEmpty() ){ log.debug("Account : " + accountId + " Type : ASG Scaling Policy "+region.getName()+" >> " + _scalingPolicyList.size()); scalingPolicyList.put(accountId+delimiter+accountName+delimiter+region.getName(), _scalingPolicyList); } } }catch(Exception e){ log.warn(expPrefix+ region.getName()+"\", \"cause\":\"" +e.getMessage()+"\"}"); ErrorManageUtil.uploadError(accountId,region.getName(),"asgpolicy",e.getMessage()); } } return scalingPolicyList; }
Example #20
Source File: AsgLocalMasterReadinessResolverTest.java From titus-control-plane with Apache License 2.0 | 4 votes |
@Before public void setUp() { when(configuration.getTitusMasterAsgName()).thenReturn("MasterAsg"); when(autoScalingClient.describeAutoScalingGroupsAsync(any(), any())).thenAnswer(invocation -> { DescribeAutoScalingGroupsRequest request = invocation.getArgument(0); AsyncHandler asyncHandler = invocation.getArgument(1); if (ERROR_MARKER.equals(currentTagState.get())) { asyncHandler.onError(SIMULATED_ERROR); invocationCounter.incrementAndGet(); return Futures.immediateFailedFuture(SIMULATED_ERROR); } DescribeAutoScalingGroupsResult response = new DescribeAutoScalingGroupsResult(); AutoScalingGroup autoScalingGroup = new AutoScalingGroup(); if (currentTagState.get() != null) { TagDescription tag = new TagDescription(); tag.setKey(TAG_MASTER_ENABLED); tag.setValue(currentTagState.get()); autoScalingGroup.setTags(Collections.singletonList(tag)); } response.setAutoScalingGroups(Collections.singletonList(autoScalingGroup)); asyncHandler.onSuccess(request, response); invocationCounter.incrementAndGet(); return Futures.immediateFuture(response); }); resolver = new AsgLocalMasterReadinessResolver( configuration, autoScalingClient, REFRESH_SCHEDULER_DESCRIPTOR.toBuilder() .withInitialDelay(Duration.ofMillis(0)) .withInterval(Duration.ofMillis(1)) .build(), titusRuntime, Schedulers.parallel() ); }
Example #21
Source File: AmazonAutoScalingRetryClient.java From cloudbreak with Apache License 2.0 | 4 votes |
public DescribeAutoScalingGroupsResult describeAutoScalingGroups(DescribeAutoScalingGroupsRequest request) { return retry.testWith2SecDelayMax15Times(() -> mapThrottlingError(() -> client.describeAutoScalingGroups(request))); }
Example #22
Source File: AwsUpscaleServiceTest.java From cloudbreak with Apache License 2.0 | 4 votes |
@Test void upscaleTest() throws AmazonAutoscalingFailed { AmazonAutoScalingRetryClient amazonAutoScalingRetryClient = mock(AmazonAutoScalingRetryClient.class); AmazonCloudFormationRetryClient amazonCloudFormationRetryClient = mock(AmazonCloudFormationRetryClient.class); DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = new DescribeAutoScalingGroupsResult(); List<AutoScalingGroup> autoScalingGroups = new ArrayList<>(); AutoScalingGroup masterASGroup = new AutoScalingGroup(); masterASGroup.setAutoScalingGroupName("masterASG"); List<Instance> masterASGInstances = new ArrayList<>(); masterASGInstances.add(new Instance().withInstanceId("i-master1")); masterASGInstances.add(new Instance().withInstanceId("i-master2")); masterASGroup.setInstances(masterASGInstances); AutoScalingGroup workerASGroup = new AutoScalingGroup(); workerASGroup.setAutoScalingGroupName("workerASG"); List<Instance> workerASGInstances = new ArrayList<>(); workerASGInstances.add(new Instance().withInstanceId("i-worker1")); workerASGInstances.add(new Instance().withInstanceId("i-worker2")); workerASGInstances.add(new Instance().withInstanceId("i-worker3")); workerASGroup.setInstances(workerASGInstances); autoScalingGroups.add(masterASGroup); autoScalingGroups.add(workerASGroup); describeAutoScalingGroupsResult.setAutoScalingGroups(autoScalingGroups); when(amazonAutoScalingRetryClient.describeAutoScalingGroups(any(DescribeAutoScalingGroupsRequest.class))) .thenReturn(describeAutoScalingGroupsResult); when(awsClient.createAutoScalingRetryClient(any(AwsCredentialView.class), anyString())).thenReturn(amazonAutoScalingRetryClient); when(awsClient.createCloudFormationRetryClient(any(AwsCredentialView.class), anyString())).thenReturn(amazonCloudFormationRetryClient); when(awsClient.createAccess(any(), any())).thenReturn(new AmazonEC2Client()); when(cfStackUtil.getAutoscalingGroupName(any(AuthenticatedContext.class), any(AmazonCloudFormationRetryClient.class), eq("worker"))) .thenReturn("workerASG"); when(cfStackUtil.getAutoscalingGroupName(any(AuthenticatedContext.class), any(AmazonCloudFormationRetryClient.class), eq("master"))) .thenReturn("masterASG"); AuthenticatedContext authenticatedContext = new AuthenticatedContext(new CloudContext(1L, "teststack", "AWS", "AWS", Location.location(Region.region("eu-west-1"), AvailabilityZone.availabilityZone("eu-west-1a")), "1", "1"), new CloudCredential()); ArrayList<CloudResource> allInstances = new ArrayList<>(); allInstances.add(CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker1").group("worker").instanceId("i-worker1").build()); allInstances.add(CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker2").group("worker").instanceId("i-worker2").build()); allInstances.add(CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker3").group("worker").instanceId("i-worker3").build()); CloudResource workerInstance4 = CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker4").group("worker").instanceId("i-worker4").build(); allInstances.add(workerInstance4); CloudResource workerInstance5 = CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker5").group("worker").instanceId("i-worker5").build(); allInstances.add(workerInstance5); when(cfStackUtil.getInstanceCloudResources(eq(authenticatedContext), eq(amazonCloudFormationRetryClient), eq(amazonAutoScalingRetryClient), anyList())) .thenReturn(allInstances); InstanceAuthentication instanceAuthentication = new InstanceAuthentication("sshkey", "", "cloudbreak"); List<Group> groups = new ArrayList<>(); Group master = getMasterGroup(instanceAuthentication); groups.add(master); Group worker = getWorkerGroup(instanceAuthentication); groups.add(worker); Map<String, String> tags = new HashMap<>(); tags.put("owner", "cbuser"); tags.put("created", "yesterday"); CloudStack cloudStack = new CloudStack(groups, getNetwork(), null, emptyMap(), tags, null, instanceAuthentication, instanceAuthentication.getLoginUserName(), instanceAuthentication.getPublicKey(), null); List<CloudResource> cloudResourceList = Collections.emptyList(); awsUpscaleService.upscale(authenticatedContext, cloudStack, cloudResourceList); verify(awsAutoScalingService, times(1)).updateAutoscalingGroup(any(AmazonAutoScalingRetryClient.class), eq("workerASG"), eq(5)); verify(awsAutoScalingService, times(1)).scheduleStatusChecks(eq(List.of(worker)), eq(authenticatedContext), eq(amazonCloudFormationRetryClient), any()); verify(awsAutoScalingService, times(1)).suspendAutoScaling(eq(authenticatedContext), eq(cloudStack)); ArgumentCaptor<List<CloudResource>> captor = ArgumentCaptor.forClass(List.class); verify(awsComputeResourceService, times(1)) .buildComputeResourcesForUpscale(eq(authenticatedContext), eq(cloudStack), anyList(), captor.capture(), any(), any()); verify(awsTaggingService, times(1)).tagRootVolumes(eq(authenticatedContext), any(AmazonEC2Client.class), eq(allInstances), eq(tags)); verify(awsCloudWatchService, times(1)).addCloudWatchAlarmsForSystemFailures(any(), eq(cloudStack), eq("eu-west-1"), any(AwsCredentialView.class)); List<CloudResource> newInstances = captor.getValue(); assertEquals("Two new instances should be created", 2, newInstances.size()); assertThat(newInstances, hasItem(workerInstance4)); assertThat(newInstances, hasItem(workerInstance5)); }
Example #23
Source File: AwsUpscaleServiceTest.java From cloudbreak with Apache License 2.0 | 4 votes |
@Test void upscaleAwsASGroupFail() throws AmazonAutoscalingFailed { AmazonAutoScalingRetryClient amazonAutoScalingRetryClient = mock(AmazonAutoScalingRetryClient.class); AmazonCloudFormationRetryClient amazonCloudFormationRetryClient = mock(AmazonCloudFormationRetryClient.class); DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = new DescribeAutoScalingGroupsResult(); List<AutoScalingGroup> autoScalingGroups = new ArrayList<>(); AutoScalingGroup masterASGroup = new AutoScalingGroup(); masterASGroup.setAutoScalingGroupName("masterASG"); List<Instance> masterASGInstances = new ArrayList<>(); masterASGInstances.add(new Instance().withInstanceId("i-master1")); masterASGInstances.add(new Instance().withInstanceId("i-master2")); masterASGroup.setInstances(masterASGInstances); AutoScalingGroup workerASGroup = new AutoScalingGroup(); workerASGroup.setAutoScalingGroupName("workerASG"); List<Instance> workerASGInstances = new ArrayList<>(); workerASGInstances.add(new Instance().withInstanceId("i-worker1")); workerASGInstances.add(new Instance().withInstanceId("i-worker2")); workerASGInstances.add(new Instance().withInstanceId("i-worker3")); workerASGroup.setInstances(workerASGInstances); autoScalingGroups.add(masterASGroup); autoScalingGroups.add(workerASGroup); describeAutoScalingGroupsResult.setAutoScalingGroups(autoScalingGroups); when(amazonAutoScalingRetryClient.describeAutoScalingGroups(any(DescribeAutoScalingGroupsRequest.class))) .thenReturn(describeAutoScalingGroupsResult); when(awsClient.createAutoScalingRetryClient(any(AwsCredentialView.class), anyString())).thenReturn(amazonAutoScalingRetryClient); when(awsClient.createCloudFormationRetryClient(any(AwsCredentialView.class), anyString())).thenReturn(amazonCloudFormationRetryClient); when(cfStackUtil.getAutoscalingGroupName(any(AuthenticatedContext.class), any(AmazonCloudFormationRetryClient.class), eq("worker"))) .thenReturn("workerASG"); when(cfStackUtil.getAutoscalingGroupName(any(AuthenticatedContext.class), any(AmazonCloudFormationRetryClient.class), eq("master"))) .thenReturn("masterASG"); AuthenticatedContext authenticatedContext = new AuthenticatedContext(new CloudContext(1L, "teststack", "AWS", "AWS", Location.location(Region.region("eu-west-1"), AvailabilityZone.availabilityZone("eu-west-1a")), "1", "1"), new CloudCredential()); List<CloudResource> allInstances = new ArrayList<>(); allInstances.add(CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker1").group("worker").instanceId("i-worker1").build()); allInstances.add(CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker2").group("worker").instanceId("i-worker2").build()); allInstances.add(CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker3").group("worker").instanceId("i-worker3").build()); CloudResource workerInstance4 = CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker4").group("worker").instanceId("i-worker4").build(); allInstances.add(workerInstance4); CloudResource workerInstance5 = CloudResource.builder().type(ResourceType.AWS_INSTANCE).status(CommonStatus.CREATED) .name("worker5").group("worker").instanceId("i-worker5").build(); allInstances.add(workerInstance5); when(cfStackUtil.getInstanceCloudResources(eq(authenticatedContext), eq(amazonCloudFormationRetryClient), eq(amazonAutoScalingRetryClient), anyList())) .thenReturn(allInstances); InstanceAuthentication instanceAuthentication = new InstanceAuthentication("sshkey", "", "cloudbreak"); List<Group> groups = new ArrayList<>(); Group master = getMasterGroup(instanceAuthentication); groups.add(master); Group worker = getWorkerGroup(instanceAuthentication); groups.add(worker); CloudStack cloudStack = new CloudStack(groups, getNetwork(), null, emptyMap(), emptyMap(), null, instanceAuthentication, instanceAuthentication.getLoginUserName(), instanceAuthentication.getPublicKey(), null); List<CloudResource> cloudResourceList = Collections.emptyList(); AutoScalingGroup newWorkerASGroup = new AutoScalingGroup(); newWorkerASGroup.setAutoScalingGroupName("workerASG"); List<Instance> newWorkerASGInstances = new ArrayList<>(); newWorkerASGInstances.add(new Instance().withInstanceId("i-worker1")); newWorkerASGInstances.add(new Instance().withInstanceId("i-worker2")); newWorkerASGInstances.add(new Instance().withInstanceId("i-worker3")); newWorkerASGInstances.add(new Instance().withInstanceId("i-worker4")); newWorkerASGInstances.add(new Instance().withInstanceId("i-worker5")); newWorkerASGroup.setInstances(newWorkerASGInstances); when(awsAutoScalingService.getAutoscalingGroups(eq(amazonAutoScalingRetryClient), any())) .thenReturn(Collections.singletonList(newWorkerASGroup)); doThrow(new AmazonAutoscalingFailed("autoscaling failed")) .when(awsAutoScalingService).scheduleStatusChecks(eq(List.of(worker)), eq(authenticatedContext), eq(amazonCloudFormationRetryClient), any(Date.class)); assertThrows(CloudConnectorException.class, () -> awsUpscaleService.upscale(authenticatedContext, cloudStack, cloudResourceList), "Autoscaling group update failed: 'autoscaling failed' Original autoscaling group state has been recovered."); verify(awsAutoScalingService, times(1)).updateAutoscalingGroup(any(AmazonAutoScalingRetryClient.class), eq("workerASG"), eq(5)); verify(awsAutoScalingService, times(1)).scheduleStatusChecks(eq(List.of(worker)), eq(authenticatedContext), eq(amazonCloudFormationRetryClient), any()); verify(awsComputeResourceService, times(0)).buildComputeResourcesForUpscale(eq(authenticatedContext), eq(cloudStack), anyList(), anyList(), any(), any()); verify(awsAutoScalingService, times(1)).suspendAutoScaling(eq(authenticatedContext), eq(cloudStack)); verify(awsAutoScalingService, times(1)).terminateInstance(eq(amazonAutoScalingRetryClient), eq("i-worker4")); verify(awsAutoScalingService, times(1)).terminateInstance(eq(amazonAutoScalingRetryClient), eq("i-worker5")); Map<String, Integer> desiredGroups = new HashMap<>(); desiredGroups.put("workerASG", 3); desiredGroups.put("masterASG", 2); verify(awsAutoScalingService, times(1)).scheduleStatusChecks(eq(desiredGroups), eq(authenticatedContext), any(Date.class)); }
Example #24
Source File: ASGInventoryUtil.java From pacbot with Apache License 2.0 | 4 votes |
/** * Fetch launch configurations. * * @param temporaryCredentials the temporary credentials * @param skipRegions the skip regions * @param accountId the accountId * @return the map */ public static Map<String,List<LaunchConfiguration>> fetchLaunchConfigurations(BasicSessionCredentials temporaryCredentials, String skipRegions,String accountId,String accountName){ AmazonAutoScaling asgClient; Map<String,List<LaunchConfiguration>> launchConfigurationList = new LinkedHashMap<>(); List<String> launchConfigurationNames = new ArrayList<>(); String expPrefix = "{\"errcode\": \"NO_RES_REG\" ,\"accountId\": \""+accountId + "\",\"Message\": \"Exception in fetching info for resource in specific region\" ,\"type\": \"ASG\" , \"region\":\"" ; for(Region region : RegionUtils.getRegions()){ try{ if(!skipRegions.contains(region.getName())){ //!skipRegions List<LaunchConfiguration> launchConfigurationListTemp = new ArrayList<>(); asgClient = AmazonAutoScalingClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(temporaryCredentials)).withRegion(region.getName()).build(); String nextToken = null; DescribeAutoScalingGroupsResult describeResult ; do{ describeResult = asgClient.describeAutoScalingGroups(new DescribeAutoScalingGroupsRequest().withNextToken(nextToken).withMaxRecords(asgMaxRecord)); for(AutoScalingGroup _asg : describeResult.getAutoScalingGroups()) { launchConfigurationNames.add(_asg.getLaunchConfigurationName()); } nextToken = describeResult.getNextToken(); }while(nextToken!=null); List<String> launchConfigurationNamesTemp = new ArrayList<>(); for(int i =0 ; i<launchConfigurationNames.size();i++){ launchConfigurationNamesTemp.add(launchConfigurationNames.get(i)); if((i+1)%50==0 || i == launchConfigurationNames.size()-1){ launchConfigurationListTemp.addAll(asgClient.describeLaunchConfigurations(new DescribeLaunchConfigurationsRequest().withLaunchConfigurationNames(launchConfigurationNamesTemp)).getLaunchConfigurations()); launchConfigurationNamesTemp = new ArrayList<>(); } } if(!launchConfigurationListTemp.isEmpty() ){ log.debug("Account : " + accountId + " Type : ASG Launch Configurations "+region.getName()+" >> " + launchConfigurationListTemp.size()); launchConfigurationList.put(accountId+delimiter+accountName+delimiter+region.getName(), launchConfigurationListTemp); } } }catch(Exception e){ log.warn(expPrefix+ region.getName()+"\", \"cause\":\"" +e.getMessage()+"\"}"); ErrorManageUtil.uploadError(accountId,region.getName(),"launchconfig",e.getMessage()); } } return launchConfigurationList; }