use of com.sequenceiq.cloudbreak.common.exception.NotFoundException in project cloudbreak by hortonworks.
the class RepairInstancesService method rebootInstances.
/**
* If no instance passed in request, reboot all bad instances
* If instances passed in request, reboot all valid passed bad instances
* If force and instances passed in request, reboot all valid passed instances
* If force and no instances passed in request, reboot all instances
*
* @param accountId - The account id for the instance to reboot.
* @param request - A RebootInstanceRequest containing request parameters.
*/
public OperationStatus rebootInstances(String accountId, RebootInstancesRequest request) {
Stack stack = stackService.getByEnvironmentCrnAndAccountIdWithListsAndMdcContext(request.getEnvironmentCrn(), accountId);
Map<String, InstanceMetaData> allInstancesByInstanceId = getAllInstancesFromStack(stack);
Map<String, InstanceStatus> healthMap = request.isForceReboot() ? Collections.emptyMap() : getInstanceHealthMap(accountId, request.getEnvironmentCrn());
Map<String, InstanceMetaData> instancesToReboot = getInstancesToRepair(healthMap, allInstancesByInstanceId, request.getInstanceIds(), request.isForceReboot(), true);
if (instancesToReboot.keySet().isEmpty()) {
throw new NotFoundException("No unhealthy instances to reboot. Maybe use the force option.");
}
Operation operation = operationService.startOperation(accountId, OperationType.REBOOT, Set.of(stack.getEnvironmentCrn()), Collections.emptySet());
if (operation.getStatus() == OperationState.RUNNING) {
stackUpdater.updateStackStatus(stack.getId(), DetailedStackStatus.REPAIR_REQUESTED, "Reboot requested");
flowManager.notify(REBOOT_EVENT.event(), new RebootInstanceEvent(REBOOT_EVENT.event(), stack.getId(), instancesToReboot.keySet().stream().collect(Collectors.toList()), operation.getOperationId()));
}
return operationToOperationStatusConverter.convert(operation);
}
use of com.sequenceiq.cloudbreak.common.exception.NotFoundException in project cloudbreak by hortonworks.
the class SecurityGroupBuilderUtilTest method testCreateOrGetSecurityGroupWhenSecurityGroupExistsVpcIdMismatch.
@Test
public void testCreateOrGetSecurityGroupWhenSecurityGroupExistsVpcIdMismatch() {
String groupId = "groupId";
String groupName = "groupName";
CreateSecurityGroupRequest request = new CreateSecurityGroupRequest();
request.setGroupName(groupName);
AmazonEC2Exception amazonEC2Exception = new AmazonEC2Exception("Duplicate error");
amazonEC2Exception.setErrorCode("InvalidGroup.Duplicate");
when(amazonEc2Client.describeSecurityGroups(any())).thenReturn(new DescribeSecurityGroupsResult().withSecurityGroups(new SecurityGroup().withGroupId(groupId).withGroupName("othergroup").withIpPermissions(new IpPermission())));
when(amazonEc2Client.createSecurityGroup(request)).thenThrow(amazonEC2Exception);
NotFoundException actual = Assertions.assertThrows(NotFoundException.class, () -> underTest.createOrGetSecurityGroup(amazonEc2Client, request, group, awsNetworkView, ac));
Assertions.assertEquals("Aws Security Group 'groupName' not found.", actual.getMessage());
}
use of com.sequenceiq.cloudbreak.common.exception.NotFoundException in project cloudbreak by hortonworks.
the class ClouderaManagerModificationServiceTest method testUpgradeClusterComponentIsNotPresent.
@Test
void testUpgradeClusterComponentIsNotPresent() throws ApiException {
BigDecimal apiCommandId = new BigDecimal(200);
ApiCommandList apiCommandList = new ApiCommandList();
apiCommandList.setItems(new ArrayList<>());
when(clouderaManagerApiFactory.getMgmtServiceResourceApi(any())).thenReturn(mgmtServiceResourceApi);
when(mgmtServiceResourceApi.listActiveCommands("SUMMARY")).thenReturn(apiCommandList);
when(mgmtServiceResourceApi.restartCommand()).thenReturn(new ApiCommand().id(apiCommandId));
when(clouderaManagerPollingServiceProvider.startPollingCmServicesRestart(stack, apiClientMock, apiCommandId)).thenReturn(success);
when(clouderaManagerPollingServiceProvider.startPollingCmHostStatus(stack, apiClientMock)).thenReturn(success);
ClouderaManagerRepo clouderaManagerRepo = mock(ClouderaManagerRepo.class);
when(clusterComponentProvider.getClouderaManagerRepoDetails(CLUSTER_ID)).thenReturn(clouderaManagerRepo);
when(clouderaManagerRepo.getVersion()).thenReturn(CLOUDERAMANAGER_VERSION_7_5_1.getVersion());
Set<ClusterComponent> clusterComponents = TestUtil.clusterComponentSet(cluster);
Set<ClusterComponent> clusterComponentsNoCDH = clusterComponents.stream().filter(clusterComponent -> !clusterComponent.getName().equals("CDH")).collect(Collectors.toSet());
cluster.setComponents(clusterComponentsNoCDH);
NotFoundException exception = assertThrows(NotFoundException.class, () -> underTest.upgradeClusterRuntime(clusterComponentsNoCDH, false, Optional.empty()));
Assertions.assertEquals("Runtime component not found!", exception.getMessage());
}
use of com.sequenceiq.cloudbreak.common.exception.NotFoundException in project cloudbreak by hortonworks.
the class CustomImageCatalogService method getSourceImage.
public Image getSourceImage(CustomImage image) {
String imageId = image.getCustomizedImageId();
LOGGER.debug(String.format("Get source image '%s' from default catalog", imageId));
try {
StatedImage sourceStatedImage = imageCatalogService.getSourceImageByImageType(image);
return sourceStatedImage.getImage();
} catch (CloudbreakImageNotFoundException | CloudbreakImageCatalogException e) {
LOGGER.error(String.format("Failed to get source image: %s", e.getMessage()));
throw new NotFoundException(String.format("Could not find source image with id: '%s'", imageId));
}
}
use of com.sequenceiq.cloudbreak.common.exception.NotFoundException in project cloudbreak by hortonworks.
the class StructuredSynchronizerJob method executeTracedJob.
@Override
protected void executeTracedJob(JobExecutionContext context) throws JobExecutionException {
Long stackId = getLocalIdAsLong();
try {
Stack stack = stackService.get(stackId);
if (stack == null) {
LOGGER.debug("Stack not found with id {}, StructuredSynchronizerJob will be unscheduled.", stackId);
syncJobService.unschedule(getLocalId());
} else if (stack.getStatus() == null) {
LOGGER.debug("Stack state is null for stack {}. The event won't be stored!", stackId);
} else if (unschedulableStates().contains(stack.getStatus())) {
LOGGER.debug("StructuredSynchronizerJob will be unscheduled for stack {}, stack state is {}", stackId, stack.getStatus());
syncJobService.unschedule(getLocalId());
} else {
LOGGER.debug("StructuredSynchronizerJob is running for stack: '{}'", stackId);
StructuredSyncEvent structuredEvent = structuredSyncEventFactory.createStructuredSyncEvent(stackId);
legacyDefaultStructuredEventClient.sendStructuredEvent(structuredEvent);
}
} catch (NotFoundException ex) {
LOGGER.debug("Stack not found with id {}, StructuredSynchronizerJob will be unscheduled.", stackId);
syncJobService.unschedule(getLocalId());
} catch (Exception ex) {
LOGGER.error("Error happened during StructuredSyncEvent generation! The event won't be stored!", ex);
}
}
Aggregations