router

package
v0.0.0-...-1b7c243 Latest Latest
Warning

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

Go to latest
Published: Oct 9, 2017 License: BSD-3-Clause Imports: 15 Imported by: 0

Documentation

Overview

Package router provides interfaces that need to be satisfied in order to implement a new router on tsuru.

Index

Constants

View Source
const HttpScheme = "http"

Variables

View Source
var (
	ErrBackendExists         = errors.New("Backend already exists")
	ErrBackendNotFound       = errors.New("Backend not found")
	ErrBackendSwapped        = errors.New("Backend is swapped cannot remove")
	ErrRouteNotFound         = errors.New("Route not found")
	ErrCNameExists           = errors.New("CName already exists")
	ErrCNameNotFound         = errors.New("CName not found")
	ErrCNameNotAllowed       = errors.New("CName as router subdomain not allowed")
	ErrCertificateNotFound   = errors.New("Certificate not found")
	ErrDefaultRouterNotFound = errors.New("No default router found")
)

Functions

func BuildHealthCheck

func BuildHealthCheck(routerName string) func() error

BuildHealthCheck creates a healthcheck function for the given routerName.

It will call the HealthCheck() method in the router (only if it's also a HealthChecker), for each instance of it (including the "main" instance and all custom routers).

func Default

func Default() (string, error)

Default returns the default router

func Initialize

func Initialize() error

func InstrumentRequest

func InstrumentRequest(routerName string) func(error)

func IsSwapped

func IsSwapped(name string) (bool, string, error)

func MigrateUniqueCollection

func MigrateUniqueCollection() error

MigrateUniqueCollection only exists because old versions of tsuru (<1.2.0) allowed the insertion of incorrect duplicated entries in the db.routers collection. This migration tries its best to fix the inconsistencies in this collection and fails if that's not possible.

func Register

func Register(name string, r routerFactory)

Register registers a new router.

func Remove

func Remove(appName string) error

func Retrieve

func Retrieve(appName string) (string, error)

func Store

func Store(appName, routerName, kind string) error

Store stores the app name related with the router name.

func Swap

func Swap(r Router, backend1, backend2 string, cnameOnly bool) error

func Type

func Type(name string) (string, string, error)

func ValidCName

func ValidCName(cname, domain string) bool

validCName returns true if the cname is not a subdomain of the router current domain, false otherwise.

Types

type CNameRouter

type CNameRouter interface {
	Router
	SetCName(cname, name string) error
	UnsetCName(cname, name string) error
	CNames(name string) ([]*url.URL, error)
}

type CustomHealthcheckRouter

type CustomHealthcheckRouter interface {
	SetHealthcheck(name string, data HealthcheckData) error
}

type ErrRouterNotFound

type ErrRouterNotFound struct {
	Name string
}

func (*ErrRouterNotFound) Error

func (e *ErrRouterNotFound) Error() string

type HealthChecker

type HealthChecker interface {
	HealthCheck() error
}

type HealthcheckData

type HealthcheckData struct {
	Path   string
	Status int
	Body   string
}

type MessageRouter

type MessageRouter interface {
	StartupMessage() (string, error)
}

type OptsRouter

type OptsRouter interface {
	AddBackendOpts(name string, opts map[string]string) error
	UpdateBackendOpts(name string, opts map[string]string) error
}

type PlanRouter

type PlanRouter struct {
	Name    string `json:"name"`
	Type    string `json:"type"`
	Default bool   `json:"default"`
}

func List

func List() ([]PlanRouter, error)

type Router

type Router interface {
	GetName() string

	AddBackend(name string) error
	RemoveBackend(name string) error
	AddRoutes(name string, address []*url.URL) error
	RemoveRoutes(name string, addresses []*url.URL) error
	Addr(name string) (string, error)

	// Swap change the router between two backends.
	Swap(backend1, backend2 string, cnameOnly bool) error

	// Routes returns a list of routes of a backend.
	Routes(name string) ([]*url.URL, error)
}

Router is the basic interface of this package. It provides methods for managing backends and routes. Each backend can have multiple routes.

func Get

func Get(name string) (Router, error)

Get gets the named router from the registry.

type RouterError

type RouterError struct {
	Op  string
	Err error
}

func (*RouterError) Error

func (e *RouterError) Error() string

type TLSRouter

type TLSRouter interface {
	AddCertificate(cname, certificate, key string) error
	RemoveCertificate(cname string) error
	GetCertificate(cname string) (string, error)
}

TLSRouter is a router that supports adding and removing certificates for a given cname

Directories

Path Synopsis
Package hipache provides a router implementation that store routes in Redis, as specified by Hipache (https://github.com/dotcloud/hipache).
Package hipache provides a router implementation that store routes in Redis, as specified by Hipache (https://github.com/dotcloud/hipache).

Jump to

Keyboard shortcuts

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