Documentation ¶
Overview ¶
Package eskipfile implements the DataClient interface for reading the skipper route definitions from an eskip formatted file.
(See the DataClient interface in the skipper/routing package and the eskip format in the skipper/eskip package.)
The package provides two implementations: one without file watch (legacy version) and one with file watch. When running the skipper command, the one with watch is used.
Example ¶
package main import ( "github.com/zalando/skipper/eskipfile" "github.com/zalando/skipper/proxy" "github.com/zalando/skipper/routing" ) func main() { // open file with a routing table: dataClient := eskipfile.Watch("/some/path/to/routing-table.eskip") defer dataClient.Close() // create a routing object: rt := routing.New(routing.Options{ DataClients: []routing.DataClient{dataClient}, }) defer rt.Close() // create an http.Handler: p := proxy.New(rt, proxy.OptionsNone) defer p.Close() }
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RemoteWatch ¶ added in v0.13.41
func RemoteWatch(o *RemoteWatchOptions) (routing.DataClient, error)
RemoteWatch creates a route configuration client with (remote) file watching. Watch doesn't follow file system nodes, it always reads (or re-downloads) from the file identified by the initially provided file name.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client contains the route definitions from an eskip file, not implementing file watch. Use the Open function to create instances of it.
func Open ¶
Opens an eskip file and parses it, returning a DataClient implementation. If reading or parsing the file fails, returns an error. This implementation doesn't provide file watch.
func (Client) LoadAndParseAll ¶
type RemoteWatchOptions ¶ added in v0.13.41
type RemoteWatchOptions struct { // URL of the route file RemoteFile string // Verbose mode for the dataClient Verbose bool // Amount of route changes that will trigger logs after route updates Threshold int // It does an initial download and parsing of remote routes, and makes RemoteWatch to return an error FailOnStartup bool // HTTPTimeout is the generic timeout for any phase of a single HTTP request to RemoteFile. HTTPTimeout time.Duration }
type WatchClient ¶ added in v0.9.206
type WatchClient struct {
// contains filtered or unexported fields
}
WatchClient implements a route configuration client with file watching. Use the Watch function to initialize instances of it.
func Watch ¶ added in v0.9.206
func Watch(name string) *WatchClient
Watch creates a route configuration client with file watching. Watch doesn't follow file system nodes, it always reads from the file identified by the initially provided file name.
func (*WatchClient) Close ¶ added in v0.9.206
func (c *WatchClient) Close()
Close stops watching the configured file and providing updates.
func (*WatchClient) LoadAll ¶ added in v0.9.206
func (c *WatchClient) LoadAll() ([]*eskip.Route, error)
LoadAll returns the parsed route definitions found in the file.
func (*WatchClient) LoadUpdate ¶ added in v0.9.206
func (c *WatchClient) LoadUpdate() ([]*eskip.Route, []string, error)
LoadUpdate returns differential updates when a watched file has changed.