pushTask.setResource(provision.getResource()); pushTask.setMatchingRule(pushTaskTO.getMatchingRule() == null ? MatchingRule.LINK : pushTaskTO.getMatchingRule()); pushTask.setUnmatchingRule(pushTaskTO.getUnmatchingRule() == null ? UnmatchingRule.ASSIGN : pushTaskTO.getUnmatchingRule()); pushTask.setPerformCreate(pushTaskTO.isPerformCreate()); pushTask.setPerformUpdate(pushTaskTO.isPerformUpdate()); pushTask.setPerformDelete(pushTaskTO.isPerformDelete()); pushTask.setSyncStatus(pushTaskTO.isSyncStatus()); doHandle(Arrays.asList(any), handler, pushTask.getResource());
LOG.debug("Propagating Realm with key {} towards {}", realm.getKey(), profile.getTask().getResource()); OrgUnit orgUnit = profile.getTask().getResource().getOrgUnit(); Optional<? extends OrgUnitItem> connObjectKey = orgUnit.getConnObjectKeyItem(); Optional<String> connObjecKeyValue = mappingManager.getConnObjectKeyValue(realm, orgUnit); result.setOperation(toResourceOperation(profile.getTask().getUnmatchingRule())); } else { result.setOperation(toResourceOperation(profile.getTask().getMatchingRule())); ? UnmatchingRule.toEventName(profile.getTask().getUnmatchingRule()) : MatchingRule.toEventName(profile.getTask().getMatchingRule()); profile.getTask().getResource().getKey(), operation); boolean auditRequested = auditManager.auditRequested( AuditElements.EventCategoryType.PUSH, REALM_TYPE.toLowerCase(), profile.getTask().getResource().getKey(), operation); try { if (beforeObj == null) { result.setOperation(toResourceOperation(profile.getTask().getUnmatchingRule())); switch (profile.getTask().getUnmatchingRule()) { case ASSIGN: for (PushActions action : profile.getActions()) {
jobDelegate = implementationDAO.save(jobDelegate); pushTask.setJobDelegate(jobDelegate); pushTask.setSourceRealm(realmDAO.findByFullPath(pushTaskTO.getSourceRealm())); pushTask.setMatchingRule(pushTaskTO.getMatchingRule() == null ? MatchingRule.LINK : pushTaskTO.getMatchingRule()); pushTask.setUnmatchingRule(pushTaskTO.getUnmatchingRule() == null ? UnmatchingRule.ASSIGN : pushTaskTO.getUnmatchingRule()); LOG.debug("Invalid AnyType {} specified, ignoring...", type); } else { PushTaskAnyFilter filter = pushTask.getFilter(anyType).orElse(null); if (filter == null) { filter = entityFactory.newEntity(PushTaskAnyFilter.class); filter.setAnyType(anyType); filter.setPushTask(pushTask); pushTask.add(filter); pushTask.getFilters(). removeIf(anyFilter -> !pushTaskTO.getFilters().containsKey(anyFilter.getAnyType().getKey())); } else if (provisioningTask instanceof PullTask && provisioningTaskTO instanceof PullTaskTO) {
LOG.debug("Executing push on {}", pushTask.getResource()); pushTask.getActions().forEach(impl -> { try { actions.add(ImplementationManager.build(impl)); profile.getActions().addAll(actions); profile.setDryRun(dryRun); profile.setConflictResolutionAction(pushTask.getResource().getPushPolicy() == null ? ConflictResolutionAction.IGNORE : pushTask.getResource().getPushPolicy().getConflictResolutionAction()); if (pushTask.getResource().getOrgUnit() != null) { status.set("Pushing realms"); for (Realm realm : realmDAO.findDescendants(profile.getTask().getSourceRealm())) { reportHandled(SyncopeConstants.REALM_ANYTYPE, realm.getName()); } catch (Exception e) { LOG.warn("Failure pushing '{}' on '{}'", realm, pushTask.getResource(), e); throw new JobExecutionException("While pushing " + realm + " on " + pushTask.getResource(), e); for (Provision provision : pushTask.getResource().getProvisions()) { if (provision.getMapping() != null) { status.set("Pushing " + provision.getAnyType().getKey()); Optional<? extends PushTaskAnyFilter> anyFilter = pushTask.getFilter(provision.getAnyType()); String filter = anyFilter.isPresent() ? anyFilter.get().getFIQLCond()
pushTaskTO.setSourceRealm(pushTask.getSourceRealm().getFullPath()); pushTaskTO.setMatchingRule(pushTask.getMatchingRule() == null ? MatchingRule.LINK : pushTask.getMatchingRule()); pushTaskTO.setUnmatchingRule(pushTask.getUnmatchingRule() == null ? UnmatchingRule.ASSIGN : pushTask.getUnmatchingRule()); pushTask.getFilters().forEach(filter -> { pushTaskTO.getFilters().put(filter.getAnyType().getKey(), filter.getFIQLCond()); });
private void link(final Realm realm, final boolean unlink, final ProvisioningReport result) { RealmTO realmTO = binder.getRealmTO(realm, true); if (unlink) { realmTO.getResources().remove(profile.getTask().getResource().getKey()); } else { realmTO.getResources().add(profile.getTask().getResource().getKey()); } update(realmTO, null, result); }
any.getType().getKind(), any.getKey(), profile.getTask().getResource()); Boolean enable = any instanceof User && profile.getTask().isSyncStatus() ? ((User) any).isSuspended() ? Boolean.FALSE result.setOperation(toResourceOperation(profile.getTask().getUnmatchingRule())); } else { result.setOperation(toResourceOperation(profile.getTask().getMatchingRule())); ? UnmatchingRule.toEventName(profile.getTask().getUnmatchingRule()) : MatchingRule.toEventName(profile.getTask().getMatchingRule()); profile.getTask().getResource().getKey(), operation); boolean auditRequested = auditManager.auditRequested( AuditElements.EventCategoryType.PUSH, any.getType().getKind().name().toLowerCase(), profile.getTask().getResource().getKey(), operation); try { if (beforeObj == null) { result.setOperation(toResourceOperation(profile.getTask().getUnmatchingRule())); switch (profile.getTask().getUnmatchingRule()) { case ASSIGN: for (PushActions action : profile.getActions()) {
private void provision(final Realm realm, final ProvisioningReport result) { List<String> noPropResources = new ArrayList<>(realm.getResourceKeys()); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.add(ResourceOperation.CREATE, profile.getTask().getResource().getKey()); PropagationReporter reporter = taskExecutor.execute( propagationManager.createTasks(realm, propByRes, noPropResources), false); reportPropagation(result, reporter); }
private void deprovision(final Realm realm, final ConnectorObject beforeObj, final ProvisioningReport result) { List<String> noPropResources = new ArrayList<>(realm.getResourceKeys()); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.addAll(ResourceOperation.DELETE, realm.getResourceKeys()); List<PropagationTaskInfo> taskInfos = propagationManager.createTasks(realm, propByRes, noPropResources); if (!taskInfos.isEmpty()) { taskInfos.get(0).setBeforeObj(Optional.ofNullable(beforeObj)); PropagationReporter reporter = new DefaultPropagationReporter(); taskExecutor.execute(taskInfos.get(0), reporter); reportPropagation(result, reporter); } }
private void unassign(final Realm realm, final ConnectorObject beforeObj, final ProvisioningReport result) { RealmTO realmTO = binder.getRealmTO(realm, true); realmTO.getResources().remove(profile.getTask().getResource().getKey()); deprovision(update(realmTO, beforeObj, result), beforeObj, result); }
private void assign(final Realm realm, final ProvisioningReport result) { RealmTO realmTO = binder.getRealmTO(realm, true); realmTO.getResources().add(profile.getTask().getResource().getKey()); provision(update(realmTO, null, result), result); }
protected void provision(final Any<?> any, final Boolean enable, final ProvisioningReport result) { AnyTO before = getAnyTO(any.getKey()); List<String> noPropResources = new ArrayList<>(before.getResources()); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.add(ResourceOperation.CREATE, profile.getTask().getResource().getKey()); List<PropagationTaskInfo> taskInfos = propagationManager.getCreateTasks( any.getType().getKind(), any.getKey(), enable, propByRes, before.getVirAttrs(), noPropResources); if (!taskInfos.isEmpty()) { taskInfos.get(0).setBeforeObj(Optional.ofNullable(null)); PropagationReporter reporter = new DefaultPropagationReporter(); taskExecutor.execute(taskInfos.get(0), reporter); reportPropagation(result, reporter); } }
protected void update( final Any<?> any, final Boolean enable, final ConnectorObject beforeObj, final ProvisioningReport result) { boolean changepwd = any instanceof User; List<String> ownedResources = getAnyUtils().getAllResources(any).stream(). map(Entity::getKey).collect(Collectors.toList()); List<String> noPropResources = new ArrayList<>(ownedResources); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.add(ResourceOperation.UPDATE, profile.getTask().getResource().getKey()); propByRes.addOldConnObjectKey(profile.getTask().getResource().getKey(), beforeObj.getUid().getUidValue()); List<PropagationTaskInfo> taskInfos = propagationManager.getUpdateTasks( any.getType().getKind(), any.getKey(), changepwd, enable, propByRes, null, noPropResources); if (!taskInfos.isEmpty()) { taskInfos.get(0).setBeforeObj(Optional.of(beforeObj)); PropagationReporter reporter = new DefaultPropagationReporter(); taskExecutor.execute(taskInfos.get(0), reporter); reportPropagation(result, reporter); } }
protected void deprovision(final Any<?> any, final ConnectorObject beforeObj, final ProvisioningReport result) { AnyTO before = getAnyTO(any.getKey()); List<String> noPropResources = new ArrayList<>(before.getResources()); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.add(ResourceOperation.DELETE, profile.getTask().getResource().getKey()); propByRes.addOldConnObjectKey(profile.getTask().getResource().getKey(), beforeObj.getUid().getUidValue()); List<PropagationTaskInfo> taskInfos = propagationManager.getDeleteTasks( any.getType().getKind(), any.getKey(), propByRes, noPropResources); if (!taskInfos.isEmpty()) { taskInfos.get(0).setBeforeObj(Optional.of(beforeObj)); PropagationReporter reporter = new DefaultPropagationReporter(); taskExecutor.execute(taskInfos.get(0), reporter); reportPropagation(result, reporter); } }
@Override protected void provision(final Any<?> any, final Boolean enabled, final ProvisioningReport result) { AnyTO before = getAnyTO(any.getKey()); List<String> noPropResources = new ArrayList<>(before.getResources()); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.add(ResourceOperation.CREATE, profile.getTask().getResource().getKey()); PropagationReporter reporter = taskExecutor.execute(propagationManager.getUserCreateTasks( before.getKey(), null, enabled, propByRes, before.getVirAttrs(), noPropResources), false); reportPropagation(result, reporter); }
any = getAnyUtils().dao().authFind(anyKey); Provision provision = profile.getTask().getResource().getProvision(any.getType()).orElse(null); if (provision == null) { throw new JobExecutionException("No provision found on " + profile.getTask().getResource() + " for " + any.getType().getKey());
protected void link(final Any<?> any, final boolean unlink, final ProvisioningReport result) { AnyPatch patch = getAnyUtils().newAnyPatch(any.getKey()); patch.getResources().add(new StringPatchItem.Builder(). operation(unlink ? PatchOperation.DELETE : PatchOperation.ADD_REPLACE). value(profile.getTask().getResource().getKey()).build()); update(patch); result.setStatus(ProvisioningReport.Status.SUCCESS); }
protected void unassign(final Any<?> any, final ConnectorObject beforeObj, final ProvisioningReport result) { AnyPatch patch = getAnyUtils().newAnyPatch(any.getKey()); patch.getResources().add(new StringPatchItem.Builder(). operation(PatchOperation.DELETE). value(profile.getTask().getResource().getKey()).build()); update(patch); deprovision(any, beforeObj, result); }
protected void assign(final Any<?> any, final Boolean enabled, final ProvisioningReport result) { AnyPatch patch = getAnyUtils().newAnyPatch(any.getKey()); patch.getResources().add(new StringPatchItem.Builder(). operation(PatchOperation.ADD_REPLACE). value(profile.getTask().getResource().getKey()).build()); update(patch); provision(any, enabled, result); }