class WrataApi::ServerList

Class for working with several servers at once

Attributes

servers[RW]

@return [Array, Hash] list of servers

Public Class Methods

new(api) click to toggle source
# File lib/wrata_api/server_list.rb, line 9
def initialize(api)
  @api = api
  @servers = []
  @concurrent_operation_at_once = 5
end

Public Instance Methods

book() click to toggle source

Book each server @return [Nothing]

# File lib/wrata_api/server_list.rb, line 68
def book
  @servers.each do |current|
    @api.book_server(current['name'])
  end
end
concurrent_action() { |current_server| ... } click to toggle source

Turn on all servers in list

# File lib/wrata_api/server_list.rb, line 21
def concurrent_action
  splitted_servers = @servers.each_slice(@concurrent_operation_at_once).to_a
  splitted_servers.each do |each_slice|
    threads = []
    each_slice.each do |current_server|
      threads << Thread.new(current_server) do
        yield(current_server)
      end
    end
    threads.each(&:join)
  end
end
length() click to toggle source

@return [Integer] count of servers

# File lib/wrata_api/server_list.rb, line 16
def length
  @servers.length
end
power_off() click to toggle source

Power on all servers @return [Nothing]

# File lib/wrata_api/server_list.rb, line 52
def power_off
  concurrent_action do |server|
    @api.power_off_server(server['name'])
  end
end
power_on(size = nil) click to toggle source

Power on all servers @return [Nothing]

# File lib/wrata_api/server_list.rb, line 36
def power_on(size = nil)
  concurrent_action do |server|
    @api.power_on_server(server['name'], size)
  end
end
powered_off?() click to toggle source

@return [True, False] is all servers powered on?

# File lib/wrata_api/server_list.rb, line 59
def powered_off?
  @servers.each do |current|
    return false unless @api.powering_status(current['name']) == :off
  end
  true
end
powered_on?() click to toggle source

@return [True, False] is all servers powered on?

# File lib/wrata_api/server_list.rb, line 43
def powered_on?
  @servers.each do |current|
    return false unless @api.powering_status(current['name']) == :on
  end
  true
end
unbook() click to toggle source

Unbook each server @return [Nothing]

# File lib/wrata_api/server_list.rb, line 76
def unbook
  @servers.each do |current|
    @api.unbook_server(current['name'])
  end
end