use of com.sequenceiq.cloudbreak.api.endpoint.v4.connector.responses.AutoscaleRecommendationV4Response in project cloudbreak by hortonworks.
the class AlertValidatorTest method testValidateDistroXAutoscaleClusterRequestWhenInvalidHostGroup.
@Test
public void testValidateDistroXAutoscaleClusterRequestWhenInvalidHostGroup() {
DistroXAutoscaleClusterRequest request = new DistroXAutoscaleClusterRequest();
List<TimeAlertRequest> timeAlertRequests = new ArrayList<>();
List.of("compute", "compute", "compute1").forEach(hostGroup -> {
ScalingPolicyRequest sp1 = new ScalingPolicyRequest();
sp1.setHostGroup("compute");
TimeAlertRequest timeAlertRequest1 = new TimeAlertRequest();
timeAlertRequest1.setScalingPolicy(sp1);
timeAlertRequest1.setCron("1 0 1 1 1 1");
timeAlertRequest1.setTimeZone("GMT");
timeAlertRequests.add(timeAlertRequest1);
});
ScalingPolicyRequest sp2 = new ScalingPolicyRequest();
sp2.setHostGroup("computeNotSupported");
TimeAlertRequest timeAlertRequest2 = new TimeAlertRequest();
timeAlertRequest2.setScalingPolicy(sp2);
timeAlertRequest2.setCron("1 0 1 1 1 1");
timeAlertRequest2.setTimeZone("GMT");
timeAlertRequests.add(timeAlertRequest2);
request.setTimeAlertRequests(timeAlertRequests);
Set<String> supportedHostGroups = Set.of("compute", "compute1", "compute3");
when(recommendationService.getAutoscaleRecommendations(anyString())).thenReturn(new AutoscaleRecommendationV4Response(supportedHostGroups, supportedHostGroups));
when(messagesService.getMessage(UNSUPPORTED_AUTOSCALING_HOSTGROUP, List.of(Set.of("compute", "computeNotSupported"), AlertType.TIME, aCluster.getStackName(), supportedHostGroups))).thenReturn("unsupported.hostgroup");
expectedException.expect(BadRequestException.class);
expectedException.expectMessage("unsupported.hostgroup");
underTest.validateDistroXAutoscaleClusterRequest(aCluster, request);
}
use of com.sequenceiq.cloudbreak.api.endpoint.v4.connector.responses.AutoscaleRecommendationV4Response in project cloudbreak by hortonworks.
the class AlertValidatorTest method testTimeAlertCreateWhenHostGroupNotSupported.
@Test
public void testTimeAlertCreateWhenHostGroupNotSupported() {
Set<String> requestHostGroups = Set.of("compute", "compute1");
Set<String> supportedHostGroups = Set.of("compute1");
when(recommendationService.getAutoscaleRecommendations(anyString())).thenReturn(new AutoscaleRecommendationV4Response(supportedHostGroups, supportedHostGroups));
when(messagesService.getMessage(UNSUPPORTED_AUTOSCALING_HOSTGROUP, List.of(requestHostGroups, AlertType.TIME, aCluster.getStackName(), supportedHostGroups))).thenReturn("unsupported.hostgroup");
expectedException.expect(BadRequestException.class);
expectedException.expectMessage("unsupported.hostgroup");
underTest.validateSupportedHostGroup(aCluster, requestHostGroups, AlertType.TIME);
}
use of com.sequenceiq.cloudbreak.api.endpoint.v4.connector.responses.AutoscaleRecommendationV4Response in project cloudbreak by hortonworks.
the class AlertValidatorTest method testLoadAlertCreateWhenHostGroupSupported.
@Test
public void testLoadAlertCreateWhenHostGroupSupported() {
Set<String> requestHostGroups = Set.of("compute", "compute1");
Set<String> supportedHostGroups = Set.of("compute", "compute1", "compute3");
when(recommendationService.getAutoscaleRecommendations(anyString())).thenReturn(new AutoscaleRecommendationV4Response(supportedHostGroups, supportedHostGroups));
underTest.validateSupportedHostGroup(aCluster, requestHostGroups, AlertType.LOAD);
}
use of com.sequenceiq.cloudbreak.api.endpoint.v4.connector.responses.AutoscaleRecommendationV4Response in project cloudbreak by hortonworks.
the class PlatformRecommendationToPlatformRecommendationV4ResponseConverter method convert.
public RecommendationV4Response convert(PlatformRecommendation source) {
Map<String, VmTypeV4Response> result = new HashMap<>();
source.getRecommendations().forEach((hostGroupName, vm) -> result.put(hostGroupName, vmTypeToVmTypeV4ResponseConverter.convert(vm)));
Set<VmTypeV4Response> vmTypes = source.getVirtualMachines().stream().map(vmType -> vmTypeToVmTypeV4ResponseConverter.convert(vmType)).collect(Collectors.toSet());
Set<DiskV4Response> diskResponses = new HashSet<>();
for (Entry<DiskType, DisplayName> diskTypeDisplayName : source.getDiskTypes().displayNames().entrySet()) {
for (Entry<String, VolumeParameterType> volumeParameterType : source.getDiskTypes().diskMapping().entrySet()) {
if (diskTypeDisplayName.getKey().value().equals(volumeParameterType.getKey())) {
DiskV4Response diskResponse = new DiskV4Response(diskTypeDisplayName.getKey().value(), volumeParameterType.getValue().name(), diskTypeDisplayName.getValue().value());
diskResponses.add(diskResponse);
}
}
}
Map<String, InstanceCountV4Response> instanceCounts = new TreeMap<>();
source.getInstanceCounts().forEach((hostGroupName, instanceCount) -> instanceCounts.put(hostGroupName, new InstanceCountV4Response(instanceCount.getMinimumCount(), instanceCount.getMaximumCount())));
GatewayRecommendationV4Response gateway = new GatewayRecommendationV4Response(source.getGatewayRecommendation().getHostGroups());
AutoscaleRecommendationV4Response autoscaleRecommendation = new AutoscaleRecommendationV4Response(source.getAutoscaleRecommendation().getTimeBasedHostGroups(), source.getAutoscaleRecommendation().getLoadBasedHostGroups());
ResizeRecommendationV4Response resizeRecommendation = new ResizeRecommendationV4Response(source.getResizeRecommendation().getScaleUpHostGroups(), source.getResizeRecommendation().getScaleDownHostGroups());
return new RecommendationV4Response(result, vmTypes, diskResponses, instanceCounts, gateway, autoscaleRecommendation, resizeRecommendation);
}
use of com.sequenceiq.cloudbreak.api.endpoint.v4.connector.responses.AutoscaleRecommendationV4Response in project cloudbreak by hortonworks.
the class ScaleRecommendationToScaleRecommendationV4ResponseConverter method convert.
public ScaleRecommendationV4Response convert(ScaleRecommendation source) {
AutoscaleRecommendationV4Response autoscaleRecommendation = new AutoscaleRecommendationV4Response(source.getAutoscaleRecommendation().getTimeBasedHostGroups(), source.getAutoscaleRecommendation().getLoadBasedHostGroups());
ResizeRecommendationV4Response resizeRecommendation = new ResizeRecommendationV4Response(source.getResizeRecommendation().getScaleUpHostGroups(), source.getResizeRecommendation().getScaleDownHostGroups());
ScaleRecommendationV4Response scaleRecommendation = new ScaleRecommendationV4Response(autoscaleRecommendation, resizeRecommendation);
return scaleRecommendation;
}
Aggregations