Documentation
¶
Index ¶
- Constants
- type Dependency
- type Event
- type EventNotFoundError
- type InvalidEventDataError
- type InvalidTaskInputError
- type InvalidTaskOutputError
- type Parameter
- type ParameterWarning
- type Service
- func (s *Service) GetDependency(dependencyKey string) (*Dependency, error)
- func (s *Service) GetEvent(eventKey string) (*Event, error)
- func (s *Service) GetTask(taskKey string) (*Task, error)
- func (s *Service) RequireEventData(eventKey string, eventData map[string]interface{}) error
- func (s *Service) RequireTaskInputs(taskKey string, taskInputs map[string]interface{}) error
- func (s *Service) RequireTaskOutputs(taskKey string, taskOutputs map[string]interface{}) error
- func (s *Service) ValidateEventData(eventKey string, eventData map[string]interface{}) ([]*ParameterWarning, error)
- func (s *Service) ValidateTaskInputs(taskKey string, taskInputs map[string]interface{}) ([]*ParameterWarning, error)
- func (s *Service) ValidateTaskOutputs(taskKey string, taskOutputs map[string]interface{}) ([]*ParameterWarning, error)
- type StatusType
- type Task
- type TaskNotFoundError
- type TriggerType
- type Workflow
- type WorkflowPredicate
- type WorkflowTask
- type WorkflowTrigger
- type WorkflowTriggerFilter
Constants ¶
const MainServiceKey = "service"
MainServiceKey is key for main service.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Dependency ¶
type Dependency struct {
// Key is the key of dependency.
Key string `hash:"name:1" validate:"printascii"`
// Image is the Docker image.
Image string `hash:"name:2" validate:"printascii"`
// Volumes are the Docker volumes.
Volumes []string `hash:"name:3" validate:"unique,dive,printascii"`
// VolumesFrom are the docker volumes-from from.
VolumesFrom []string `hash:"name:4" validate:"unique,dive,printascii"`
// Ports holds ports configuration for container.
Ports []string `hash:"name:5" validate:"unique,dive,portmap"`
// Command is the Docker command which will be executed when container started.
Command string `hash:"name:6" validate:"printascii"`
// Argument holds the args to pass to the Docker container
Args []string `hash:"name:7" validate:"dive,printascii"`
// Env is a slice of environment variables in key=value format.
Env []string `hash:"name:8" validate:"unique,dive,env"`
}
Dependency represents a Docker container and it holds instructions about how it should run.
type Event ¶
type Event struct {
// Key is the key of event.
Key string `hash:"name:1" validate:"printascii"`
// Name is the name of event.
Name string `hash:"name:2" validate:"printascii"`
// Description is the description of event.
Description string `hash:"name:3" validate:"printascii"`
// Data holds the input parameters of event.
Data []*Parameter `hash:"name:4" validate:"dive,required"`
}
Event describes a service task.
type EventNotFoundError ¶ added in v0.2.0
EventNotFoundError is an error returned when corresponding event cannot be found in service.
func (*EventNotFoundError) Error ¶ added in v0.2.0
func (e *EventNotFoundError) Error() string
type InvalidEventDataError ¶ added in v0.2.0
type InvalidEventDataError struct {
EventKey string
ServiceName string
Warnings []*ParameterWarning
}
InvalidEventDataError is an error returned when the data of corresponding event is not valid.
func (*InvalidEventDataError) Error ¶ added in v0.2.0
func (e *InvalidEventDataError) Error() string
type InvalidTaskInputError ¶ added in v0.2.0
type InvalidTaskInputError struct {
TaskKey string
ServiceName string
Warnings []*ParameterWarning
}
InvalidTaskInputError is an error returned when the inputs of corresponding task are not valid.
func (*InvalidTaskInputError) Error ¶ added in v0.2.0
func (e *InvalidTaskInputError) Error() string
type InvalidTaskOutputError ¶ added in v0.3.0
type InvalidTaskOutputError struct {
TaskKey string
ServiceName string
Warnings []*ParameterWarning
}
InvalidTaskOutputError is an error returned when the outputs of corresponding task are not valid.
func (*InvalidTaskOutputError) Error ¶ added in v0.3.0
func (e *InvalidTaskOutputError) Error() string
type Parameter ¶
type Parameter struct {
// Key is the key of parameter.
Key string `hash:"name:1" validate:"printascii"`
// Name is the name of parameter.
Name string `hash:"name:2" validate:"printascii"`
// Description is the description of parameter.
Description string `hash:"name:3" validate:"printascii"`
// Type is the data type of parameter.
Type string `hash:"name:4" validate:"required,printascii,oneof=String Number Boolean Object Any"`
// Optional indicates if parameter is optional.
Optional bool `hash:"name:5"`
// Repeated is to have an array of this parameter
Repeated bool `hash:"name:6"`
// Definition of the structure of the object when the type is object
Object []*Parameter `hash:"name:7" validate:"unique,dive,required"`
}
Parameter describes task input parameters, output parameters of a task output and input parameters of an event.
type ParameterWarning ¶ added in v0.2.0
ParameterWarning contains a specific warning related to a parameter.
func (*ParameterWarning) String ¶ added in v0.2.0
func (p *ParameterWarning) String() string
type Service ¶
type Service struct {
// Hash is calculated from the combination of service's source and mesg.yml.
// It represents the service uniquely.
Hash hash.Hash `hash:"-" validate:"required"`
// Sid is the service id.
// It needs to be unique and can be used to access to service.
Sid string `hash:"name:1" validate:"required,printascii,max=63,domain"`
// Name is the service name.
Name string `hash:"name:2" validate:"required,printascii"`
// Description is service description.
Description string `hash:"name:3" validate:"printascii"`
// Tasks are the list of tasks that service can execute.
Tasks []*Task `hash:"name:4" validate:"dive,required"`
// Events are the list of events that service can emit.
Events []*Event `hash:"name:5" validate:"dive,required"`
// Dependencies are the Docker containers that service can depend on.
Dependencies []*Dependency `hash:"name:6" validate:"dive,required"`
// Configuration of the service
Configuration *Dependency `hash:"name:8" validate:"required"`
// Repository holds the service's repository url if it's living on
// a Git host.
Repository string `hash:"name:7" validate:"omitempty,uri"`
// Source is the hash id of service's source code on IPFS.
Source string `hash:"name:9" validate:"required,printascii"`
// Workflows is a list of workflows that the service implements
Workflows []*Workflow `hash:"name:10" validate:"dive,required"`
}
Service represents a MESG service.
func (*Service) GetDependency ¶ added in v0.11.0
func (s *Service) GetDependency(dependencyKey string) (*Dependency, error)
GetDependency returns dependency dependencyKey or a not found error.
func (*Service) RequireEventData ¶ added in v0.11.0
RequireEventData requires event datas to be matched with parameter schemas.
func (*Service) RequireTaskInputs ¶ added in v0.11.0
RequireTaskInputs requires task inputs to match with parameter schemas.
func (*Service) RequireTaskOutputs ¶ added in v0.11.0
RequireTaskOutputs requires task outputs to match with parameter schemas.
func (*Service) ValidateEventData ¶ added in v0.11.0
func (s *Service) ValidateEventData(eventKey string, eventData map[string]interface{}) ([]*ParameterWarning, error)
ValidateEventData produces warnings for event datas that doesn't satisfy their parameter schemas.
func (*Service) ValidateTaskInputs ¶ added in v0.11.0
func (s *Service) ValidateTaskInputs(taskKey string, taskInputs map[string]interface{}) ([]*ParameterWarning, error)
ValidateTaskInputs produces warnings for task inputs that doesn't satisfy their parameter schemas.
func (*Service) ValidateTaskOutputs ¶ added in v0.11.0
func (s *Service) ValidateTaskOutputs(taskKey string, taskOutputs map[string]interface{}) ([]*ParameterWarning, error)
ValidateTaskOutputs produces warnings for task outputs that doesn't satisfy their parameter schemas.
type StatusType ¶
type StatusType uint
StatusType of the service.
const ( UNKNOWN StatusType = iota STOPPED STARTING PARTIAL RUNNING )
Possible statuses for service.
func (StatusType) String ¶ added in v0.3.0
func (s StatusType) String() string
type Task ¶
type Task struct {
// Key is the key of task.
Key string `hash:"name:1" validate:"printascii"`
// Name is the name of task.
Name string `hash:"name:2" validate:"printascii"`
// Description is the description of task.
Description string `hash:"name:3" validate:"printascii"`
// Inputs are the definition of the execution inputs of task.
Inputs []*Parameter `hash:"name:4" validate:"dive,required"`
// Outputs are the definition of the execution results of task.
Outputs []*Parameter `hash:"name:5" validate:"dive,required"`
}
Task describes a service task.
type TaskNotFoundError ¶ added in v0.2.0
TaskNotFoundError is an error returned when corresponding task cannot be found in service.
func (*TaskNotFoundError) Error ¶ added in v0.2.0
func (e *TaskNotFoundError) Error() string
type TriggerType ¶ added in v0.12.0
type TriggerType uint
TriggerType is the type for the possible triggers for a workflow
const ( EVENT TriggerType = iota + 1 RESULT )
List of possible triggers for a workflow
type Workflow ¶ added in v0.12.0
type Workflow struct {
Trigger *WorkflowTrigger `hash:"name:1" validate:"required"`
Task *WorkflowTask `hash:"name:2" validate:"required"`
Key string `hash:"name:3" validate:"required"`
}
Workflow describes a workflow of a service
type WorkflowPredicate ¶ added in v0.12.0
type WorkflowPredicate uint
WorkflowPredicate is the type of conditions that can be applied in a filter of a workflow trigger
const (
EQ WorkflowPredicate = iota + 1
)
List of possible conditions for workflow's filter
type WorkflowTask ¶ added in v0.12.0
type WorkflowTask struct {
InstanceHash hash.Hash `hash:"name:1" validate:"required"`
TaskKey string `hash:"name:2" validate:"printascii"`
}
WorkflowTask describes the instructions for the workflow to execute a task
type WorkflowTrigger ¶ added in v0.12.0
type WorkflowTrigger struct {
InstanceHash hash.Hash `hash:"name:1" validate:"required"`
Key string `hash:"name:2" validate:"printascii,printascii"`
Type TriggerType `hash:"name:3" validate:"required"`
Filters []*WorkflowTriggerFilter `hash:"name:4" validate:"dive,required"`
}
WorkflowTrigger is an event that triggers a workflow
func (*WorkflowTrigger) Match ¶ added in v0.12.0
func (t *WorkflowTrigger) Match(trigger TriggerType, instanceHash hash.Hash, key string, data map[string]interface{}) bool
Match returns true if a workflow trigger is matching the given parameters
type WorkflowTriggerFilter ¶ added in v0.12.0
type WorkflowTriggerFilter struct {
Key string `hash:"name:1" validate:"required,printascii"`
Predicate WorkflowPredicate `hash:"name:2" validate:"required"`
Value interface{} `hash:"name:3"`
}
WorkflowTriggerFilter is the filter definition that can be applied to a workflow trigger
func (*WorkflowTriggerFilter) Match ¶ added in v0.12.0
func (f *WorkflowTriggerFilter) Match(inputs map[string]interface{}) bool
Match returns true the current filter matches the given data