runtime

package
v3.0.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Jan 26, 2022 License: Apache-2.0 Imports: 25 Imported by: 1

README

HAProxy runtime client

usage

package main

import (
	"log"

	"github.com/haproxytech/client-native/v3/runtime"
)

func main() {
	client := runtime.SingleRuntime{}
	err := client.Init("/var/run/haproxy-runtime-api.sock", 1, 0)
	if err != nil {
		log.Println(err)
	}

	statsCollection := client.GetStats()
	if statsCollection.Error != "" {
		log.Println(err)
	}
	log.Println(statsCollection.Stats)

	processInfo := client.GetInfo()
	if processInfo.Error != "" {
		log.Println(err)
	}
	log.Println(processInfo.Info)

	env, err := client.ExecuteRaw("show env")
	if err != nil {
		log.Println(err)
	}
	log.Println(env)
}

Documentation

Index

Constants

View Source
const (
	// DefaultSocketPath sane default for runtime API socket path
	DefaultSocketPath string = "/var/run/haproxy.sock"
)

Variables

This section is empty.

Functions

func CreateMap

func CreateMap(name string, file io.Reader) (*models.Map, error)

CreateMap creates a new map file with its entries. Returns an error if file already exists

func ParseACLFileEntries

func ParseACLFileEntries(output string, hasID bool) (models.ACLFilesEntries, error)

ParseACLFileEntries parses array of entries in one Acl file One line sample entry: ID Value 0x560f3f9e8600 10.178.160.0

func ParseMapEntries

func ParseMapEntries(output string, hasID bool) models.MapEntries

ParseMapEntries parses array of entries in one map file One line sample entry: ID Key Value 0x55d155c6fbf0 static.example.com be_static

func ServerHealthValid

func ServerHealthValid(health string) bool

ServerHealthValid checks if server health is valid

func ServerStateValid

func ServerStateValid(state string) bool

ServerStateValid checks if server state is valid

func ServerWeightValid

func ServerWeightValid(weight string) bool

ServerWeightValid checks if server state is valid

Types

type Client

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

Client handles multiple HAProxy clients

func DefaultClient

func DefaultClient() (*Client, error)

DefaultClient return runtime Client with sane defaults

func (*Client) AddACLAtomic

func (c *Client) AddACLAtomic(aclID string, entries models.ACLFilesEntries) error

AddACLAtomic adds multiple entries to the ACL file atomically (using `prepare`, `add` and `commit` commands) if HAProxy version is 2.4 or higher.

func (*Client) AddACLFileEntry

func (c *Client) AddACLFileEntry(id, value string) error

AddACLFileEntry adds the value for the specified ACL file entry based on its ID

func (*Client) AddACLVersioned

func (c *Client) AddACLVersioned(version, aclID, value string) error

func (*Client) AddMapEntry

func (c *Client) AddMapEntry(name, key, value string) error

AddMapEntry adds an entry into the map file

func (*Client) AddMapEntryVersioned

func (c *Client) AddMapEntryVersioned(version, name, key, value string) error

AddMapEntry adds an entry into the map file

func (*Client) AddMapPayload

func (c *Client) AddMapPayload(name, payload string) error

AddMapPayload adds multiple entries to the map file

func (*Client) AddMapPayloadVersioned

func (c *Client) AddMapPayloadVersioned(name string, entries models.MapEntries) error

AddMapPayloadVersioned adds multiple entries to the map file atomically (using `prepare`, `add` and `commit` commands) if HAProxy version is 2.4 or higher. Otherwise performs `add map payload` command

func (*Client) ClearMap

func (c *Client) ClearMap(name string, forceDelete bool) error

ClearMap removes all map entries from the map file. If forceDelete is true, deletes file from disk

func (*Client) ClearMapVersioned

func (c *Client) ClearMapVersioned(name, version string, forceDelete bool) error

ClearMapVersioned removes all map entries from the map file. If forceDelete is true, deletes file from disk

func (*Client) CommitACL

func (c *Client) CommitACL(version, name string) error

func (*Client) CommitMap

func (c *Client) CommitMap(version, name string) error

func (*Client) CreateMap

func (c *Client) CreateMap(file io.Reader, header multipart.FileHeader) (*models.Map, error)

CreateMap creates a new map file with its entries

func (*Client) DeleteACLFileEntry

func (c *Client) DeleteACLFileEntry(id, value string) error

DeleteACLFileEntry deletes the value for the specified ACL file entry based on its ID

func (*Client) DeleteMapEntry

func (c *Client) DeleteMapEntry(name, id string) error

DeleteMapEntry deletes all the map entries from the map by its id

func (*Client) DisableAgentCheck

func (c *Client) DisableAgentCheck(backend, server string) error

DisableAgentCheck disable agent check for server

func (*Client) DisableServer

func (c *Client) DisableServer(backend, server string) error

DisableServer marks server as DOWN for maintenance

func (*Client) EnableAgentCheck

func (c *Client) EnableAgentCheck(backend, server string) error

EnableAgentCheck enable agent check for server

func (*Client) EnableServer

func (c *Client) EnableServer(backend, server string) error

EnableServer marks server as UP

func (*Client) ExecuteRaw

func (c *Client) ExecuteRaw(command string) ([]string, error)

ExecuteRaw does not process response, just returns its values for all processes

func (*Client) GetACLFile

func (c *Client) GetACLFile(id string) (files *models.ACLFile, err error)

GetACLFile returns a the ACL file by its ID

func (*Client) GetACLFileEntry

func (c *Client) GetACLFileEntry(id, value string) (fileEntry *models.ACLFileEntry, err error)

GetACLFileEntry returns the specified file entry based on value and ACL file ID

func (*Client) GetACLFiles

func (c *Client) GetACLFiles() (files models.ACLFiles, err error)

GetACLFiles returns all the ACL files

func (*Client) GetACLFilesEntries

func (c *Client) GetACLFilesEntries(id string) (files models.ACLFilesEntries, err error)

GetACLFilesEntries returns all the files entries for the ACL file ID

func (*Client) GetInfo

func (c *Client) GetInfo() (models.ProcessInfos, error)

GetInfo returns info from the socket

func (*Client) GetMap

func (c *Client) GetMap(name string) (*models.Map, error)

GetMap returns one structured runtime map file

func (*Client) GetMapEntry

func (c *Client) GetMapEntry(name, id string) (*models.MapEntry, error)

GetMapEntry returns one map runtime setting

func (*Client) GetMapsPath

func (c *Client) GetMapsPath(name string) (string, error)

GetMapsPath returns runtime map file path or map id

func (*Client) GetServerState

func (c *Client) GetServerState(backend, server string) (*models.RuntimeServer, error)

GetServerState returns server runtime state

func (*Client) GetServersState

func (c *Client) GetServersState(backend string) (models.RuntimeServers, error)

GetServerState returns server runtime state

func (*Client) GetStats

func (c *Client) GetStats() models.NativeStats

GetStats returns stats from the socket

func (*Client) GetTableEntries

func (c *Client) GetTableEntries(name string, process int, filter []string, key string) (models.StickTableEntries, error)

GetTableEntries returns all entries for specified table in the given process with filters and a key

func (*Client) GetVersion

func (c *Client) GetVersion() (*HAProxyVersion, error)

GetVersion returns info from the socket

func (*Client) Init deprecated

func (c *Client) Init(socketPath []string, masterSocketPath string, nbproc int) error

Init must be given path to runtime socket and nbproc that is not 0 when in master worker mode

Deprecated: use InitWithSockets or InitWithMasterSocket instead

func (*Client) InitWithMasterSocket

func (c *Client) InitWithMasterSocket(masterSocketPath string, nbproc int) error

func (*Client) InitWithMasterSocketAndContext

func (c *Client) InitWithMasterSocketAndContext(ctx context.Context, masterSocketPath string, nbproc int) error

func (*Client) InitWithSockets

func (c *Client) InitWithSockets(socketPath map[int]string) error

func (*Client) InitWithSocketsAndContext

func (c *Client) InitWithSocketsAndContext(ctx context.Context, socketPath map[int]string) error

func (*Client) IsVersionBiggerOrEqual

func (c *Client) IsVersionBiggerOrEqual(minimumVersion HAProxyVersion) bool

func (*Client) ParseMapEntries

func (c *Client) ParseMapEntries(output string) models.MapEntries

func (*Client) ParseMapEntriesFromFile

func (c *Client) ParseMapEntriesFromFile(inputFile io.Reader, hasID bool) models.MapEntries

ParseMapEntriesFromFile reads entries from file

func (*Client) PrepareACL

func (c *Client) PrepareACL(name string) (version string, err error)

func (*Client) PrepareMap

func (c *Client) PrepareMap(name string) (version string, err error)

func (*Client) SetFrontendMaxConn

func (c *Client) SetFrontendMaxConn(frontend string, maxconn int) error

SetFrontendMaxConn set maxconn for frontend

func (*Client) SetMapEntry

func (c *Client) SetMapEntry(name, id, value string) error

SetMapEntry replace the value corresponding to each id in a map

func (*Client) SetServerAddr

func (c *Client) SetServerAddr(backend, server string, ip string, port int) error

SetServerAddr set ip [port] for server

func (*Client) SetServerAgentAddr

func (c *Client) SetServerAgentAddr(backend, server string, addr string) error

SetServerAgentAddr set agent-addr for server

func (*Client) SetServerAgentSend

func (c *Client) SetServerAgentSend(backend, server string, send string) error

SetServerAgentSend set agent-send for server

func (*Client) SetServerCheckPort

func (c *Client) SetServerCheckPort(backend, server string, port int) error

SetServerCheckPort set health check port for server

func (*Client) SetServerHealth

func (c *Client) SetServerHealth(backend, server string, health string) error

SetServerHealth set health for server

func (*Client) SetServerState

func (c *Client) SetServerState(backend, server string, state string) error

SetServerState set state for server

func (*Client) SetServerWeight

func (c *Client) SetServerWeight(backend, server string, weight string) error

SetServerWeight set weight for server

func (*Client) ShowMapEntries

func (c *Client) ShowMapEntries(name string) (models.MapEntries, error)

ShowMapEntries list all map entries by map file name

func (*Client) ShowMapEntriesVersioned

func (c *Client) ShowMapEntriesVersioned(name, version string) (models.MapEntries, error)

ShowMapEntriesVersioned list all map entries by map file name

func (*Client) ShowMaps

func (c *Client) ShowMaps() (models.Maps, error)

ShowMaps returns structured unique map files

func (*Client) ShowTable

func (c *Client) ShowTable(name string, process int) (*models.StickTable, error)

Show table show tables {name} from runtime API associated with process id and return it structured

func (*Client) ShowTables

func (c *Client) ShowTables(process int) (models.StickTables, error)

Show tables show tables from runtime API and return it structured, if process is 0, return for all processes

type ClientParams

type ClientParams struct {
	MapsDir string
}

type CrtList

type CrtList struct {
	File string
}

type CrtListEntries

type CrtListEntries []*CrtListEntry

func ParseCrtListEntries

func ParseCrtListEntries(output string) (CrtListEntries, error)

ParseCrtListEntries parses array of entries in one CrtList file One line sample entry: /etc/ssl/cert-0.pem !*.crt-test.platform.domain.com !connectivitynotification.platform.domain.com !connectivitytunnel.platform.domain.com !authentication.cert.another.domain.com !*.authentication.cert.another.domain.com /etc/ssl/cert-1.pem [verify optional ca-file /etc/ssl/ca-file-1.pem] *.crt-test.platform.domain.com !connectivitynotification.platform.domain.com !connectivitytunnel.platform.domain.com !authentication.cert.another.domain.com !*.authentication.cert.another.domain.com /etc/ssl/cert-2.pem [verify required ca-file /etc/ssl/ca-file-2.pem]

type CrtListEntry

type CrtListEntry struct {
	LineNumber    int
	File          string
	SSLBindConfig string
	SNIFilter     []string
}

type CrtLists

type CrtLists []*CrtList

type HAProxyMock

type HAProxyMock struct {
	net.Listener
	// contains filtered or unexported fields
}

HAProxyMock - Mock HAProxy Server for testing the socket communication

func NewHAProxyMock

func NewHAProxyMock(t *testing.T) *HAProxyMock

NewHAProxyMock - create new haproxy mock

func (*HAProxyMock) SetResponses

func (haproxy *HAProxyMock) SetResponses(responses *map[string]string)

SetResponses - setting the expected responses

func (*HAProxyMock) Start

func (haproxy *HAProxyMock) Start()

Start - start mock

func (*HAProxyMock) Stop

func (haproxy *HAProxyMock) Stop()

Stop - stop mock

type HAProxyVersion

type HAProxyVersion struct {
	Major   int
	Minor   int
	Patch   int
	Commit  string
	Version string
}

func (*HAProxyVersion) IsBiggerOrEqual

func (v *HAProxyVersion) IsBiggerOrEqual(minimumVersion HAProxyVersion) bool

func (*HAProxyVersion) ParseHAProxyVersion

func (v *HAProxyVersion) ParseHAProxyVersion(version string) error

type SingleRuntime

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

SingleRuntime handles one runtime API

func (*SingleRuntime) AbortCertEntry

func (s *SingleRuntime) AbortCertEntry(storageName string) error

AbortCertEntry adds an entry into the CrtList file

func (*SingleRuntime) AddACLFileEntry

func (s *SingleRuntime) AddACLFileEntry(aclID, value string) error

AddACLFileEntry adds an entry into the Acl file

func (*SingleRuntime) AddACLVersioned

func (s *SingleRuntime) AddACLVersioned(version, aclID, value string) error

func (*SingleRuntime) AddCrtListEntry

func (s *SingleRuntime) AddCrtListEntry(crtList string, entry CrtListEntry) error

AddCrtListEntry adds an entry into the CrtList file

func (*SingleRuntime) AddMapEntry

func (s *SingleRuntime) AddMapEntry(name, key, value string) error

AddMapEntry adds an entry into the map file

func (*SingleRuntime) AddMapEntryVersioned

func (s *SingleRuntime) AddMapEntryVersioned(version, name, key, value string) error

AddMapEntryVersioned adds an entry into the map file

func (*SingleRuntime) AddMapPayload

func (s *SingleRuntime) AddMapPayload(name, payload string) error

AddMapPayload adds multiple entries to the map file payload param is a multi-line string where each line is a key/value pair

func (*SingleRuntime) AddMapPayloadVersioned

func (s *SingleRuntime) AddMapPayloadVersioned(version, name, payload string) error

func (*SingleRuntime) ClearMap

func (s *SingleRuntime) ClearMap(name string) error

ClearMap removes all map entries from the map file.

func (*SingleRuntime) ClearMapVersioned

func (s *SingleRuntime) ClearMapVersioned(name, version string) error

ClearMapVersioned removes all map entries from the map file.

func (*SingleRuntime) CommitACL

func (s *SingleRuntime) CommitACL(version, aclID string) error

func (*SingleRuntime) CommitCertEntry

func (s *SingleRuntime) CommitCertEntry(storageName string) error

CommitCertEntry adds an entry into the CrtList file

func (*SingleRuntime) CommitMap

func (s *SingleRuntime) CommitMap(version, name string) error

func (*SingleRuntime) DeleteACLFileEntry

func (s *SingleRuntime) DeleteACLFileEntry(aclID, value string) error

DeleteACLFileEntry deletes all the Acl entries from the Acl by its value

func (*SingleRuntime) DeleteCertEntry

func (s *SingleRuntime) DeleteCertEntry(storageName string) error

DeleteCertEntry adds an entry into the CrtList file

func (*SingleRuntime) DeleteCrtListEntry

func (s *SingleRuntime) DeleteCrtListEntry(crtList, certFile string, lineNumber int) error

DeleteCrtListEntry deletes all the CrtList entries from the CrtList by its id

func (*SingleRuntime) DeleteMapEntry

func (s *SingleRuntime) DeleteMapEntry(name, id string) error

DeleteMapEntry deletes all the map entries from the map by its id

func (*SingleRuntime) DisableAgentCheck

func (s *SingleRuntime) DisableAgentCheck(backend, server string) error

DisableAgentCheck disable agent check for server

func (*SingleRuntime) DisableServer

func (s *SingleRuntime) DisableServer(backend, server string) error

DisableServer marks server as DOWN for maintenance

func (*SingleRuntime) EnableAgentCheck

func (s *SingleRuntime) EnableAgentCheck(backend, server string) error

EnableAgentCheck enable agent check for server

func (*SingleRuntime) EnableServer

func (s *SingleRuntime) EnableServer(backend, server string) error

EnableServer marks server as UP

func (*SingleRuntime) Execute

func (s *SingleRuntime) Execute(command string) error

Execute executes command on runtime API

func (*SingleRuntime) ExecuteRaw

func (s *SingleRuntime) ExecuteRaw(command string) (string, error)

ExecuteRaw executes command on runtime API and returns raw result

func (*SingleRuntime) ExecuteWithResponse

func (s *SingleRuntime) ExecuteWithResponse(command string) (string, error)

func (*SingleRuntime) GetACL

func (s *SingleRuntime) GetACL(storageName string) (*models.ACLFile, error)

GetACL returns one structured runtime Acl file

func (*SingleRuntime) GetACLFileEntry

func (s *SingleRuntime) GetACLFileEntry(aclID, value string) (*models.ACLFileEntry, error)

GetACLFileEntry returns one Acl runtime setting

func (*SingleRuntime) GetCert

func (s *SingleRuntime) GetCert(storageName string) (*models.SslCertificate, error)

GetCert returns one structured runtime certs

func (*SingleRuntime) GetCrtList

func (s *SingleRuntime) GetCrtList(file string) (*CrtList, error)

GetCrtList returns one structured runtime CrtList file

func (*SingleRuntime) GetInfo

func (s *SingleRuntime) GetInfo() models.ProcessInfo

GetInfo fetches HAProxy info from runtime API

func (*SingleRuntime) GetMap

func (s *SingleRuntime) GetMap(name string) (*models.Map, error)

GetMap returns one structured runtime map file

func (*SingleRuntime) GetMapEntry

func (s *SingleRuntime) GetMapEntry(name, id string) (*models.MapEntry, error)

GetMapEntry returns one map runtime setting

func (*SingleRuntime) GetServerState

func (s *SingleRuntime) GetServerState(backend, server string) (*models.RuntimeServer, error)

GetServersState returns server runtime state

func (*SingleRuntime) GetServersState

func (s *SingleRuntime) GetServersState(backend string) (models.RuntimeServers, error)

GetServersState returns servers runtime state

func (*SingleRuntime) GetStats

GetStats fetches HAProxy stats from runtime API

func (*SingleRuntime) GetTableEntries

func (s *SingleRuntime) GetTableEntries(name string, filter []string, key string) (models.StickTableEntries, error)

GetTableEntries returns Stick Tables entries

func (*SingleRuntime) Init

func (s *SingleRuntime) Init(socketPath string, worker int, process int) error

Init must be given path to runtime socket and worker number. If in master-worker mode, give the path to the master socket path, and non 0 number for workers. Process is for nbproc > 1. In master-worker mode it's the same as the worker number, but when having multiple stats socket lines bound to processes then use the correct process number

func (*SingleRuntime) InitWithContext

func (s *SingleRuntime) InitWithContext(ctx context.Context, socketPath string, worker int, process int) error

func (*SingleRuntime) NewCertEntry

func (s *SingleRuntime) NewCertEntry(storageName string) error

NewCertEntry adds an entry into the CrtList file

func (*SingleRuntime) PrepareACL

func (s *SingleRuntime) PrepareACL(aclID string) (version string, err error)

func (*SingleRuntime) PrepareMap

func (s *SingleRuntime) PrepareMap(name string) (version string, err error)

func (*SingleRuntime) SetCertEntry

func (s *SingleRuntime) SetCertEntry(storageName string, payload string) error

SetCertEntry adds an entry into the CrtList file

func (*SingleRuntime) SetFrontendMaxConn

func (s *SingleRuntime) SetFrontendMaxConn(frontend string, maxconn int) error

SetFrontendMaxConn set maxconn for frontend

func (*SingleRuntime) SetMapEntry

func (s *SingleRuntime) SetMapEntry(name, id, value string) error

SetMapEntry replaces the value corresponding to each id in a map

func (*SingleRuntime) SetServerAddr

func (s *SingleRuntime) SetServerAddr(backend, server string, ip string, port int) error

SetServerAddr set ip [port] for server

func (*SingleRuntime) SetServerAgentAddr

func (s *SingleRuntime) SetServerAgentAddr(backend, server string, addr string) error

SetServerAgentAddr set agent-addr for server

func (*SingleRuntime) SetServerAgentSend

func (s *SingleRuntime) SetServerAgentSend(backend, server string, send string) error

SetServerAgentSend set agent-send for server

func (*SingleRuntime) SetServerCheckPort

func (s *SingleRuntime) SetServerCheckPort(backend, server string, port int) error

SetServerCheckPort set health heck port for server

func (*SingleRuntime) SetServerHealth

func (s *SingleRuntime) SetServerHealth(backend, server string, health string) error

SetServerHealth set health for server

func (*SingleRuntime) SetServerState

func (s *SingleRuntime) SetServerState(backend, server string, state string) error

SetServerState set state for server

func (*SingleRuntime) SetServerWeight

func (s *SingleRuntime) SetServerWeight(backend, server string, weight string) error

SetServerWeight set weight for server

func (*SingleRuntime) ShowACLFileEntries

func (s *SingleRuntime) ShowACLFileEntries(storageName string) (models.ACLFilesEntries, error)

ShowACLFileEntries returns one acl runtime entries

func (*SingleRuntime) ShowACLS

func (s *SingleRuntime) ShowACLS() (models.ACLFiles, error)

ShowACLS returns Acl files description from runtime

func (*SingleRuntime) ShowCertEntry

func (s *SingleRuntime) ShowCertEntry(storageName string) (*models.SslCertEntry, error)

ShowCertEntry returns one CrtList runtime entries

func (*SingleRuntime) ShowCerts

func (s *SingleRuntime) ShowCerts() (models.SslCertificates, error)

ShowCerts returns Certs files description from runtime

func (*SingleRuntime) ShowCrtListEntries

func (s *SingleRuntime) ShowCrtListEntries(file string) (CrtListEntries, error)

ShowCrtListEntries returns one CrtList runtime entries

func (*SingleRuntime) ShowCrtLists

func (s *SingleRuntime) ShowCrtLists() (CrtLists, error)

ShowCrtLists returns CrtList files description from runtime

func (*SingleRuntime) ShowMapEntries

func (s *SingleRuntime) ShowMapEntries(name string) (models.MapEntries, error)

ShowMapEntries returns one map runtime entries

func (*SingleRuntime) ShowMapEntriesVersioned

func (s *SingleRuntime) ShowMapEntriesVersioned(name, version string) (models.MapEntries, error)

ShowMapEntriesVersioned returns one map runtime entries

func (*SingleRuntime) ShowMaps

func (s *SingleRuntime) ShowMaps() (models.Maps, error)

ShowMaps returns map files description from runtime

func (*SingleRuntime) ShowTable

func (s *SingleRuntime) ShowTable(name string) (*models.StickTable, error)

ShowTables returns one Stick Table descriptions from runtime

func (*SingleRuntime) ShowTables

func (s *SingleRuntime) ShowTables() (models.StickTables, error)

ShowTables returns Stick Tables descriptions from runtime

type Task

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

Task has command to execute on runtime api, and response channel for result

type TaskResponse

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

TaskResponse ...

Jump to

Keyboard shortcuts

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