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); }
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()); }
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); }