Skip to content

Go client for HAProxy configuration and runtime API

License

Notifications You must be signed in to change notification settings

haproxytech/client-native

Repository files navigation

HAProxy

HAProxy Native Golang Client

ContributorsLicense

HAProxy Native Client is a client that exposes methods for reading and changing HAProxy configuration files, and executing commands and parsing the output of the HAProxy Runtime API (via unix socket, AKA stats socket in HAProxy).

HAProxy Models

This project contains structs and validation methods that are autogenerated using go-swagger from the swagger specification found here.These structs are also used in the DataPlaneAPI

Requirements

go-swagger v0.30.2. Note that at the moment you need to use version 0.30.2

models can be generated with make models. It automatically combines specification parts into a single file, and then use that to generate models.

Usage Example

//import cfg_opt "github.com/haproxytech/client-native/v6/configuration/options"confClient, err:=configuration.New(context.Background(), cfg_opt.ConfigurationFile(haproxyOptions.ConfigFile), cfg_opt.HAProxyBin(haproxyOptions.HAProxy), cfg_opt.Backups(haproxyOptions.BackupsNumber), cfg_opt.UsePersistentTransactions, cfg_opt.TransactionsDir(haproxyOptions.TransactionDir), cfg_opt.MasterWorker, cfg_opt.UseMd5Hash, ) iferr!=nil{returnnil, fmt.Errorf("error setting up configuration client: %s", err.Error()) } // runtime// import runtime_options "github.com/haproxytech/client-native/v6/runtime/options"ms:=runtime_options.MasterSocket(masterSocket) runtimeClient, err=runtime_api.New(ctx, ms) iferr!=nil{returnnil, fmt.Errorf("error setting up runtime client: %s", err.Error()) } // or if not using master-workersocketList:=map[int]string{1: "/var/run/haproxy.sock" } sockets:=runtime_options.Sockets(socketList) runtimeClient, err=runtime_api.New(ctx, mapsDir, sockets) iferr!=nil{returnnil, fmt.Errorf("error setting up runtime client: %s", err.Error()) } // end runtime// import "github.com/haproxytech/client-native/v6/options"opt:= []options.Option{options.Configuration(confClient), options.Runtime(runtimeClient), } // additional options - not mandatory//maps storagemapStorage, err:=storage.New(MapsDir, storage.MapsType) iferr!=nil{log.Fatalf("error initializing map storage: %v", err) } opt=append(opt, options.MapStorage(mapStorage)) //ssl cert storagesslCertStorage, err:=storage.New(SSLCertsDir, storage.SSLType) iferr!=nil{log.Fatalf("error initializing SSL certs storage: %v", err) } opt=append(opt, options.SSLCertStorage(sslCertStorage)) // general storagegeneralStorage, err:=storage.New(GeneralStorage, storage.GeneralType) iferr!=nil{log.Fatalf("error initializing General storage: %v", err) } opt=append(opt, options.GeneralStorage(generalStorage)) //spoeprms:= spoe.Params{SpoeDir: SpoeDir, TransactionDir: SpoeTransactionDir, } spoe, err:=spoe.NewSpoe(prms) iferr!=nil{log.Fatalf("error setting up spoe: %v", err) } opt=append(opt, options.Spoe(spoe)) // combine all together and create a clientclient, err:=client_native.New(cyx, opt...) iferr!=nil{log.Fatalf("Error initializing configuration client: %v", err) } // fetch configuration handlerconfiguration, err:=client.Configuration() iferr!=nil{fmt.Println(err.Error()) } //fetch all backendsbcks, err:=configuration.GetBackends(t) iferr!=nil{fmt.Println(err.Error()) } //...backendsJSON, err:=bcks.MarshallBinary() iferr!=nil{fmt.Println(err.Error()) } fmt.Println(string(backendsJSON)) //...

Contributing

For commit messages and general style please follow the haproxy project's CONTRIBUTING guide and use that where applicable.

About

Go client for HAProxy configuration and runtime API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 43

Languages