Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Input ¶
type Input struct {
ResourceUid string `json:"resource_uid"`
ResourceType string `json:"resource_type"`
ResourceClass string `json:"resource_class"`
ResourceId string `json:"resource_id"`
ResourceParams map[string]interface{} `json:"resource_params"`
ResourceMetadata map[string]interface{} `json:"resource_metadata"`
// SourceWorkload is the name of the workload that first defined this resource or carries the params definition.
SourceWorkload string `json:"source_workload"`
// WorkloadServices is a map from workload name to the network NetworkService of another workload which defines
// the hostname and the set of ports it exposes.
WorkloadServices map[string]NetworkService `json:"workload_services"`
ResourceState map[string]interface{} `json:"resource_state"`
ComposeProjectName string `json:"compose_project_name"`
MountDirectoryPath string `json:"mount_directory_path"`
}
Input is the set of thins passed to the provisioner implementation. It provides context, previous state, and shared state used by all resources.
type NetworkService ¶
type NetworkService struct {
ServiceName string `yaml:"service_name"`
Ports map[string]ServicePort `json:"ports"`
}
NetworkService describes how to contact ports exposed by another workload
type ProvisionOutput ¶
type ProvisionOutput struct {
ProvisionerUri string `json:"-"`
ResourceState map[string]interface{} `json:"resource_state"`
ResourceOutputs map[string]interface{} `json:"resource_outputs"`
RelativeDirectories map[string]bool `json:"relative_directories"`
RelativeFileContents map[string]*string `json:"relative_file_contents"`
ComposeNetworks map[string]compose.NetworkConfig `json:"compose_networks"`
ComposeVolumes map[string]compose.VolumeConfig `json:"compose_volumes"`
ComposeServices map[string]compose.ServiceConfig `json:"compose_services"`
// For testing and legacy reasons, built in provisioners can set a direct lookup function
OutputLookupFunc project.OutputLookupFunc `json:"-"`
}
ProvisionOutput is the output returned from a provisioner implementation.
func (*ProvisionOutput) ApplyToStateAndProject ¶
func (po *ProvisionOutput) ApplyToStateAndProject(state *project.State, resUid project.ResourceUid, project *compose.Project) (*project.State, error)
ApplyToStateAndProject takes the outputs of a provisioning request and applies to the state, file tree, and docker compose project.
type Provisioner ¶
type Provisioner interface {
Uri() string
Match(resUid project.ResourceUid) bool
Provision(ctx context.Context, input *Input) (*ProvisionOutput, error)
}
func NewEphemeralProvisioner ¶
func NewEphemeralProvisioner(uri string, matchUid project.ResourceUid, inner func(ctx context.Context, input *Input) (*ProvisionOutput, error)) Provisioner
NewEphemeralProvisioner is mostly used for internal testing and uses the given provisioner function to provision an exact resource.
type ServicePort ¶
type ServicePort struct {
// Name is the name of the port from the workload specification
Name string `json:"name"`
// Port is the numeric port intended to be published
Port int `json:"port"`
// TargetPort is the port on the workload that hosts the actual traffic
TargetPort int `json:"target_port"`
// Protocol is TCP or UDP.
Protocol score.ServicePortProtocol `json:"protocol"`
}
Click to show internal directories.
Click to hide internal directories.