Sha256: 659ecb748edd4155c29b20060be7d92df24f01da560a6f09fb0ec11ba4baa42b

Contents?: true

Size: 931 Bytes

Versions: 2

Compression:

Stored size: 931 Bytes

Contents

require 'ostruct'

class Etcd
  class Maintenance
    # Sadly these are the only alarm types supported by the api right now.
    ALARM_TYPES = {
      NONE: 0,
      NOSPACE: 1
    }

    ALARM_ACTIONS = {
      get: 0,
      activate: 1, # Should only be used in testing. Not a stable feature...
      deactivate: 2
    }

    def initialize(hostname, port, credentials, metadata = {})
      @stub = Etcdserverpb::Maintenance::Stub.new("#{hostname}:#{port}", credentials)
      @metadata = metadata
    end

    def member_status
      @stub.status(Etcdserverpb::StatusRequest.new, metadata: @metadata)
    end

    def alarms(action, member_id, alarm=:NONE)
      alarm = ALARM_TYPES[alarm]
      request = Etcdserverpb::AlarmRequest.new(
        action: ALARM_ACTIONS[action],
        memberID: member_id,
        alarm: action == :deactivate ? ALARM_TYPES[:NOSPACE] : alarm
      )
      @stub.alarm(request)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
etcdv3-0.1.3 lib/etcdv3/maintenance.rb
etcdv3-0.1.2 lib/etcdv3/maintenance.rb