Module: Pangea::Kubernetes::NetworkBackendRegistry
- Defined in:
- lib/pangea/kubernetes/network_backend_registry.rb
Overview
Lazy-loading registry for network backends. Mirrors BackendRegistry pattern for compute backends.
Constant Summary collapse
- NETWORK_MAP =
{ vpc_cni: 'pangea/kubernetes/network_backends/vpc_cni', cilium: 'pangea/kubernetes/network_backends/cilium', }.freeze
- ALIASES =
{ aws_cni: :vpc_cni, eni: :vpc_cni, ebpf: :cilium, }.freeze
- CLASS_MAP =
{ vpc_cni: 'Pangea::Kubernetes::NetworkBackends::VpcCni', cilium: 'Pangea::Kubernetes::NetworkBackends::Cilium', }.freeze
Class Method Summary collapse
-
.available ⇒ Array<Symbol>
All registered network backend names.
-
.compatible?(network, compute) ⇒ Boolean
Check if a network backend is compatible with a compute backend.
-
.resolve(name) ⇒ Module
Resolve a network backend by name.
Class Method Details
.available ⇒ Array<Symbol>
Returns All registered network backend names.
49 50 51 |
# File 'lib/pangea/kubernetes/network_backend_registry.rb', line 49 def self.available NETWORK_MAP.keys end |
.compatible?(network, compute) ⇒ Boolean
Check if a network backend is compatible with a compute backend.
43 44 45 46 |
# File 'lib/pangea/kubernetes/network_backend_registry.rb', line 43 def self.compatible?(network, compute) backend = resolve(network) backend.compatible_backends.include?(compute) end |
.resolve(name) ⇒ Module
Resolve a network backend by name.
29 30 31 32 33 34 35 36 |
# File 'lib/pangea/kubernetes/network_backend_registry.rb', line 29 def self.resolve(name) name = ALIASES.fetch(name, name) path = NETWORK_MAP.fetch(name) do raise ArgumentError, "Unknown network backend: #{name}. Available: #{NETWORK_MAP.keys.join(', ')}" end require path Object.const_get(CLASS_MAP.fetch(name)) end |