core

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 16, 2023 License: MIT Imports: 7 Imported by: 17

Documentation

Index

Constants

View Source
const (
	IN  int = 0
	OUT     = 1
	ERR     = 2
	ENV     = 3
)
View Source
const (
	PENDING  int = 0
	APPROVED     = 1
	REJECTED     = 2
)
View Source
const (
	WAITING int = 0
	RUNNING     = 1
	SUCCESS     = 2
	FAILED      = 3
)

Variables

This section is empty.

Functions

func ConvertColonyArrayToJSON

func ConvertColonyArrayToJSON(colonies []*Colony) (string, error)

func ConvertCronArrayToJSON

func ConvertCronArrayToJSON(crons []*Cron) (string, error)

func ConvertExecutorArrayToJSON added in v1.0.1

func ConvertExecutorArrayToJSON(executors []*Executor) (string, error)

func ConvertFunctionArrayToJSON added in v1.0.1

func ConvertFunctionArrayToJSON(functions []*Function) (string, error)

func ConvertGeneratorArrayToJSON

func ConvertGeneratorArrayToJSON(generators []*Generator) (string, error)

func ConvertProcessArrayToJSON

func ConvertProcessArrayToJSON(processes []*Process) (string, error)

func ConvertProcessGraphArrayToJSON

func ConvertProcessGraphArrayToJSON(processGraphs []*ProcessGraph) (string, error)

func GenerateRandomID

func GenerateRandomID() string

func IsAttributeArraysEqual

func IsAttributeArraysEqual(attributes1 []Attribute, attributes2 []Attribute) bool

func IsColonyArraysEqual

func IsColonyArraysEqual(colonies1 []*Colony, colonies2 []*Colony) bool

func IsCronArraysEqual

func IsCronArraysEqual(crons1 []*Cron, crons2 []*Cron) bool

func IsExecutorArraysEqual added in v1.0.1

func IsExecutorArraysEqual(executors1 []*Executor, executors2 []*Executor) bool

func IsFunctionArraysEqual added in v1.0.1

func IsFunctionArraysEqual(functions1 []*Function, functions2 []*Function) bool

func IsGeneratorArraysEqual

func IsGeneratorArraysEqual(generators1 []*Generator, generators2 []*Generator) bool

func IsProcessArraysEqual

func IsProcessArraysEqual(processes1 []*Process, processes2 []*Process) bool

func IsProcessGraphArraysEqual

func IsProcessGraphArraysEqual(processGraphs1 []*ProcessGraph, processGraphs2 []*ProcessGraph) bool

Types

type Attribute

type Attribute struct {
	ID                   string `json:"attributeid"`
	TargetID             string `json:"targetid"`
	TargetColonyID       string `json:"targetcolonyid"`
	TargetProcessGraphID string `json:"targetprocessgraphid"`
	AttributeType        int    `json:"attributetype"`
	Key                  string `json:"key"`
	Value                string `json:"value"`
}

func ConvertJSONToAttribute

func ConvertJSONToAttribute(jsonString string) (Attribute, error)

func CreateAttribute

func CreateAttribute(targetID string,
	targetColonyID string,
	targetProcessGraphID string,
	attributeType int,
	key string,
	value string) Attribute

func (*Attribute) Equals

func (attribute *Attribute) Equals(attribute2 Attribute) bool

func (*Attribute) GenerateID

func (attribute *Attribute) GenerateID()

func (*Attribute) SetValue

func (attribute *Attribute) SetValue(value string)

func (*Attribute) ToJSON

func (attribute *Attribute) ToJSON() (string, error)

type Colony

type Colony struct {
	ID   string `json:"colonyid"`
	Name string `json:"name"`
}

func ConvertJSONToColony

func ConvertJSONToColony(jsonString string) (*Colony, error)

func ConvertJSONToColonyArray

func ConvertJSONToColonyArray(jsonString string) ([]*Colony, error)

func CreateColony

func CreateColony(id string, name string) *Colony

func (*Colony) Equals

func (colony *Colony) Equals(colony2 *Colony) bool

func (*Colony) SetID

func (colony *Colony) SetID(id string)

func (*Colony) ToJSON

func (colony *Colony) ToJSON() (string, error)

type Conditions

type Conditions struct {
	ColonyID     string   `json:"colonyid"`
	ExecutorIDs  []string `json:"executorids"`
	ExecutorType string   `json:"executortype"`
	Dependencies []string `json:"dependencies"`
}

type Cron

type Cron struct {
	ID                      string    `json:"cronid"`
	ColonyID                string    `json:"colonyid"`
	Name                    string    `json:"name"`
	CronExpression          string    `json:"cronexpression"`
	Interval                int       `json:"interval"`
	Random                  bool      `json:"random"`
	NextRun                 time.Time `json:"nextrun"`
	LastRun                 time.Time `json:"lastrun"`
	WorkflowSpec            string    `json:"workflowspec"`
	PrevProcessGraphID      string    `json:"prevprocessgraphid"`
	WaitForPrevProcessGraph bool      `json:"waitforprevprocessgraph"`
	CheckerPeriod           int       `json:"checkerperiod"`
}

func ConvertJSONToCron

func ConvertJSONToCron(jsonString string) (*Cron, error)

func ConvertJSONToCronArray

func ConvertJSONToCronArray(jsonString string) ([]*Cron, error)

func CreateCron

func CreateCron(colonyID string, name string, cronExpression string, interval int, random bool, workflowSpec string) *Cron

func (*Cron) Equals

func (cron *Cron) Equals(cron2 *Cron) bool

func (*Cron) HasExpired

func (cron *Cron) HasExpired() bool

func (*Cron) ToJSON

func (cron *Cron) ToJSON() (string, error)

type Data

type Data struct {
	Label string `json:"label"`
}

type Edge

type Edge struct {
	ID       string `json:"id"`
	Source   string `json:"source"`
	Target   string `json:"target"`
	Animated bool   `json:"animated"`
}

type Executor added in v1.0.1

type Executor struct {
	ID                string    `json:"executorid"`
	Type              string    `json:"executortype"`
	Name              string    `json:"executorname"`
	ColonyID          string    `json:"colonyid"`
	State             int       `json:"state"`
	RequireFuncReg    bool      `json:"requirefuncreg"`
	CommissionTime    time.Time `json:"commissiontime"`
	LastHeardFromTime time.Time `json:"lastheardfromtime"`
	Location          Location  `json:"location"`
}

func ConvertJSONToExecutor added in v1.0.1

func ConvertJSONToExecutor(jsonString string) (*Executor, error)

func ConvertJSONToExecutorArray added in v1.0.1

func ConvertJSONToExecutorArray(jsonString string) ([]*Executor, error)

func CreateExecutor added in v1.0.1

func CreateExecutor(id string,
	executorType string,
	name string,
	colonyID string,
	commissionTime time.Time,
	lastHeardFromTime time.Time) *Executor

func CreateExecutorFromDB added in v1.0.1

func CreateExecutorFromDB(id string,
	executorType string,
	name string,
	colonyID string,
	state int,
	requireFuncReg bool,
	commissionTime time.Time,
	lastHeardFromTime time.Time) *Executor

func (*Executor) Approve added in v1.0.1

func (executor *Executor) Approve()

func (*Executor) Equals added in v1.0.1

func (executor *Executor) Equals(executor2 *Executor) bool

func (*Executor) IsApproved added in v1.0.1

func (executor *Executor) IsApproved() bool

func (*Executor) IsPending added in v1.0.1

func (executor *Executor) IsPending() bool

func (*Executor) IsRejected added in v1.0.1

func (executor *Executor) IsRejected() bool

func (*Executor) Reject added in v1.0.1

func (executor *Executor) Reject()

func (*Executor) SetColonyID added in v1.0.1

func (executor *Executor) SetColonyID(colonyID string)

func (*Executor) SetID added in v1.0.1

func (executor *Executor) SetID(id string)

func (*Executor) ToJSON added in v1.0.1

func (executor *Executor) ToJSON() (string, error)

type Failure

type Failure struct {
	Status  int    `json:"status"`
	Message string `json:"message"`
}

func ConvertJSONToFailure

func ConvertJSONToFailure(jsonString string) (*Failure, error)

func CreateFailure

func CreateFailure(status int, message string) *Failure

func (*Failure) Equals

func (failure *Failure) Equals(failure2 *Failure) bool

func (*Failure) ToJSON

func (failure *Failure) ToJSON() (string, error)

type Function added in v1.0.1

type Function struct {
	FunctionID  string   `json:"functionid"`
	ExecutorID  string   `json:"executorid"`
	ColonyID    string   `json:"colonyid"`
	FuncName    string   `json:"funcname"`
	Desc        string   `json:"desc"`
	Counter     int      `json:"counter"`
	MinWaitTime float64  `json:"minwaittime"`
	MaxWaitTime float64  `json:"maxwaittime"`
	MinExecTime float64  `json:"minexectime"`
	MaxExecTime float64  `json:"maxexectime"`
	AvgWaitTime float64  `json:"avgwaittime"`
	AvgExecTime float64  `json:"avgexectime"`
	Args        []string `json:"args"`
}

func ConvertJSONToFunction added in v1.0.1

func ConvertJSONToFunction(jsonString string) (*Function, error)

func ConvertJSONToFunctionArray added in v1.0.1

func ConvertJSONToFunctionArray(jsonString string) ([]*Function, error)

func CreateFunction added in v1.0.1

func CreateFunction(functionID string,
	executorID string,
	colonyID string,
	funcName string,
	desc string,
	counter int,
	minWaitTime float64,
	maxWaitTime float64,
	minExecTime float64,
	maxExecTime float64,
	avgWaitTime float64,
	avgExecTime float64,
	args []string) *Function

func (*Function) Equals added in v1.0.1

func (function *Function) Equals(function2 *Function) bool

func (*Function) ToJSON added in v1.0.1

func (function *Function) ToJSON() (string, error)

type FunctionSpec added in v1.0.1

type FunctionSpec struct {
	NodeName    string            `json:"nodename"`
	FuncName    string            `json:"funcname"`
	Args        []interface{}     `json:"args"`
	Priority    int               `json:"priority"`
	MaxWaitTime int               `json:"maxwaittime"`
	MaxExecTime int               `json:"maxexectime"`
	MaxRetries  int               `json:"maxretries"`
	Conditions  Conditions        `json:"conditions"`
	Label       string            `json:"label"`
	Env         map[string]string `json:"env"`
}

func ConvertJSONToFunctionSpec added in v1.0.1

func ConvertJSONToFunctionSpec(jsonString string) (*FunctionSpec, error)

func CreateEmptyFunctionSpec added in v1.0.1

func CreateEmptyFunctionSpec() *FunctionSpec

func CreateFunctionSpec added in v1.0.1

func CreateFunctionSpec(nodeName string, funcName string, args []interface{}, colonyID string, executorIDs []string, executorType string, maxWaitTime int, maxExecTime int, maxRetries int, env map[string]string, dependencies []string, priority int, label string) *FunctionSpec

func (*FunctionSpec) AddDependency added in v1.0.1

func (funcSpec *FunctionSpec) AddDependency(dependency string)

func (*FunctionSpec) Equals added in v1.0.1

func (funcSpec *FunctionSpec) Equals(funcSpec2 *FunctionSpec) bool

func (*FunctionSpec) ToJSON added in v1.0.1

func (funcSpec *FunctionSpec) ToJSON() (string, error)

type Generator

type Generator struct {
	ID            string    `json:"generatorid"`
	ColonyID      string    `json:"colonyid"`
	Name          string    `json:"name"`
	WorkflowSpec  string    `json:"workflowspec"`
	Trigger       int       `json:"trigger"`
	LastRun       time.Time `json:"lastrun"`
	QueueSize     int       `json:"queuesize"`
	CheckerPeriod int       `json:"checkerperiod"`
}

func ConvertJSONToGenerator

func ConvertJSONToGenerator(jsonString string) (*Generator, error)

func ConvertJSONToGeneratorArray

func ConvertJSONToGeneratorArray(jsonString string) ([]*Generator, error)

func CreateGenerator

func CreateGenerator(colonyID string, name string, workflowSpec string, trigger int) *Generator

func (*Generator) Equals

func (generator *Generator) Equals(generator2 *Generator) bool

func (*Generator) ToJSON

func (generator *Generator) ToJSON() (string, error)

type GeneratorArg

type GeneratorArg struct {
	ID          string
	GeneratorID string
	ColonyID    string
	Arg         string
}

func CreateGeneratorArg

func CreateGeneratorArg(generatorID string, colonyID string, arg string) *GeneratorArg

type Location

type Location struct {
	Long float64 `json:"long"`
	Lat  float64 `json:"lat"`
}

type Node

type Node struct {
	ID       string   `json:"id"`
	Data     Data     `json:"data"`
	Position Position `json:"position"`
	Type     string   `json:"type"`
	Style    Style    `json:"style"`
}

type Position

type Position struct {
	X int `json:"x"`
	Y int `json:"y"`
}

type Process

type Process struct {
	ID                 string        `json:"processid"`
	AssignedExecutorID string        `json:"assignedexecutorid"`
	IsAssigned         bool          `json:"isassigned"`
	State              int           `json:"state"`
	PriorityTime       int64         `json:"prioritytime"`
	SubmissionTime     time.Time     `json:"submissiontime"`
	StartTime          time.Time     `json:"starttime"`
	EndTime            time.Time     `json:"endtime"`
	WaitDeadline       time.Time     `json:"waitdeadline"`
	ExecDeadline       time.Time     `json:"execdeadline"`
	Retries            int           `json:"retries"`
	Attributes         []Attribute   `json:"attributes"`
	FunctionSpec       FunctionSpec  `json:"spec"`
	WaitForParents     bool          `json:"waitforparents"`
	Parents            []string      `json:"parents"`
	Children           []string      `json:"children"`
	ProcessGraphID     string        `json:"processgraphid"`
	Input              []interface{} `json:"in"`
	Output             []interface{} `json:"out"`
	Errors             []string      `json:"errors"`
}

func ConvertJSONToProcess

func ConvertJSONToProcess(jsonString string) (*Process, error)

func ConvertJSONToProcessArray

func ConvertJSONToProcessArray(jsonString string) ([]*Process, error)

func CreateProcess

func CreateProcess(funcSpec *FunctionSpec) *Process

func CreateProcessFromDB

func CreateProcessFromDB(funcSpec *FunctionSpec,
	id string,
	assignedExecutorID string,
	isAssigned bool,
	state int,
	priorityTime int64,
	submissionTime time.Time,
	startTime time.Time,
	endTime time.Time,
	waitDeadline time.Time,
	execDeadline time.Time,
	errors []string,
	retries int,
	attributes []Attribute) *Process

func (*Process) AddChild

func (process *Process) AddChild(childID string)

func (*Process) AddParent

func (process *Process) AddParent(parentID string)

func (*Process) Assign

func (process *Process) Assign()

func (*Process) Clone

func (process *Process) Clone() *Process

func (*Process) Equals

func (process *Process) Equals(process2 *Process) bool

func (*Process) ProcessingTime

func (process *Process) ProcessingTime() time.Duration

func (*Process) SetAssignedExecutorID added in v1.0.1

func (process *Process) SetAssignedExecutorID(executorID string)

func (*Process) SetAttributes

func (process *Process) SetAttributes(attributes []Attribute)

func (*Process) SetEndTime

func (process *Process) SetEndTime(endTime time.Time)

func (*Process) SetProcessGraphID

func (process *Process) SetProcessGraphID(processGraphID string)

func (*Process) SetStartTime

func (process *Process) SetStartTime(startTime time.Time)

func (*Process) SetState

func (process *Process) SetState(state int)

func (*Process) SetSubmissionTime

func (process *Process) SetSubmissionTime(submissionTime time.Time)

-50000 - 50000

func (*Process) ToJSON

func (process *Process) ToJSON() (string, error)

func (*Process) Unassign

func (process *Process) Unassign()

func (*Process) WaitingTime

func (process *Process) WaitingTime() time.Duration

type ProcessGraph

type ProcessGraph struct {
	ID             string    `json:"processgraphid"`
	ColonyID       string    `json:"colonyid"`
	Roots          []string  `json:"rootprocessids"`
	State          int       `json:"state"`
	SubmissionTime time.Time `json:"submissiontime"`
	StartTime      time.Time `json:"starttime"`
	EndTime        time.Time `json:"endtime"`
	ProcessIDs     []string  `json:"processids"`
	Nodes          []Node    `json:"nodes"`
	Edges          []Edge    `json:"edges"`
	// contains filtered or unexported fields
}

func ConvertJSONToProcessGraph

func ConvertJSONToProcessGraph(jsonString string) (*ProcessGraph, error)

func ConvertJSONToProcessGraphArray

func ConvertJSONToProcessGraphArray(jsonString string) ([]*ProcessGraph, error)

func ConvertJSONToProcessGraphWithStorage

func ConvertJSONToProcessGraphWithStorage(jsonString string) (*ProcessGraph, error)

func CreateProcessGraph

func CreateProcessGraph(colonyID string) (*ProcessGraph, error)

func (*ProcessGraph) AddRoot

func (graph *ProcessGraph) AddRoot(processID string)

func (*ProcessGraph) Depth

func (graph *ProcessGraph) Depth(childProcessID string) (int, error)

func (*ProcessGraph) Equals

func (graph *ProcessGraph) Equals(graph2 *ProcessGraph) bool

func (*ProcessGraph) FailedProcesses

func (graph *ProcessGraph) FailedProcesses() (int, error)

func (*ProcessGraph) GetRoot

func (graph *ProcessGraph) GetRoot(childProcessID string) (*Process, error)

func (*ProcessGraph) Iterate

func (graph *ProcessGraph) Iterate(visitFunc func(process *Process) error) error

func (*ProcessGraph) Leaves

func (graph *ProcessGraph) Leaves() ([]string, error)

func (*ProcessGraph) Processes

func (graph *ProcessGraph) Processes() (int, error)

func (*ProcessGraph) Resolve

func (graph *ProcessGraph) Resolve() error

func (*ProcessGraph) RunningProcesses

func (graph *ProcessGraph) RunningProcesses() (int, error)

func (*ProcessGraph) SetStorage

func (graph *ProcessGraph) SetStorage(storage ProcessGraphStorage)

func (*ProcessGraph) SuccessfulProcesses

func (graph *ProcessGraph) SuccessfulProcesses() (int, error)

func (*ProcessGraph) ToJSON

func (graph *ProcessGraph) ToJSON() (string, error)

func (*ProcessGraph) UpdateProcessIDs

func (graph *ProcessGraph) UpdateProcessIDs() error

func (*ProcessGraph) WaitForParents

func (graph *ProcessGraph) WaitForParents() (int, error)

func (*ProcessGraph) WaitProcesses

func (graph *ProcessGraph) WaitProcesses() (int, error)

type ProcessGraphStorage

type ProcessGraphStorage interface {
	GetProcessByID(processID string) (*Process, error)
	SetProcessState(processID string, state int) error
	SetWaitForParents(processID string, waitForParent bool) error
	SetProcessGraphState(processGraphID string, state int) error
}

type Statistics

type Statistics struct {
	Colonies            int `json:"colonies"`
	Executors           int `json:"executors"`
	WaitingProcesses    int `json:"waitingprocesses"`
	RunningProcesses    int `json:"runningprocesses"`
	SuccessfulProcesses int `json:"successfulprocesses"`
	FailedProcesses     int `json:"failedprocesses"`
	WaitingWorkflows    int `json:"waitingworkflows"`
	RunningWorkflows    int `json:"runningworkflows"`
	SuccessfulWorkflows int `json:"successfulworkflows"`
	FailedWorkflows     int `json:"failedworkflows"`
}

func ConvertJSONToStatistics

func ConvertJSONToStatistics(jsonString string) (*Statistics, error)

func CreateStatistics

func CreateStatistics(colonies int,
	executors int,
	waitingProcesses int,
	runningProcesses int,
	successfulProcesses int,
	failedProcesses int,
	waitingWorkflows int,
	runningWorkflows int,
	successfulWorkflows int,
	failedWorkflows int) *Statistics

func (*Statistics) Equals

func (stat *Statistics) Equals(stat2 *Statistics) bool

func (*Statistics) ToJSON

func (stat *Statistics) ToJSON() (string, error)

type Style

type Style struct {
	Color      string `json:"color"`
	Background string `json:"background"`
}

type WorkflowSpec

type WorkflowSpec struct {
	ColonyID      string         `json:"colonyid"`
	FunctionSpecs []FunctionSpec `json:"functionspecs"`
}

func ConvertJSONToWorkflowSpec

func ConvertJSONToWorkflowSpec(jsonString string) (*WorkflowSpec, error)

func CreateWorkflowSpec

func CreateWorkflowSpec(colonyID string) *WorkflowSpec

func (*WorkflowSpec) AddFunctionSpec added in v1.0.1

func (workflowSpec *WorkflowSpec) AddFunctionSpec(funcSpec *FunctionSpec)

func (*WorkflowSpec) Equals

func (workflowSpec *WorkflowSpec) Equals(workflowSpec2 *WorkflowSpec) bool

func (*WorkflowSpec) ToJSON

func (workflowSpec *WorkflowSpec) ToJSON() (string, error)

Jump to

Keyboard shortcuts

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