Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var QueueNameReg = regexp.MustCompile(`^[a-z0-9A-Z-]{3,64}$`)
Queue name limitations
Functions ¶
This section is empty.
Types ¶
type Actions ¶ added in v0.3.3
type Actions interface { // List of actions defined in Makefile as targets Actions() ([]string, error) // Do target defined in Makefile. Time limit, global env and out can be nil. Do(ctx context.Context, name string, timeLimit time.Duration, globalEnv map[string]string, out io.Writer) error // Do scheduled actions based on last run DoScheduled(ctx context.Context, lastRun time.Time, globalEnv map[string]string) }
Lambda functions
type Cases ¶ added in v0.3.3
type Cases interface { // Create new lambda from remote Git repository. Will work only if SSH key set CreateFromGit(ctx context.Context, repo string) (string, error) // Create new lambda using provided template CreateFromTemplate(ctx context.Context, template templates.Template) (string, error) // Create empty lambda Create(ctx context.Context) (string, error) // Remove lamdba from index and definition Remove(uid string) error // Get underlying platform Platform() Platform // Get underlying queues manager Queues() Queues // Run scheduled actions from all lambda. Saves last run RunScheduledActions(ctx context.Context) // List of all templates without availability check Templates() (map[string]*templates.Template, error) // Content of SSH public key if set PublicSSHKey() ([]byte, error) }
High-level use-cases
type Config ¶ added in v0.3.3
type Definition ¶ added in v0.3.3
type FileSystem ¶ added in v0.3.3
type FileSystem interface { // List files and dirs ListFiles(path string) ([]types.File, error) // Get content of file ReadFile(path string, output io.Writer) error // Write content to file WriteFile(path string, input io.Reader) error // Ensure directory exists EnsureDir(path string) error // Remove selected file RemoveFile(path string) error // Rename local file RenameFile(src, dest string) error // Pack content of lambda to tar.gz Content(tarball io.Writer) error // Set content of lambda from tar.gz and apply changes (re-index) SetContent(tarball io.Reader) error }
type Lambda ¶ added in v0.3.3
type Lambda interface { FileSystem Actions Invokable // Manifest configuration Manifest() types.Manifest // Update manifest and apply changes (re-index) SetManifest(manifest types.Manifest) error // Running credentials Credentials() *types.Credential // Update credentials (could be null) (and apply ownership for files if needed) SetCredentials(creds *types.Credential) error // Remove lambda Remove() error }
Basic invokable entity
Highlights:
- can be executed
- can be destroyed
- can manage files
- doesn't know about UID and alias
type Platform ¶ added in v0.3.3
type Platform interface { // Resolved user credentials (could be null) Credentials() *types.Credential // Platform configuration Config() Config // Update and apply new configuration SetConfig(config Config) error // List of all lambdas manifests (unordered) with UID and aliases List() []Definition // Get lambda by UID (if indexed) FindByUID(uid string) (*Definition, error) // Get lambda by link/alias (if indexed) FindByLink(link string) (*Definition, error) // Make link to target UID. Could fail if no target UID exists or link already bound to another lambda. Returns definition of lambda Link(targetUID string, linkName string) (*Definition, error) // Remove link by name. Returns old linked lambda or null Unlink(linkName string) (*Definition, error) // Put existent lambda to platform, index it and apply. Add(uid string, lambda Lambda) error // Remove existent lambda from platform and index (doesn't call underlying Remove() method) Remove(uid string) // Invoke lambda with platform global environment and logs results to tracker (if set) Invoke(ctx context.Context, lambda Invokable, request types.Request, out io.Writer) error // Same as Find + Invoke, but caller has no control on NotFound error InvokeByUID(ctx context.Context, uid string, request types.Request, out io.Writer) error // Do lambda action target defined in Makefile with platform global environment. Time limit and out can be nil Do(ctx context.Context, lambda Lambda, action string, timeLimit time.Duration, out io.Writer) error }
Platform should index lambda, keep shared info (like env) and apply global configuration
Highlights:
- should manage index lambda by UID
- should manage index lambda by Alias
- should keep shared info
- remove from index doesn't destroy lambda
type Policies ¶ added in v0.3.5
type Policies interface { Validator // List all policies List() []Policy // Create new policy Create(policy string, definition PolicyDefinition) (*Policy, error) // Remove policy Remove(policy string) error // Update policy definition Update(policy string, definition PolicyDefinition) error // Apply policy for the resource Apply(lambda string, policy string) error // Clear applied policy for the lambda Clear(lambda string) error // Get policy by name or return error Get(policy string) (*Policy, error) // Find policy by lambda Find(lambda string) (*Policy, error) }
Manage policies for the all kind of resource. Lambda can have only one policy at one time, but one policy can be used by many lambdas.
type Policy ¶ added in v0.3.5
type Policy struct { ID string `json:"id"` Definition PolicyDefinition `json:"definition"` Lambdas types.JsonStringSet `json:"lambdas"` }
type PolicyDefinition ¶ added in v0.3.5
type PolicyDefinition struct { AllowedIP types.JsonStringSet `json:"allowed_ip,omitempty"` // limit incoming connections from list of IP AllowedOrigin types.JsonStringSet `json:"allowed_origin,omitempty"` // limit incoming connections by origin header Public bool `json:"public"` // if public, tokens are ignores Tokens map[string]string `json:"tokens,omitempty"` // limit request by value in Authorization header (token => title) }
type Queues ¶ added in v0.3.5
type Queues interface { // Put request to queue. If queue not exists, an error will be thrown Put(queue string, request *types.Request) error // Add new queue. See QueueNameReg for limitations Add(queue Queue) error // Remove queue and worker Remove(queue string) error // Assign queue to another lambda. If lambda is empty, queue will be stopped (but Put will still work) Assign(queue string, targetLambda string) error // List of all defined queue. List() []Queue // Find queues linked to lambda Find(targetLambda string) []Queue // Get queue by ID or return ErrNotExists Get(queue string) (*Queue, error) }
Queues manager. Manages queues and linked worker
Click to show internal directories.
Click to hide internal directories.