Sha256: 91f9eff17431ac5985184a0a2a88424c913dc6769439e7676f6c5b077dccec99

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

require 'grape'

module Cellect
  module Server
    class API < Grape::API
      format :json

      require 'cellect/server/api/helpers'
      require 'cellect/server/api/sets'
      require 'cellect/server/api/users'

      # GET /stats
      # 
      # Provides system load information
      get :stats do
        instance = Attention.instance
        usage = ->(keyword) do
          `ps axo #{ keyword }`.chomp.split("\n")[1..-1].collect(&:to_f).inject :+
        end

        {
          memory: usage.call('%mem'),
          cpu: usage.call('%cpu'),
          instance: instance.try(:id),
          status: Cellect::Server.adapter.status.merge({
            workflows_ready: Cellect::Server.ready?,
            workflows: Workflow.all.map(&:status)
          })
        }
      end

      resources :workflows do

        # GET /workflows
        # 
        # Returns a list of available workflows
        get do
          Cellect::Server.adapter.workflow_list
        end

        segment '/:workflow_id' do
          helpers Helpers
          mount Sets
          mount Users

          # GET /workflows/:workflow_id/status
          # 
          # Returns the workflow's status
          get :status do
            return four_oh_four unless workflow
            workflow.status
          end

          # POST /workflows/:workflow_id/reload
          # 
          # Reloads the workflow from the adapter
          post :reload do
            return four_oh_four unless workflow
            workflow.async.load_data
          end

          # DELETE /workflows/:workflow_id
          # 
          # Not implemented
          delete do
            # delete a workflow (maybe?)
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cellect-server-2.1.1 lib/cellect/server/api.rb