Documentation ¶
Index ¶
- Constants
- Variables
- func IsNamedVolume(volume string) bool
- func NameAlias(name string) (string, string)
- func NewDefaultListener(p *Project) chan<- events.Event
- type Context
- type EmptyService
- func (e *EmptyService) Build(ctx context.Context, buildOptions options.Build) error
- func (e *EmptyService) Config() *config.ServiceConfig
- func (e *EmptyService) Create(ctx context.Context, options options.Create) error
- func (e *EmptyService) DependentServices() []ServiceRelationship
- func (e *EmptyService) Log(ctx context.Context, follow bool) error
- func (e *EmptyService) Name() string
- func (e *EmptyService) Up(ctx context.Context, options options.Up) error
- type Project
- func (p *Project) AddConfig(name string, config *config.ServiceConfig) error
- func (p *Project) AddListener(c chan<- events.Event)
- func (p *Project) AddNetworkConfig(name string, config *config.NetworkConfig) error
- func (p *Project) AddVolumeConfig(name string, config *config.VolumeConfig) error
- func (p *Project) Build(ctx context.Context, buildOptions options.Build, services ...string) error
- func (p *Project) Create(ctx context.Context, options options.Create, services ...string) error
- func (p *Project) CreateService(name string) (Service, error)
- func (p *Project) GetServiceConfig(name string) (*config.ServiceConfig, bool)
- func (p *Project) Load(bytes []byte) error
- func (p *Project) Log(ctx context.Context, follow bool, services ...string) error
- func (p *Project) Notify(eventType events.EventType, serviceName string, data map[string]string)
- func (p *Project) Parse() error
- func (p *Project) Up(ctx context.Context, options options.Up, services ...string) error
- type Service
- type ServiceFactory
- type ServiceRelationship
- type ServiceRelationshipType
- type ServiceState
- type Volumes
- type VolumesFactory
Constants ¶
const ComposeVersion = "1.5.0"
ComposeVersion is name of docker-compose.yml file syntax supported version
const RelTypeDependsOn = ServiceRelationshipType("dependsOn")
RelTypeDependsOn means the dependency was explicitly set using 'depends_on'.
const RelTypeIpcNamespace = ServiceRelationshipType("ipc")
RelTypeIpcNamespace means the service share the same ipc namespace.
const RelTypeLink = ServiceRelationshipType("")
RelTypeLink means the services are linked (docker links).
const RelTypeNetNamespace = ServiceRelationshipType("netns")
RelTypeNetNamespace means the services share the same network namespace.
const RelTypeNetworkMode = ServiceRelationshipType("networkMode")
RelTypeNetworkMode means the services depends on another service on networkMode
const RelTypeVolumesFrom = ServiceRelationshipType("volumesFrom")
RelTypeVolumesFrom means the services share some volumes.
Variables ¶
var ( StateExecuted = ServiceState("executed") StateUnknown = ServiceState("unknown") )
State definitions
var ( ErrRestart = errors.New("Restart execution") ErrUnsupported = errors.New("UnsupportedOperation") )
Error definitions
Functions ¶
func IsNamedVolume ¶
IsNamedVolume returns whether the specified volume (string) is a named volume or not.
func NameAlias ¶
NameAlias returns the name and alias based on the specified string. If the name contains a colon (like name:alias) it will split it, otherwise it will return the specified name as name and alias.
func NewDefaultListener ¶
NewDefaultListener create a default listener for the specified project.
Types ¶
type Context ¶
type Context struct { ComposeFiles []string ComposeBytes [][]byte ProjectName string ServiceFactory ServiceFactory VolumesFactory VolumesFactory EnvironmentLookup config.EnvironmentLookup ResourceLookup config.ResourceLookup LoggerFactory logger.Factory IgnoreMissingConfig bool Project *Project // contains filtered or unexported fields }
Context holds context meta information about a libcompose project, like the project name, the compose file, etc.
type EmptyService ¶
type EmptyService struct { }
EmptyService is a struct that implements Service but does nothing.
func (*EmptyService) Config ¶
func (e *EmptyService) Config() *config.ServiceConfig
Config implements Service.Config with empty config.
func (*EmptyService) DependentServices ¶
func (e *EmptyService) DependentServices() []ServiceRelationship
DependentServices implements Service.DependentServices with empty slice.
func (*EmptyService) Log ¶
func (e *EmptyService) Log(ctx context.Context, follow bool) error
Log implements Service.Log but does nothing.
func (*EmptyService) Name ¶
func (e *EmptyService) Name() string
Name implements Service.Name with empty name.
type Project ¶
type Project struct { Name string ServiceConfigs *config.ServiceConfigs VolumeConfigs map[string]*config.VolumeConfig NetworkConfigs map[string]*config.NetworkConfig Files []string ReloadCallback func() error ParseOptions *config.ParseOptions // contains filtered or unexported fields }
Project holds libcompose project information.
func NewProject ¶
func NewProject(context *Context, parseOptions *config.ParseOptions) *Project
NewProject creates a new project with the specified context.
func (*Project) AddConfig ¶
func (p *Project) AddConfig(name string, config *config.ServiceConfig) error
AddConfig adds the specified service config for the specified name.
func (*Project) AddListener ¶
AddListener adds the specified listener to the project. This implements implicitly events.Emitter.
func (*Project) AddNetworkConfig ¶
func (p *Project) AddNetworkConfig(name string, config *config.NetworkConfig) error
AddNetworkConfig adds the specified network config for the specified name.
func (*Project) AddVolumeConfig ¶
func (p *Project) AddVolumeConfig(name string, config *config.VolumeConfig) error
AddVolumeConfig adds the specified volume config for the specified name.
func (*Project) CreateService ¶
CreateService creates a service with the specified name based. If there is no config in the project for this service, it will return an error.
func (*Project) GetServiceConfig ¶
func (p *Project) GetServiceConfig(name string) (*config.ServiceConfig, bool)
GetServiceConfig looks up a service config for a given service name, returning the ServiceConfig object and a bool flag indicating whether it was found
func (*Project) Load ¶
Load loads the specified byte array (the composefile content) and adds the service configuration to the project. FIXME is it needed ?
func (*Project) Notify ¶
Notify notifies all project listener with the specified eventType, service name and datas. This implements implicitly events.Notifier interface.
type Service ¶
type Service interface { Build(ctx context.Context, buildOptions options.Build) error Create(ctx context.Context, options options.Create) error Log(ctx context.Context, follow bool) error Up(ctx context.Context, options options.Up) error DependentServices() []ServiceRelationship Config() *config.ServiceConfig Name() string }
Service defines what a libcompose service provides.
type ServiceFactory ¶
type ServiceFactory interface {
Create(project *Project, name string, serviceConfig *config.ServiceConfig) (Service, error)
}
ServiceFactory is an interface factory to create Service object for the specified project, with the specified name and service configuration.
type ServiceRelationship ¶
type ServiceRelationship struct {
Target, Alias string
Type ServiceRelationshipType
Optional bool
}
ServiceRelationship holds the relationship information between two services.
func DefaultDependentServices ¶
func DefaultDependentServices(p *Project, s Service) []ServiceRelationship
DefaultDependentServices return the dependent services (as an array of ServiceRelationship) for the specified project and service. It looks for : links, volumesFrom, net and ipc configuration.
func NewServiceRelationship ¶
func NewServiceRelationship(nameAlias string, relType ServiceRelationshipType) ServiceRelationship
NewServiceRelationship creates a new Relationship based on the specified alias and relationship type.
type ServiceRelationshipType ¶
type ServiceRelationshipType string
ServiceRelationshipType defines the type of service relationship.
type VolumesFactory ¶
type VolumesFactory interface {
Create(projectName string, volumeConfigs map[string]*config.VolumeConfig, serviceConfigs *config.ServiceConfigs, volumeEnabled bool) (Volumes, error)
}
VolumesFactory is an interface factory to create Volumes object for the specified configurations (service, volumes, …)