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
2025
2026
 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.