private void VerifyDataDiskConfiguration(DataDiskConfigurationList dataDiskConfigs, VMImageContext vmImageInfo) { try { for (int i = 0; i < dataDiskConfigs.Count; i++) { Assert.AreEqual(dataDiskConfigs[i].HostCaching.ToString(), vmImageInfo.DataDiskConfigurations[i].HostCaching, "Data disk HostCaching iproperty is not matching."); //Verify LogicalDiskSizeInGB, Assert.AreEqual(dataDiskConfigs[i].LogicalDiskSizeInGB, vmImageInfo.DataDiskConfigurations[i].LogicalDiskSizeInGB); //Verify LUN Assert.AreEqual(dataDiskConfigs[i].Lun, vmImageInfo.DataDiskConfigurations[i].Lun); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); throw ex; } }
public void VerifyVMImage(string vmImageName, OS ImageFamily, string imageLabel, string osState, HostCaching hostCaching, DataDiskConfigurationList diskConfigs) { var vmImages = vmPowershellCmdlets.GetAzureVMImageReturningVMImages(vmImageName); Assert.IsTrue(vmImages.Count >= 1); var vmImageInfo = vmImages[0]; Utilities.PrintContext(vmImageInfo); Utilities.PrintContext(vmImageInfo.OSDiskConfiguration); foreach (var disk in vmImageInfo.DataDiskConfigurations) { Utilities.PrintContext(disk); } //Verify ImageName Assert.IsTrue(vmImageName.Equals(vmImageInfo.ImageName)); Assert.IsTrue(vmImageInfo.Label.Equals(imageLabel)); //Verify Category Assert.IsTrue("User".Equals(vmImageInfo.Category, StringComparison.CurrentCultureIgnoreCase)); //Verify LogicalDiskSizeInGB, HostCaching Assert.AreEqual(hostCaching.ToString(), vmImageInfo.OSDiskConfiguration.HostCaching, "Property HostCaching is not matching."); //Verify the no of the data disks Assert.AreEqual(diskConfigs.Count, vmImageInfo.DataDiskConfigurations.Count); //Verify Data disks. VerifyDataDiskConfiguration(diskConfigs, vmImageInfo); //Verify OSstate Assert.AreEqual(osState, vmImageInfo.OSDiskConfiguration.OSState, "OsState is not matching."); //Verify OS Assert.AreEqual(ImageFamily.ToString(), vmImageInfo.OSDiskConfiguration.OS, "Os Family is not matching."); }
private void UpdateVMImageOsAndDataDiskAnderifyChanges( DataDiskConfigurationList diskConfig, out string disk1Name,out string disk2Name) { //Update Azure VM image disk 1 hostcaching to read write cahcing = GetAlternateHostCachingForOsDisk(cahcing.ToString()); Utilities.PrintHeader(string.Format("Update Azure VM image data disk 1 hostcaching to ReadWrite, data disk 2 hostcaching to ReadOnly and OS disk host cahching to {0}. ", cahcing.ToString())); var vmImageContext = vmPowershellCmdlets.GetAzureVMImageReturningVMImages(vmImageName); Utilities.PrintCompleteContext(vmImageContext); var vmImageInfo = vmImageContext[0]; disk1Name = vmImageInfo.DataDiskConfigurations[0].Name; disk2Name = vmImageInfo.DataDiskConfigurations[1].Name; var disk1HostCaching = HostCaching.ReadWrite; var disk2HostCaching = HostCaching.ReadOnly; // get disk 1 configuration from vm image var diskConfigSet = vmPowershellCmdlets.GetAzureVMImageDiskConfigSet(vmImageInfo); // set disk1 host caching to read write diskConfigSet = vmPowershellCmdlets.SetAzureVMImageDataDiskConfig(diskConfigSet, disk1Name, 0, disk1HostCaching.ToString()); //set disk 2 host caching to None diskConfigSet = vmPowershellCmdlets.SetAzureVMImageDataDiskConfig(diskConfigSet, disk2Name, 1, disk2HostCaching.ToString()); // set os disk host caching to a differnt value. diskConfigSet = vmPowershellCmdlets.SetAzureVMImageOSDiskConfig(diskConfigSet, cahcing.ToString()); //update Azure VM image. vmPowershellCmdlets.UpdateAzureVMImage(vmImageName, vmImageName, diskConfigSet); Utilities.PrintFooter(string.Format("Update Azure VM image data disk 1 hostcaching to ReadWrite, data disk 2 hostcaching to ReadOnly and OS disk host cahching to {0}. ", cahcing.ToString())); // Verify that the vm image disk 1 host caching is "ReadWrite". Utilities.PrintHeader("Verify the vm image."); diskConfig[0].HostCaching = disk1HostCaching.ToString(); diskConfig[1].HostCaching = disk2HostCaching.ToString(); VerifyVMImage(vmImageName, OS.Windows, vmImageName, "Specialized", cahcing, diskConfig); Utilities.PrintFooter("Verify the vm image."); }
private void UpdateVmImageUsingDiskConfigSetAndVerifyChanges(DataDiskConfigurationList diskConfig, string disk1Name, string disk2Name) { cahcing = GetAlternateHostCachingForOsDisk(cahcing.ToString()); Utilities.PrintHeader("Update Azure VM image data disk 1 hostcaching to ReadOnly, data disk 2 hostcaching to None and OS disk host cahching to" + cahcing.ToString()); var diskConfigSet = vmPowershellCmdlets.NewAzureVMImageDiskConfigSet(); diskConfigSet.OSDiskConfiguration = new OSDiskConfiguration() { HostCaching = cahcing.ToString() }; diskConfigSet.DataDiskConfigurations = new DataDiskConfigurationList(); diskConfigSet.DataDiskConfigurations.Add(new DataDiskConfiguration() { Name = disk1Name, HostCaching = HostCaching.ReadOnly.ToString(), Lun = 0 }); diskConfigSet.DataDiskConfigurations.Add(new DataDiskConfiguration() { Name = disk2Name, HostCaching = HostCaching.None.ToString(), Lun = 1 }); //update Azure VM image. vmPowershellCmdlets.UpdateAzureVMImage(vmImageName, vmImageName, diskConfigSet); Utilities.PrintFooter(string.Format("Update Azure VM image data disk 1 hostcaching to ReadWrite, data disk 2 hostcaching to ReadOnly and OS disk host cahching to {0}. ", cahcing.ToString())); // Verify that the vm image disk 1 host caching is "ReadWrite". Utilities.PrintHeader("Verify that the vm image."); diskConfig[0].HostCaching = diskConfigSet.DataDiskConfigurations[0].HostCaching.ToString(); diskConfig[1].HostCaching = diskConfigSet.DataDiskConfigurations[1].HostCaching.ToString(); VerifyVMImage(vmImageName, OS.Windows, vmImageName, "Specialized", cahcing, diskConfig); Utilities.PrintFooter("Verify that the vm image."); }
public void UpdateVMImageDataDiskAndOsDiskTest() { StartTest(MethodBase.GetCurrentMethod().Name, DateTime.Now); try { //Create a new vmImage with 2 data disks string vmName = Utilities.GetUniqueShortName(vmNamePrefix); string disk1 = "Disk1"; string disk2 = "Disk2"; HostCaching disk1HostCaching = HostCaching.ReadOnly; HostCaching disk2HostCaching = HostCaching.None; //Creating VM with 2 data disks.; Utilities.ExecuteAndLog(() => { PersistentVM vm = Utilities.CreateIaaSVMObject(vmName, InstanceSize.Small, imageName, true, username, password); //Attach disk 1 with hostcaching 'Readonly' AddAzureDataDiskConfig azureDataDiskConfigInfo1 = new AddAzureDataDiskConfig(DiskCreateOption.CreateNew, diskSize1, disk1, 0, disk1HostCaching.ToString()); azureDataDiskConfigInfo1.Vm = vm; vm = vmPowershellCmdlets.AddAzureDataDisk(azureDataDiskConfigInfo1); //Attach disk 2 with hostcaching 'None' AddAzureDataDiskConfig azureDataDiskConfigInfo2 = new AddAzureDataDiskConfig(DiskCreateOption.CreateNew, diskSize1, disk2, 1, disk2HostCaching.ToString()); azureDataDiskConfigInfo2.Vm = vm; vm = vmPowershellCmdlets.AddAzureDataDisk(azureDataDiskConfigInfo2); //deploy the VM vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm }, locationName); },"Creating VM with 2 data disks."); //Save image of the VM as a Specialized vm image. vmImageName = vmName + "Image"; Utilities.ExecuteAndLog(() => { Utilities.PrintHeader("Save specialized vm image of the deployed vm."); vmPowershellCmdlets.StopAzureVM(vmPowershellCmdlets.GetAzureVM(vmName, serviceName).VM, serviceName,force:true); vmPowershellCmdlets.SaveAzureVMImage(serviceName, vmName, vmImageName, "Specialized", vmImageName); },"Save specialized vm image of the deployed vm."); //Verify the saved vm Image DataDiskConfigurationList diskConfig = new DataDiskConfigurationList(); Utilities.ExecuteAndLog(() => { diskConfig.Add(new DataDiskConfiguration() { Lun = 0, LogicalDiskSizeInGB = diskSize1, HostCaching = disk1HostCaching.ToString() }); diskConfig.Add(new DataDiskConfiguration() { Lun = 1, LogicalDiskSizeInGB = diskSize1, HostCaching = disk2HostCaching.ToString() }); VerifyVMImage(vmImageName, OS.Windows, vmImageName, "Specialized", cahcing, diskConfig); },"Fetch the saved vm image info and verify the vm image info."); UpdateAzureVMImageDetails(vmImageName); string disk1Name,disk2Name; UpdateVMImageOsAndDataDiskAnderifyChanges(diskConfig, out disk1Name, out disk2Name); //Update VMImage using DiskConfig set prepared manually. UpdateVmImageUsingDiskConfigSetAndVerifyChanges(diskConfig, disk1Name, disk2Name); pass = true; } catch (Exception ex) { Console.WriteLine(ex.ToString()); throw ex; } }
public void CaptureSpecializedVMAndDeploy() { StartTest(MethodBase.GetCurrentMethod().Name, testStartTime); string serviceName1 = Utilities.GetUniqueShortName(serviceNamePrefix); try { // a. Deploy a new IaaS VM string vmName = Utilities.GetUniqueShortName(vmNamePrefix); Console.WriteLine("--------------------------------Deploying a new IaaS VM :{0}--------------------------------", vmName); var vm = CreateIaaSVMObjectWithDisk(vmName, InstanceSize.Small, imageName, true, username, password); vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm }, locationName); Console.WriteLine("--------------------------------Deploying a new IaaS VM :{0} completed.---------------------", vmName); //b. Stop the VM Console.WriteLine("--------------------------------Stopping vm :{0}--------------------------------", vmName); vmPowershellCmdlets.StopAzureVM(vmName, serviceName, force: true); Console.WriteLine("--------------------------------Stopped vm :{0}--------------------------------", vmName); //c. Save the VM image Console.WriteLine("--------------------------------Save the VM image--------------------------------"); vmImageName = vmName + "Image"; vmPowershellCmdlets.SaveAzureVMImage(serviceName, vmName, vmImageName, CONSTANT_SPECIALIZED, vmImageName); Console.WriteLine("--------------------------------Saved VM image with name {0}----------------------"); //d. Verify the VM image by Get-AzureVMImage Console.WriteLine("--------------------------------Verify the VM image--------------------------------"); DataDiskConfigurationList diskConfig = new DataDiskConfigurationList(); diskConfig.Add(new DataDiskConfiguration() { Lun = lunSlot1, LogicalDiskSizeInGB = diskSize1, HostCaching = cahcing.ToString() }); VerifyVMImage(vmImageName, OS.Windows, vmImageName, CONSTANT_SPECIALIZED, cahcing, diskConfig); Console.WriteLine("--------------------------------Verified that the VM image is saved successfully--------------------------------"); //e. Deploy a new IaaS VM with the save VM image Console.WriteLine("--------------------------------Deploy a new IaaS VM with the saved VM image {0}--------------------------------", vmImageName); string vmName1 = Utilities.GetUniqueShortName(vmNamePrefix); vm = Utilities.CreateIaaSVMObject(vmName1, InstanceSize.Small, vmImageName); vmPowershellCmdlets.NewAzureVM(serviceName1, new[] { vm }, locationName); Console.WriteLine("--------------------------------Deployed a IaaS VM {0} with the saved VM image {1}--------------------------------", vmName1, vmImageName); //f. Verify the VM by Get-AzureVM Console.WriteLine("--------------------------------Verify the VM by Get-AzureVM--------------------------------", vmName1, vmImageName); var vmRoleContext = vmPowershellCmdlets.GetAzureVM(vmName1, serviceName1); Utilities.PrintContext(vmRoleContext); VerifyVM(vmRoleContext.VM, OS.Windows, HostCaching.ReadWrite, diskSize1, 1); Console.WriteLine("--------------------------------Verified the VM {0} successfully--------------------------------", vmName1); //g. Add another IaaS VM with the save VM image to the existing service string vmName2 = Utilities.GetUniqueShortName(vmNamePrefix); Console.WriteLine("--------------------------------Deploy a new IaaS VM with the saved VM image {0}--------------------------------", vmImageName); vmPowershellCmdlets.NewAzureQuickVM(OS.Windows, vmName2, serviceName1, vmImageName); Console.WriteLine("--------------------------------Deployed a IaaS VM {0} with the saved VM image {1}--------------------------------", vmName2, vmImageName); //h. Verify the VM by Get-AzureVM Console.WriteLine("--------------------------------Verify the VM by Get-AzureVM--------------------------------", vmName2, vmImageName); vmRoleContext = vmPowershellCmdlets.GetAzureVM(vmName2, serviceName1); VerifyVM(vmRoleContext.VM, OS.Windows, HostCaching.ReadWrite, diskSize1, 1); Utilities.PrintContext(vmRoleContext); Console.WriteLine("--------------------------------Verified the VM {0} successfully--------------------------------", vmName2); pass = true; } catch (Exception ex) { Console.WriteLine(ex.ToString()); throw; } finally { CleanupService(serviceName1); // Delete the VM image Console.WriteLine("------------------------------Delete the VM image---------------------------------"); DeleteVMImageIfExists(vmImageName); Console.WriteLine("------------------------------Deleted the VM image---------------------------------"); } }