compose

package
v2.2.3 Latest Latest
Warning

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

Go to latest
Published: Jan 4, 2022 License: Apache-2.0 Imports: 75 Imported by: 26

Documentation

Index

Constants

View Source
const (
	// ContainerCreated created status
	ContainerCreated = "created"
	// ContainerRestarting restarting status
	ContainerRestarting = "restarting"
	// ContainerRunning running status
	ContainerRunning = "running"
	// ContainerRemoving removing status
	ContainerRemoving = "removing" //nolint
	// ContainerPaused paused status
	ContainerPaused = "paused" //nolint
	// ContainerExited exited status
	ContainerExited = "exited" //nolint
	// ContainerDead dead status
	ContainerDead = "dead" //nolint
)
View Source
const (
	// APISource is sent for API metrics
	APISource = "api"
	// SuccessStatus command success
	SuccessStatus = "success"
	// FailureStatus command failure
	FailureStatus = "failure"
	// ComposeParseFailureStatus failure while parsing compose file
	ComposeParseFailureStatus = "failure-compose-parse"
	// FileNotFoundFailureStatus failure getting compose file
	FileNotFoundFailureStatus = "failure-file-not-found"
	// CommandSyntaxFailureStatus failure reading command
	CommandSyntaxFailureStatus = "failure-cmd-syntax"
	// BuildFailureStatus failure building imge
	BuildFailureStatus = "failure-build"
	// PullFailureStatus failure pulling imge
	PullFailureStatus = "failure-pull"
	// CanceledStatus command canceled
	CanceledStatus = "canceled"
)
View Source
const ServiceConditionRunningOrHealthy = "running_or_healthy"

ServiceConditionRunningOrHealthy is a service condition on statys running or healthy

Variables

View Source
var (
	// FileNotFoundFailure failure for compose file not found
	FileNotFoundFailure = FailureCategory{MetricsStatus: FileNotFoundFailureStatus, ExitCode: 14}
	// ComposeParseFailure failure for composefile parse error
	ComposeParseFailure = FailureCategory{MetricsStatus: ComposeParseFailureStatus, ExitCode: 15}
	// CommandSyntaxFailure failure for command line syntax
	CommandSyntaxFailure = FailureCategory{MetricsStatus: CommandSyntaxFailureStatus, ExitCode: 16}
	//BuildFailure failure while building images.
	BuildFailure = FailureCategory{MetricsStatus: BuildFailureStatus, ExitCode: 17}
	// PullFailure failure while pulling image
	PullFailure = FailureCategory{MetricsStatus: PullFailureStatus, ExitCode: 18}
)
View Source
var Separator = "-"

Separator is used for naming components

Functions

func InDependencyOrder

func InDependencyOrder(ctx context.Context, project *types.Project, fn func(context.Context, string) error) error

InDependencyOrder applies the function to the services of the project taking in account the dependency order

func InReverseDependencyOrder

func InReverseDependencyOrder(ctx context.Context, project *types.Project, fn func(context.Context, string) error) error

InReverseDependencyOrder applies the function to the services of the project in reverse order of dependencies

func NewComposeService

func NewComposeService(apiClient client.APIClient, configFile *configfile.ConfigFile) api.Service

NewComposeService create a local implementation of the compose.Service API

func ServiceHash

func ServiceHash(o types.ServiceConfig) (string, error)

ServiceHash compute configuration has for a service TODO move this to compose-go

func ToMobyEnv

func ToMobyEnv(environment compose.MappingWithEquals) []string

ToMobyEnv convert into []string

func ToMobyHealthCheck

func ToMobyHealthCheck(check *compose.HealthCheckConfig) *container.HealthConfig

ToMobyHealthCheck convert into container.HealthConfig

func ToSeconds

func ToSeconds(d *compose.Duration) *int

ToSeconds convert into seconds

func WrapCategorisedComposeError

func WrapCategorisedComposeError(err error, failure FailureCategory) error

WrapCategorisedComposeError wraps the error if not nil, otherwise returns nil

func WrapComposeError

func WrapComposeError(err error) error

WrapComposeError wraps the error if not nil, otherwise returns nil

Types

type ContainerStdin

type ContainerStdin struct {
	moby.HijackedResponse
}

ContainerStdin implement WriteCloser for moby.HijackedResponse

func (ContainerStdin) Close

func (c ContainerStdin) Close() error

Close implement io.WriteCloser

func (ContainerStdin) Write

func (c ContainerStdin) Write(p []byte) (n int, err error)

Write implement io.WriteCloser

type ContainerStdout

type ContainerStdout struct {
	moby.HijackedResponse
}

ContainerStdout implement ReadCloser for moby.HijackedResponse

func (ContainerStdout) Close

func (l ContainerStdout) Close() error

Close implement io.ReadCloser

func (ContainerStdout) Read

func (l ContainerStdout) Read(p []byte) (n int, err error)

Read implement io.ReadCloser

type Containers

type Containers []moby.Container

Containers is a set of moby Container

type Error

type Error struct {
	Err      error
	Category *FailureCategory
}

Error error to categorize failures and extract metrics info

func (Error) Error

func (e Error) Error() string

func (Error) GetMetricsFailureCategory

func (e Error) GetMetricsFailureCategory() FailureCategory

GetMetricsFailureCategory get metrics status and error code corresponding to this error

func (Error) Unwrap

func (e Error) Unwrap() error

Unwrap get underlying error

type FailureCategory

type FailureCategory struct {
	MetricsStatus string
	ExitCode      int
}

FailureCategory sruct regrouping metrics failure status and specific exit code

func ByExitCode

func ByExitCode(exitCode int) FailureCategory

ByExitCode retrieve FailureCategory based on command exit code

type Graph

type Graph struct {
	Vertices map[string]*Vertex
	// contains filtered or unexported fields
}

Graph represents project as service dependencies

func NewGraph

func NewGraph(services types.Services, initialStatus ServiceStatus) *Graph

NewGraph returns the dependency graph of the services

func (*Graph) AddEdge

func (g *Graph) AddEdge(source string, destination string) error

AddEdge adds a relationship of dependency between vertexes `source` and `destination`

func (*Graph) AddVertex

func (g *Graph) AddVertex(key string, service string, initialStatus ServiceStatus)

AddVertex adds a vertex to the Graph

func (*Graph) FilterChildren

func (g *Graph) FilterChildren(key string, status ServiceStatus) []*Vertex

FilterChildren returns children of a certain vertex that are in a certain status

func (*Graph) FilterParents

func (g *Graph) FilterParents(key string, status ServiceStatus) []*Vertex

FilterParents returns the parents of a certain vertex that are in a certain status

func (*Graph) HasCycles

func (g *Graph) HasCycles() (bool, error)

HasCycles detects cycles in the graph

func (*Graph) Leaves

func (g *Graph) Leaves() []*Vertex

Leaves returns the slice of leaves of the graph

func (*Graph) Roots

func (g *Graph) Roots() []*Vertex

Roots returns the slice of "Roots" of the graph

func (*Graph) UpdateStatus

func (g *Graph) UpdateStatus(key string, status ServiceStatus)

UpdateStatus updates the status of a certain vertex

type ServiceStatus

type ServiceStatus int

ServiceStatus indicates the status of a service

const (
	ServiceStopped ServiceStatus = iota
	ServiceStarted
)

Services status flags

type Vertex

type Vertex struct {
	Key      string
	Service  string
	Status   ServiceStatus
	Children map[string]*Vertex
	Parents  map[string]*Vertex
}

Vertex represents a service in the dependencies structure

func NewVertex

func NewVertex(key string, service string, initialStatus ServiceStatus) *Vertex

NewVertex is the constructor function for the Vertex

func (*Vertex) GetChildren

func (v *Vertex) GetChildren() []*Vertex

GetChildren returns a slice with the child vertexes of the a Vertex

func (*Vertex) GetParents

func (v *Vertex) GetParents() []*Vertex

GetParents returns a slice with the parent vertexes of the a Vertex

Jump to

Keyboard shortcuts

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