public static UnifiedPolicySettingStatus ToStatusStorage(UnifiedPolicyStatus status) { UnifiedPolicySettingStatus unifiedPolicySettingStatus = new UnifiedPolicySettingStatus(); unifiedPolicySettingStatus[ADObjectSchema.OrganizationalUnitRoot] = new ADObjectId(status.TenantId); unifiedPolicySettingStatus.SetId((ADObjectId)DalHelper.ConvertFromStoreObject(status.ObjectId, typeof(ADObjectId))); unifiedPolicySettingStatus.SettingType = UnifiedPolicyStorageFactory.ConvertToSettingType(status.ObjectType); unifiedPolicySettingStatus.ParentObjectId = status.ParentObjectId; unifiedPolicySettingStatus.Container = status.Workload.ToString(); unifiedPolicySettingStatus.ObjectVersion = status.Version.InternalStorage; unifiedPolicySettingStatus.ErrorCode = (int)status.ErrorCode; unifiedPolicySettingStatus.ErrorMessage = status.ErrorMessage; unifiedPolicySettingStatus.WhenProcessedUTC = status.WhenProcessedUTC; unifiedPolicySettingStatus.AdditionalDiagnostics = status.AdditionalDiagnostics; switch (status.Mode) { case Mode.PendingDeletion: unifiedPolicySettingStatus.ObjectStatus = StatusMode.PendingDeletion; break; case Mode.Deleted: unifiedPolicySettingStatus.ObjectStatus = StatusMode.Deleted; break; default: unifiedPolicySettingStatus.ObjectStatus = StatusMode.Active; break; } return(unifiedPolicySettingStatus); }
internal PolicyDistributionErrorDetails CreatePolicyDistributionError(Workload singleWorkload, UnifiedPolicyStorageBase storage, UnifiedPolicySettingStatus status) { bool flag = false; UnifiedPolicyErrorCode errorCode = UnifiedPolicyErrorCode.Unknown; string empty = string.Empty; DateTime lastErrorTime = DateTime.UtcNow; string additionalDiagnostics = string.Empty; if (status == null) { if (storage is ScopeStorage) { flag = true; errorCode = UnifiedPolicyErrorCode.PolicySyncTimeout; empty = string.Empty; lastErrorTime = DateTime.UtcNow; additionalDiagnostics = (this.includeDiagnosticInfo ? Strings.DiagnoseMissingStatusForScope(storage.WhenChangedUTC.Value) : string.Empty); } else if (storage.WhenChangedUTC != null) { DateTime dateTime = storage.WhenChangedUTC.Value.Add(PolicySettingStatusHelpers.policySyncTimeoutInterval); if (dateTime < DateTime.UtcNow) { flag = true; errorCode = UnifiedPolicyErrorCode.PolicySyncTimeout; empty = string.Empty; lastErrorTime = dateTime; additionalDiagnostics = (this.includeDiagnosticInfo ? Strings.DiagnosePendingStatusTimeout(storage.WhenChangedUTC.Value, PolicySettingStatusHelpers.policySyncTimeoutInterval) : string.Empty); } } } else if (status.ErrorCode != 0) { flag = true; errorCode = (UnifiedPolicyErrorCode)status.ErrorCode; empty = string.Empty; lastErrorTime = status.WhenProcessedUTC; additionalDiagnostics = (this.includeDiagnosticInfo ? status.AdditionalDiagnostics : string.Empty); } if (flag) { return(new PolicyDistributionErrorDetails(this.GetStorageObjectName(storage), storage.Guid, PolicySettingStatusHelpers.GetConfigurationObjectTypeFromString(storage.GetType().Name), singleWorkload, errorCode, empty, lastErrorTime, additionalDiagnostics)); } return(null); }
private static void DeleteReferencedObject(ITenantConfigurationSession session, UnifiedPolicySettingStatus deleteStatus) { IConfigurable configurable = null; bool flag = false; QueryFilter filter = UnifiedPolicySession.CreateGetObjectQueryFilter(deleteStatus.OrganizationalUnitRoot.ObjectGuid, deleteStatus.Id.ObjectGuid, true); string settingType; if ((settingType = deleteStatus.SettingType) != null) { if (!(settingType == "AssociationStorage")) { if (!(settingType == "BindingStorage")) { if (!(settingType == "PolicyStorage")) { if (!(settingType == "RuleStorage")) { if (!(settingType == "ScopeStorage")) { goto IL_F7; } configurable = session.Find <ScopeStorage>(filter, null, false, null).FirstOrDefault <IConfigurable>(); } else { configurable = session.Find <RuleStorage>(filter, null, false, null).FirstOrDefault <IConfigurable>(); } } else { configurable = session.Find <PolicyStorage>(filter, null, false, null).FirstOrDefault <IConfigurable>(); flag = true; } } else { configurable = session.Find <BindingStorage>(filter, null, false, null).FirstOrDefault <IConfigurable>(); } } else { configurable = session.Find <AssociationStorage>(filter, null, false, null).FirstOrDefault <IConfigurable>(); } if (flag) { IEnumerable <RuleStorage> enumerable = from RuleStorage r in session.Find <RuleStorage>(new ComparisonFilter(ComparisonOperator.Equal, DalHelper.IncludeTombstonesProperty, true), null, false, null) where r.ParentPolicyId == deleteStatus.Id.ObjectGuid && r.ObjectState != ObjectState.Deleted select r; foreach (RuleStorage instance in enumerable) { session.Delete(instance); } IEnumerable <BindingStorage> enumerable2 = session.Find <BindingStorage>(QueryFilter.AndTogether(new QueryFilter[] { new ComparisonFilter(ComparisonOperator.Equal, UnifiedPolicyStorageBaseSchema.ContainerProp, deleteStatus.Id.ObjectGuid), new ComparisonFilter(ComparisonOperator.Equal, DalHelper.IncludeTombstonesProperty, true) }), null, false, null).Cast <BindingStorage>(); foreach (BindingStorage instance2 in enumerable2) { session.Delete(instance2); } } if (configurable != null && configurable.ObjectState != ObjectState.Deleted) { session.Delete(configurable); } return; } IL_F7: throw new NotSupportedException(string.Format("Unable to delete object of type '{0}'", deleteStatus.SettingType ?? "<null>")); }
private static bool HasDistributionFailed(UnifiedPolicyStorageBase storageObject, UnifiedPolicySettingStatus status) { return(status.ObjectVersion == storageObject.PolicyVersion && status.ErrorCode != 0); }