use of com.sequenceiq.freeipa.api.v1.freeipa.user.model.SynchronizationStatus.FAILED in project cloudbreak by hortonworks.
the class FreeIpaUpgradeTests method addAndDeleteDnsCnameRecord.
private void addAndDeleteDnsCnameRecord(com.sequenceiq.freeipa.api.client.FreeIpaClient ipaClient, String environmentCrn) {
try {
AddDnsCnameRecordRequest request = new AddDnsCnameRecordRequest();
request.setCname("test-cname-record");
request.setTargetFqdn("cloudera.com");
request.setEnvironmentCrn(environmentCrn);
ipaClient.getDnsV1Endpoint().addDnsCnameRecord(request);
ipaClient.getDnsV1Endpoint().deleteDnsCnameRecord(environmentCrn, null, request.getCname());
} catch (Exception e) {
logger.error("DNS CNAME record test failed during upgrade", e);
throw new TestFailException("DNS CNAME record test failed during upgrade with: " + e.getMessage(), e);
}
}
use of com.sequenceiq.freeipa.api.v1.freeipa.user.model.SynchronizationStatus.FAILED in project cloudbreak by hortonworks.
the class FreeIpaUpgradeTests method dnsLookups.
private void dnsLookups(SdxTestDto sdxTestDto, SdxClient sdxClient) {
InstanceMetaDataV4Response instanceGroupMetadata = getInstanceGroups(sdxTestDto, sdxClient).stream().flatMap(instanceGroup -> instanceGroup.getMetadata().stream()).filter(metadata -> metadata.getInstanceGroup().equals("idbroker")).filter(metadata -> StringUtils.isNoneBlank(metadata.getDiscoveryFQDN(), metadata.getPrivateIp())).findFirst().orElseThrow(() -> new TestFailException("FreeIPA upgrade DNS lookups test failed, idbroker instance group was not found."));
try {
String cmd = String.format(CHECK_DNS_LOOKUPS_CMD, instanceGroupMetadata.getDiscoveryFQDN(), instanceGroupMetadata.getPrivateIp());
Map<String, Pair<Integer, String>> results = sshJClientActions.executeSshCommandOnHost(getInstanceGroups(sdxTestDto, sdxClient), List.of(HostGroupType.MASTER.getName()), cmd, false);
results.values().forEach(result -> Assertions.assertEquals(0, result.getLeft()));
} catch (Exception e) {
logger.error("FreeIPA upgrade DNS lookups test failed with unexpected error", e);
throw new TestFailException("FreeIPA upgrade DNS lookups test failed with unexpected error: " + e.getMessage(), e);
}
}
use of com.sequenceiq.freeipa.api.v1.freeipa.user.model.SynchronizationStatus.FAILED in project cloudbreak by hortonworks.
the class UserSyncService method internalSynchronizeUsers.
private void internalSynchronizeUsers(String operationId, String accountId, List<Stack> stacks, UserSyncRequestFilter userSyncFilter, UserSyncOptions options) {
tryWithOperationCleanup(operationId, accountId, () -> {
Set<String> environmentCrns = stacks.stream().map(Stack::getEnvironmentCrn).collect(Collectors.toSet());
Optional<String> requestId = MDCUtils.getRequestId();
UmsEventGenerationIds umsEventGenerationIds = options.isFullSync() ? umsEventGenerationIdsProvider.getEventGenerationIds(accountId, requestId) : null;
LogEvent logUserSyncEvent = options.isFullSync() ? LogEvent.FULL_USER_SYNC : LogEvent.PARTIAL_USER_SYNC;
LOGGER.info("Starting {} for environments {} with operationId {} ...", logUserSyncEvent, environmentCrns, operationId);
Map<String, Future<SyncStatusDetail>> statusFutures;
if (userSyncFilter.getDeletedWorkloadUser().isEmpty()) {
LogEvent logRetrieveUmsEvent = options.isFullSync() ? LogEvent.RETRIEVE_FULL_UMS_STATE : LogEvent.RETRIEVE_PARTIAL_UMS_STATE;
LOGGER.debug("Starting {} for environments {} ...", logRetrieveUmsEvent, environmentCrns);
Map<String, UmsUsersState> envToUmsStateMap = umsUsersStateProviderDispatcher.getEnvToUmsUsersStateMap(accountId, environmentCrns, userSyncFilter.getUserCrnFilter(), userSyncFilter.getMachineUserCrnFilter(), requestId);
LOGGER.debug("Finished {}.", logRetrieveUmsEvent);
statusFutures = stacks.stream().collect(Collectors.toMap(Stack::getEnvironmentCrn, stack -> asyncSynchronizeStack(stack, envToUmsStateMap.get(stack.getEnvironmentCrn()), umsEventGenerationIds, options, operationId, accountId)));
} else {
String deletedWorkloadUser = userSyncFilter.getDeletedWorkloadUser().get();
statusFutures = stacks.stream().collect(Collectors.toMap(Stack::getEnvironmentCrn, stack -> asyncSynchronizeStackForDeleteUser(stack, deletedWorkloadUser)));
}
List<SuccessDetails> success = new ArrayList<>();
List<FailureDetails> failure = new ArrayList<>();
statusFutures.forEach((envCrn, statusFuture) -> {
try {
SyncStatusDetail statusDetail = statusFuture.get();
switch(statusDetail.getStatus()) {
case COMPLETED:
success.add(new SuccessDetails(envCrn));
break;
case FAILED:
failure.add(createFailureDetails(envCrn, statusDetail.getDetails(), statusDetail.getWarnings()));
break;
default:
failure.add(createFailureDetails(envCrn, "Unexpected status: " + statusDetail.getStatus(), statusDetail.getWarnings()));
break;
}
} catch (InterruptedException | ExecutionException e) {
LOGGER.error("Sync is interrupted for env: {}", envCrn, e);
failure.add(new FailureDetails(envCrn, e.getLocalizedMessage()));
}
});
operationService.completeOperation(accountId, operationId, success, failure);
LOGGER.info("Finished {} for environments {} with operationId {}.", logUserSyncEvent, environmentCrns, operationId);
});
}
use of com.sequenceiq.freeipa.api.v1.freeipa.user.model.SynchronizationStatus.FAILED in project cloudbreak by hortonworks.
the class EnvironmentUserSyncStateCalculator method calculateUserSyncState.
private UserSyncState calculateUserSyncState(String accountId, String envCrnString, UserSyncStatus userSyncStatus) {
Operation lastSync = userSyncStatus.getLastStartedFullSync();
UserSyncState state;
switch(lastSync.getStatus()) {
case RUNNING:
state = UserSyncState.SYNC_IN_PROGRESS;
break;
case COMPLETED:
state = calculateStateForCompletedOperation(accountId, envCrnString, userSyncStatus);
break;
case REQUESTED:
case REJECTED:
// REQUESTED or REJECTED operations will never be saved as part of the UserSyncStatus
throw createExceptionForUnexpectedOperationStatus(envCrnString, userSyncStatus);
case TIMEDOUT:
LOGGER.warn("UserSyncStatus.lastStartedFullSync '{}' is timed out for environment '{}'", lastSync.getOperationId(), envCrnString);
state = UserSyncState.SYNC_FAILED;
break;
case FAILED:
state = UserSyncState.SYNC_FAILED;
break;
default:
state = UserSyncState.STALE;
break;
}
return state;
}
Aggregations