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

Class Method Details

.availableArray<Symbol>

Returns All registered network backend names.

Returns:

  • (Array<Symbol>)

    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.

Parameters:

  • network (Symbol)

    Network backend name

  • compute (Symbol)

    Compute backend name

Returns:

  • (Boolean)


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.

Parameters:

  • name (Symbol)

    Backend name or alias

Returns:

  • (Module)

    The network backend module

Raises:

  • (ArgumentError)

    If the backend is unknown



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