public void TestVMDataDiskScenario_ManagedDisk_ForceDetach()
        {
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                string originalTestLocation = Environment.GetEnvironmentVariable("AZURE_VM_TEST_LOCATION");
                Environment.SetEnvironmentVariable("AZURE_VM_TEST_LOCATION", "eastus2euap");
                EnsureClientsInitialized(context);

                ImageReference imageReference             = GetPlatformVMImage(useWindowsImage: true);
                string         resourceGroupName          = TestUtilities.GenerateName(TestPrefix);
                string         storageAccountForDisksName = TestUtilities.GenerateName(TestPrefix);
                string         availabilitySetName        = TestUtilities.GenerateName(TestPrefix);

                try
                {
                    StorageAccount storageAccountForDisks = CreateStorageAccount(resourceGroupName, storageAccountForDisksName);

                    Action <VirtualMachine> addManagedDataDiskToVM = vm =>
                    {
                        vm.HardwareProfile.VmSize   = VirtualMachineSizeTypes.StandardA4;
                        vm.StorageProfile.DataDisks = new List <DataDisk>();

                        var diskName = "dataDisk" + TestUtilities.GenerateGuid();
                        var dd       = new DataDisk
                        {
                            Caching      = CachingTypes.None,
                            DiskSizeGB   = 10,
                            CreateOption = DiskCreateOptionTypes.Empty,
                            Lun          = 0,
                            Name         = diskName,
                            ManagedDisk  = new ManagedDiskParameters()
                            {
                                StorageAccountType = StorageAccountType.StandardLRS
                            }
                        };
                        vm.StorageProfile.DataDisks.Add(dd);

                        var testStatus = new InstanceViewStatus
                        {
                            Code    = "test",
                            Message = "test"
                        };

                        var testStatusList = new List <InstanceViewStatus> {
                            testStatus
                        };
                    };

                    VirtualMachine inputVM;
                    CreateVM(resourceGroupName, availabilitySetName, storageAccountForDisks, imageReference, out inputVM, addManagedDataDiskToVM, hasManagedDisks: true);

                    VirtualMachine getVMWithInstanceViewResponse = m_CrpClient.VirtualMachines.Get(resourceGroupName, inputVM.Name, InstanceViewTypes.InstanceView);
                    ValidateVMInstanceView(inputVM, getVMWithInstanceViewResponse, hasManagedDisks: true);

                    DataDisk diskToBeForceDetached = getVMWithInstanceViewResponse.StorageProfile.DataDisks.FirstOrDefault(disk => disk.Lun == 0);
                    Assert.NotNull(diskToBeForceDetached);

                    Helpers.MarkDataDiskToBeDetached(diskToBeForceDetached, "ForceDetach");

                    var forceDetachVMResponse = m_CrpClient.VirtualMachines.CreateOrUpdate(resourceGroupName, getVMWithInstanceViewResponse.Name, getVMWithInstanceViewResponse);
                    Assert.Equal(0, forceDetachVMResponse.StorageProfile.DataDisks.Count);
                }
                finally
                {
                    Environment.SetEnvironmentVariable("AZURE_VM_TEST_LOCATION", originalTestLocation);
                    m_ResourcesClient.ResourceGroups.Delete(resourceGroupName);
                }
            }
        }