executor

package module
v0.0.0-...-3868529 Latest Latest
Warning

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

Go to latest
Published: Apr 8, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

README

Executor

Note: This repository should be imported as code.cloudfoundry.org/executor.

Let me run that for you

Reporting issues and requesting features

Please report all issues and feature requests in cloudfoundry/diego-release.

Learn more about Diego and its components at diego-design-notes

Documentation

Index

Constants

View Source
const (
	ContainerOwnerProperty = "executor:owner"
	ContainerStateProperty = "garden.state"
)
View Source
const (
	HealthcheckTag      = "executor-healthcheck"
	HealthcheckTagValue = "executor-healthcheck"
)

Variables

View Source
var (
	ErrContainerGuidNotAvailable      = registerError("ContainerGuidNotAvailable", "container guid not available")
	ErrContainerNotCompleted          = registerError("ContainerNotCompleted", "container must be stopped before it can be deleted")
	ErrInsufficientResourcesAvailable = registerError("InsufficientResourcesAvailable", "insufficient resources available")
	ErrContainerNotFound              = registerError("ContainerNotFound", "container not found")
	ErrStepsInvalid                   = registerError("StepsInvalid", "steps invalid")
	ErrLimitsInvalid                  = registerError("LimitsInvalid", "container limits invalid")
	ErrGuidNotSpecified               = registerError("GuidNotSpecified", "container guid not specified")
	ErrInvalidTransition              = registerError("InvalidStateTransition", "container cannot transition to given state")
	ErrFailureToCheckSpace            = registerError("ErrFailureToCheckSpace", "failed to check available space")
	ErrInvalidSecurityGroup           = registerError("ErrInvalidSecurityGroup", "security group has invalid values")
	ErrNoProcessToStop                = registerError("ErrNoProcessToStop", "failed to find a process to stop")
)
View Source
var ErrUnknownEventType = errors.New("unknown event type")
View Source
var Errors = map[string]Error{}

Functions

func EnvironmentVariablesToModel

func EnvironmentVariablesToModel(envVars []EnvironmentVariable) []models.EnvironmentVariable

Types

type AllocationFailure

type AllocationFailure struct {
	AllocationRequest
	ErrorMsg string
}

func NewAllocationFailure

func NewAllocationFailure(req *AllocationRequest, msg string) AllocationFailure

func (*AllocationFailure) Error

func (fail *AllocationFailure) Error() string

type AllocationRequest

type AllocationRequest struct {
	Guid               string
	GenerateLogMetrics bool
	Resource
	Tags
}

func NewAllocationRequest

func NewAllocationRequest(guid string, resource *Resource, generateLogMetrics bool, tags Tags) AllocationRequest

func (*AllocationRequest) Validate

func (a *AllocationRequest) Validate() error

type BindMountMode

type BindMountMode uint8
const (
	BindMountModeRO BindMountMode = 0
	BindMountModeRW BindMountMode = 1
)

type CachedDependency

type CachedDependency struct {
	Name              string `json:"name"`
	From              string `json:"from"`
	To                string `json:"to"`
	CacheKey          string `json:"cache_key"`
	LogSource         string `json:"log_source"`
	ChecksumValue     string `json:"checksum_value"`
	ChecksumAlgorithm string `json:"checksum_algorithm"`
}

type CertificateProperties

type CertificateProperties struct {
	OrganizationalUnit []string `json:"organizational_unit"`
}

type Client

type Client interface {
	Ping(logger lager.Logger) error
	AllocateContainers(logger lager.Logger, traceID string, requests []AllocationRequest) []AllocationFailure
	GetContainer(logger lager.Logger, guid string) (Container, error)
	RunContainer(lager.Logger, string, *RunRequest) error
	UpdateContainer(lager.Logger, *UpdateRequest) error
	StopContainer(logger lager.Logger, traceID string, guid string) error
	DeleteContainer(logger lager.Logger, traceID string, guid string) error
	ListContainers(lager.Logger) ([]Container, error)
	GetBulkMetrics(lager.Logger) (map[string]Metrics, error)
	RemainingResources(lager.Logger) (ExecutorResources, error)
	TotalResources(lager.Logger) (ExecutorResources, error)
	GetFiles(logger lager.Logger, guid string, path string) (io.ReadCloser, error)
	VolumeDrivers(logger lager.Logger) ([]string, error)
	SubscribeToEvents(lager.Logger) (EventSource, error)
	Healthy(lager.Logger) bool
	SetHealthy(lager.Logger, bool)
	Cleanup(lager.Logger)
}

type Container

type Container struct {
	Guid string `json:"guid"`
	Resource
	RunInfo
	Tags                                  Tags
	State                                 State              `json:"state"`
	Routable                              bool               `json:"routable"`
	AllocatedAt                           int64              `json:"allocated_at"`
	ExternalIP                            string             `json:"external_ip"`
	InternalIP                            string             `json:"internal_ip"`
	RunResult                             ContainerRunResult `json:"run_result"`
	MemoryLimit                           uint64             `json:"memory_limit"`
	DiskLimit                             uint64             `json:"disk_limit"`
	AdvertisePreferenceForInstanceAddress bool               `json:"advertise_preference_for_instance_address"`
}

func NewContainerFromResource

func NewContainerFromResource(guid string, resource *Resource, tags Tags) Container

func NewReservedContainerFromAllocationRequest

func NewReservedContainerFromAllocationRequest(req *AllocationRequest, allocatedAt int64) Container

func (Container) Copy

func (newContainer Container) Copy() Container

func (*Container) HasTags

func (c *Container) HasTags(tags Tags) bool

func (*Container) IsCreated

func (c *Container) IsCreated() bool

func (*Container) TransitionToComplete

func (c *Container) TransitionToComplete(failed bool, failureReason string, retryable bool)

func (*Container) TransitionToCreate

func (c *Container) TransitionToCreate() error

func (*Container) TransitionToInitialize

func (c *Container) TransitionToInitialize(req *RunRequest) error

func (*Container) ValidateTransitionTo

func (c *Container) ValidateTransitionTo(newState State) bool

type ContainerCompleteEvent

type ContainerCompleteEvent struct {
	RawContainer Container `json:"container"`
	// contains filtered or unexported fields
}

func NewContainerCompleteEvent

func NewContainerCompleteEvent(container Container, traceID string) ContainerCompleteEvent

func (ContainerCompleteEvent) Container

func (e ContainerCompleteEvent) Container() Container

func (ContainerCompleteEvent) EventType

func (ContainerCompleteEvent) EventType() EventType

func (ContainerCompleteEvent) TraceID

func (e ContainerCompleteEvent) TraceID() string

type ContainerMetrics

type ContainerMetrics struct {
	MemoryUsageInBytes                  uint64        `json:"memory_usage_in_bytes"`
	DiskUsageInBytes                    uint64        `json:"disk_usage_in_bytes"`
	MemoryLimitInBytes                  uint64        `json:"memory_limit_in_bytes"`
	DiskLimitInBytes                    uint64        `json:"disk_limit_in_bytes"`
	TimeSpentInCPU                      time.Duration `json:"time_spent_in_cpu"`
	AbsoluteCPUEntitlementInNanoseconds uint64        `json:"absolute_cpu_entitlement_in_ns"`
	ContainerAgeInNanoseconds           uint64        `json:"container_age_in_ns"`
	RxInBytes                           *uint64       `json:"rx_in_bytes"`
	TxInBytes                           *uint64       `json:"tx_in_bytes"`
}

type ContainerReservedEvent

type ContainerReservedEvent struct {
	RawContainer Container `json:"container"`
	// contains filtered or unexported fields
}

func NewContainerReservedEvent

func NewContainerReservedEvent(container Container, traceID string) ContainerReservedEvent

func (ContainerReservedEvent) Container

func (e ContainerReservedEvent) Container() Container

func (ContainerReservedEvent) EventType

func (ContainerReservedEvent) EventType() EventType

func (ContainerReservedEvent) TraceID

func (e ContainerReservedEvent) TraceID() string

type ContainerRunResult

type ContainerRunResult struct {
	Failed        bool   `json:"failed"`
	FailureReason string `json:"failure_reason"`
	Retryable     bool

	Stopped bool `json:"stopped"`
}

type ContainerRunningEvent

type ContainerRunningEvent struct {
	RawContainer Container `json:"container"`
	// contains filtered or unexported fields
}

func NewContainerRunningEvent

func NewContainerRunningEvent(container Container, traceID string) ContainerRunningEvent

func (ContainerRunningEvent) Container

func (e ContainerRunningEvent) Container() Container

func (ContainerRunningEvent) EventType

func (ContainerRunningEvent) EventType() EventType

func (ContainerRunningEvent) TraceID

func (e ContainerRunningEvent) TraceID() string

type EnvironmentVariable

type EnvironmentVariable struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

func EnvironmentVariablesFromModel

func EnvironmentVariablesFromModel(envVars []*models.EnvironmentVariable) []EnvironmentVariable

type Error

type Error interface {
	error

	Name() string
}

type Event

type Event interface {
	EventType() EventType
}

type EventSource

type EventSource interface {
	Next() (Event, error)
	Close() error
}

type EventType

type EventType string
const (
	EventTypeInvalid EventType = ""

	EventTypeContainerComplete EventType = "container_complete"
	EventTypeContainerRunning  EventType = "container_running"
	EventTypeContainerReserved EventType = "container_reserved"
)

type ExecutorResources

type ExecutorResources struct {
	MemoryMB   int `json:"memory_mb"`
	DiskMB     int `json:"disk_mb"`
	Containers int `json:"containers"`
}

func NewExecutorResources

func NewExecutorResources(memoryMB, diskMB, containers int) ExecutorResources

func (*ExecutorResources) Add

func (r *ExecutorResources) Add(res *Resource)

func (ExecutorResources) Copy

func (*ExecutorResources) Subtract

func (r *ExecutorResources) Subtract(res *Resource) bool

type InnerContainer

type InnerContainer Container

type LifecycleEvent

type LifecycleEvent interface {
	TraceID() string
	Container() Container
	// contains filtered or unexported methods
}

type LogConfig

type LogConfig struct {
	Guid       string            `json:"guid"`
	Index      int               `json:"index"`
	SourceName string            `json:"source_name"`
	Tags       map[string]string `json:"tags"`
}

func (LogConfig) GetSourceNameAndTagsForLogging

func (l LogConfig) GetSourceNameAndTagsForLogging() (string, map[string]string)

type Metrics

type Metrics struct {
	MetricsConfig
	ContainerMetrics
}

type MetricsConfig

type MetricsConfig struct {
	Guid  string            `json:"guid"`
	Index int               `json:"index"`
	Tags  map[string]string `json:"tags"`
}

type Network

type Network struct {
	Properties map[string]string `json:"properties,omitempty"`
}

type PortMapping

type PortMapping struct {
	ContainerPort         uint16 `json:"container_port"`
	HostPort              uint16 `json:"host_port,omitempty"`
	ContainerTLSProxyPort uint16 `json:"container_tls_proxy_port,omitempty"`
	HostTLSProxyPort      uint16 `json:"host_tls_proxy_port,omitempty"`
}

type ProxyPortMapping

type ProxyPortMapping struct {
	AppPort   uint16 `json:"app_port"`
	ProxyPort uint16 `json:"proxy_port"`
}

type Resource

type Resource struct {
	MemoryMB int `json:"memory_mb"`
	DiskMB   int `json:"disk_mb"`
	MaxPids  int `json:"max_pids"`
}

func NewResource

func NewResource(memoryMB, diskMB, maxPids int) Resource

type RunInfo

type RunInfo struct {
	RootFSPath                    string                        `json:"rootfs"`
	CPUWeight                     uint                          `json:"cpu_weight"`
	Ports                         []PortMapping                 `json:"ports"`
	InternalRoutes                internalroutes.InternalRoutes `json:"internal_routes"`
	LogConfig                     LogConfig                     `json:"log_config"`
	MetricsConfig                 MetricsConfig                 `json:"metrics_config"`
	StartTimeoutMs                uint                          `json:"start_timeout_ms"`
	Privileged                    bool                          `json:"privileged"`
	CachedDependencies            []CachedDependency            `json:"cached_dependencies"`
	Setup                         *models.Action                `json:"setup"`
	Action                        *models.Action                `json:"run"`
	Monitor                       *models.Action                `json:"monitor"`
	CheckDefinition               *models.CheckDefinition       `json:"check_definition"`
	EgressRules                   []*models.SecurityGroupRule   `json:"egress_rules,omitempty"`
	Env                           []EnvironmentVariable         `json:"env,omitempty"`
	TrustedSystemCertificatesPath string                        `json:"trusted_system_certificates_path,omitempty"`
	VolumeMounts                  []VolumeMount                 `json:"volume_mounts"`
	Network                       *Network                      `json:"network,omitempty"`
	CertificateProperties         CertificateProperties         `json:"certificate_properties"`
	ImageUsername                 string                        `json:"image_username"`
	ImagePassword                 string                        `json:"image_password"`
	EnableContainerProxy          bool                          `json:"enable_container_proxy"`
	Sidecars                      []Sidecar                     `json:"sidecars"`
	LogRateLimitBytesPerSecond    int64                         `json:"log_rate_limit_bytes_per_second"`
}

type RunRequest

type RunRequest struct {
	Guid string
	RunInfo
	Tags
}

func NewRunRequest

func NewRunRequest(guid string, runInfo *RunInfo, tags Tags) RunRequest

type Sidecar

type Sidecar struct {
	Action   *models.Action `json:"run"`
	DiskMB   int32          `json:"disk_mb"`
	MemoryMB int32          `json:"memory_mb"`
}

type State

type State string
const (
	StateInvalid      State = ""
	StateReserved     State = "reserved"
	StateInitializing State = "initializing"
	StateCreated      State = "created"
	StateRunning      State = "running"
	StateCompleted    State = "completed"
)

type Tags

type Tags map[string]string

func (Tags) Add

func (t Tags) Add(other Tags)

func (Tags) Copy

func (t Tags) Copy() Tags

type UpdateRequest

type UpdateRequest struct {
	Guid           string
	InternalRoutes internalroutes.InternalRoutes
	MetricTags     map[string]string
}

func NewUpdateRequest

func NewUpdateRequest(guid string, internalRoutes internalroutes.InternalRoutes, metricTags map[string]string) UpdateRequest

type VolumeMount

type VolumeMount struct {
	Driver        string                 `json:"driver"`
	VolumeId      string                 `json:"volume_id"`
	Config        map[string]interface{} `json:"config"`
	ContainerPath string                 `json:"container_path"`
	Mode          BindMountMode          `json:"mode"`
}

Directories

Path Synopsis
containerstore/containerstorefakes
Code generated by counterfeiter.
Code generated by counterfeiter.
event/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
log_streamer/fake_log_streamer
Code generated by counterfeiter.
Code generated by counterfeiter.
transformer/faketransformer
Code generated by counterfeiter.
Code generated by counterfeiter.
uploader/fake_uploader
This file was generated by counterfeiter
This file was generated by counterfeiter
Code generated by counterfeiter.
Code generated by counterfeiter.
Package gardenhealth contains logic to periodically verify that basic garden container functionality is working.
Package gardenhealth contains logic to periodically verify that basic garden container functionality is working.
fakegardenhealth
Code generated by counterfeiter.
Code generated by counterfeiter.
fakeguidgen
Code generated by counterfeiter.
Code generated by counterfeiter.
configuration/configurationfakes
Code generated by counterfeiter.
Code generated by counterfeiter.
fakes
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

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