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, redirect_limit = 3) ⇒ 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.
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 165 166 167 168 169 |
# File 'lib/oneview-sdk/rest.rb', line 139 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, redirect_limit = 3) ⇒ NetHTTPResponse
Makes a restful API request to OneView
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 58 59 60 61 62 |
# File 'lib/oneview-sdk/rest.rb', line 32 def rest_api(type, path, = {}, api_ver = @api_version, redirect_limit = 3) @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, .dup, api_ver) response = http.request(request) @logger.debug " Response: Code=#{response.code}. Headers=#{response.to_hash}\n Body=#{response.body}" if response.class <= Net::HTTPRedirection && redirect_limit > 0 && response['location'] @logger.debug "Redirecting to #{response['location']}" return rest_api(type, response['location'], , api_ver, redirect_limit - 1) end 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
120 121 122 |
# File 'lib/oneview-sdk/rest.rb', line 120 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
68 69 70 |
# File 'lib/oneview-sdk/rest.rb', line 68 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
107 108 109 |
# File 'lib/oneview-sdk/rest.rb', line 107 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
81 82 83 |
# File 'lib/oneview-sdk/rest.rb', line 81 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
94 95 96 |
# File 'lib/oneview-sdk/rest.rb', line 94 def rest_put(path, = {}, api_ver = @api_version) rest_api(:put, path, , api_ver) end |