Module: OneviewSDK::Rest
- Included in:
- Client
- Defined in:
- lib/oneview-sdk/rest.rb
Overview
Contains all of 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, wait_on_task = true) ⇒ Hash
Handles the response from a rest call.
-
#rest_api(type, path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful API request to OneView.
-
#rest_delete(path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful DELETE request to OneView.
-
#rest_get(path, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful GET request to OneView.
-
#rest_patch(path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful PATCH request to OneView.
-
#rest_post(path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful POST request to OneView.
-
#rest_put(path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful PUT request to OneView.
Instance Method Details
#response_handler(response, wait_on_task = true) ⇒ Hash
Handles the response from a rest call.
If an asynchronous task was started, this waits for it to complete.
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/oneview-sdk/rest.rb', line 134 def response_handler(response, wait_on_task = true) 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) unless wait_on_task @logger.debug "Waiting for task: response.header['location']" uri = response.header['location'] || JSON.parse(response.body)['uri'] # If task uri is not returned in header task = wait_for(uri) 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 BadRequest, "400 BAD REQUEST #{response.body}" when RESPONSE_CODE_UNAUTHORIZED raise Unauthorized, "401 UNAUTHORIZED #{response.body}" when RESPONSE_CODE_NOT_FOUND raise NotFound, "404 NOT FOUND #{response.body}" else raise RequestError, "#{response.code} #{response.body}" end end |
#rest_api(type, path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful API request to OneView
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/oneview-sdk/rest.rb', line 31 def rest_api(type, path, = {}, api_ver = @api_version) @logger.debug "Making :#{type} rest call to #{@url}#{path}" raise InvalidRequest, 'Must specify path' unless path uri = URI.parse(URI.escape(@url + path)) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == 'https' if @ssl_enabled http.cert_store = @cert_store if @cert_store else http.verify_mode = OpenSSL::SSL::VERIFY_NONE end http.read_timeout = @timeout if @timeout # Timeout for a request http.open_timeout = @timeout if @timeout # Timeout for a connection request = build_request(type, uri, , api_ver) 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 system's cert store" msg += ". Using cert store: #{ENV['SSL_CERT_FILE']}" if ENV['SSL_CERT_FILE'] msg += "\n 2. Run oneview-sdk-ruby cert import #{@url}" msg += "\n 3. Set the :ssl_enabled option to false for your client (NOT RECOMMENDED)" @logger.error msg raise e end |
#rest_delete(path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful DELETE request to OneView
115 116 117 |
# File 'lib/oneview-sdk/rest.rb', line 115 def rest_delete(path, = {}, api_ver = @api_version) rest_api(:delete, path, , api_ver) end |
#rest_get(path, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful GET request to OneView
63 64 65 |
# File 'lib/oneview-sdk/rest.rb', line 63 def rest_get(path, api_ver = @api_version) rest_api(:get, path, {}, api_ver) end |
#rest_patch(path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful PATCH request to OneView
102 103 104 |
# File 'lib/oneview-sdk/rest.rb', line 102 def rest_patch(path, = {}, api_ver = @api_version) rest_api(:patch, path, , api_ver) end |
#rest_post(path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful POST request to OneView
76 77 78 |
# File 'lib/oneview-sdk/rest.rb', line 76 def rest_post(path, = {}, api_ver = @api_version) rest_api(:post, path, , api_ver) end |
#rest_put(path, options = {}, api_ver = @api_version) ⇒ NetHTTPResponse
Makes a restful PUT request to OneView
89 90 91 |
# File 'lib/oneview-sdk/rest.rb', line 89 def rest_put(path, = {}, api_ver = @api_version) rest_api(:put, path, , api_ver) end |