private async Task FindApiResourceAsync()

in src/Azure.Deployments.Extensibility.Extensions.Kubernetes/Api/K8sApiDiscovery.cs [32:56]


        private async Task<V1APIResource> FindApiResourceAsync(GroupVersionKind groupVersionKind, CancellationToken cancellationToken)
        {
            var (group, version, kind) = groupVersionKind;

            if (await this.TryFastFindApiResourceAsync(groupVersionKind, cancellationToken) is { } apiResource)
            {
                return apiResource;
            }

            var apiResourceList = await this.client.ListApiResourceAsync(group, version, cancellationToken);

            if (apiResourceList is null)
            {
                throw new ErrorResponseException("UnknownResourceType", $"Unknown API group version '{group}/{version}'.");
            }

            // Ensure not to include subresources (e.g. /status).
            apiResource = apiResourceList.Resources.SingleOrDefault(x => x.Kind.Equals(kind, StringComparison.Ordinal) && !x.Name.Contains('/')) ??
                throw new ErrorResponseException("UnknownResourceKind", $"Unknown resource kind '{kind}'.", JsonPointer.Create("type"));

            apiResource.Group = group;
            apiResource.Version = version;

            return apiResource;
        }