Documentation
¶
Overview ¶
Package provision provides interfaces that need to be satisfied in order to implement a new provisioner on tsuru.
Index ¶
Constants ¶
const ( // StatusBuilding is the status for units being provisined by the // provisioner, like in the deployment. StatusBuilding = Status("building") // StatusError is the status for units that failed to start, because of // an application error. StatusError = Status("error") // StatusDown is the status for units that failed to start, because of // some internal error on tsuru. StatusDown = Status("down") // StatusUnreachable is the case where the process is up and running, // but the unit is not reachable. Probably because it's not bound to // the right host ("0.0.0.0") and/or right port ($PORT). StatusUnreachable = Status("unreachable") // StatusStarted is for cases where the unit is up and running, and // bound to the proper status. StatusStarted = Status("started") // StatusStopped is for cases where the unit has been stopped. StatusStopped = Status("stopped") )
Variables ¶
var ErrEmptyApp = errors.New("no units for this app")
var ErrInvalidStatus = errors.New("invalid status")
Functions ¶
func Register ¶
func Register(name string, p Provisioner)
Register registers a new provisioner in the Provisioner registry.
Types ¶
type App ¶
type App interface {
Named
// Log should be used to log messages in the app.
Log(message, source, unit string) error
// GetPlatform returns the platform (type) of the app. It is equivalent
// to the Unit `Type` field.
GetPlatform() string
// GetDeploy returns the deploys that an app has.
GetDeploys() uint
Units() []Unit
// Run executes the command in app units. Commands executed with this
// method should have access to environment variables defined in the
// app.
Run(cmd string, w io.Writer, once bool) error
Restart(io.Writer) error
Envs() map[string]bind.EnvVar
// Ready marks the app as ready for deployment.
Ready() error
GetMemory() int
GetSwap() int
GetUpdatePlatform() bool
}
App represents a tsuru app.
It contains only relevant information for provisioning.
type ArchiveDeployer ¶
ArchiveDeployer is a provisioner that can deploy archives.
type CNameManager ¶
type CNameManager interface {
SetCName(app App, cname string) error
UnsetCName(app App, cname string) error
}
CNameManager represents a provisioner that supports cname on applications.
type CustomizedDeployPipelineProvisioner ¶
CustomizedDeployPipelineProvisioner is a provisioner with a customized deploy pipeline.
type ExtensibleProvisioner ¶
type ExtensibleProvisioner interface {
PlatformAdd(name string, args map[string]string, w io.Writer) error
PlatformUpdate(name string, args map[string]string, w io.Writer) error
PlatformRemove(name string) error
}
ExtensibleProvisioner is a provisioner where administrators can manage platforms (automatically adding, removing and updating platforms).
type GitDeployer ¶
GitDeployer is a provisioner that can deploy the application from a Git repository.
type Named ¶
type Named interface {
GetName() string
}
Named is something that has a name, providing the GetName method.
type Provisioner ¶
type Provisioner interface {
// Provision is called when tsuru is creating the app.
Provision(App) error
// Destroy is called when tsuru is destroying the app.
Destroy(App) error
// AddUnits adds units to an app. The first parameter is the app, the
// second is the number of units to be added.
//
// It returns a slice containing all added units
AddUnits(App, uint) ([]Unit, error)
// RemoveUnits "undoes" AddUnits, removing the given number of units
// from the app.
RemoveUnits(App, uint) error
// RemoveUnit removes a unit from the app. It receives the unit to be
// removed.
RemoveUnit(Unit) error
// SetUnitStatus changes the status of a unit.
SetUnitStatus(Unit, Status) error
// ExecuteCommand runs a command in all units of the app.
ExecuteCommand(stdout, stderr io.Writer, app App, cmd string, args ...string) error
// ExecuteCommandOnce runs a command in one unit of the app.
ExecuteCommandOnce(stdout, stderr io.Writer, app App, cmd string, args ...string) error
Restart(App) error
Stop(App) error
// Start start the app units.
Start(App) error
// Addr returns the address for an app.
//
// tsuru will use this method to get the IP (although it might not be
// an actual IP, collector calls it "IP") of the app from the
// provisioner.
Addr(App) (string, error)
// Swap change the router between two apps.
Swap(App, App) error
// Units returns information about units by App.
Units(App) []Unit
}
Provisioner is the basic interface of this package.
Any tsuru provisioner must implement this interface in order to provision tsuru apps.
func Get ¶
func Get(name string) (Provisioner, error)
Get gets the named provisioner from the registry.
type Status ¶
type Status string
Status represents the status of a unit in tsuru.