eskipfile

package
v0.14.13 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2022 License: Apache-2.0, MIT Imports: 10 Imported by: 10

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

func Open(path string) (*Client, error)

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) LoadAll

func (c Client) LoadAll() ([]*eskip.Route, error)

LoadAll returns the parsed route definitions found in the file.

func (Client) LoadAndParseAll

func (c Client) LoadAndParseAll() (routeInfos []*eskip.RouteInfo, err error)

func (Client) LoadUpdate

func (c Client) LoadUpdate() ([]*eskip.Route, []string, error)

LoadUpdate: noop. The current implementation doesn't support watching the eskip file for changes.

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.

Jump to

Keyboard shortcuts

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