UppityRobot

Command line wrapper for the UptimeRobot API (wrapper).

Installation

Requirements:

  • Ruby
  • Bundler
  • UPTIMEROBOT_API_KEY environment variable
gem install uppityrobot

To avoid having to prefix UPTIMEROBOT_API_KEY before each command run:

export UPTIMEROBOT_API_KEY=${key}

To persist between terminal sessions add the key to .bashrc or equivalent.

Usage

Raw API

uppityrobot exec --help
uppityrobot e --help # `e` can be used if preferred
uppityrobot exec getAlertContacts | jq . # pretty formatted using jq
uppityrobot exec getMonitors

Monitors

uppityrobot monitors --help
uppityrobot m --help # `m` can be used if preferred

Group commands:

# LIST
uppityrobot monitors list # all monitors
uppityrobot monitors list --csv ~/monitors.csv # output to terminal (json) and save as csv
uppityrobot monitors list --search aspace # search within friendly_name and url
uppityrobot monitors list --filter '{"friendly_name": "^aspace-"}' # monitors matching regex
uppityrobot monitors list --filter '{"friendly_name": "^aspace-"}' --csv ~/aspace.csv
# filter operates on the response data so can be combined with search (and csv)
uppityrobot monitors list --search aspace --filter '{"status": 0}' # technically a regex: ^0$'

# EXEC
uppityrobot monitors exec pause aspace # pause all monitors matching "aspace"
uppityrobot monitors exec start aspace # start all monitors matching "aspace"
uppityrobot monitors exec pause aspace --filter '{"status": 2}' # only pause running monitors
uppityrobot monitors exec start aspace --filter '{"status": 0}' # only start paused monitors

# UPDATE
uppityrobot monitors update --help
uppityrobot monitors update csv ~/aspace.csv # update monitors from csv
uppityrobot monitors update json ~/aspace.json # update monitors from json file
uppityrobot monitors update json '[{"id": 1, "friendly_name": "newName"}]' # rename monitor using json string

Individual commands:

# CREATE
uppityrobot monitors create archivesspace https://staff.archivesspace.edu 123-456

# DELETE
uppityrobot monitors delete id 1
uppityrobot monitors delete name archivesspace

Development

Clone the repository then run:

# install dependencies
./bin/setup

# interactive console
./bin/console

# run the tests
bundle exec rake # runs all tests and rubocop
bundle exec cucumber features
bundle exec rspec

# install locally
bundle exec rake install
gem uninstall uppityrobot

Console examples

client = UppityRobot::Client.new(:getMonitors, {})
client.paginate.each { |r, o, t| puts o; puts r.inspect; }

client = UppityRobot::Client.new(:getMonitors, {search: 'aspace'})
client.filter({'friendly_name' => 'columbia'}).each { |m| puts m.inspect; }

Including UppityRobot tasks in another project

require "uppityrobot"
spec = Gem::Specification.find_by_name("uppityrobot")
load File.join(spec.gem_dir, "lib", "uppityrobot", "Rakefile")

Release

gem install gem-release
# https://github.com/svenfuchs/gem-release#gem-bump
gem bump --version $VERSION --tag
# i.e.
gem bump --version minor --tag --pretend # dryrun
gem bump --version minor --tag # do it for real

bundle
git commit --amend # needed via Rakefile
# PR and merge: release is published via Github Actions

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/lyrasis/uppityrobot.

License

The gem is available as open source under the terms of the MIT License.