private void cmbTargetStorage_SelectedIndexChanged(object sender, EventArgs e) { ComboBox cmbSender = (ComboBox)sender; if (_TargetDisk != null) { if (_TargetDisk.TargetStorage == null && cmbSender.SelectedItem != null) { if (cmbSender.SelectedItem.GetType() == typeof(Azure.MigrationTarget.StorageAccount)) { _TargetDisk.TargetStorage = (Azure.MigrationTarget.StorageAccount)cmbSender.SelectedItem; } else if (cmbSender.SelectedItem.GetType() == typeof(Azure.Arm.StorageAccount)) { _TargetDisk.TargetStorage = (Azure.Arm.StorageAccount)cmbSender.SelectedItem; } } if (_TargetDisk.TargetStorage.GetType() == typeof(Azure.MigrationTarget.ManagedDiskStorage)) { ManagedDiskStorage managedDiskStorage = (ManagedDiskStorage)_TargetDisk.TargetStorage; if (cmbSender.SelectedItem.ToString() == "Premium_LRS") { managedDiskStorage.StorageAccountType = StorageAccountType.Premium_LRS; } else { managedDiskStorage.StorageAccountType = StorageAccountType.Standard_LRS; } } else { if (cmbSender.SelectedItem != null) { IStorageTarget targetStorageAccount = (IStorageTarget)cmbSender.SelectedItem; _TargetDisk.TargetStorage = targetStorageAccount; } else { _TargetDisk.TargetStorage = null; } } if (!_IsBinding) { PropertyChanged?.Invoke(); } } }
public async Task LoadARMObjectsFromSampleOfflineFile2() { string restResponseFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestDocs\\NewTest1\\temp.json"); AzureContext azureContextUSCommercial = await TestHelper.SetupAzureContext(Core.Interface.AzureEnvironment.AzureCloud, restResponseFile); await azureContextUSCommercial.AzureSubscription.BindArmResources(); AzureGenerator templateGenerator = await TestHelper.SetupTemplateGenerator(azureContextUSCommercial); var artifacts = new ExportArtifacts(); artifacts.ResourceGroup = await TestHelper.GetTargetResourceGroup(azureContextUSCommercial); artifacts.VirtualMachines.Add(azureContextUSCommercial.AzureSubscription.ArmTargetVirtualMachines[0]); artifacts.VirtualMachines[0].OSVirtualHardDisk.DiskSizeInGB = 128; await templateGenerator.UpdateArtifacts(artifacts); Assert.IsNotNull(templateGenerator.SeekAlert("Network Interface Card (NIC) 'manageddisk01549-nic' utilizes Network Security Group (NSG) 'ManagedDisk01-nsg-nsg', but the NSG resource is not added into the migration template.")); artifacts.NetworkSecurityGroups.Add(azureContextUSCommercial.AzureSubscription.ArmTargetNetworkSecurityGroups[0]); await templateGenerator.UpdateArtifacts(artifacts); Assert.IsNull(templateGenerator.SeekAlert("Network Interface Card (NIC) 'manageddisk01549-nic' utilizes Network Security Group (NSG) 'ManagedDisk01-nsg-nsg', but the NSG resource is not added into the migration template.")); Assert.IsNotNull(templateGenerator.SeekAlert("Target Virtual Network 'ManagedDiskvnet-vnet' for Virtual Machine 'ManagedDisk01-vm' Network Interface 'manageddisk01549-nic' is invalid, as it is not included in the migration / template.")); artifacts.VirtualNetworks.Add(azureContextUSCommercial.AzureSubscription.ArmTargetVirtualNetworks[0]); await templateGenerator.UpdateArtifacts(artifacts); Assert.IsNull(templateGenerator.SeekAlert("Target Virtual Network 'ManagedDiskvnet-vnet' for Virtual Machine 'ManagedDisk01-vm' Network Interface 'manageddisk01549-nic' is invalid, as it is not included in the migration / template.")); Assert.IsNotNull(templateGenerator.SeekAlert("Network Interface Card (NIC) 'manageddisk01549-nic' IP Configuration 'ipconfig1' utilizes Public IP 'ManagedDisk01-ip', but the Public IP resource is not added into the migration template.")); artifacts.PublicIPs.Add(azureContextUSCommercial.AzureSubscription.ArmTargetPublicIPs[0]); await templateGenerator.UpdateArtifacts(artifacts); Assert.IsNull(templateGenerator.SeekAlert("Network Interface Card (NIC) 'manageddisk01549-nic' IP Configuration 'ipconfig1' utilizes Public IP 'ManagedDisk01-ip', but the Public IP resource is not added into the migration template.")); Assert.IsNotNull(templateGenerator.SeekAlert("Virtual Machine 'ManagedDisk01' references Managed Disk 'ManagedDisk01_OsDisk_1_e901d155e5404b6a912afb22e7a804a6' which has not been added as an export resource.")); artifacts.Disks.Add(azureContextUSCommercial.AzureSubscription.ArmTargetManagedDisks[1]); await templateGenerator.UpdateArtifacts(artifacts); Assert.IsNull(templateGenerator.SeekAlert("Virtual Machine 'ManagedDisk01' references Managed Disk 'ManagedDisk01_OsDisk_1_e901d155e5404b6a912afb22e7a804a6' which has not been added as an export resource.")); Assert.IsNotNull(templateGenerator.SeekAlert("Virtual Machine 'ManagedDisk01' references Managed Disk 'ManagedDataDisk01' which has not been added as an export resource.")); artifacts.Disks.Add(azureContextUSCommercial.AzureSubscription.ArmTargetManagedDisks[0]); await templateGenerator.UpdateArtifacts(artifacts); Assert.IsNull(templateGenerator.SeekAlert("Virtual Machine 'ManagedDisk01' references Managed Disk 'ManagedDataDisk01' which has not been added as an export resource.")); Assert.IsNotNull(templateGenerator.SeekAlert("Network Interface Card (NIC) 'manageddisk01549-nic' is used by Virtual Machine 'ManagedDisk01-vm', but is not included in the exported resources.")); artifacts.NetworkInterfaces.Add(azureContextUSCommercial.AzureSubscription.ArmTargetNetworkInterfaces[0]); await templateGenerator.UpdateArtifacts(artifacts); Assert.IsNull(templateGenerator.SeekAlert("Network Interface Card (NIC) 'manageddisk01549-nic' is used by Virtual Machine 'ManagedDisk01-vm', but is not included in the exported resources.")); Assert.IsTrue(artifacts.VirtualMachines[0].TargetSize.ToString() == "Standard_A1"); await templateGenerator.UpdateArtifacts(artifacts); Assert.IsFalse(templateGenerator.HasErrors, "Template Generation cannot occur as the are error(s)."); ManagedDiskStorage managedDiskStorage = new ManagedDiskStorage(artifacts.VirtualMachines[0].OSVirtualHardDisk.SourceDisk); managedDiskStorage.StorageAccountType = Core.Interface.StorageAccountType.Premium_LRS; artifacts.VirtualMachines[0].OSVirtualHardDisk.TargetStorage = managedDiskStorage; await templateGenerator.UpdateArtifacts(artifacts); Assert.IsNotNull(templateGenerator.SeekAlert("Premium Disk based Virtual Machines must be of VM Series 'DS', 'DS v2', 'GS', 'GS v2', 'Ls' or 'Fs'.")); artifacts.VirtualMachines[0].TargetSize = artifacts.ResourceGroup.TargetLocation.VMSizes.Where(a => a.Name == "Standard_DS2_v2").FirstOrDefault(); await templateGenerator.UpdateArtifacts(artifacts); Assert.IsNull(templateGenerator.SeekAlert("Premium Disk based Virtual Machines must be of VM Series 'DS', 'DS v2', 'GS', 'GS v2', 'Ls' or 'Fs'.")); Assert.IsFalse(templateGenerator.HasErrors, "Template Generation cannot occur as the are error(s)."); await templateGenerator.GenerateStreams(); JObject templateJson = JObject.Parse(await templateGenerator.GetTemplateString()); Assert.AreEqual(7, templateJson["resources"].Children().Count()); var resource = templateJson["resources"].First(); Assert.AreEqual("Microsoft.Network/networkSecurityGroups", resource["type"].Value <string>()); Assert.AreEqual("ManagedDisk01-nsg-nsg", resource["name"].Value <string>()); Assert.AreEqual("[resourceGroup().location]", resource["location"].Value <string>()); }