yellowjacket

0.2.0 • Public • Published

yellowjacket

Scalable task runner

Prerequisites

  • graphql
  • Backend (currently only rethinkdb is included)

Notes

  • current documentation has been quickly thrown together and will improve with future releases
  • Load balancing tested with a simple NGINX configuration

Example

Simple hello world with a rethinkdb backend

ES6

Setup yellowjacket
import * as graphql from 'graphql'
import rethinkdbdash from 'rethinkdbdash'
import { rethinkdb as RethinkDBBackend } from 'yellowjacket/backend'
import yellowjacket from 'yellowjacket'
import installer from 'yellowjacket/install'
let backend = new RethinkDBBackend(rethinkdbdash({ silent: true }), graphql)
 
// scheduler: takes a node list in and returns a prioritized list
// of acceptable runners via done callback
let scheduler = function (runner, nodeList, queue, done) {
  return done(null, [ runner.info() ]) // schedule on the current runner
}
 
// actions: list of actions that can be completed. returns potential status
// in done callback or defaults to SUCCESS
let actions = {
  print (runner, task, done) {
    console.log(JSON.stringify(task.context))
    done()
  }
}
If installing
installer(backend)
If using as a command line
yellowjacket(backend, undefined, actions, scheduler)
If using as a function call
let command = {
    target: 'runner',
    action: 'start',
    options: {
      host: 'localhost',
      port: 8080
    }
}
 
yellowjacket(backend, command, actions, scheduler)

Commands

Commands are constructed by creating an object with the following structure

{
  target: 'targetName',
  action: 'actionName',
  options: {
    optionName: optionValue,
    ...
  }
}

targets

runner

actions

  • add options
    • host {String} - hostname or IP accessible by other nodes
    • port {Int} - port to listen on
  • start
    • host {String} - host name or IP the runner was added with
    • port {Int} - port the runner was added with
    • loglevel: {LogLevelEnum} - Level of logging
    • logfile: {String} - Path to a log file
  • stop - host/port combo or ID
    • id {String} - runner ID
    • host {String} - host name or IP the runner was added with
    • port {Int} - port the runner was added with
  • list - no options lists all runners
    • host {String} - list runners with host
    • port {Int} - list runners with port
    • state {RunnerStateEnum} - list runner with state
    • zone {String} - list runner that belongs to zone with ID

CLI Examples

> cli runner add host localhost port 8080
> cli runner list
> cli runner start host localhost port 8080
> cli runner stop host localhost port 8080
zone

options

  • list - lists all zones
queue

options

  • list - lists all queued tasks
settings

options

  • list - lists all settings

types

LogLevelEnum

"silent" | "fatal" | "error" | "warn" | "info" | "debug" | "trace"

RunnerStateEnum

"ONLINE" | "OFFLINE" | "MAINTENANCE" | "UNKNOWN"

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.2.0
    0
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 0.2.0
    0
  • 0.1.0
    0

Package Sidebar

Install

npm i yellowjacket

Weekly Downloads

0

Version

0.2.0

License

MIT

Last publish

Collaborators

  • vbranden