示例#1
0
        private static UpdateInventoryCommand VmsToInventory(ISeq <TypedPsObject <MinimizedVirtualMachineInfo> > vms)
        {
            var inventory = vms.Map(vm =>
            {
                var info = new MachineInfo
                {
                    MachineId       = vm.Value.Id,
                    Status          = InventoryConverter.MapVmInfoStatusToVmStatus(vm.Value.State),
                    Name            = vm.Value.Name,
                    NetworkAdapters = vm.Value.NetworkAdapters?.Map(a => new VirtualMachineNetworkAdapterInfo
                    {
                        AdapterName       = a.Name,
                        VirtualSwitchName = a.SwitchName
                    }).ToArray(),
                    Networks = GetNetworksByAdapters(vm.Value.Id, vm.Value.NetworkAdapters)
                };

                //info.IpV4Addresses = GetAddressesByFamily(vm, AddressFamily.InterNetwork);
                //info.IpV6Addresses = GetAddressesByFamily(vm, AddressFamily.InterNetworkV6);
                return(info);
            }).ToList();

            return(new UpdateInventoryCommand
            {
                AgentName = Environment.MachineName,
                Inventory = inventory
            });
        }
示例#2
0
 public static Task <Either <TL, Seq <TR> > > MapToEitherAsync <TL, TR, TEntry>(this ISeq <TEntry> sequence, Func <TEntry, Task <Either <TL, TR> > > mapperFunc)
 {
     return(sequence.Map(mapperFunc).ToImmutableArray()
            .Traverse(l => l)
            .Bind(e =>
     {
         var enumerable = e as Either <TL, TR>[] ?? e.ToArray();
         return enumerable.Lefts().HeadOrNone()
         .MatchAsync(
             Some: s => LeftAsync <TL, Seq <TR> >(s).ToEither(),
             None: () => RightAsync <TL, Seq <TR> >(enumerable.Rights().ToSeq()).ToEither());
     }));
 }