module WrataApi::ServerMethods
Methods for getting server status
Public Instance Methods
@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
@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
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
@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
@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
@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
@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
@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
@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
@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
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