예제 #1
0
        public async virtual Task <List <AsmStorageAccount> > GetAzureAsmStorageAccounts()
        {
            if (_StorageAccounts != null)
            {
                return(_StorageAccounts);
            }

            _StorageAccounts = new List <AsmStorageAccount>();
            XmlDocument storageAccountsXml = await this.GetAzureAsmResources("StorageAccounts", null);

            foreach (XmlNode storageAccountXml in storageAccountsXml.SelectNodes("//StorageService"))
            {
                AsmStorageAccount asmStorageAccount = new AsmStorageAccount(_AzureContext, storageAccountXml);
                _StorageAccounts.Add(asmStorageAccount);
            }

            _AzureContext.StatusProvider.UpdateStatus("BUSY: Loading Storage Account Keys");
            List <Task> storageAccountKeyTasks = new List <Task>();

            foreach (AsmStorageAccount asmStorageAccount in _StorageAccounts)
            {
                storageAccountKeyTasks.Add(asmStorageAccount.LoadStorageAccountKeysAsynch());
            }
            await Task.WhenAll(storageAccountKeyTasks);

            return(_StorageAccounts);
        }
예제 #2
0
        private void cmbTargetStorage_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox cmbSender = (ComboBox)sender;

            if (cmbSender.SelectedItem == null)
            {
                _AsmDataDisk.TargetStorageAccount = null;
            }
            else
            {
                if (cmbSender.SelectedItem.GetType() == typeof(AsmStorageAccount))
                {
                    AsmStorageAccount asmStorageAccount = (AsmStorageAccount)cmbSender.SelectedItem;
                    _AsmDataDisk.TargetStorageAccount = asmStorageAccount;
                }
                else if (cmbSender.SelectedItem.GetType() == typeof(ArmStorageAccount))
                {
                    ArmStorageAccount armStorageAccount = (ArmStorageAccount)cmbSender.SelectedItem;
                    _AsmDataDisk.TargetStorageAccount = armStorageAccount;
                }
                else
                {
                    _AsmDataDisk.TargetStorageAccount = null;
                }
            }

            UpdateParentNode();
        }
예제 #3
0
        private void txtTargetName_TextChanged(object sender, EventArgs e)
        {
            TextBox txtSender = (TextBox)sender;

            TreeNode          asmStorageAccountNode = (TreeNode)_ArmStorageAccountNode.Tag;
            AsmStorageAccount asmStorageAccount     = (AsmStorageAccount)asmStorageAccountNode.Tag;

            asmStorageAccount.TargetName = txtSender.Text;
            _ArmStorageAccountNode.Text  = asmStorageAccount.GetFinalTargetName();
        }
예제 #4
0
        public void Bind(AzureContext azureContext, TreeNode storageAccountNode)
        {
            _AzureContext           = azureContext;
            txtTargetName.MaxLength = 24 - azureContext.SettingsProvider.StorageAccountSuffix.Length;

            _ArmStorageAccountNode = storageAccountNode;
            TreeNode          asmStorageAccountNode = (TreeNode)_ArmStorageAccountNode.Tag;
            AsmStorageAccount asmStorageAccount     = (AsmStorageAccount)asmStorageAccountNode.Tag;

            lblAccountType.Text   = asmStorageAccount.AccountType;
            lblSourceASMName.Text = asmStorageAccount.Name;

            if (asmStorageAccount.TargetName.Length > txtTargetName.MaxLength)
            {
                txtTargetName.Text = asmStorageAccount.TargetName.Substring(0, txtTargetName.MaxLength);
            }
            else
            {
                txtTargetName.Text = asmStorageAccount.TargetName;
            }
        }
예제 #5
0
        private bool RecursiveHealthCheckNode(TreeNode treeNode)
        {
            if (treeNode.Tag != null)
            {
                if (treeNode.Tag.GetType() == typeof(ArmResourceGroup))
                {
                    ArmResourceGroup armResourceGroup = (ArmResourceGroup)treeNode.Tag;

                    if (armResourceGroup.Location == null)
                    {
                        treeARM.SelectedNode = treeNode;
                        this.Refresh();
                        MessageBox.Show("Target Location must be selected before exporting.");
                        return(false);
                    }
                }
                else if (treeNode.Tag.GetType() == typeof(TreeNode)) // Tag is the sourced ASM TreeNode
                {
                    TreeNode asmTreeNode = (TreeNode)treeNode.Tag;

                    if (asmTreeNode.Tag != null)
                    {
                        if (asmTreeNode.Tag.GetType() == typeof(AsmNetworkSecurityGroup))
                        {
                            AsmNetworkSecurityGroup asmNetworkSecurityGroup = (AsmNetworkSecurityGroup)asmTreeNode.Tag;

                            // Validate the Target Name is not blank
                            if (asmNetworkSecurityGroup.TargetName == String.Empty)
                            {
                                treeARM.SelectedNode = treeNode;
                                this.Refresh();
                                MessageBox.Show("Target Name must be selected before exporting.");
                                return(false);
                            }
                        }
                        else if (asmTreeNode.Tag.GetType() == typeof(AsmVirtualNetwork))
                        {
                            AsmVirtualNetwork asmVirtualNetwork = (AsmVirtualNetwork)asmTreeNode.Tag;

                            // Validate the Target Name is not blank
                            if (asmVirtualNetwork.TargetName == String.Empty)
                            {
                                treeARM.SelectedNode = treeNode;
                                this.Refresh();
                                MessageBox.Show("Target Name must be selected before exporting.");
                                return(false);
                            }

                            foreach (TreeNode virtualNetworkNode in treeNode.Parent.Nodes)
                            {
                                TreeNode          asmVirtualNetworkNode    = (TreeNode)virtualNetworkNode.Tag;
                                AsmVirtualNetwork asmVirtualNetworkCompare = (AsmVirtualNetwork)asmVirtualNetworkNode.Tag;

                                if (asmVirtualNetworkCompare.Name != asmVirtualNetwork.Name && asmVirtualNetworkCompare.TargetName == asmVirtualNetwork.TargetName)
                                {
                                    treeARM.SelectedNode = treeNode;
                                    this.Refresh();
                                    MessageBox.Show("Target Names must be unique to migrate Virtual Networks.");
                                    return(false);
                                }
                            }
                        }
                        else if (asmTreeNode.Tag.GetType() == typeof(AsmVirtualMachine))
                        {
                            AsmVirtualMachine asmVirtualMachine = (AsmVirtualMachine)asmTreeNode.Tag;

                            if (asmVirtualMachine.TargetName == String.Empty)
                            {
                                treeARM.SelectedNode = treeNode;
                                this.Refresh();
                                MessageBox.Show("Target Name for Virtual Machine must be specified.");
                                return(false);
                            }

                            if (asmVirtualMachine.TargetAvailabilitySet == null)
                            {
                                treeARM.SelectedNode = treeNode;
                                this.Refresh();
                                MessageBox.Show("Target Availability Set for Virtual Machine must be specified.");
                                return(false);
                            }

                            if (asmVirtualMachine.TargetVirtualNetwork == null)
                            {
                                treeARM.SelectedNode = treeNode;
                                this.Refresh();
                                MessageBox.Show("Target Virtual Network for Virtual Machine must be specified.");
                                return(false);
                            }

                            if (asmVirtualMachine.TargetSubnet == null)
                            {
                                treeARM.SelectedNode = treeNode;
                                this.Refresh();
                                MessageBox.Show("Target Subnet for Virtual Machine must be specified.");
                                return(false);
                            }

                            if (asmVirtualMachine.OSVirtualHardDisk.TargetStorageAccount == null)
                            {
                                treeARM.SelectedNode = treeNode;
                                this.Refresh();
                                MessageBox.Show("Target VM OS Disk Storage Account must be specified.");
                                return(false);
                            }
                        }
                        else if (asmTreeNode.Tag.GetType() == typeof(AsmStorageAccount))
                        {
                            AsmStorageAccount asmStorageAccount = (AsmStorageAccount)asmTreeNode.Tag;
                            if (asmStorageAccount.TargetName == String.Empty)
                            {
                                treeARM.SelectedNode = treeNode;
                                this.Refresh();
                                MessageBox.Show("Target Storage Account Name must be specified.");
                                return(false);
                            }
                        }
                    }
                }
                else if (treeNode.Tag.GetType() == typeof(AsmSubnet))
                {
                    AsmSubnet asmSubnet = (AsmSubnet)treeNode.Tag;
                    if (asmSubnet.TargetName == String.Empty)
                    {
                        treeARM.SelectedNode = treeNode;
                        this.Refresh();
                        MessageBox.Show("Target Subnet Name must be specified.");
                        return(false);
                    }
                }
                else if (treeNode.Tag.GetType() == typeof(ArmAvailabilitySet))
                {
                    ArmAvailabilitySet armAvailabilitySet = (ArmAvailabilitySet)treeNode.Tag;
                    if (armAvailabilitySet.TargetName == String.Empty)
                    {
                        treeARM.SelectedNode = treeNode;
                        this.Refresh();
                        MessageBox.Show("Target Availability Set Name must be specified.");
                        return(false);
                    }
                }
                else if (treeNode.Tag.GetType() == typeof(AsmDisk))
                {
                    AsmDisk asmDisk = (AsmDisk)treeNode.Tag;

                    if (asmDisk.TargetStorageAccount == null)
                    {
                        treeARM.SelectedNode = treeNode;
                        this.Refresh();
                        MessageBox.Show("Target VM Data Disk Storage Account must be specified.");
                        return(false);
                    }
                }
            }

            foreach (TreeNode childNode in treeNode.Nodes)
            {
                bool nodeResult = RecursiveHealthCheckNode(childNode);
                if (nodeResult == false)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #6
0
        private async Task AddASMNodeToARMTree(TreeNode asmTreeNode)
        {
            TreeNode targetResourceGroupNode = SeekARMChildTreeNode(treeARM.Nodes, _TargetResourceGroup.Name, _TargetResourceGroup.Name, _TargetResourceGroup, true);

            Type tagType = asmTreeNode.Tag.GetType();

            if (tagType == typeof(AsmVirtualNetwork))
            {
                AsmVirtualNetwork asmVirtualNetwork   = (AsmVirtualNetwork)asmTreeNode.Tag;
                TreeNode          virtualNetworksNode = SeekARMChildTreeNode(targetResourceGroupNode.Nodes, "Virtual Networks", "Virtual Networks", "Virtual Networks", true);
                TreeNode          virtualNetworkNode  = SeekARMChildTreeNode(virtualNetworksNode.Nodes, asmTreeNode.Name, asmVirtualNetwork.GetFinalTargetName(), asmTreeNode, true);

                foreach (AsmSubnet asmSubnet in asmVirtualNetwork.Subnets)
                {
                    // Property dialog not made available for Gateway Subnet
                    if (!asmSubnet.IsGatewaySubnet)
                    {
                        TreeNode subnetNode = SeekARMChildTreeNode(virtualNetworkNode.Nodes, asmSubnet.Name, asmSubnet.Name, asmSubnet, true);
                    }
                }

                virtualNetworkNode.ExpandAll();
                treeARM.SelectedNode = virtualNetworkNode;
                treeARM.Focus();
            }
            else if (tagType == typeof(AsmStorageAccount))
            {
                AsmStorageAccount asmStorageAccount = (AsmStorageAccount)asmTreeNode.Tag;

                TreeNode storageAccountsNode = SeekARMChildTreeNode(targetResourceGroupNode.Nodes, "Storage Accounts", "Storage Accounts", "Storage Accounts", true);
                TreeNode storageAccountNode  = SeekARMChildTreeNode(storageAccountsNode.Nodes, asmTreeNode.Name, asmStorageAccount.GetFinalTargetName(), asmTreeNode, true);
                treeARM.SelectedNode = storageAccountNode;
                treeARM.Focus();
            }
            else if (tagType == typeof(AsmVirtualMachine))
            {
                AsmVirtualMachine asmVirtualMachine  = (AsmVirtualMachine)asmTreeNode.Tag;
                TreeNode          availabilitySets   = SeekARMChildTreeNode(targetResourceGroupNode.Nodes, "Availability Sets", "Availability Sets", "Availability Sets", true);
                TreeNode          availabilitySet    = SeekARMChildTreeNode(availabilitySets.Nodes, asmVirtualMachine.TargetAvailabilitySet.TargetName, asmVirtualMachine.TargetAvailabilitySet.GetFinalTargetName(), asmVirtualMachine.TargetAvailabilitySet, true);
                TreeNode          virtualMachineNode = SeekARMChildTreeNode(availabilitySet.Nodes, asmVirtualMachine.RoleName, asmVirtualMachine.RoleName, asmTreeNode, true);

                foreach (AsmDisk asmDataDisk in asmVirtualMachine.DataDisks)
                {
                    TreeNode dataDiskNode = SeekARMChildTreeNode(virtualMachineNode.Nodes, asmDataDisk.DiskName, asmDataDisk.DiskName, asmDataDisk, true);
                }

                foreach (AsmNetworkInterface asmNetworkInterface in asmVirtualMachine.NetworkInterfaces)
                {
                    TreeNode dataDiskNode = SeekARMChildTreeNode(virtualMachineNode.Nodes, asmNetworkInterface.Name, asmNetworkInterface.Name, asmNetworkInterface, true);
                }

                treeARM.SelectedNode = virtualMachineNode;
                treeARM.Focus();
            }
            else if (tagType == typeof(AsmNetworkSecurityGroup))
            {
                AsmNetworkSecurityGroup asmNetworkSecurityGroup = (AsmNetworkSecurityGroup)asmTreeNode.Tag;
                TreeNode networkSecurityGroups    = SeekARMChildTreeNode(targetResourceGroupNode.Nodes, "Network Security Groups", "Network Security Groups", "Network Security Groups", true);
                TreeNode networkSecurityGroupNode = SeekARMChildTreeNode(networkSecurityGroups.Nodes, asmNetworkSecurityGroup.Name, asmNetworkSecurityGroup.Name, asmTreeNode, true);

                treeARM.SelectedNode = networkSecurityGroupNode;
                treeARM.Focus();
            }
            else
            {
                throw new Exception("Unhandled Node Type: " + tagType);
            }
        }
예제 #7
0
        private async void treeARM_AfterSelect(object sender, TreeViewEventArgs e)
        {
            ClearAzureResourceManagerProperties();

            lblAzureObjectName.Text = String.Empty;

            if (e.Node.Tag != null)
            {
                if (e.Node.Tag.GetType() == typeof(TreeNode))
                {
                    TreeNode asmTreeNode = (TreeNode)e.Node.Tag;

                    if (asmTreeNode.Tag != null)
                    {
                        lblAzureObjectName.Text = e.Node.Text;

                        if (asmTreeNode.Tag.GetType() == typeof(AsmVirtualNetwork))
                        {
                            pictureBox1.Image = imageList1.Images["VirtualNetwork"];

                            VirtualNetworkProperties properties = new VirtualNetworkProperties();
                            properties.Bind(e.Node);
                            panel1.Controls.Add(properties);
                        }
                        else if (asmTreeNode.Tag.GetType() == typeof(AsmStorageAccount))
                        {
                            pictureBox1.Image = imageList1.Images["StorageAccount"];

                            AsmStorageAccount storageAccount = (AsmStorageAccount)asmTreeNode.Tag;
                            lblAzureObjectName.Text = storageAccount.Name;

                            StorageAccountProperties properties = new StorageAccountProperties();
                            properties.Bind(this._AzureContextTargetARM, e.Node);
                            panel1.Controls.Add(properties);
                        }
                        else if (asmTreeNode.Tag.GetType() == typeof(AsmVirtualMachine))
                        {
                            pictureBox1.Image = imageList1.Images["VirtualMachine"];

                            VirtualMachineProperties properties = new VirtualMachineProperties();
                            properties.Bind(e.Node, this);
                            panel1.Controls.Add(properties);
                        }
                        else if (asmTreeNode.Tag.GetType() == typeof(AsmNetworkSecurityGroup))
                        {
                            pictureBox1.Image = imageList1.Images["NetworkSecurityGroup"];

                            NetworkSecurityGroupProperties properties = new NetworkSecurityGroupProperties();
                            properties.Bind(e.Node, this);
                            panel1.Controls.Add(properties);
                        }
                    }
                }
                if (e.Node.Tag.GetType() == typeof(AsmSubnet))
                {
                    pictureBox1.Image = imageList1.Images["VirtualNetwork"];

                    AsmSubnet asmSubnet = (AsmSubnet)e.Node.Tag;

                    SubnetProperties properties = new SubnetProperties();
                    properties.Bind(e.Node);
                    panel1.Controls.Add(properties);
                }
                else if (e.Node.Tag.GetType() == typeof(AsmDisk))
                {
                    AsmDisk asmDisk = (AsmDisk)e.Node.Tag;

                    pictureBox1.Image = imageList1.Images["Disk"];

                    DiskProperties properties = new DiskProperties();
                    properties.Bind(this, e.Node);
                    panel1.Controls.Add(properties);
                }
                else if (e.Node.Tag.GetType() == typeof(ArmAvailabilitySet))
                {
                    pictureBox1.Image = imageList1.Images["AvailabilitySet"];

                    AvailabilitySetProperties properties = new AvailabilitySetProperties();
                    properties.Bind(e.Node);
                    panel1.Controls.Add(properties);
                }
                else if (e.Node.Tag.GetType() == typeof(ArmResourceGroup))
                {
                    pictureBox1.Image = imageList1.Images["ResourceGroup"];

                    ResourceGroupProperties properties = new ResourceGroupProperties();
                    await properties.Bind(this, e.Node);

                    panel1.Controls.Add(properties);
                }
            }

            _statusProvider.UpdateStatus("Ready");
        }
예제 #8
0
        public async Task Save(Guid subscriptionId, List <TreeNode> selectedNodes)
        {
            string jsontext = String.Empty;

            try
            {
                StreamReader saveSelectionReader = new StreamReader(filePath);
                jsontext = saveSelectionReader.ReadToEnd();
                saveSelectionReader.Close();

                saveSelections = JsonConvert.DeserializeObject <List <SaveSelection> >(jsontext);

                // If save selection for this subscription alredy exists, remove it
                if (saveSelections.Exists(x => x.SubscriptionId == subscriptionId))
                {
                    saveSelections.Remove(saveSelections.Find(x => x.SubscriptionId == subscriptionId));
                }
            }
            catch
            {
                // If file does not exist, or invalid, starts a new object
                saveSelections = new List <SaveSelection>();
            }

            SaveSelection saveSelection = new SaveSelection();

            saveSelection.SubscriptionId = subscriptionId;

            saveSelection.VirtualNetworks = new List <SaveSelectionVirtualNetwork>();
            saveSelection.StorageAccounts = new List <SaveSelectioStorageAccount>();
            saveSelection.VirtualMachines = new List <SaveSelectionVirtualMachine>();

            if (selectedNodes != null)
            {
                foreach (TreeNode treeNode in selectedNodes)
                {
                    if (treeNode.Tag != null)
                    {
                        Type tagType = treeNode.Tag.GetType();
                        if (tagType == typeof(AsmVirtualNetwork))
                        {
                            AsmVirtualNetwork asmVirtualNetwork = (AsmVirtualNetwork)treeNode.Tag;

                            SaveSelectionVirtualNetwork saveSelectionVirtualNetwork = new SaveSelectionVirtualNetwork();
                            saveSelectionVirtualNetwork.VirtualNetworkName = asmVirtualNetwork.Name;

                            saveSelection.VirtualNetworks.Add(saveSelectionVirtualNetwork);
                        }
                        else if (tagType == typeof(AsmStorageAccount))
                        {
                            AsmStorageAccount asmStorageAccount = (AsmStorageAccount)treeNode.Tag;

                            SaveSelectioStorageAccount saveSelectionStorageAccount = new SaveSelectioStorageAccount();
                            saveSelectionStorageAccount.StorageAccountName       = asmStorageAccount.Name;
                            saveSelectionStorageAccount.TargetStorageAccountName = asmStorageAccount.TargetName;

                            saveSelection.StorageAccounts.Add(saveSelectionStorageAccount);
                        }
                        else if (tagType == typeof(AsmVirtualMachine))
                        {
                            AsmVirtualMachine asmVirtualMachine = (AsmVirtualMachine)treeNode.Tag;

                            SaveSelectionVirtualMachine saveSelectionVirtualMachine = new SaveSelectionVirtualMachine();
                            saveSelectionVirtualMachine.CloudService   = asmVirtualMachine.CloudServiceName;
                            saveSelectionVirtualMachine.VirtualMachine = asmVirtualMachine.RoleName;

                            if (asmVirtualMachine.TargetVirtualNetwork != null)
                            {
                                saveSelectionVirtualMachine.TargetVirtualNetwork = asmVirtualMachine.TargetVirtualNetwork.Id;
                            }

                            if (asmVirtualMachine.TargetSubnet != null)
                            {
                                saveSelectionVirtualMachine.TargetSubnet = asmVirtualMachine.TargetSubnet.Id;
                            }

                            // Add OS Disk Target Storage Account
                            if (asmVirtualMachine.OSVirtualHardDisk.TargetStorageAccount != null)
                            {
                                saveSelectionVirtualMachine.TargetDiskStorageAccounts.Add(asmVirtualMachine.OSVirtualHardDisk.DiskName, asmVirtualMachine.OSVirtualHardDisk.TargetStorageAccount.Id);
                            }

                            // Add OS Disk Target Storage Account
                            foreach (AsmDisk asmDataDisk in asmVirtualMachine.DataDisks)
                            {
                                if (asmDataDisk.TargetStorageAccount != null)
                                {
                                    saveSelectionVirtualMachine.TargetDiskStorageAccounts.Add(asmDataDisk.DiskName, asmDataDisk.TargetStorageAccount.Id);
                                }
                            }

                            saveSelection.VirtualMachines.Add(saveSelectionVirtualMachine);
                        }
                    }
                }
            }

            saveSelections.Add(saveSelection);

            // save blob copy details file
            jsontext = JsonConvert.SerializeObject(saveSelections, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings {
                NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore
            });

            StreamWriter saveSelectionWriter = new StreamWriter(filePath);

            saveSelectionWriter.Write(jsontext);
            saveSelectionWriter.Close();
        }
예제 #9
0
        public async Task Read(Guid subscriptionId, AzureRetriever sourceAzureRetreiver, AzureRetriever targetAzureRetreiver, TreeView treeView)
        {
            try
            {
                StreamReader saveSelectionReader = new StreamReader(filePath);
                string       jsontext            = saveSelectionReader.ReadToEnd();
                saveSelectionReader.Close();

                saveSelections = JsonConvert.DeserializeObject <List <SaveSelection> >(jsontext);
            }
            catch
            {
                // If file does not exist, or invalid, starts a new object
                saveSelections = new List <SaveSelection>();
            }

            if (saveSelections.Exists(x => x.SubscriptionId == subscriptionId))
            {
                SaveSelection saveSelection = saveSelections.Find(x => x.SubscriptionId == subscriptionId);

                foreach (SaveSelectionVirtualNetwork saveSelectionVirtualNetwork in saveSelection.VirtualNetworks)
                {
                    foreach (TreeNode treeNode in treeView.Nodes.Find(saveSelectionVirtualNetwork.VirtualNetworkName, true))
                    {
                        if (treeNode.Tag.GetType() == typeof(AsmVirtualNetwork))
                        {
                            AsmVirtualNetwork asmVirtualNetwork = (AsmVirtualNetwork)treeNode.Tag;

                            treeNode.Checked = true;
                        }
                    }
                }

                foreach (SaveSelectioStorageAccount saveSelectionStorageAccount in saveSelection.StorageAccounts)
                {
                    foreach (TreeNode treeNode in treeView.Nodes.Find(saveSelectionStorageAccount.StorageAccountName, true))
                    {
                        if (treeNode.Tag.GetType() == typeof(AsmStorageAccount))
                        {
                            AsmStorageAccount asmStorageAccount = (AsmStorageAccount)treeNode.Tag;
                            if (saveSelectionStorageAccount.TargetStorageAccountName.Length > 0) // We aren't going to reload a blank name, should it occur, as a name is required
                            {
                                asmStorageAccount.TargetName = saveSelectionStorageAccount.TargetStorageAccountName;
                            }
                            treeNode.Checked = true;
                        }
                    }
                }

                foreach (SaveSelectionVirtualMachine saveSelectionVirtualMachine in saveSelection.VirtualMachines)
                {
                    foreach (TreeNode virtualMachineNode in treeView.Nodes.Find(saveSelectionVirtualMachine.VirtualMachine, true))
                    {
                        if (virtualMachineNode.Tag != null)
                        {
                            if (virtualMachineNode.Tag.GetType() == typeof(AsmVirtualMachine))
                            {
                                AsmVirtualMachine asmVirtualMachine = (AsmVirtualMachine)virtualMachineNode.Tag;

                                if (asmVirtualMachine.CloudServiceName == saveSelectionVirtualMachine.CloudService && asmVirtualMachine.RoleName == saveSelectionVirtualMachine.VirtualMachine)
                                {
                                    asmVirtualMachine.TargetVirtualNetwork = SeekVirtualNetwork(saveSelectionVirtualMachine.TargetVirtualNetwork, await sourceAzureRetreiver.GetAzureAsmVirtualNetworks(), await targetAzureRetreiver.GetAzureARMVirtualNetworks());
                                    asmVirtualMachine.TargetSubnet         = SeekSubnet(saveSelectionVirtualMachine.TargetSubnet, asmVirtualMachine.TargetVirtualNetwork);

                                    if (saveSelectionVirtualMachine.TargetDiskStorageAccounts.ContainsKey(asmVirtualMachine.OSVirtualHardDisk.DiskName))
                                    {
                                        asmVirtualMachine.OSVirtualHardDisk.TargetStorageAccount = SeekStorageAccount(saveSelectionVirtualMachine.TargetDiskStorageAccounts[asmVirtualMachine.OSVirtualHardDisk.DiskName].ToString(), await sourceAzureRetreiver.GetAzureAsmStorageAccounts(), await targetAzureRetreiver.GetAzureARMStorageAccounts());
                                    }

                                    foreach (AsmDisk asmDataDisk in asmVirtualMachine.DataDisks)
                                    {
                                        if (saveSelectionVirtualMachine.TargetDiskStorageAccounts.ContainsKey(asmDataDisk.DiskName))
                                        {
                                            asmDataDisk.TargetStorageAccount = SeekStorageAccount(saveSelectionVirtualMachine.TargetDiskStorageAccounts[asmDataDisk.DiskName].ToString(), await sourceAzureRetreiver.GetAzureAsmStorageAccounts(), await targetAzureRetreiver.GetAzureARMStorageAccounts());
                                        }
                                    }

                                    virtualMachineNode.Checked = true;
                                }
                            }
                        }
                    }
                }
            }
        }