module WrataApi::ServerMethods

Methods for getting server status

Public Instance Methods

book_server(server_name) click to toggle source

@param server_name [Server] server to book @return [Nothing]

# File lib/wrata_api/server_methods.rb, line 62
def book_server(server_name)
  uri = URI.parse("#{@uri}/queue/book_server")
  perform_post(uri, 'server' => server_name)
end
executing_test?(server_name) click to toggle source

@return [True, False] check if server execute some test

# File lib/wrata_api/server_methods.rb, line 48
def executing_test?(server_name)
  all_data = server_data(server_name)
  all_data.key?('test')
end
free_servers(count) click to toggle source

Got as much free servers as `count` @param count [Integer] how much servers to got @return [Array, Hash]

# File lib/wrata_api/server_methods.rb, line 16
def free_servers(count)
  free = ServerList.new(self)
  raise NotEnoughServerCount if count > servers.length

  servers.each do |single_server|
    free.servers << single_server if single_server['book_client_id'].nil?
    return free if free.length == count
  end
end
power_off_server(server_name) click to toggle source

@param server_name [Server] server to power on @return [Nothing]

# File lib/wrata_api/server_methods.rb, line 79
def power_off_server(server_name)
  return if powering_status(server_name) == :off

  unbook_server(server_name)
  uri = URI.parse("#{@uri}/servers/cloud_server_destroy")
  perform_post(uri, 'server' => server_name)
  wait_for_server_have_status(server_name, :off)
end
power_on_server(server_name, size = nil) click to toggle source

@param server_name [Server] server to power on @return [Nothing]

# File lib/wrata_api/server_methods.rb, line 69
def power_on_server(server_name, size = nil)
  return if powering_status(server_name) == :on

  uri = URI.parse("#{@uri}/servers/cloud_server_create")
  perform_post(uri, 'server' => server_name, 'size' => size)
  wait_for_server_have_status(server_name, :on)
end
powering_status(server_name) click to toggle source

@return [Symbol] if server is powered on or off

# File lib/wrata_api/server_methods.rb, line 34
def powering_status(server_name)
  all_data = server_data(server_name)
  status = all_data['_status']
  case status
  when 'created'
    :on
  when 'destroyed'
    :off
  else
    :other
  end
end
server_data(server_name) click to toggle source

@return [Hash] Return servers data

# File lib/wrata_api/server_methods.rb, line 27
def server_data(server_name)
  uri = URI.parse("#{@uri}/runner/updated_data")
  response = perform_get(uri, 'servers' => [{ name: server_name }].to_json)
  response['servers_data'].first
end
server_status_timeout_error(server, status) click to toggle source

@param server [String] name of server @param status [String] status to wait failed @return [String] error for server timeout

# File lib/wrata_api/server_methods.rb, line 108
def server_status_timeout_error(server, status)
  "Couldn't wait until #{server} have status "\
  "#{status} in specified timeout"
end
servers() click to toggle source

@return [Array, String] list of all servers

# File lib/wrata_api/server_methods.rb, line 8
def servers
  uri = URI.parse("#{@uri}/servers.json")
  perform_get(uri)
end
unbook_server(server_name) click to toggle source

@param server_name [Server] server to unbook @return [Nothing]

# File lib/wrata_api/server_methods.rb, line 55
def unbook_server(server_name)
  uri = URI.parse("#{@uri}/queue/unbook_server")
  perform_post(uri, 'server' => server_name)
end
wait_for_server_have_status(server, status) click to toggle source

Waiting until server have statue @param server [String] name of server @param status [Symbol] state to wait @return [Nothing]

# File lib/wrata_api/server_methods.rb, line 92
def wait_for_server_have_status(server, status)
  current_wait_time = 0
  loop do
    return if powering_status(server) == status

    @logger.info("Wait for state: #{status}: \
                  #{current_wait_time} of: #{@waiting_timeout}")
    sleep @between_request_timeout
    current_wait_time += @between_request_timeout
    raise(server_status_timeout_error(server, status)) if current_wait_time > @waiting_timeout
  end
end