/// <summary>
        /// Get the devices in all networks in all organizations the current API key can access.
        /// </summary>
        /// <param name="merakiDashboardClient">
        /// The <see cref="MerakiDashboardClient"/> to access the device swith.
        /// </param>
        /// <returns>
        /// The <see cref="Device"/>s discovered.
        /// </returns>
        private async Task <IEnumerable <Device> > GetDevicesInAnOrganization(MerakiDashboardClient merakiDashboardClient)
        {
            List <Device> result = new List <Device>();

            foreach (Organization organization in await merakiDashboardClient.GetOrganizationsAsync())
            {
                foreach (Network network in await merakiDashboardClient.GetOrganizationNetworksAsync(organization))
                {
                    foreach (Device device in await merakiDashboardClient.GetNetworkDevicesAsync(network))
                    {
                        result.Add(device);
                    }
                }
            }
            return(result);
        }
Beispiel #2
0
        public async Task Run(string apiKey)
        {
            if (string.IsNullOrWhiteSpace(apiKey))
            {
                throw new ArgumentException("Cannot be null, empty or whitespace", nameof(apiKey));
            }

            using (MerakiDashboardClient merakiDashboardClient =
                       MerakiDashboardClientFactory.Create(mcs => mcs.ApiKey = apiKey))
            {
                System.Console.WriteLine("By organization by network:");
                foreach (Organization organization in await merakiDashboardClient.GetOrganizationsAsync())
                {
                    System.Console.WriteLine($"{organization.Name} ({organization.Id}):");
                    foreach (Network network in await merakiDashboardClient.GetOrganizationNetworksAsync(organization))
                    {
                        System.Console.WriteLine($"  {network.Name} ({network.Id}):");
                        foreach (Device device in await merakiDashboardClient.GetNetworkDevicesAsync(network))
                        {
                            System.Console.WriteLine($"    {device.Serial} ({device.Model}, {device.Mac})");
                        }
                    }
                }

                System.Console.WriteLine();
                System.Console.WriteLine("By organization inventory:");
                foreach (Organization organization in await merakiDashboardClient.GetOrganizationsAsync())
                {
                    System.Console.WriteLine($"{organization.Name} ({organization.Id}):");
                    foreach (InventoryEntry inventory in await merakiDashboardClient.GetOrganizationInventoryAsync(
                                 organization))
                    {
                        System.Console.WriteLine(
                            $"    {inventory.Serial} ({inventory.Model}) claimed at {inventory.ClaimedAt}");
                    }
                }
            }
        }
Beispiel #3
0
 /// <summary>
 /// Get the <see cref="Device"/> for the given serial number.
 /// </summary>
 /// <param name="merakiDashboardClient"></param>
 /// <param name="organizationId"></param>
 /// <param name="serial"></param>
 /// <returns>
 /// The <see cref="Device"/> or null, if no device exists.
 /// </returns>
 private Device GetDevice(MerakiDashboardClient merakiDashboardClient, string organizationId, string serial)
 {
     return(merakiDashboardClient.GetOrganizationNetworksAsync(organizationId).Result
            .SelectMany(n => merakiDashboardClient.GetNetworkDevicesAsync(n.Id).Result)
            .FirstOrDefault(d => serial.Equals(d.Serial, StringComparison.OrdinalIgnoreCase)));
 }