///GENMHASH:2FE8C4C2D5EAD7E37787838DE0B47D92:F59DCE21697E0967B005EDC164141A79
        protected override VirtualMachineImpl WrapModel(string name)
        {
            var osDisk         = new OSDisk();
            var storageProfile = new StorageProfile();

            storageProfile.OsDisk    = osDisk;
            storageProfile.DataDisks = new List <DataDisk>();
            var networkProfile = new NetworkProfile();

            networkProfile.NetworkInterfaces = new List <NetworkInterfaceReferenceInner>();

            VirtualMachineInner inner = new VirtualMachineInner();

            inner.StorageProfile  = storageProfile;
            inner.OsProfile       = new OSProfile();
            inner.HardwareProfile = new HardwareProfile();
            inner.NetworkProfile  = networkProfile;

            return(new VirtualMachineImpl(
                       name,
                       inner,
                       base.Manager,
                       this.storageManager,
                       this.networkManager,
                       this.rbacManager));
        }
Exemplo n.º 2
0
        // Create restore point and exercise 'ExcludeDisk' functionality by excluding dataDisk.
        private RestorePoint CreateRestorePoint(string rgName, string rpcName,
                                                string rpName, OSDisk osDisk, string diskToExclude)
        {
            string             osDiskId               = osDisk.ManagedDisk.Id;
            string             osDiskName             = osDisk.Name;
            ApiEntityReference diskToExcludeEntityRef = new ApiEntityReference()
            {
                Id = diskToExclude
            };
            List <ApiEntityReference> disksToExclude = new List <ApiEntityReference> {
                diskToExcludeEntityRef
            };

            return(m_CrpClient.RestorePoints.Create(rgName, rpcName, rpName, disksToExclude));
        }
Exemplo n.º 3
0
 internal AzureSLA GetDiskSLA(OSDisk osdisk)
 {
     return(this.GetDiskSLA(osdisk.DiskSizeGB, osdisk.Vhd.Uri));
 }
        public void CreateRpcAndRestorePoints()
        {
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                EnsureClientsInitialized(context);
                string         location = ComputeManagementTestUtilities.DefaultLocation;
                var            rgName   = ComputeManagementTestUtilities.GenerateName(TestPrefix);
                ImageReference imageRef = GetPlatformVMImage(useWindowsImage: true);
                VirtualMachine inputVM;
                string         storageAccountForDisksName = TestUtilities.GenerateName(TestPrefix);
                string         availabilitySetName        = TestUtilities.GenerateName(TestPrefix);

                try
                {
                    StorageAccount storageAccountForDisks = CreateStorageAccount(rgName, storageAccountForDisksName);
                    // create the VM
                    VirtualMachine createdVM = CreateVM(rgName, availabilitySetName, storageAccountForDisks, imageRef, out inputVM,
                                                        (vm) =>
                    {
                        vm.DiagnosticsProfile = GetManagedDiagnosticsProfile();
                    }, hasManagedDisks: true);
                    DataDisk dataDisk   = createdVM.StorageProfile.DataDisks[0];
                    string   dataDiskId = dataDisk.ManagedDisk.Id;
                    OSDisk   osDisk     = createdVM.StorageProfile.OsDisk;

                    string rpName   = ComputeManagementTestUtilities.GenerateName("rpClientTest");
                    string rpcName  = ComputeManagementTestUtilities.GenerateName("rpc1ClientTest");
                    string rpcName2 = ComputeManagementTestUtilities.GenerateName("rpc2ClientTest");
                    string vmId     = createdVM.Id;
                    string vmSize   = createdVM.HardwareProfile.VmSize;

                    // create two RPCs
                    Dictionary <string, string> tags = new Dictionary <string, string>()
                    {
                        { "RG", "rg" },
                        { "testTag", "testTagValue" },
                    };
                    RestorePointCollection createdRpc = CreateRpc(createdVM.Id, rpcName, rgName, location, tags);
                    VerifyRpc(createdRpc, rpcName, location, vmId);

                    RestorePointCollection createdRpc2 = CreateRpc(createdVM.Id, rpcName2, rgName, location, tags);
                    VerifyRpc(createdRpc2, rpcName2, location, vmId);

                    // for PATCH RPC, only tags are allowed to be updated
                    Dictionary <string, string> newTags = new Dictionary <string, string>()
                    {
                        { "newTag", "newValue1" },
                        { "newtestTag", "newValue2" },
                    };
                    UpdateRpc(rgName, rpcName, createdRpc, newTags);

                    // GET list of all rpc in the resource group.
                    IEnumerable <RestorePointCollection> rpcs = ListRpcInResourceGroup(rgName);
                    VerifyReturnedRpcs(rpcs, rpcName, rpcName2, location, vmId);

                    // GET list of all rpc in subscription.
                    rpcs = ListRpcInSubscription();
                    VerifyReturnedRpcs(rpcs, rpcName, rpcName2, location, vmId);

                    // create RP in the RPC
                    RestorePoint createdRP = CreateRestorePoint(rgName, rpcName, rpName, osDisk, diskToExclude: dataDiskId);
                    VerifyRestorePointDetails(createdRP, rpName, osDisk, 1,
                                              excludeDiskId: dataDiskId, vmSize: vmSize);
                    RestorePoint getRP = GetRP(rgName, rpcName, rpName);
                    VerifyRestorePointDetails(createdRP, rpName, osDisk, 1,
                                              excludeDiskId: dataDiskId, vmSize: vmSize);

                    // get RPC without $expand=restorePoints
                    RestorePointCollection returnedRpc = GetRpc(rgName, rpcName);
                    VerifyRpc(returnedRpc, rpcName, location, vmId);

                    // get RPC with $expand=restorePoints
                    returnedRpc = GetRpc(rgName, rpcName,
                                         RestorePointCollectionExpandOptions.RestorePoints);
                    VerifyRpc(returnedRpc, rpcName, location, vmId,
                              shouldRpcContainRestorePoints: true);

                    // verify the restore point returned from GET RPC with $expand=restorePoints
                    RestorePoint rpInRpc = returnedRpc.RestorePoints[0];
                    VerifyRestorePointDetails(rpInRpc, rpName, osDisk, 1,
                                              excludeDiskId: dataDiskId, vmSize: vmSize);

                    // delete the restore point
                    DeleteRP(rgName, rpcName, rpName);
                    // GET of deleted restore point should return 404 not found
                    try
                    {
                        GetRP(rgName, rpcName, rpName);
                        Assert.False(true);
                    }
                    catch (CloudException ex)
                    {
                        Assert.True(ex.Response.StatusCode == HttpStatusCode.NotFound);
                    }

                    // delete the restore point collection
                    DeleteRpc(rgName, rpcName);
                    // GET of deleted RPC should return 404 not found
                    try
                    {
                        GetRpc(rgName, rpcName);
                        Assert.False(true);
                    }
                    catch (CloudException ex)
                    {
                        Assert.True(ex.Response.StatusCode == HttpStatusCode.NotFound);
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    m_ResourcesClient.ResourceGroups.Delete(rgName);
                }
            }
        }
        // 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.
        void VerifyRestorePointDetails(RestorePoint restorePoint, string restorePointName, OSDisk osDisk,
                                       int excludeDisksCount, string excludeDiskId, string vmSize)
        {
            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.Equal(excludeDisksCount, restorePoint.ExcludeDisks.Count);
            Assert.Equal(excludeDiskId, restorePoint.ExcludeDisks[0].Id, ignoreCase: true);
            Assert.NotNull(restorePoint.SourceMetadata.VmId);
            Assert.Equal(vmSize, restorePoint.SourceMetadata.HardwareProfile.VmSize);
        }
        // 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);
            }
        }