Module: ILO_SDK::Rest
- Included in:
- Client
- Defined in:
- lib/ilo-sdk/rest.rb
Overview
Contains all the methods for making API REST calls
Constant Summary collapse
- RESPONSE_CODE_OK =
200- RESPONSE_CODE_CREATED =
201- RESPONSE_CODE_ACCEPTED =
202- RESPONSE_CODE_NO_CONTENT =
204- RESPONSE_CODE_BAD_REQUEST =
400- RESPONSE_CODE_UNAUTHORIZED =
401- RESPONSE_CODE_NOT_FOUND =
404
Instance Method Summary collapse
-
#response_handler(response) ⇒ Hash
Handle the response for rest call.
-
#rest_api(type, path, options = {}) ⇒ NetHTTPResponse
Make a restful API request to the iLO.
-
#rest_delete(path, options = {}) ⇒ Object
Make a restful DELETE request Parameters & return value align with those of the rest_api method above.
-
#rest_get(path) ⇒ Object
Make a restful GET request Parameters & return value align with those of the rest_api method above.
-
#rest_patch(path, options = {}) ⇒ Object
Make a restful PATCH request Parameters & return value align with those of the rest_api method above.
-
#rest_post(path, options = {}) ⇒ Object
Make a restful POST request Parameters & return value align with those of the rest_api method above.
-
#rest_put(path, options = {}) ⇒ Object
Make a restful PUT request Parameters & return value align with those of the rest_api method above.
Instance Method Details
#response_handler(response) ⇒ Hash
Handle the response for rest call.
If an asynchronous task was started, this waits for it to complete.
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/ilo-sdk/rest.rb', line 92 def response_handler(response) case response.code.to_i when RESPONSE_CODE_OK # Synchronous read/query begin return JSON.parse(response.body) rescue JSON::ParserError => e @logger.warn "Failed to parse JSON response. #{e}" return response.body end when RESPONSE_CODE_CREATED # Synchronous add return JSON.parse(response.body) when RESPONSE_CODE_ACCEPTED # Asynchronous add, update or delete return JSON.parse(response.body) # TODO: Remove when tested # TODO: Make this actually wait for the task # @logger.debug "Waiting for task: #{response.header['location']}" # task = wait_for(response.header['location']) # return true unless task['associatedResource'] && task['associatedResource']['resourceUri'] # resource_data = rest_get(task['associatedResource']['resourceUri']) # return JSON.parse(resource_data.body) when RESPONSE_CODE_NO_CONTENT # Synchronous delete return {} when RESPONSE_CODE_BAD_REQUEST raise "400 BAD REQUEST #{response.body}" when RESPONSE_CODE_UNAUTHORIZED raise "401 UNAUTHORIZED #{response.body}" when RESPONSE_CODE_NOT_FOUND raise "404 NOT FOUND #{response.body}" else raise "#{response.code} #{response.body}" end end |
#rest_api(type, path, options = {}) ⇒ NetHTTPResponse
Make a restful API request to the iLO
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/ilo-sdk/rest.rb', line 25 def rest_api(type, path, = {}) raise 'Must specify path' unless path raise 'Must specify type' unless type @logger.debug "Making :#{type} rest call to #{@host}#{path}" uri = URI.parse(URI.escape("#{@host}#{path}")) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == 'https' http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @ssl_enabled request = build_request(type, uri, ) response = http.request(request) @logger.debug " Response: Code=#{response.code}. Headers=#{response.to_hash}\n Body=#{response.body}" response rescue OpenSSL::SSL::SSLError => e msg = 'SSL verification failed for request. Please either:' msg += "\n 1. Install the certificate into your cert store" msg += ". Using cert store: #{ENV['SSL_CERT_FILE']}" if ENV['SSL_CERT_FILE'] msg += "\n 2. Set the :ssl_enabled option to false for your ilo client" @logger.error msg raise e end |
#rest_delete(path, options = {}) ⇒ Object
Make a restful DELETE request Parameters & return value align with those of the rest_api method above
74 75 76 |
# File 'lib/ilo-sdk/rest.rb', line 74 def rest_delete(path, = {}) rest_api(:delete, path, ) end |
#rest_get(path) ⇒ Object
Make a restful GET request Parameters & return value align with those of the rest_api method above
50 51 52 |
# File 'lib/ilo-sdk/rest.rb', line 50 def rest_get(path) rest_api(:get, path, {}) end |
#rest_patch(path, options = {}) ⇒ Object
Make a restful PATCH request Parameters & return value align with those of the rest_api method above
68 69 70 |
# File 'lib/ilo-sdk/rest.rb', line 68 def rest_patch(path, = {}) rest_api(:patch, path, ) end |
#rest_post(path, options = {}) ⇒ Object
Make a restful POST request Parameters & return value align with those of the rest_api method above
56 57 58 |
# File 'lib/ilo-sdk/rest.rb', line 56 def rest_post(path, = {}) rest_api(:post, path, ) end |
#rest_put(path, options = {}) ⇒ Object
Make a restful PUT request Parameters & return value align with those of the rest_api method above
62 63 64 |
# File 'lib/ilo-sdk/rest.rb', line 62 def rest_put(path, = {}) rest_api(:put, path, ) end |