router

package
v0.0.0-...-ec75f14 Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2016 License: BSD-3-Clause Imports: 12 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

This section is empty.

Variables

View Source
var (
	ErrBackendExists   = errors.New("Backend already exists")
	ErrBackendNotFound = errors.New("Backend not found")
	ErrBackendSwapped  = errors.New("Backend is swapped cannot remove")
	ErrRouteExists     = errors.New("Route already exists")
	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")
)

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 IsSwapped

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

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

type HealthChecker interface {
	HealthCheck() error
}

type MessageRouter

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

type PlanRouter

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

func List

func List() ([]PlanRouter, error)

type Router

type Router interface {
	AddBackend(name string) error
	RemoveBackend(name string) error
	AddRoute(name string, address *url.URL) error
	RemoveRoute(name string, address *url.URL) error
	SetCName(cname, name string) error
	UnsetCName(cname, name string) error
	Addr(name string) (string, error)

	// Swap change the router between two backends.
	Swap(string, string) 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

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