internal async Task <IEnumerable <ILogDataObject> > ListInResourceGroupAsync(string resourceGroup, CancellationToken cancellationToken)
        {
            var    runtime = new FunctionRuntimePackage(logger);
            string rgName  = naming.GetResourceGroupName(resourceGroup);
            var    apps    = await azure.AppServices.FunctionApps.ListByResourceGroupAsync(rgName, cancellationToken : cancellationToken);

            if (apps is null)
            {
                throw new InvalidOperationException("Azure API FunctionApps.ListByResourceGroupAsync failed");
            }

            var result = new List <InstanceOutputData>();

            foreach (var app in apps)
            {
                cancellationToken.ThrowIfCancellationRequested();
                var name           = naming.FromFunctionAppName(app.Name, resourceGroup);
                var runtimeVersion = await runtime.GetDeployedRuntimeVersion(name, azure, cancellationToken);

                if (runtimeVersion is null)
                {
                    throw new InvalidOperationException("Could not retrieve deployed Runtime version");
                }
                result.Add(new InstanceOutputData(
                               name.PlainName,
                               app.Region.Name,
                               runtimeVersion)
                           );
            }
            return(result);
        }
        public async Task <IEnumerable <ILogDataObject> > ListByLocationAsync(string location, CancellationToken cancellationToken)
        {
            var runtime = new FunctionRuntimePackage(logger);
            var rgs     = await azure.ResourceGroups.ListAsync(cancellationToken : cancellationToken);

            if (rgs is null)
            {
                throw new InvalidOperationException("Azure API ResourceGroups.ListAsync failed");
            }
            var filter = rgs.Where(
                rg => naming.ResourceGroupMatches(rg) &&
                string.Compare(rg.RegionName, location, StringComparison.Ordinal) == 0);
            var result = new List <InstanceOutputData>();

            foreach (var rg in filter)
            {
                var name           = naming.FromResourceGroupName(rg.Name);
                var runtimeVersion = await runtime.GetDeployedRuntimeVersion(name, azure, cancellationToken);

                if (runtimeVersion is null)
                {
                    throw new InvalidOperationException("Could not retrieve deployed Runtime version");
                }
                result.Add(new InstanceOutputData(
                               name.PlainName,
                               rg.RegionName,
                               runtimeVersion)
                           );
            }
            return(result);
        }
        internal async Task <IEnumerable <ILogDataObject> > ListInResourceGroupAsync(string resourceGroup, CancellationToken cancellationToken)
        {
            var runtime = new FunctionRuntimePackage(logger);
            var apps    = await azure.AppServices.FunctionApps.ListByResourceGroupAsync(resourceGroup, cancellationToken : cancellationToken);

            var result = new List <InstanceOutputData>();

            foreach (var app in apps)
            {
                cancellationToken.ThrowIfCancellationRequested();
                var name = InstanceName.FromFunctionAppName(app.Name, resourceGroup);
                result.Add(new InstanceOutputData(
                               name.PlainName,
                               app.Region.Name,
                               await runtime.GetDeployedRuntimeVersion(name, azure, cancellationToken))
                           );
            }
            return(result);
        }
        public async Task <IEnumerable <ILogDataObject> > ListAllAsync(CancellationToken cancellationToken)
        {
            var runtime = new FunctionRuntimePackage(logger);
            var rgs     = await azure.ResourceGroups.ListAsync(cancellationToken : cancellationToken);

            var filter = rgs
                         .Where(rg => rg.Name.StartsWith(InstanceName.ResourceGroupInstancePrefix));
            var result = new List <InstanceOutputData>();

            foreach (var rg in filter)
            {
                var name = InstanceName.FromResourceGroupName(rg.Name);
                result.Add(new InstanceOutputData(
                               name.PlainName,
                               rg.RegionName,
                               await runtime.GetDeployedRuntimeVersion(name, azure, cancellationToken))
                           );
            }
            return(result);
        }