// Verify restore point properties.
        // Verify disk exclusion by verifying that the returned restore point contains the id of the
        // excluded disk in 'ExcludeDisks' property and did not create diskRestorePoint
        // of the excluded data disk.
        // For RestorePoint created via cross-region copy scenario, sourceRestorePoint.Id is verified.
        // For GET instance view of RestorePoint created via cross-region copy scenario, instanceView is verified.
        void VerifyRestorePointDetails(RestorePoint restorePoint, string restorePointName, OSDisk osDisk,
                                       int excludeDisksCount, string excludeDiskId, string vmSize, bool isRemoteCopy = false, string sourceRestorePointId = null,
                                       bool isRemoteCopyInstanceView = false)
        {
            Assert.Equal(restorePointName, restorePoint.Name);
            Assert.NotNull(restorePoint.Id);
            Assert.Equal(ProvisioningState.Succeeded.ToString(), restorePoint.ProvisioningState);
            Assert.Equal(ConsistencyModeTypes.ApplicationConsistent, restorePoint.ConsistencyMode);
            RestorePointSourceVMStorageProfile storageProfile = restorePoint.SourceMetadata.StorageProfile;

            Assert.Equal(osDisk.Name, storageProfile.OsDisk.Name, ignoreCase: true);
            Assert.Equal(osDisk.ManagedDisk.Id, storageProfile.OsDisk.ManagedDisk.Id, ignoreCase: true);
            Assert.NotNull(restorePoint.SourceMetadata.VmId);
            Assert.Equal(vmSize, restorePoint.SourceMetadata.HardwareProfile.VmSize);
            if (isRemoteCopy)
            {
                Assert.Equal(sourceRestorePointId, restorePoint.SourceRestorePoint.Id);
                if (isRemoteCopyInstanceView)
                {
                    RestorePointInstanceView restorePointInstanceView = restorePoint.InstanceView;
                    Assert.NotNull(restorePointInstanceView);
                    Assert.Equal(storageProfile.DataDisks.Count + 1, restorePointInstanceView.DiskRestorePoints.Count);
                    Assert.NotNull(restorePointInstanceView.DiskRestorePoints[0].ReplicationStatus.CompletionPercent);
                }
            }
            else
            {
                Assert.Equal(excludeDisksCount, restorePoint.ExcludeDisks.Count);
                Assert.Equal(excludeDiskId, restorePoint.ExcludeDisks[0].Id, ignoreCase: true);
            }
        }
Ejemplo n.º 2
0
 internal RestorePointData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IList <WritableSubResource> excludeDisks, RestorePointSourceMetadata sourceMetadata, string provisioningState, ConsistencyModeTypes?consistencyMode, DateTimeOffset?timeCreated, WritableSubResource sourceRestorePoint, RestorePointInstanceView instanceView) : base(id, name, resourceType, systemData)
 {
     ExcludeDisks       = excludeDisks;
     SourceMetadata     = sourceMetadata;
     ProvisioningState  = provisioningState;
     ConsistencyMode    = consistencyMode;
     TimeCreated        = timeCreated;
     SourceRestorePoint = sourceRestorePoint;
     InstanceView       = instanceView;
 }
Ejemplo n.º 3
0
        internal static RestorePointData DeserializeRestorePointData(JsonElement element)
        {
            ResourceIdentifier id         = default;
            string             name       = default;
            ResourceType       type       = default;
            SystemData         systemData = default;
            Optional <IList <WritableSubResource> > excludeDisks   = default;
            Optional <RestorePointSourceMetadata>   sourceMetadata = default;
            Optional <string> provisioningState = default;
            Optional <ConsistencyModeTypes>     consistencyMode    = default;
            Optional <DateTimeOffset>           timeCreated        = default;
            Optional <WritableSubResource>      sourceRestorePoint = default;
            Optional <RestorePointInstanceView> instanceView       = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("id"))
                {
                    id = new ResourceIdentifier(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("type"))
                {
                    type = new ResourceType(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("systemData"))
                {
                    systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString());
                    continue;
                }
                if (property.NameEquals("properties"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        if (property0.NameEquals("excludeDisks"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <WritableSubResource> array = new List <WritableSubResource>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(JsonSerializer.Deserialize <WritableSubResource>(item.ToString()));
                            }
                            excludeDisks = array;
                            continue;
                        }
                        if (property0.NameEquals("sourceMetadata"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            sourceMetadata = RestorePointSourceMetadata.DeserializeRestorePointSourceMetadata(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("provisioningState"))
                        {
                            provisioningState = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("consistencyMode"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            consistencyMode = new ConsistencyModeTypes(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("timeCreated"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            timeCreated = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("sourceRestorePoint"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            sourceRestorePoint = JsonSerializer.Deserialize <WritableSubResource>(property0.Value.ToString());
                            continue;
                        }
                        if (property0.NameEquals("instanceView"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            instanceView = RestorePointInstanceView.DeserializeRestorePointInstanceView(property0.Value);
                            continue;
                        }
                    }
                    continue;
                }
            }
            return(new RestorePointData(id, name, type, systemData, Optional.ToList(excludeDisks), sourceMetadata.Value, provisioningState.Value, Optional.ToNullable(consistencyMode), Optional.ToNullable(timeCreated), sourceRestorePoint, instanceView.Value));
        }