Project

polyseerio

0.0
No commit activity in last 3 years
No release in over 3 years
The official Polyseer.io SDK for Ruby.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

= 12.0.0
= 3.5.0
= 0.46.0

Runtime

 Project Readme

Alt text

Polyseer.io SDK for Ruby

The official Polyseer.io SDK for Ruby. Detailed API information can be found at (https://polyseer.io/documentation).

About

Polyseer.io is an Integrated Development Platform that instantly provides teams with the resources needed to build, support, and maintain world class software products.

Requirements

  • Ruby
  • gem

Installation

To install, run:

gem install polyseerio

To add to your project Gemfile, insert:

gem 'polyseerio'

Example

Be sure to check out the examples in /example.

Environment Variables

Certain values can be set in environment variables:

  • POLYSEERIO_TOKEN access-token used for API calls
  • RAILS_ENV the current environment
  • POLYSEERIO_LOG_LEVEL SDK logging level

Usage

The SDK provides an agent that allows for immediate integration as well as direct platform interactions.

Example: (Quick start)

include 'polyseerio'

client = Polyseerio.start
client.instance.fact('foo', 'bar').execute.value

Example: (SDK)

include 'polyseerio'

client = Polyseerio.make
client.Event.create(name: 'Testing').execute.value

Design

All Polyseer.io SDK's make use of Promises for async calls. Promises allow for delaying and chaining async work.

  • Provides direct platform calls as well as a Polyseer.io Ruby agent.
  • All client SDK calls return a Concurrent::Promise.
  • Supports functional style programming.
  • Supports object-oriented style programming.
    • ORM style instances. E.g. environment.save(), alert.trigger();
  • A resources environment can be deduced or explicitly passed to SDK calls through the options param.
  • API calls made using the https:// protocol.

Example

Be sure to check out the examples in /example.

SDK Resources

Use of the SDK starts with the creation of a client. To construct a client instance, you may call either Polyseerio.start or Polyseerio.make. Once a client has been created you may use any of its resources.

Polyseerio

  • Polyseerio
    • .make(options = {}) ⇒ Polyseerio::Client
      • Create a client.
      • options (Hash) see Polyseerio.start options.
        • :deduce (Boolean) if the environment should be deduced when not supplied
        • :env (String) environment variable that holds the current environment
        • :timeout (Integer) integer containing number of ms to wait for server responses
        • :token (String) an api token
        • :token_env (String) if no token is provided, this environment variable will be checked
        • :upsert_env (Boolean) if an environment cannot be found it will be created
        • :version (String) api version to use
    • .start(options = {}) ⇒ Polyseerio::Client
      • Create a client and start an Agent.
      • options (Hash)
        • :agent (Hash) agent options (see client.start_agent options)
    • ::Enum
      • ::Color (Hash) platform color values
      • ::Determiner (Hash) expectation deteriner types
      • ::Direction (Hash) instance direction types
      • ::Icon (Hash) platform icon types
      • ::Protocol (Hash) alert protocol types
      • ::Strategy (Hash) instance attachment strategies
      • ::Subtype (Hash) instance subtypes
      • ::Type (Hash) resource types

Polyseerio::Client

  • client
    • .current_environment ⇒ client.Environment
      • Resolves the current environment IF it has been deduced.
    • .start_agent(options = {}) ⇒ Polyseerio::Client
      • Starts the Polyseer.io agent for this client.
      • options
        • .attach (Boolean)
        • .attach_strategy (Symbol)
        • .name (String) instance name (will be used as a unique id)
        • .description (String) a description of this instance
        • .group (String) what group this instance belongs to
        • .direction (String) the monitoring direction (inbound) // force this
        • .subtype (Polyseerio::Enum::Subtype) the instance subtype: periodic or long_running.
        • .expectation will be upserted for this instance
          • .is_alive (Boolean) create an expectation that this process is alive
        • .fact
          • .engine (Boolean) the current ruby engine
          • .gid (Boolean) the group if othe process is running under
          • .launch_arguments (Boolean) command used to launch the instance
          • .pid (Boolean) the id of the process
          • .platform (Boolean) the operating platform of
          • .ruby_version (Boolean) the version of ruby being used
          • .uid (Boolean) user id the process is running as
        • .metric
          • .cpu (Boolean) track user and system cpu usage
          • .memory (Boolean) track memory usage
          • .uptime (Boolean) track process uptime
        • .event
          • .start (Boolean) event notice when agent starts
          • .stop (Boolean) event notice when agent stops
        • .process_event
          • .exit (Boolean) event notice on process exit

Alert

  • .Alert
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .find_by_id(id, options = {})
    • .find_by_name(name, options = {})
    • .new(attributes = {}) ⇒ client.Alert
      • .remove()
      • .save()
      • .trigger(payload = {})
    • .remove(id, options = {})
    • .trigger(id, payload, options = {})
    • .update(id, updates, options = {})

Channel

  • .Channel
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .find_by_id(id, options = {})
    • .find_by_name(name, options = {})
    • .message(id, content, options = {})
    • .new(attributes = {}) ⇒ client.Channel
      • .message(content)
      • .remove()
      • .save()
    • .remove(id, options = {})
    • .update(id, updates, options = {})

Environment

  • .Environment
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .find_by_id(id, options = {})
    • .find_by_name(name, options = {})
    • .message(id, content, options = {})
    • .new(attributes = {}) ⇒ client.Environment
      • .message(content)
      • .remove()
      • .save()
    • .remove(id, options = {})
    • .update(id, payload = {}, options = {})

Event

  • .Event
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .find_by_id(id, options = {})
    • .new(attributes = {}) ⇒ client.Event
      • .save()

Expectation

  • .Expectation
    • .check(id, options = {})
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .find_by_id(id, options = {})
    • .find_by_name(name, options = {})
    • .new(attributes = {}) ⇒ client.Expectation
      • .check()
      • .remove()
      • .save()
    • .remove(id, options = {})
    • .update(id, updates, options = {})

Instance

  • .Instance
    • .attach(options = {})
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .find_by_id(id, options = {})
    • .find_by_name(name, options = {})
    • .new(attributes = {}) ⇒ client.Instance
      • .add_fact(key, resolver)
        • Add a fact to the attach monitoring loop.
        • key (symbol)
        • resolver (string|number|block)
      • .add_gauge(key, resolver)
        • Add a gauge to the attach monitoring loop.
        • key (symbol)
        • resolver (string|number|block)
      • .attach()
        • Start inbound monitoring.
      • .detach()
        • Terminate inbound monitoring.
      • .fact(key, value)
        • Send a one-off fact.
      • .gauge(key, value)
        • Send a one-off gauge metric.
      • .remove()
      • .save()
    • .remove(id, options = {})
    • .update(id, updates, options = {})

Logic Block

  • .LogicBlock
    • .create(attributes = {}, options = {})
    • .execute(id, options = {})
    • .find(query = {}, options = {})
    • .find_by_id(id, options = {})
    • .find_by_name(name, options = {})
    • .new(attributes = {}) ⇒ client.LogicBlock
      • .execute()
      • .remove()
      • .save()
    • .remove(id, options = {})
    • .update(id, updates, options = {})

Member

  • .Member
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .find_by_id(id, options = {})
    • .new(attributes = {}) ⇒ client.Member
      • .remove()
      • .save()
    • .remove(id, options = {})
    • .update(id, updates, options = {})

Settings

  • .Settings
    • .retrieve()
    • .update(updates, options = {})

Task

  • .Task
    • .create(attributes = {}, options = {})
    • .find(query = {}, options = {})
    • .find_by_id(id, options = {})
    • .new(attributes = {}) ⇒ client.Task
      • .remove()
      • .save()
    • .remove(id, options = {})
    • .update(id, updates = {}, options = {})

Building

To test, build, and install locally:

make

To build and install:

make build

Testing

Testing requires:

  • Make

Install gems locally by running:

make install

Then run a command below based on what test suite you need to run.

Lint

make lint

Unit

make unit-test

Integration

make integration-test

Validation

Requires the environment to have a root level access-token defined as:

export POLYSEERIO_TOKEN=a-test-root-key

make validation-test

All

make test

Debugging

Set the environment variable POLYSEERIO_LOG_LEVEL to debug in order to get detailed logging information.