Exemple #1
0
        private static VirtualMachineNetworkAdapter CreateAdapter(String adapterinfo)
        {
            VirtualMachineNetworkAdapter adapter = new VirtualMachineNetworkAdapter();

            try
            {
                adapter.vlan = defaultvlan;
                Array adapterarray = adapterinfo.Split(',');
                foreach (String adapterval in adapterarray)
                {
                    if (adapterval.Contains(":"))
                    {
                        adapter.MacAddress = adapterval.Split('=')[1];
                        adapter.MacAddress = adapter.MacAddress.Replace(":", "");
                        adapter.Name       = adapterinfo.Split('=')[0];
                    }
                    else if (adapterval.Contains("bridge"))
                    {
                        adapter.SwitchName = adapterval.Split('=')[1];
                    }
                    else if (adapterval.Contains("tag"))
                    {
                        adapter.vlan = Convert.ToInt32(adapterval.Split('=')[1]);
                    }
                }
            }
            catch
            {
                adapter = null;
            }
            return(adapter);
        }
Exemple #2
0
        public static VirtualMachineNetworkAdapter[] Get(String Content)
        {
            List <VirtualMachineNetworkAdapter> adapters = new List <VirtualMachineNetworkAdapter>();

            try
            {
                JsonObject jsonResponse = (JsonObject)SimpleJson.DeserializeObject(Content);
                JsonObject configvalue  = (JsonObject)SimpleJson.DeserializeObject(jsonResponse["data"].ToString());
                foreach (var key in configvalue.Keys)
                {
                    string val = configvalue[key].ToString();
                    if (key.Contains("net"))
                    {
                        VirtualMachineNetworkAdapter adapter = CreateAdapter(val);
                        adapter.Name = String.Format("{0} {1} VLAN {2}", key, adapter.Name, adapter.vlan);
                        adapters.Add(adapter);
                    }
                }
            }
            catch
            {
                adapters = null;
            }
            return(adapters.ToArray());
        }
Exemple #3
0
        public async Task Handle(VirtualMachineNetworkChangedEvent message)
        {
            var machine = await _stateStoreContext.Machines
                          .Include(x => x.VM)
                          .ThenInclude(vm => vm.NetworkAdapters)
                          .Include(x => x.Networks)
                          .FirstOrDefaultAsync(x => x.Id == message.MachineId);

            if (machine?.VM == null)
            {
                return;
            }

            var adapter = machine.VM.NetworkAdapters
                          .FirstOrDefault(a => a.Name == message.ChangedAdapter.AdapterName);

            if (adapter == null)
            {
                adapter = new VirtualMachineNetworkAdapter {
                    Name = message.ChangedAdapter.AdapterName, Vm = machine.VM
                };
                _stateStoreContext.Add(adapter);
            }

            adapter.SwitchName = message.ChangedAdapter.VirtualSwitchName;

            var network = machine.Networks.FirstOrDefault(x => x.AdapterName == message.ChangedNetwork.AdapterName);

            if (network == null)
            {
                network = new MachineNetwork {
                    AdapterName = message.ChangedNetwork.AdapterName
                };
                machine.Networks.Add(network);
            }

            network.DnsServerAddresses = message.ChangedNetwork.DnsServers;
            network.IpV4Addresses      = message.ChangedNetwork.IPAddresses.Select(IPAddress.Parse)
                                         .Where(n => n.AddressFamily == AddressFamily.InterNetwork)
                                         .Select(n => n.ToString()).ToArray();
            network.IpV6Addresses = message.ChangedNetwork.IPAddresses.Select(IPAddress.Parse)
                                    .Where(n => n.AddressFamily == AddressFamily.InterNetworkV6)
                                    .Select(n => n.ToString()).ToArray();
            network.IPv4DefaultGateway = message.ChangedNetwork.DefaultGateways.Select(IPAddress.Parse)
                                         .FirstOrDefault(n => n.AddressFamily == AddressFamily.InterNetwork)?.ToString();
            network.IPv6DefaultGateway = message.ChangedNetwork.DefaultGateways.Select(IPAddress.Parse)
                                         .FirstOrDefault(n => n.AddressFamily == AddressFamily.InterNetworkV6)?.ToString();
            network.IpV4Subnets = message.ChangedNetwork.IPAddresses.Select(IPNetwork.Parse)
                                  .Where(n => n.AddressFamily == AddressFamily.InterNetwork)
                                  .Select(n => n.ToString()).ToArray();

            network.IpV6Subnets = message.ChangedNetwork.IPAddresses.Select(IPNetwork.Parse)
                                  .Where(n => n.AddressFamily == AddressFamily.InterNetworkV6)
                                  .Select(n => n.ToString()).ToArray();
            await _stateStoreContext.SaveChangesAsync().ConfigureAwait(false);
        }