Class: Async::GRPC::XDS::Resources::Endpoint

Inherits:
Object
  • Object
show all
Defined in:
lib/async/grpc/xds/resources.rb

Overview

Represents a single endpoint Based on envoy.config.endpoint.v3.LbEndpoint

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(load_balancer_endpoint) ⇒ Endpoint

Returns a new instance of Endpoint.



219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/async/grpc/xds/resources.rb', line 219

def initialize(load_balancer_endpoint)
	if load_balancer_endpoint.is_a?(Hash)
		endpoint_data = load_balancer_endpoint[:endpoint] || {}
		address_data = endpoint_data[:address] || {}
		socket_address = address_data[:socket_address] || {}
		
		@address = socket_address[:address] || "localhost"
		@port = socket_address[:port_value] || 50051
		@health_status = parse_health_status(load_balancer_endpoint[:health_status])
		@metadata = load_balancer_endpoint[:metadata] || {}
	else
		socket_address = load_balancer_endpoint.endpoint.address.socket_address
		@address = socket_address.address
		@port = socket_address.port_value
		@health_status = parse_health_status(load_balancer_endpoint.health_status)
		@metadata = load_balancer_endpoint. || {}
	end
end

Instance Attribute Details

#addressObject (readonly)

Returns the value of attribute address.



217
218
219
# File 'lib/async/grpc/xds/resources.rb', line 217

def address
  @address
end

#health_statusObject (readonly)

Returns the value of attribute health_status.



217
218
219
# File 'lib/async/grpc/xds/resources.rb', line 217

def health_status
  @health_status
end

#metadataObject (readonly)

Returns the value of attribute metadata.



217
218
219
# File 'lib/async/grpc/xds/resources.rb', line 217

def 
  @metadata
end

#portObject (readonly)

Returns the value of attribute port.



217
218
219
# File 'lib/async/grpc/xds/resources.rb', line 217

def port
  @port
end

Instance Method Details

#healthy?Boolean

Returns:

  • (Boolean)


238
239
240
# File 'lib/async/grpc/xds/resources.rb', line 238

def healthy?
	@health_status == :HEALTHY || @health_status == :UNKNOWN
end

#uriObject



242
243
244
245
246
# File 'lib/async/grpc/xds/resources.rb', line 242

def uri
	# Use http for insecure/docker environments (gRPC h2c)
	scheme = ENV["XDS_ENDPOINT_SCHEME"] || "http"
	"#{scheme}://#{@address}:#{@port}"
end