public static RecoveryPointBase GetPSAzureWorkloadRecoveryPoint( ServiceClientModel.RecoveryPointResource rp, ItemBase item) { Dictionary <UriEnums, string> uriDict = HelperUtils.ParseUri(item.Id); string containerUri = HelperUtils.GetContainerUri(uriDict, item.Id); string protectedItemUri = HelperUtils.GetProtectedItemUri(uriDict, item.Id); string containerName = IdUtils.GetNameFromUri(containerUri); string protectedItemName = IdUtils.GetNameFromUri(protectedItemUri); ServiceClientModel.AzureWorkloadSQLRecoveryPoint recoveryPoint = rp.Properties as ServiceClientModel.AzureWorkloadSQLRecoveryPoint; DateTime recoveryPointTime = DateTime.MinValue; if (recoveryPoint.RecoveryPointTimeInUTC.HasValue) { recoveryPointTime = (DateTime)recoveryPoint.RecoveryPointTimeInUTC; } else { throw new ArgumentNullException("RecoveryPointTime is null"); } AzureWorkloadRecoveryPoint rpBase = new AzureWorkloadRecoveryPoint() { RecoveryPointId = rp.Name, BackupManagementType = item.BackupManagementType, ItemName = protectedItemName, ContainerName = containerName, ContainerType = item.ContainerType, RecoveryPointTime = recoveryPointTime, RecoveryPointType = recoveryPoint.Type, Id = rp.Id, WorkloadType = item.WorkloadType, DataDirectoryPaths = recoveryPoint.ExtendedInfo != null ? recoveryPoint.ExtendedInfo.DataDirectoryPaths : null }; return(rpBase); }
public static RecoveryPointBase GetPSAzureWorkloadRecoveryPoint( ServiceClientModel.RecoveryPointResource rp, ItemBase item) { Dictionary <UriEnums, string> uriDict = HelperUtils.ParseUri(item.Id); string containerUri = HelperUtils.GetContainerUri(uriDict, item.Id); string protectedItemUri = HelperUtils.GetProtectedItemUri(uriDict, item.Id); string containerName = IdUtils.GetNameFromUri(containerUri); string protectedItemName = IdUtils.GetNameFromUri(protectedItemUri); ServiceClientModel.AzureWorkloadSQLRecoveryPoint recoveryPoint = rp.Properties as ServiceClientModel.AzureWorkloadSQLRecoveryPoint; DateTime recoveryPointTime = DateTime.MinValue; if (recoveryPoint.RecoveryPointTimeInUTC.HasValue) { recoveryPointTime = (DateTime)recoveryPoint.RecoveryPointTimeInUTC; } else { throw new ArgumentNullException("RecoveryPointTime is null"); } AzureWorkloadRecoveryPoint rpBase = new AzureWorkloadRecoveryPoint() { RecoveryPointId = rp.Name, BackupManagementType = item.BackupManagementType, ItemName = protectedItemName, ContainerName = containerName, ContainerType = item.ContainerType, RecoveryPointTime = recoveryPointTime, RecoveryPointType = recoveryPoint.Type, Id = rp.Id, WorkloadType = item.WorkloadType, DataDirectoryPaths = recoveryPoint.ExtendedInfo != null ? recoveryPoint.ExtendedInfo.DataDirectoryPaths : null, RehydrationExpiryTime = (DateTime?)null }; if (recoveryPoint.RecoveryPointTierDetails != null) { bool isHardenedRP = false; bool isInstantRecoverable = false; bool isArchived = false; bool isRehydrated = false; foreach (ServiceClientModel.RecoveryPointTierInformation tierInfo in recoveryPoint.RecoveryPointTierDetails) { if (tierInfo.Status == ServiceClientModel.RecoveryPointTierStatus.Rehydrated) { if (tierInfo.Type == ServiceClientModel.RecoveryPointTierType.ArchivedRP) { isRehydrated = true; rpBase.RehydrationExpiryTime = (tierInfo.ExtendedInfo.ContainsKey("RehydratedRPExpiryTime")) ? DateTime.Parse(tierInfo.ExtendedInfo["RehydratedRPExpiryTime"]) : (DateTime?)null; } } if (tierInfo.Status == ServiceClientModel.RecoveryPointTierStatus.Valid) { if (tierInfo.Type == ServiceClientModel.RecoveryPointTierType.InstantRP) { isInstantRecoverable = true; } if (tierInfo.Type == ServiceClientModel.RecoveryPointTierType.HardenedRP) { isHardenedRP = true; } if (tierInfo.Type == ServiceClientModel.RecoveryPointTierType.ArchivedRP) { isArchived = true; } } } if ((isHardenedRP && isArchived) || (isRehydrated)) { rpBase.RecoveryPointTier = RecoveryPointTier.VaultStandardRehydrated; } else if (isInstantRecoverable && isHardenedRP) { rpBase.RecoveryPointTier = RecoveryPointTier.SnapshotAndVaultStandard; } else if (isInstantRecoverable && isArchived) { rpBase.RecoveryPointTier = RecoveryPointTier.SnapshotAndVaultArchive; } else if (isArchived) { rpBase.RecoveryPointTier = RecoveryPointTier.VaultArchive; } else if (isInstantRecoverable) { rpBase.RecoveryPointTier = RecoveryPointTier.Snapshot; } else if (isHardenedRP) { rpBase.RecoveryPointTier = RecoveryPointTier.VaultStandard; } } if (recoveryPoint.RecoveryPointMoveReadinessInfo != null) { rpBase.RecoveryPointMoveReadinessInfo = new Dictionary <string, RecoveryPointMoveReadinessInfo>(); foreach (var moveInfo in recoveryPoint.RecoveryPointMoveReadinessInfo) { RecoveryPointMoveReadinessInfo AzureVmMoveInfo = new RecoveryPointMoveReadinessInfo(); AzureVmMoveInfo.IsReadyForMove = moveInfo.Value.IsReadyForMove; AzureVmMoveInfo.AdditionalInfo = moveInfo.Value.AdditionalInfo; rpBase.RecoveryPointMoveReadinessInfo.Add(moveInfo.Key, AzureVmMoveInfo); } } return(rpBase); }