Exemplo n.º 1
0
        public VirtualMachine(Asm.VirtualMachine virtualMachine, TargetSettings targetSettings) : base(ArmConst.MicrosoftCompute, ArmConst.VirtualMachines)
        {
            this.Source = virtualMachine;
            this.SetTargetName(virtualMachine.RoleName, targetSettings);
            this.OSVirtualHardDisk   = new Disk(virtualMachine.OSVirtualHardDisk, this, targetSettings);
            this.OSVirtualHardDiskOS = virtualMachine.OSVirtualHardDiskOS;

            if (targetSettings.DefaultTargetDiskType == ArmDiskType.ClassicDisk)
            {
                this.OSVirtualHardDisk.TargetStorage = SeekTargetStorageAccount(virtualMachine.AzureSubscription.AsmTargetStorageAccounts, virtualMachine.OSVirtualHardDisk.StorageAccountName);
            }

            foreach (Asm.Disk asmDataDisk in virtualMachine.DataDisks)
            {
                Disk targetDataDisk = new Disk(asmDataDisk, this, targetSettings);

                EnsureDataDiskTargetLunIsNotNull(ref targetDataDisk);

                if (targetSettings.DefaultTargetDiskType == ArmDiskType.ClassicDisk)
                {
                    targetDataDisk.TargetStorage = SeekTargetStorageAccount(virtualMachine.AzureSubscription.AsmTargetStorageAccounts, asmDataDisk.StorageAccountName);
                }

                this.DataDisks.Add(targetDataDisk);
            }

            foreach (Asm.NetworkInterface asmNetworkInterface in virtualMachine.NetworkInterfaces)
            {
                NetworkInterface migrationNetworkInterface = new NetworkInterface(virtualMachine, asmNetworkInterface, virtualMachine.AzureSubscription.AsmTargetVirtualNetworks, virtualMachine.AzureSubscription.AsmTargetNetworkSecurityGroups, targetSettings);
                migrationNetworkInterface.ParentVirtualMachine = this;
                this.NetworkInterfaces.Add(migrationNetworkInterface);
            }

            #region Seek ARM Target Size

            // Get ARM Based Location (that matches location of Source ASM VM
            Arm.Location armLocation = virtualMachine.AzureSubscription.GetAzureARMLocation(virtualMachine.Location);
            if (armLocation != null)
            {
                this.TargetSize = armLocation.SeekVmSize(virtualMachine.RoleSize.Name);

                if (this.TargetSize == null)
                {
                    // if not found, defer to alternate matching options

                    Dictionary <string, string> VMSizeTable = new Dictionary <string, string>();
                    VMSizeTable.Add("ExtraSmall", "Standard_A0");
                    VMSizeTable.Add("Small", "Standard_A1");
                    VMSizeTable.Add("Medium", "Standard_A2");
                    VMSizeTable.Add("Large", "Standard_A3");
                    VMSizeTable.Add("ExtraLarge", "Standard_A4");
                    VMSizeTable.Add("A5", "Standard_A5");
                    VMSizeTable.Add("A6", "Standard_A6");
                    VMSizeTable.Add("A7", "Standard_A7");
                    VMSizeTable.Add("A8", "Standard_A8");
                    VMSizeTable.Add("A9", "Standard_A9");
                    VMSizeTable.Add("A10", "Standard_A10");
                    VMSizeTable.Add("A11", "Standard_A11");

                    if (VMSizeTable.ContainsKey(virtualMachine.RoleSize.Name))
                    {
                        this.TargetSize = armLocation.SeekVmSize(VMSizeTable[virtualMachine.RoleSize.Name]);
                    }
                }
            }

            #endregion
        }
Exemplo n.º 2
0
        public VirtualMachine(AzureContext azureContext, Asm.VirtualMachine virtualMachine, List <VirtualNetwork> targetVirtualNetworks, List <StorageAccount> targetStorageAccounts, List <NetworkSecurityGroup> networkSecurityGroups)
        {
            this._AzureContext       = azureContext;
            this.Source              = virtualMachine;
            this.TargetName          = virtualMachine.RoleName;
            this.OSVirtualHardDisk   = new Disk(virtualMachine.OSVirtualHardDisk);
            this.OSVirtualHardDiskOS = virtualMachine.OSVirtualHardDiskOS;
            this.OSVirtualHardDisk.TargetStorageAccount = SeekTargetStorageAccount(targetStorageAccounts, virtualMachine.OSVirtualHardDisk.StorageAccountName);

            foreach (Asm.Disk asmDataDisk in virtualMachine.DataDisks)
            {
                Disk targetDataDisk = new Disk(asmDataDisk);
                targetDataDisk.TargetStorageAccount = SeekTargetStorageAccount(targetStorageAccounts, asmDataDisk.StorageAccountName);
                this.DataDisks.Add(targetDataDisk);
            }

            foreach (Asm.NetworkInterface asmNetworkInterface in virtualMachine.NetworkInterfaces)
            {
                Azure.MigrationTarget.NetworkInterface migrationNetworkInterface = new Azure.MigrationTarget.NetworkInterface(_AzureContext, virtualMachine, asmNetworkInterface, targetVirtualNetworks, networkSecurityGroups);
                this.NetworkInterfaces.Add(migrationNetworkInterface);
            }

            #region Seek ARM Target Size

            // Get ARM Based Location (that matches location of Source ASM VM
            Arm.Location armLocation = _AzureContext.AzureRetriever.GetAzureARMLocation(virtualMachine.Location).Result;
            if (armLocation != null)
            {
                // First, try to seek matching ARM VM Size by name
                if (armLocation.VMSizes != null)
                {
                    this.TargetSize = armLocation.VMSizes.Where(a => a.Name == virtualMachine.RoleSize.Name).FirstOrDefault();

                    if (this.TargetSize == null)
                    {
                        // if not found, defer to alternate matching options

                        Dictionary <string, string> VMSizeTable = new Dictionary <string, string>();
                        VMSizeTable.Add("ExtraSmall", "Standard_A0");
                        VMSizeTable.Add("Small", "Standard_A1");
                        VMSizeTable.Add("Medium", "Standard_A2");
                        VMSizeTable.Add("Large", "Standard_A3");
                        VMSizeTable.Add("ExtraLarge", "Standard_A4");
                        VMSizeTable.Add("A5", "Standard_A5");
                        VMSizeTable.Add("A6", "Standard_A6");
                        VMSizeTable.Add("A7", "Standard_A7");
                        VMSizeTable.Add("A8", "Standard_A8");
                        VMSizeTable.Add("A9", "Standard_A9");
                        VMSizeTable.Add("A10", "Standard_A10");
                        VMSizeTable.Add("A11", "Standard_A11");

                        if (VMSizeTable.ContainsKey(virtualMachine.RoleSize.Name))
                        {
                            this.TargetSize = armLocation.VMSizes.Where(a => a.Name == VMSizeTable[virtualMachine.RoleSize.Name]).FirstOrDefault();
                        }
                    }
                }
            }

            #endregion
        }