Class: Envoy::Service::Discovery::V3::AggregatedDiscoveryService

Inherits:
Protocol::GRPC::Interface
  • Object
show all
Defined in:
lib/envoy/service/discovery/v3/aggregated_discovery_service.rb

Overview

Interface definition for AggregatedDiscoveryService Used with Async::GRPC::Client to make xDS calls

Examples:

Using with Async::GRPC::Client

require "envoy/service/discovery/v3/aggregated_discovery_service"
require "async/grpc/client"

endpoint = Async::HTTP::Endpoint.parse("https://xds-control-plane:18000")
http_client = Async::HTTP::Client.new(endpoint)
grpc_client = Async::GRPC::Client.new(http_client)

stub = grpc_client.stub(
  Envoy::Service::Discovery::V3::AggregatedDiscoveryService,
  "envoy.service.discovery.v3.AggregatedDiscoveryService"
)

# Bidirectional streaming RPC
stub.stream_aggregated_resources do |input, output|
  request = Envoy::Service::Discovery::V3::DiscoveryRequest.new(
    type_url: "type.googleapis.com/envoy.config.cluster.v3.Cluster",
    resource_names: ["my-cluster"]
  )
  output.write(request)

  input.each do |response|
    # Process DiscoveryResponse
  end
end