internal void GetVirtualNetworkConfiguration()
        {
            if (_virtualNetworkManagementClient != null)
            {
                _networkConfig = _virtualNetworkManagementClient.Networks.GetConfiguration();

                Console.Write(_networkConfig.Configuration);
            }
        }
        internal async Task GetVirtualNetworkConfigurationAsync()
        {
            if (_virtualNetworkManagementClient != null)
            {
                _networkConfig = await _virtualNetworkManagementClient.Networks.GetConfigurationAsync();

                Console.Write(_networkConfig.Configuration);
            }
        }
        internal async Task AddVirtualNetworkSiteAsync()
        {
            if (_virtualNetworkManagementClient != null && _managementClient != null)
            {
                try
                {
                    // Get the existing netwirking configuration
                    if (_networkConfig == null)
                    {
                        _networkConfig = await _virtualNetworkManagementClient.Networks.GetConfigurationAsync();
                    }

                    // create affinity group
                    await CreateAffinityGroupAsync();

                    // use the new affinity group for the virtual network 
                    string newVirtualNetworkElement = string.Format(_parameters.VirtualNetworkSite, _parameters.AffinityGroupName);

                    // add the new virtual network element to the existing network configuration under VirtualNetworkSites
                    string newNetworkConfig = AddXmlElement(_networkConfig.Configuration, "VirtualNetworkSites", newVirtualNetworkElement);

                    await _virtualNetworkManagementClient.Networks.SetConfigurationAsync(
                        new NetworkSetConfigurationParameters()
                        {
                            Configuration = newNetworkConfig
                        });
                }
                catch (Exception e)
                {
                    Console.WriteLine("\n Error: \n {0}", e.ToString());
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// Exports Vnetconfig data from Source Subscription. Serializes the exported configurations into NetworkConfiguration class
        /// </summary>
        /// <param name="configuration">The network configuration for subscription</param>
        /// <param name="affinityGroupNames">List of affinity group</param>
        /// <returns>Network configurations </returns>
        private NetworkConfiguration ExportVNetConfiguration(NetworkGetConfigurationResponse configuration, List<string> affinityGroupNames)
        {
            string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
            Logger.Info(methodName, ProgressResources.ExportVNetConfigurationStarted, ResourceType.VirtualNetwork.ToString());
            try
            {
                if (configuration == null)
                {
                    return null;
                }
                
                var reader = new StringReader(configuration.Configuration);
                var serializer = new XmlSerializer(typeof(NetworkConfiguration));
                NetworkConfiguration netConfiguration = (NetworkConfiguration)serializer.Deserialize(reader);

                ////Check condition for any virtual network is available or not
                ////Issue Work item:3865
                if (netConfiguration.VirtualNetworkConfiguration.VirtualNetworkSites == null)
                {
                    return null;
                }

                if (netConfiguration.VirtualNetworkConfiguration != null  && netConfiguration.VirtualNetworkConfiguration.VirtualNetworkSites != null)
                {
                    // Filter the virtaul networks - Find the networks for which we have considered affinity groups
                    var requiredVirtualNetworkSites =                        
                        (netConfiguration.VirtualNetworkConfiguration.VirtualNetworkSites.
                        Where(vn => affinityGroupNames.Contains(vn.AffinityGroup) ||
                            string.Compare(vn.Location, exportParameters.SourceDCName, StringComparison.CurrentCultureIgnoreCase) == 0)).ToArray();

                    List<string> dnsNames = new List<string>();
                    List<string> localNetNames = new List<string>();
                    foreach (var vns in requiredVirtualNetworkSites)
                    {
                        if (vns.DnsServersRef != null)
                        {
                            dnsNames.AddRange(vns.DnsServersRef.Select(dns => dns.name).ToList());
                        }

                        if (vns.Gateway != null && vns.Gateway.ConnectionsToLocalNetwork != null && vns.Gateway.ConnectionsToLocalNetwork.LocalNetworkSiteRef != null)
                        {
                            localNetNames.Add(vns.Gateway.ConnectionsToLocalNetwork.LocalNetworkSiteRef.name);
                        }
                    }

                    if (netConfiguration.VirtualNetworkConfiguration.Dns != null &&
                        netConfiguration.VirtualNetworkConfiguration.Dns.DnsServers != null)
                    {
                        ////Remove DnsServers which are not related to required virtual networks
                        netConfiguration.VirtualNetworkConfiguration.Dns.DnsServers =
                            netConfiguration.VirtualNetworkConfiguration.Dns.DnsServers.Where(dns => dnsNames.Distinct().Contains(dns.name)).ToArray();
                    }

                    if (netConfiguration.VirtualNetworkConfiguration.LocalNetworkSites != null)
                    {
                        ////Remove LocalNetworks which are not related to required virtual networks
                        netConfiguration.VirtualNetworkConfiguration.LocalNetworkSites =
                            netConfiguration.VirtualNetworkConfiguration.LocalNetworkSites.Where(lns => localNetNames.Distinct().Contains(lns.name)).ToArray();
                    }
                    ////Set VirtualNetworkSites
                    netConfiguration.VirtualNetworkConfiguration.VirtualNetworkSites = requiredVirtualNetworkSites;

                    Logger.Info(methodName, ProgressResources.ExportVNetConfigurationCompleted, ResourceType.VirtualNetwork.ToString());
                }

                return netConfiguration;
            }
            catch (Exception ex)
            {
                Logger.Error(methodName, ex, ResourceType.VirtualNetwork.ToString());
                throw;
            }
        }