discovery

package
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 28, 2025 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConsulDiscovery

type ConsulDiscovery struct {
	// contains filtered or unexported fields
}

ConsulDiscovery implements Consul-based service discovery

func NewConsulDiscovery

func NewConsulDiscovery(config ConsulDiscoveryConfig, logger forge.Logger) (*ConsulDiscovery, error)

NewConsulDiscovery creates a new Consul service discovery

func (*ConsulDiscovery) DiscoverPeers

func (cd *ConsulDiscovery) DiscoverPeers(ctx context.Context) ([]internal.NodeInfo, error)

DiscoverPeers discovers peer nodes

func (*ConsulDiscovery) GetNodeInfo

func (cd *ConsulDiscovery) GetNodeInfo(nodeID string) (*internal.NodeInfo, error)

GetNodeInfo returns information about a specific node

func (*ConsulDiscovery) Start

func (cd *ConsulDiscovery) Start(ctx context.Context) error

Start starts the discovery service

func (*ConsulDiscovery) Stop

func (cd *ConsulDiscovery) Stop(ctx context.Context) error

Stop stops the discovery service

func (*ConsulDiscovery) WatchPeers

func (cd *ConsulDiscovery) WatchPeers(ctx context.Context) (<-chan []internal.NodeInfo, error)

WatchPeers watches for peer changes

type ConsulDiscoveryConfig

type ConsulDiscoveryConfig struct {
	Address       string
	Datacenter    string
	Token         string
	ServiceName   string
	NodeID        string
	NodeAddress   string
	NodePort      int
	Tags          []string
	CheckInterval time.Duration
	CacheTTL      time.Duration
	HealthCheck   *api.AgentServiceCheck
}

ConsulDiscoveryConfig contains Consul discovery configuration

type DNSDiscovery

type DNSDiscovery struct {
	// contains filtered or unexported fields
}

DNSDiscovery implements DNS-based service discovery

func NewDNSDiscovery

func NewDNSDiscovery(config DNSDiscoveryConfig, logger forge.Logger) *DNSDiscovery

NewDNSDiscovery creates a new DNS-based discovery service

func (*DNSDiscovery) GetNodes

func (dd *DNSDiscovery) GetNodes(ctx context.Context) ([]internal.NodeInfo, error)

GetNodes returns all discovered nodes

func (*DNSDiscovery) Register

func (dd *DNSDiscovery) Register(ctx context.Context, node internal.NodeInfo) error

Register registers this node with the discovery service (no-op for DNS)

func (*DNSDiscovery) Start

func (dd *DNSDiscovery) Start(ctx context.Context) error

Start starts the DNS discovery service

func (*DNSDiscovery) Stop

func (dd *DNSDiscovery) Stop(ctx context.Context) error

Stop stops the DNS discovery service

func (*DNSDiscovery) Unregister

func (dd *DNSDiscovery) Unregister(ctx context.Context) error

Unregister unregisters this node from the discovery service (no-op for DNS)

func (*DNSDiscovery) Watch

func (dd *DNSDiscovery) Watch(ctx context.Context) (<-chan internal.NodeChangeEvent, error)

Watch watches for node changes

type DNSDiscoveryConfig

type DNSDiscoveryConfig struct {
	Domain          string
	Port            int
	RefreshInterval time.Duration
	DNSServers      []string
}

DNSDiscoveryConfig contains DNS discovery configuration

type EtcdDiscovery

type EtcdDiscovery struct {
	// contains filtered or unexported fields
}

EtcdDiscovery implements service discovery using etcd

func NewEtcdDiscovery

func NewEtcdDiscovery(config EtcdDiscoveryConfig, logger forge.Logger) (*EtcdDiscovery, error)

NewEtcdDiscovery creates a new etcd-based discovery service

func (*EtcdDiscovery) GetNodeInfo

func (ed *EtcdDiscovery) GetNodeInfo(nodeID string) (*internal.NodeInfo, error)

GetNodeInfo returns information about a specific node

func (*EtcdDiscovery) GetPeers

func (ed *EtcdDiscovery) GetPeers() ([]*internal.NodeInfo, error)

GetPeers returns the list of discovered peers

func (*EtcdDiscovery) Health

func (ed *EtcdDiscovery) Health() error

Health checks the health of the discovery service

func (*EtcdDiscovery) Start

func (ed *EtcdDiscovery) Start(ctx context.Context) error

Start starts the discovery service

func (*EtcdDiscovery) Stop

func (ed *EtcdDiscovery) Stop(ctx context.Context) error

Stop stops the discovery service

func (*EtcdDiscovery) UpdateNodeInfo

func (ed *EtcdDiscovery) UpdateNodeInfo(info *internal.NodeInfo) error

UpdateNodeInfo updates this node's information

func (*EtcdDiscovery) Watch

func (ed *EtcdDiscovery) Watch(ctx context.Context) (<-chan internal.DiscoveryEvent, error)

Watch watches for peer changes

type EtcdDiscoveryConfig

type EtcdDiscoveryConfig struct {
	NodeID    string
	Endpoints []string
	Prefix    string
	TTL       time.Duration
}

EtcdDiscoveryConfig contains etcd discovery configuration

type KubernetesDiscovery

type KubernetesDiscovery struct {
	// contains filtered or unexported fields
}

KubernetesDiscovery implements Kubernetes-based service discovery

func NewKubernetesDiscovery

func NewKubernetesDiscovery(config KubernetesDiscoveryConfig, logger forge.Logger) (*KubernetesDiscovery, error)

NewKubernetesDiscovery creates a new Kubernetes service discovery

func (*KubernetesDiscovery) DiscoverPeers

func (kd *KubernetesDiscovery) DiscoverPeers(ctx context.Context) ([]internal.NodeInfo, error)

DiscoverPeers discovers peer nodes from Kubernetes endpoints

func (*KubernetesDiscovery) GetNodeInfo

func (kd *KubernetesDiscovery) GetNodeInfo(nodeID string) (*internal.NodeInfo, error)

GetNodeInfo returns information about a specific node

func (*KubernetesDiscovery) Start

func (kd *KubernetesDiscovery) Start(ctx context.Context) error

Start starts the discovery service

func (*KubernetesDiscovery) Stop

func (kd *KubernetesDiscovery) Stop(ctx context.Context) error

Stop stops the discovery service

func (*KubernetesDiscovery) WatchPeers

func (kd *KubernetesDiscovery) WatchPeers(ctx context.Context) (<-chan []internal.NodeInfo, error)

WatchPeers watches for peer changes using Kubernetes watch API

type KubernetesDiscoveryConfig

type KubernetesDiscoveryConfig struct {
	Namespace     string
	ServiceName   string
	LabelSelector string
	Port          int
	Kubeconfig    string
	CheckInterval time.Duration
	CacheTTL      time.Duration
}

KubernetesDiscoveryConfig contains Kubernetes discovery configuration

type RegisteredNode

type RegisteredNode struct {
	Info         *internal.NodeInfo
	RegisteredAt time.Time
	LastSeen     time.Time
	Healthy      bool
	Metadata     map[string]interface{}
}

RegisteredNode represents a registered node

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

Registry manages node registration and discovery with centralized coordination

func NewRegistry

func NewRegistry(config RegistryConfig, logger forge.Logger) *Registry

NewRegistry creates a new registry

func (*Registry) Deregister

func (r *Registry) Deregister(nodeID string) error

Deregister removes a node from the registry

func (*Registry) GetAllNodes

func (r *Registry) GetAllNodes() map[string]*RegisteredNode

GetAllNodes returns all registered nodes including unhealthy

func (*Registry) GetHealthyNodes

func (r *Registry) GetHealthyNodes() []*internal.NodeInfo

GetHealthyNodes returns only healthy nodes

func (*Registry) GetNodeInfo

func (r *Registry) GetNodeInfo(nodeID string) (*internal.NodeInfo, error)

GetNodeInfo returns information about a node

func (*Registry) GetNodeMetadata

func (r *Registry) GetNodeMetadata(nodeID string, key string) (interface{}, error)

GetNodeMetadata gets metadata for a node

func (*Registry) GetPeers

func (r *Registry) GetPeers() ([]*internal.NodeInfo, error)

GetPeers returns all registered peers

func (*Registry) GetStatistics

func (r *Registry) GetStatistics() RegistryStatistics

GetStatistics returns registry statistics

func (*Registry) GetUnhealthyNodes

func (r *Registry) GetUnhealthyNodes() []*internal.NodeInfo

GetUnhealthyNodes returns unhealthy nodes

func (*Registry) Health

func (r *Registry) Health() error

Health checks registry health

func (*Registry) Heartbeat

func (r *Registry) Heartbeat(nodeID string) error

Heartbeat updates the last seen time for a node

func (*Registry) Register

func (r *Registry) Register(node *internal.NodeInfo) error

Register registers a node

func (*Registry) SetNodeMetadata

func (r *Registry) SetNodeMetadata(nodeID string, key string, value interface{}) error

SetNodeMetadata sets metadata for a node

func (*Registry) Start

func (r *Registry) Start(ctx context.Context) error

Start starts the registry

func (*Registry) Stop

func (r *Registry) Stop(ctx context.Context) error

Stop stops the registry

func (*Registry) UpdateNodeInfo

func (r *Registry) UpdateNodeInfo(info *internal.NodeInfo) error

UpdateNodeInfo updates node information

func (*Registry) Watch

func (r *Registry) Watch(ctx context.Context) (<-chan internal.DiscoveryEvent, error)

Watch watches for node changes

type RegistryConfig

type RegistryConfig struct {
	NodeID              string
	HealthCheckInterval time.Duration
	NodeTimeout         time.Duration
	EnableAutoCleanup   bool
}

RegistryConfig contains registry configuration

type RegistryStatistics

type RegistryStatistics struct {
	TotalNodes     int
	HealthyNodes   int
	UnhealthyNodes int
}

RegistryStatistics contains registry statistics

type StaticDiscovery

type StaticDiscovery struct {
	// contains filtered or unexported fields
}

StaticDiscovery implements static service discovery with a fixed peer list

func NewStaticDiscovery

func NewStaticDiscovery(config StaticDiscoveryConfig, logger forge.Logger) *StaticDiscovery

NewStaticDiscovery creates a new static discovery service

func (*StaticDiscovery) AddNode

func (sd *StaticDiscovery) AddNode(node internal.NodeInfo) error

AddNode dynamically adds a node (for testing/dynamic updates)

func (*StaticDiscovery) GetNodes

func (sd *StaticDiscovery) GetNodes(ctx context.Context) ([]internal.NodeInfo, error)

GetNodes returns all discovered nodes

func (*StaticDiscovery) Register

func (sd *StaticDiscovery) Register(ctx context.Context, node internal.NodeInfo) error

Register registers this node with the discovery service

func (*StaticDiscovery) RemoveNode

func (sd *StaticDiscovery) RemoveNode(nodeID string) error

RemoveNode dynamically removes a node (for testing/dynamic updates)

func (*StaticDiscovery) Start

func (sd *StaticDiscovery) Start(ctx context.Context) error

Start starts the discovery service

func (*StaticDiscovery) Stop

func (sd *StaticDiscovery) Stop(ctx context.Context) error

Stop stops the discovery service

func (*StaticDiscovery) Unregister

func (sd *StaticDiscovery) Unregister(ctx context.Context) error

Unregister unregisters this node from the discovery service

func (*StaticDiscovery) Watch

func (sd *StaticDiscovery) Watch(ctx context.Context) (<-chan internal.NodeChangeEvent, error)

Watch watches for node changes

type StaticDiscoveryConfig

type StaticDiscoveryConfig struct {
	Nodes []internal.NodeInfo
}

StaticDiscoveryConfig contains static discovery configuration

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL