| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 | 
							- /*
 
-    Copyright 2020 Docker Compose CLI authors
 
-    Licensed under the Apache License, Version 2.0 (the "License");
 
-    you may not use this file except in compliance with the License.
 
-    You may obtain a copy of the License at
 
-        http://www.apache.org/licenses/LICENSE-2.0
 
-    Unless required by applicable law or agreed to in writing, software
 
-    distributed under the License is distributed on an "AS IS" BASIS,
 
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
-    See the License for the specific language governing permissions and
 
-    limitations under the License.
 
- */
 
- package compose
 
- import (
 
- 	"context"
 
- 	"io"
 
- 	"github.com/compose-spec/compose-go/types"
 
- )
 
- // Service manages a compose project
 
- type Service interface {
 
- 	// Build executes the equivalent to a `compose build`
 
- 	Build(ctx context.Context, project *types.Project) error
 
- 	// Push executes the equivalent ot a `compose push`
 
- 	Push(ctx context.Context, project *types.Project) error
 
- 	// Pull executes the equivalent of a `compose pull`
 
- 	Pull(ctx context.Context, project *types.Project) error
 
- 	// Create executes the equivalent to a `compose create`
 
- 	Create(ctx context.Context, project *types.Project, opts CreateOptions) error
 
- 	// Start executes the equivalent to a `compose start`
 
- 	Start(ctx context.Context, project *types.Project, consumer LogConsumer) error
 
- 	// Stop executes the equivalent to a `compose stop`
 
- 	Stop(ctx context.Context, project *types.Project) error
 
- 	// Up executes the equivalent to a `compose up`
 
- 	Up(ctx context.Context, project *types.Project, options UpOptions) error
 
- 	// Down executes the equivalent to a `compose down`
 
- 	Down(ctx context.Context, projectName string, options DownOptions) error
 
- 	// Logs executes the equivalent to a `compose logs`
 
- 	Logs(ctx context.Context, projectName string, consumer LogConsumer, options LogOptions) error
 
- 	// Ps executes the equivalent to a `compose ps`
 
- 	Ps(ctx context.Context, projectName string) ([]ContainerSummary, error)
 
- 	// List executes the equivalent to a `docker stack ls`
 
- 	List(ctx context.Context) ([]Stack, error)
 
- 	// Convert translate compose model into backend's native format
 
- 	Convert(ctx context.Context, project *types.Project, options ConvertOptions) ([]byte, error)
 
- 	// RunOneOffContainer creates a service oneoff container and starts its dependencies
 
- 	RunOneOffContainer(ctx context.Context, project *types.Project, opts RunOptions) error
 
- }
 
- // CreateOptions group options of the Create API
 
- type CreateOptions struct {
 
- 	// Remove legacy containers for services that are not defined in the project
 
- 	RemoveOrphans bool
 
- 	// Recreate define the strategy to apply on existing containers
 
- 	Recreate string
 
- }
 
- // UpOptions group options of the Up API
 
- type UpOptions struct {
 
- 	// Detach will create services and return immediately
 
- 	Detach bool
 
- }
 
- // DownOptions group options of the Down API
 
- type DownOptions struct {
 
- 	// RemoveOrphans will cleanup containers that are not declared on the compose model but own the same labels
 
- 	RemoveOrphans bool
 
- 	// Project is the compose project used to define this app. Might be nil if user ran `down` just with project name
 
- 	Project *types.Project
 
- }
 
- // ConvertOptions group options of the Convert API
 
- type ConvertOptions struct {
 
- 	// Format define the output format used to dump converted application model (json|yaml)
 
- 	Format string
 
- }
 
- // RunOptions options to execute compose run
 
- type RunOptions struct {
 
- 	Service    string
 
- 	Command    []string
 
- 	Detach     bool
 
- 	AutoRemove bool
 
- 	Writer     io.Writer
 
- 	Reader     io.Reader
 
- }
 
- // PortPublisher hold status about published port
 
- type PortPublisher struct {
 
- 	URL           string
 
- 	TargetPort    int
 
- 	PublishedPort int
 
- 	Protocol      string
 
- }
 
- // ContainerSummary hold high-level description of a container
 
- type ContainerSummary struct {
 
- 	ID         string
 
- 	Name       string
 
- 	Project    string
 
- 	Service    string
 
- 	State      string
 
- 	Publishers []PortPublisher
 
- }
 
- // ServiceStatus hold status about a service
 
- type ServiceStatus struct {
 
- 	ID         string
 
- 	Name       string
 
- 	Replicas   int
 
- 	Desired    int
 
- 	Ports      []string
 
- 	Publishers []PortPublisher
 
- }
 
- // LogOptions defines optional parameters for the `Log` API
 
- type LogOptions struct {
 
- 	Services []string
 
- 	Tail     string
 
- 	Follow   bool
 
- }
 
- const (
 
- 	// STARTING indicates that stack is being deployed
 
- 	STARTING string = "Starting"
 
- 	// RUNNING indicates that stack is deployed and services are running
 
- 	RUNNING string = "Running"
 
- 	// UPDATING indicates that some stack resources are being recreated
 
- 	UPDATING string = "Updating"
 
- 	// REMOVING indicates that stack is being deleted
 
- 	REMOVING string = "Removing"
 
- 	// UNKNOWN indicates unknown stack state
 
- 	UNKNOWN string = "Unknown"
 
- 	// FAILED indicates that stack deployment failed
 
- 	FAILED string = "Failed"
 
- )
 
- const (
 
- 	// RecreateDiverged to recreate services which configuration diverges from compose model
 
- 	RecreateDiverged = "diverged"
 
- 	// RecreateForce to force service container being recreated
 
- 	RecreateForce = "force"
 
- 	// RecreateNever to never recreate existing service containers
 
- 	RecreateNever = "never"
 
- )
 
- // Stack holds the name and state of a compose application/stack
 
- type Stack struct {
 
- 	ID     string
 
- 	Name   string
 
- 	Status string
 
- 	Reason string
 
- }
 
- // LogConsumer is a callback to process log messages from services
 
- type LogConsumer interface {
 
- 	Log(service, container, message string)
 
- }
 
 
  |