Sha256: ea1ec2bd3091c43884ab97d0030b34cc40d65659a8c2a1306b65387f7a36f32f

Contents?: true

Size: 1.69 KB

Versions: 3

Compression:

Stored size: 1.69 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.reload_data
          end

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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cellect-server-3.0.2 lib/cellect/server/api.rb
cellect-server-3.0.1 lib/cellect/server/api.rb
cellect-server-3.0.0 lib/cellect/server/api.rb