Class: Async::Service::Supervisor::Envoy::Endpoint
- Inherits:
-
Object
- Object
- Async::Service::Supervisor::Envoy::Endpoint
- Defined in:
- lib/async/service/supervisor/envoy/endpoint.rb
Overview
Represents one upstream endpoint published to Envoy EDS.
Instance Attribute Summary collapse
-
#addresses ⇒ Object
readonly
Returns the value of attribute addresses.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#protocols ⇒ Object
readonly
Returns the value of attribute protocols.
-
#scheme ⇒ Object
readonly
Returns the value of attribute scheme.
- #The grouped concrete addresses.(groupedconcreteaddresses.) ⇒ Object readonly
- #The supported upstream HTTP protocol names.(supportedupstreamHTTPprotocolnames.) ⇒ Object readonly
- #The upstream cluster name.(upstreamclustername.) ⇒ Object readonly
Class Method Summary collapse
-
.normalize_address(value) ⇒ Object
Normalize a concrete endpoint address.
-
.wrap(value) ⇒ Object
Wrap serialized endpoint state.
Instance Method Summary collapse
-
#initialize(name:, scheme:, protocols:, addresses:) ⇒ Endpoint
constructor
Initialize an endpoint.
- #The upstream application scheme.=(upstreamapplicationscheme. = (value)) ⇒ Object
Constructor Details
#initialize(name:, scheme:, protocols:, addresses:) ⇒ Endpoint
Initialize an endpoint.
46 47 48 49 50 51 52 53 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 46 def initialize(name:, scheme:, protocols:, addresses:) @name = name.to_s @scheme = scheme.to_sym @protocols = protocols.map(&:to_s).uniq.freeze raise ArgumentError, "An endpoint requires at least one protocol!" if @protocols.empty? @addresses = addresses.map{|value| self.class.normalize_address(value)}.freeze raise ArgumentError, "An endpoint requires at least one address!" if @addresses.empty? end |
Instance Attribute Details
#addresses ⇒ Object (readonly)
Returns the value of attribute addresses.
65 66 67 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 65 def addresses @addresses end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
56 57 58 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 56 def name @name end |
#protocols ⇒ Object (readonly)
Returns the value of attribute protocols.
62 63 64 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 62 def protocols @protocols end |
#scheme ⇒ Object (readonly)
Returns the value of attribute scheme.
59 60 61 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 59 def scheme @scheme end |
#The grouped concrete addresses.(groupedconcreteaddresses.) ⇒ Object (readonly)
65 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 65 attr :addresses |
#The supported upstream HTTP protocol names.(supportedupstreamHTTPprotocolnames.) ⇒ Object (readonly)
62 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 62 attr :protocols |
#The upstream cluster name.(upstreamclustername.) ⇒ Object (readonly)
56 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 56 attr :name |
Class Method Details
.normalize_address(value) ⇒ Object
Normalize a concrete endpoint address.
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 29 def self.normalize_address(value) if path = value[:path] raise ArgumentError, "A Unix endpoint cannot specify an IP address or port!" if value[:address] || value[:port] {path: path.to_s}.freeze elsif value[:address] && value[:port] {address: value[:address].to_s, port: Integer(value[:port])}.freeze else raise ArgumentError, "An endpoint address requires either path, or address and port: #{value.inspect}" end end |
.wrap(value) ⇒ Object
Wrap serialized endpoint state.
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 15 def self.wrap(value) case value when self value when Hash new(**value) else raise ArgumentError, "Invalid Envoy endpoint: #{value.inspect}" end end |
Instance Method Details
#The upstream application scheme.=(upstreamapplicationscheme. = (value)) ⇒ Object
59 |
# File 'lib/async/service/supervisor/envoy/endpoint.rb', line 59 attr :scheme |