Skip to content

nhz-io/nhz-io-abstract-resource-manager

Repository files navigation

AbstractResourceManager Class

Travis Build NPM Version

Install

npm i -S @nhz.io/abstract-resource-manager

Usage

const AbstractResourceManager = require('@nhz.io/abstract-resource-manager')

class Manager extends AbstractResourceManager {
  /* Implement the methods */
}

...

Literate Source

Manager

class AbstractResourceManager

Start managing resource

  manage: (resource) ->

    return unless resource = @register resource

    job = @getJob resource

    if job

      @stop job, resource if @shouldStop job, resource

      config = @needUpgrade job, resource

      job = @upgrade job, config if config

      @start job, resource if @shouldStart job, resource

Return the resource

    resource

Stop managing resouce

  unmanage: (resource) ->

    return unless resource = @unregister resource

    job = @getJob resource

    if job

      @stop job, resource if @shouldStop job, resource

      config = @needDowngrade job, resource

      job = @downgrade job, config if config

      @start job, resource if @shouldStart job, resource

Return the resource

    resource

Unimplemented methods with sane defaults

  register: (resource) -> resource

  unregister: (resource) -> resource

  getJob: (resource) -> null

  shouldStart: (job, resource) -> false

  shouldStop: (job, resource) -> false

  needUpgrade: (job, resource) -> null

  needDowngrade: (job, resource) -> null

  upgrade: (job, config) -> null

  downgrade: (job, config) -> null

  start: (job, resource) -> job

  stop: (job, resource) -> job

module.exports = AbstractResourceManager

Tests

test = require 'tape-async'

test 'AbstractResourceManager constructor', (t) ->
  t.plan 1

  manager = new AbstractResourceManager

  t.ok manager instanceof AbstractResourceManager

Version 0.1.1

License MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published