nodeutils

package
v2.2.1 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2026 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultPort is the default port for the node-utils HTTP server.
	DefaultPort = 8000

	// DefaultHost is the default host for the node-utils HTTP server.
	DefaultHost = "0.0.0.0"

	// DefaultDataPath is the default path to the node's data directory.
	DefaultDataPath = "/home/app/data"

	// DefaultUpgradesConfig is the default path to the upgrades configuration file.
	DefaultUpgradesConfig = "/config/upgrades.json"

	// DefaultTraceStore is the default path to the trace store FIFO.
	DefaultTraceStore = "/trace/trace.fifo"
)

Variables

This section is empty.

Functions

func StateSyncChunkMetricsExist

func StateSyncChunkMetricsExist(ctx context.Context, metricsURL string) (bool, error)

Types

type Client

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

Client provides methods to interact with the node-utils HTTP server.

func NewClient

func NewClient(host string) *Client

NewClient creates a new node-utils client for the given host. The host should be a hostname or IP address without scheme or port.

func (*Client) GetCPUStats

func (c *Client) GetCPUStats(ctx context.Context, since time.Duration) (float64, error)

GetCPUStats returns the CPU usage percentage. If since is greater than 0, it returns the average over that duration.

func (*Client) GetDataSize

func (c *Client) GetDataSize(ctx context.Context) (int64, error)

GetDataSize returns the current size of the node's data directory in bytes.

func (*Client) GetLatestHeight

func (c *Client) GetLatestHeight(ctx context.Context) (int64, error)

GetLatestHeight returns the latest block height from the blockchain node.

func (*Client) GetMemoryStats

func (c *Client) GetMemoryStats(ctx context.Context, since time.Duration) (uint64, error)

GetMemoryStats returns the memory usage in bytes. If since is greater than 0, it returns the average over that duration.

func (*Client) IsStateSyncing

func (c *Client) IsStateSyncing(ctx context.Context) (bool, error)

IsStateSyncing returns true if the node is currently performing state-sync.

func (*Client) ListSnapshots

func (c *Client) ListSnapshots(ctx context.Context) ([]int64, error)

ListSnapshots returns a list of available snapshot heights.

func (*Client) RequiresUpgrade

func (c *Client) RequiresUpgrade(ctx context.Context) (bool, error)

RequiresUpgrade checks if the node requires an upgrade. Returns true if an upgrade is required, false otherwise.

func (*Client) ShutdownNodeUtilsServer

func (c *Client) ShutdownNodeUtilsServer(ctx context.Context) error

ShutdownNodeUtilsServer sends a shutdown signal to the node-utils server.

type MockStats added in v2.2.0

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

MockStats holds the mock CPU and memory values.

func NewMockStats added in v2.2.0

func NewMockStats() *MockStats

NewMockStats creates a new MockStats with default values. Default memory is 300Mi - chosen to be in the "safe zone" (40-80% usage) for typical test initial values, avoiding immediate VPA triggers.

func (*MockStats) GetCPU added in v2.2.0

func (m *MockStats) GetCPU() float64

GetCPU returns the mock CPU usage in cores.

func (*MockStats) GetMemory added in v2.2.0

func (m *MockStats) GetMemory() uint64

GetMemory returns the mock memory usage in bytes.

func (*MockStats) SetCPU added in v2.2.0

func (m *MockStats) SetCPU(cores float64)

SetCPU sets the mock CPU usage in cores.

func (*MockStats) SetCPUMillicores added in v2.2.0

func (m *MockStats) SetCPUMillicores(millicores int64)

SetCPUMillicores sets the mock CPU usage in millicores.

func (*MockStats) SetMemory added in v2.2.0

func (m *MockStats) SetMemory(bytes uint64)

SetMemory sets the mock memory usage in bytes.

func (*MockStats) SetMemoryGiB added in v2.2.0

func (m *MockStats) SetMemoryGiB(gib float64)

SetMemoryGiB sets the mock memory usage in GiB.

func (*MockStats) SetMemoryMiB added in v2.2.0

func (m *MockStats) SetMemoryMiB(mib int64)

SetMemoryMiB sets the mock memory usage in MiB.

type NodeUtils

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

func New

func New(nodeBinaryName string, opts ...Option) (*NodeUtils, error)

func (*NodeUtils) Start

func (s *NodeUtils) Start() error

func (*NodeUtils) Stop

func (s *NodeUtils) Stop(force bool) error

func (*NodeUtils) StopNode

func (s *NodeUtils) StopNode() error

type Option

type Option func(*Options)

func CreateFifo

func CreateFifo(create bool) Option

func WithBlockThreshold

func WithBlockThreshold(n time.Duration) Option

func WithDataPath

func WithDataPath(path string) Option

func WithHaltHeight

func WithHaltHeight(height int64) Option

func WithHost

func WithHost(s string) Option

func WithMockMode added in v2.2.0

func WithMockMode(enable bool) Option

func WithPort

func WithPort(v int) Option

func WithTmkmsProxy

func WithTmkmsProxy(enable bool) Option

func WithTraceStore

func WithTraceStore(path string) Option

func WithUpgradesConfig

func WithUpgradesConfig(path string) Option

type Options

type Options struct {
	Host           string
	Port           int
	DataPath       string
	BlockThreshold time.Duration
	UpgradesConfig string
	TraceStore     string
	CreateFifo     bool
	TmkmsProxy     bool
	HaltHeight     int64
	MockMode       bool
}

type ProcessStats

type ProcessStats struct {
	CPUTimeSec float64 `json:"cpu_time_sec"`     // total CPU time in seconds
	MemoryRSS  uint64  `json:"memory_rss_bytes"` // resident memory usage
}

func GetProcessStats

func GetProcessStats(proc *process.Process) (*ProcessStats, error)

GetProcessStats extracts CPU + memory usage from a gopsutil Process

type StatsClient added in v2.2.0

type StatsClient interface {
	GetCPUStats(ctx context.Context, since time.Duration) (float64, error)
	GetMemoryStats(ctx context.Context, since time.Duration) (uint64, error)
}

StatsClient defines the interface for getting node resource stats. This interface is primarily used for VPA (Vertical Pod Autoscaler) functionality and can be mocked in tests.

type Upgrade

type Upgrade struct {
	Height int64         `json:"height"`
	Status string        `json:"status"`
	Image  string        `json:"image"`
	Source UpgradeSource `json:"source"`
}

type UpgradeChecker

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

func NewUpgradeChecker

func NewUpgradeChecker(configFile string) (*UpgradeChecker, error)

func (*UpgradeChecker) GetUpgrade

func (u *UpgradeChecker) GetUpgrade(height int64) (*Upgrade, error)

func (*UpgradeChecker) ShouldUpgrade

func (u *UpgradeChecker) ShouldUpgrade(height int64) bool

func (*UpgradeChecker) WatchConfigFile

func (u *UpgradeChecker) WatchConfigFile() error

type UpgradeSource

type UpgradeSource string
const (
	UpgradeScheduled = "scheduled"

	ManualUpgrade  UpgradeSource = "manual"
	OnChainUpgrade UpgradeSource = "on-chain"
)

type UpgradesConfig

type UpgradesConfig struct {
	Upgrades []Upgrade `json:"upgrades"`
}

Jump to

Keyboard shortcuts

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