Class: Vra::CatalogRequest
- Inherits:
-
Object
- Object
- Vra::CatalogRequest
- Defined in:
- lib/vra/catalog_request.rb
Instance Attribute Summary collapse
-
#catalog_id ⇒ Object
readonly
Returns the value of attribute catalog_id.
-
#catalog_item ⇒ Object
readonly
Returns the value of attribute catalog_item.
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#cpus ⇒ Object
Returns the value of attribute cpus.
-
#custom_fields ⇒ Object
readonly
Returns the value of attribute custom_fields.
-
#lease_days ⇒ Object
Returns the value of attribute lease_days.
-
#memory ⇒ Object
Returns the value of attribute memory.
-
#notes ⇒ Object
Returns the value of attribute notes.
-
#requested_for ⇒ Object
Returns the value of attribute requested_for.
- #subtenant_id ⇒ Object
Instance Method Summary collapse
- #delete_parameter(key) ⇒ Object
-
#initialize(client, catalog_id, opts = {}) ⇒ CatalogRequest
constructor
A new instance of CatalogRequest.
- #parameters ⇒ Object
- #request_payload ⇒ Object
- #set_parameter(key, type, value) ⇒ Object
- #submit ⇒ Object
- #validate_params! ⇒ Object
Constructor Details
#initialize(client, catalog_id, opts = {}) ⇒ CatalogRequest
Returns a new instance of CatalogRequest.
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/vra/catalog_request.rb', line 25 def initialize(client, catalog_id, opts={}) @client = client @catalog_id = catalog_id @cpus = opts[:cpus] @memory = opts[:memory] @requested_for = opts[:requested_for] @lease_days = opts[:lease_days] @notes = opts[:notes] @subtenant_id = opts[:subtenant_id] @additional_params = Vra::RequestParameters.new @catalog_item = Vra::CatalogItem.new(client, id: catalog_id) end |
Instance Attribute Details
#catalog_id ⇒ Object (readonly)
Returns the value of attribute catalog_id.
21 22 23 |
# File 'lib/vra/catalog_request.rb', line 21 def catalog_id @catalog_id end |
#catalog_item ⇒ Object (readonly)
Returns the value of attribute catalog_item.
21 22 23 |
# File 'lib/vra/catalog_request.rb', line 21 def catalog_item @catalog_item end |
#client ⇒ Object (readonly)
Returns the value of attribute client.
21 22 23 |
# File 'lib/vra/catalog_request.rb', line 21 def client @client end |
#cpus ⇒ Object
Returns the value of attribute cpus.
23 24 25 |
# File 'lib/vra/catalog_request.rb', line 23 def cpus @cpus end |
#custom_fields ⇒ Object (readonly)
Returns the value of attribute custom_fields.
21 22 23 |
# File 'lib/vra/catalog_request.rb', line 21 def custom_fields @custom_fields end |
#lease_days ⇒ Object
Returns the value of attribute lease_days.
23 24 25 |
# File 'lib/vra/catalog_request.rb', line 23 def lease_days @lease_days end |
#memory ⇒ Object
Returns the value of attribute memory.
23 24 25 |
# File 'lib/vra/catalog_request.rb', line 23 def memory @memory end |
#notes ⇒ Object
Returns the value of attribute notes.
23 24 25 |
# File 'lib/vra/catalog_request.rb', line 23 def notes @notes end |
#requested_for ⇒ Object
Returns the value of attribute requested_for.
23 24 25 |
# File 'lib/vra/catalog_request.rb', line 23 def requested_for @requested_for end |
#subtenant_id ⇒ Object
51 52 53 |
# File 'lib/vra/catalog_request.rb', line 51 def subtenant_id @subtenant_id || catalog_item.subtenant_id end |
Instance Method Details
#delete_parameter(key) ⇒ Object
43 44 45 |
# File 'lib/vra/catalog_request.rb', line 43 def delete_parameter(key) @additional_params.delete(key) end |
#parameters ⇒ Object
47 48 49 |
# File 'lib/vra/catalog_request.rb', line 47 def parameters @additional_params.all_entries end |
#request_payload ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/vra/catalog_request.rb', line 64 def request_payload payload = { '@type' => 'CatalogItemRequest', 'catalogItemRef' => { 'id' => @catalog_id }, 'organization' => { 'tenantRef' => catalog_item.tenant_id, 'subtenantRef' => subtenant_id }, 'requestedFor' => @requested_for, 'state' => 'SUBMITTED', 'requestNumber' => 0, 'requestData' => { 'entries' => [ Vra::RequestParameter.new('provider-blueprintId', 'string', catalog_item.blueprint_id).to_h, Vra::RequestParameter.new('provider-provisioningGroupId', 'string', subtenant_id).to_h, Vra::RequestParameter.new('requestedFor', 'string', @requested_for).to_h, Vra::RequestParameter.new('provider-VirtualMachine.CPU.Count', 'integer', @cpus).to_h, Vra::RequestParameter.new('provider-VirtualMachine.Memory.Size', 'integer', @memory).to_h, Vra::RequestParameter.new('provider-VirtualMachine.LeaseDays', 'integer', @lease_days).to_h, Vra::RequestParameter.new('provider-__Notes', 'string', @notes).to_h ] } } parameters.each do |entry| payload['requestData']['entries'] << entry.to_h end payload end |
#set_parameter(key, type, value) ⇒ Object
39 40 41 |
# File 'lib/vra/catalog_request.rb', line 39 def set_parameter(key, type, value) @additional_params.set(key, type, value) end |
#submit ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/vra/catalog_request.rb', line 97 def submit validate_params! begin response = client.http_post('/catalog-service/api/consumer/requests', request_payload.to_json) rescue Vra::Exception::HTTPError => e raise Vra::Exception::RequestError, "Unable to submit request: #{e.errors.join(', ')}" rescue raise end request_id = response.headers[:location].split('/')[-1] Vra::Request.new(client, request_id) end |
#validate_params! ⇒ Object
55 56 57 58 59 60 61 62 |
# File 'lib/vra/catalog_request.rb', line 55 def validate_params! missing_params = [] [ :catalog_id, :cpus, :memory, :requested_for, :subtenant_id ].each do |param| missing_params << param.to_s if send(param).nil? end raise ArgumentError, "Unable to submit request, required param(s) missing => #{missing_params.join(', ')}" unless missing_params.empty? end |