vmware-vra 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/vra/request.rb CHANGED
@@ -17,7 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require 'ffi_yajl'
20
+ require "ffi_yajl"
21
21
 
22
22
  module Vra
23
23
  class Request
@@ -50,7 +50,7 @@ module Vra
50
50
  refresh_if_empty
51
51
  return if request_empty?
52
52
 
53
- @request_data['phase']
53
+ @request_data["phase"]
54
54
  end
55
55
 
56
56
  def completed?
@@ -58,25 +58,25 @@ module Vra
58
58
  end
59
59
 
60
60
  def successful?
61
- status == 'SUCCESSFUL'
61
+ status == "SUCCESSFUL"
62
62
  end
63
63
 
64
64
  def failed?
65
- status == 'FAILED'
65
+ status == "FAILED"
66
66
  end
67
67
 
68
68
  def completion_state
69
69
  refresh_if_empty
70
70
  return if request_empty?
71
71
 
72
- @request_data['requestCompletion']['requestCompletionState']
72
+ @request_data["requestCompletion"]["requestCompletionState"]
73
73
  end
74
74
 
75
75
  def completion_details
76
76
  refresh_if_empty
77
77
  return if request_empty?
78
78
 
79
- @request_data['requestCompletion']['completionDetails']
79
+ @request_data["requestCompletion"]["completionDetails"]
80
80
  end
81
81
 
82
82
  def resources
@@ -46,19 +46,19 @@ module Vra
46
46
 
47
47
  def to_h
48
48
  {
49
- 'key' => @key,
50
- 'value' => {
51
- 'type' => @type,
52
- 'value' => format_value
53
- }
49
+ "key" => @key,
50
+ "value" => {
51
+ "type" => @type,
52
+ "value" => format_value,
53
+ },
54
54
  }
55
55
  end
56
56
 
57
57
  def format_value
58
58
  case @type
59
- when 'integer'
59
+ when "integer"
60
60
  @value.to_i
61
- when 'string'
61
+ when "string"
62
62
  @value.to_s
63
63
  else
64
64
  @value.to_s
data/lib/vra/requests.rb CHANGED
@@ -26,9 +26,9 @@ module Vra
26
26
  def all_requests
27
27
  requests = []
28
28
 
29
- items = @client.http_get_paginated_array!('/catalog-service/api/consumer/requests')
29
+ items = @client.http_get_paginated_array!("/catalog-service/api/consumer/requests")
30
30
  items.each do |item|
31
- requests << Vra::Request.new(@client, item['id'])
31
+ requests << Vra::Request.new(@client, item["id"])
32
32
  end
33
33
 
34
34
  requests
data/lib/vra/resource.rb CHANGED
@@ -17,7 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require 'ffi_yajl'
20
+ require "ffi_yajl"
21
21
 
22
22
  module Vra
23
23
  # rubocop:disable ClassLength
@@ -31,17 +31,17 @@ module Vra
31
31
  @resource_actions = []
32
32
 
33
33
  if @id.nil? && @resource_data.nil?
34
- raise ArgumentError, 'must supply an id or a resource data hash'
34
+ raise ArgumentError, "must supply an id or a resource data hash"
35
35
  end
36
36
 
37
37
  if !@id.nil? && !@resource_data.nil?
38
- raise ArgumentError, 'must supply an id OR a resource data hash, not both'
38
+ raise ArgumentError, "must supply an id OR a resource data hash, not both"
39
39
  end
40
40
 
41
41
  if @resource_data.nil?
42
42
  fetch_resource_data
43
43
  else
44
- @id = @resource_data['id']
44
+ @id = @resource_data["id"]
45
45
  end
46
46
  end
47
47
 
@@ -53,103 +53,103 @@ module Vra
53
53
  alias refresh fetch_resource_data
54
54
 
55
55
  def name
56
- resource_data['name']
56
+ resource_data["name"]
57
57
  end
58
58
 
59
59
  def description
60
- resource_data['description']
60
+ resource_data["description"]
61
61
  end
62
62
 
63
63
  def status
64
- resource_data['status']
64
+ resource_data["status"]
65
65
  end
66
66
 
67
67
  def vm?
68
- %w(Infrastructure.Virtual Infrastructure.Cloud).include?(resource_data['resourceTypeRef']['id'])
68
+ %w{Infrastructure.Virtual Infrastructure.Cloud}.include?(resource_data["resourceTypeRef"]["id"])
69
69
  end
70
70
 
71
71
  def organization
72
- return {} if resource_data['organization'].nil?
72
+ return {} if resource_data["organization"].nil?
73
73
 
74
- resource_data['organization']
74
+ resource_data["organization"]
75
75
  end
76
76
 
77
77
  def tenant_id
78
- organization['tenantRef']
78
+ organization["tenantRef"]
79
79
  end
80
80
 
81
81
  def tenant_name
82
- organization['tenantLabel']
82
+ organization["tenantLabel"]
83
83
  end
84
84
 
85
85
  def subtenant_id
86
- organization['subtenantRef']
86
+ organization["subtenantRef"]
87
87
  end
88
88
 
89
89
  def subtenant_name
90
- organization['subtenantLabel']
90
+ organization["subtenantLabel"]
91
91
  end
92
92
 
93
93
  def catalog_item
94
- return {} if resource_data['catalogItem'].nil?
94
+ return {} if resource_data["catalogItem"].nil?
95
95
 
96
- resource_data['catalogItem']
96
+ resource_data["catalogItem"]
97
97
  end
98
98
 
99
99
  def catalog_id
100
- catalog_item['id']
100
+ catalog_item["id"]
101
101
  end
102
102
 
103
103
  def catalog_name
104
- catalog_item['label']
104
+ catalog_item["label"]
105
105
  end
106
106
 
107
107
  def owner_ids
108
- resource_data['owners'].map { |x| x['ref'] }
108
+ resource_data["owners"].map { |x| x["ref"] }
109
109
  end
110
110
 
111
111
  def owner_names
112
- resource_data['owners'].map { |x| x['value'] }
112
+ resource_data["owners"].map { |x| x["value"] }
113
113
  end
114
114
 
115
115
  def machine_status
116
- status = resource_data['resourceData']['entries'].find { |x| x['key'] == 'MachineStatus' }
117
- raise 'No MachineStatus entry available for resource' if status.nil?
116
+ status = resource_data["resourceData"]["entries"].find { |x| x["key"] == "MachineStatus" }
117
+ raise "No MachineStatus entry available for resource" if status.nil?
118
118
 
119
- status['value']['value']
119
+ status["value"]["value"]
120
120
  end
121
121
 
122
122
  def machine_on?
123
- machine_status == 'On'
123
+ machine_status == "On"
124
124
  end
125
125
 
126
126
  def machine_off?
127
- machine_status == 'Off'
127
+ machine_status == "Off"
128
128
  end
129
129
 
130
130
  def machine_turning_on?
131
- machine_status == 'TurningOn' || machine_status == 'MachineActivated'
131
+ machine_status == "TurningOn" || machine_status == "MachineActivated"
132
132
  end
133
133
 
134
134
  def machine_turning_off?
135
- %w(TurningOff ShuttingDown).include?(machine_status)
135
+ %w{TurningOff ShuttingDown}.include?(machine_status)
136
136
  end
137
137
 
138
138
  def machine_in_provisioned_state?
139
- machine_status == 'MachineProvisioned'
139
+ machine_status == "MachineProvisioned"
140
140
  end
141
141
 
142
142
  def network_interfaces
143
143
  return unless vm?
144
144
 
145
- network_list = resource_data['resourceData']['entries'].find { |x| x['key'] == 'NETWORK_LIST' }
145
+ network_list = resource_data["resourceData"]["entries"].find { |x| x["key"] == "NETWORK_LIST" }
146
146
  return if network_list.nil?
147
147
 
148
- network_list['value']['items'].each_with_object([]) do |item, nics|
148
+ network_list["value"]["items"].each_with_object([]) do |item, nics|
149
149
  nic = {}
150
- item['values']['entries'].each do |entry|
151
- key = entry['key']
152
- value = entry['value']['value']
150
+ item["values"]["entries"].each do |entry|
151
+ key = entry["key"]
152
+ value = entry["value"]["value"]
153
153
  nic[key] = value
154
154
  end
155
155
 
@@ -162,26 +162,26 @@ module Vra
162
162
 
163
163
  addrs = []
164
164
 
165
- request_id = @resource_data['requestId']
165
+ request_id = @resource_data["requestId"]
166
166
 
167
167
  resource_views = @client.http_get("/catalog-service/api/consumer/requests/#{request_id}/resourceViews")
168
168
 
169
- data_zero = JSON.parse(resource_views.body)['content'][0]['data']['ip_address']
170
- data_one = JSON.parse(resource_views.body)['content'][1]['data']['ip_address']
169
+ data_zero = JSON.parse(resource_views.body)["content"][0]["data"]["ip_address"]
170
+ data_one = JSON.parse(resource_views.body)["content"][1]["data"]["ip_address"]
171
171
 
172
- print 'Waiting For vRA to collect the IP'
173
- while (data_zero == '' || data_one == '') && (data_zero.nil? || data_one.nil?)
172
+ print "Waiting For vRA to collect the IP"
173
+ while (data_zero == "" || data_one == "") && (data_zero.nil? || data_one.nil?)
174
174
  resource_views = @client.http_get("/catalog-service/api/consumer/requests/#{request_id}/resourceViews")
175
- data_zero = JSON.parse(resource_views.body)['content'][0]['data']['ip_address']
176
- data_one = JSON.parse(resource_views.body)['content'][1]['data']['ip_address']
175
+ data_zero = JSON.parse(resource_views.body)["content"][0]["data"]["ip_address"]
176
+ data_one = JSON.parse(resource_views.body)["content"][1]["data"]["ip_address"]
177
177
  sleep 10
178
- print '.'
178
+ print "."
179
179
  end
180
180
 
181
- ip_address = if JSON.parse(resource_views.body)['content'][0]['data']['ip_address'].nil?
182
- JSON.parse(resource_views.body)['content'][1]['data']['ip_address']
181
+ ip_address = if JSON.parse(resource_views.body)["content"][0]["data"]["ip_address"].nil?
182
+ JSON.parse(resource_views.body)["content"][1]["data"]["ip_address"]
183
183
  else
184
- JSON.parse(resource_views.body)['content'][0]['data']['ip_address']
184
+ JSON.parse(resource_views.body)["content"][0]["data"]["ip_address"]
185
185
  end
186
186
 
187
187
  addrs << ip_address
@@ -191,43 +191,43 @@ module Vra
191
191
  def actions
192
192
  # if this Resource instance was created with data from a "all_resources" fetch,
193
193
  # it is likely missing operations data because the vRA API is not pleasant sometimes.
194
- fetch_resource_data if resource_data['operations'].nil?
194
+ fetch_resource_data if resource_data["operations"].nil?
195
195
 
196
- resource_data['operations']
196
+ resource_data["operations"]
197
197
  end
198
198
 
199
199
  def action_id_by_name(name)
200
200
  return if actions.nil?
201
201
 
202
- action = actions.find { |x| x['name'] == name }
202
+ action = actions.find { |x| x["name"] == name }
203
203
  return if action.nil?
204
204
 
205
- action['id']
205
+ action["id"]
206
206
  end
207
207
 
208
208
  def destroy
209
- action_id = action_id_by_name('Destroy')
209
+ action_id = action_id_by_name("Destroy")
210
210
  raise Vra::Exception::NotFound, "No destroy action found for resource #{@id}" if action_id.nil?
211
211
 
212
212
  submit_action_request(action_id)
213
213
  end
214
214
 
215
215
  def shutdown
216
- action_id = action_id_by_name('Shutdown')
216
+ action_id = action_id_by_name("Shutdown")
217
217
  raise Vra::Exception::NotFound, "No shutdown action found for resource #{@id}" if action_id.nil?
218
218
 
219
219
  submit_action_request(action_id)
220
220
  end
221
221
 
222
222
  def poweroff
223
- action_id = action_id_by_name('Power Off')
223
+ action_id = action_id_by_name("Power Off")
224
224
  raise Vra::Exception::NotFound, "No power-off action found for resource #{@id}" if action_id.nil?
225
225
 
226
226
  submit_action_request(action_id)
227
227
  end
228
228
 
229
229
  def poweron
230
- action_id = action_id_by_name('Power On')
230
+ action_id = action_id_by_name("Power On")
231
231
  raise Vra::Exception::NotFound, "No power-on action found for resource #{@id}" if action_id.nil?
232
232
 
233
233
  submit_action_request(action_id)
@@ -235,31 +235,31 @@ module Vra
235
235
 
236
236
  def action_request_payload(action_id)
237
237
  {
238
- '@type' => 'ResourceActionRequest',
239
- 'resourceRef' => {
240
- 'id' => @id
238
+ "@type" => "ResourceActionRequest",
239
+ "resourceRef" => {
240
+ "id" => @id,
241
241
  },
242
- 'resourceActionRef' => {
243
- 'id' => action_id
242
+ "resourceActionRef" => {
243
+ "id" => action_id,
244
244
  },
245
- 'organization' => {
246
- 'tenantRef' => tenant_id,
247
- 'tenantLabel' => tenant_name,
248
- 'subtenantRef' => subtenant_id,
249
- 'subtenantLabel' => subtenant_name
245
+ "organization" => {
246
+ "tenantRef" => tenant_id,
247
+ "tenantLabel" => tenant_name,
248
+ "subtenantRef" => subtenant_id,
249
+ "subtenantLabel" => subtenant_name,
250
+ },
251
+ "state" => "SUBMITTED",
252
+ "requestNumber" => 0,
253
+ "requestData" => {
254
+ "entries" => [],
250
255
  },
251
- 'state' => 'SUBMITTED',
252
- 'requestNumber' => 0,
253
- 'requestData' => {
254
- 'entries' => []
255
- }
256
256
  }
257
257
  end
258
258
 
259
259
  def submit_action_request(action_id)
260
260
  payload = action_request_payload(action_id).to_json
261
- response = client.http_post('/catalog-service/api/consumer/requests', payload)
262
- request_id = response.location.split('/')[-1]
261
+ response = client.http_post("/catalog-service/api/consumer/requests", payload)
262
+ request_id = response.location.split("/")[-1]
263
263
  Vra::Request.new(client, request_id)
264
264
  end
265
265
  end
data/lib/vra/resources.rb CHANGED
@@ -28,7 +28,7 @@ module Vra
28
28
  def all_resources
29
29
  resources = []
30
30
 
31
- items = client.http_get_paginated_array!('/catalog-service/api/consumer/resources')
31
+ items = client.http_get_paginated_array!("/catalog-service/api/consumer/resources")
32
32
  items.each do |item|
33
33
  resources << Vra::Resource.new(client, data: item)
34
34
  end
data/lib/vra/version.rb CHANGED
@@ -18,5 +18,5 @@
18
18
  #
19
19
 
20
20
  module Vra
21
- VERSION = '2.1.0'
21
+ VERSION = "2.1.1"
22
22
  end
@@ -17,122 +17,122 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require 'spec_helper'
20
+ require "spec_helper"
21
21
 
22
22
  describe Vra::CatalogItem do
23
23
  let(:client) do
24
- Vra::Client.new(username: 'user@corp.local',
25
- password: 'password',
26
- tenant: 'tenant',
27
- base_url: 'https://vra.corp.local')
24
+ Vra::Client.new(username: "user@corp.local",
25
+ password: "password",
26
+ tenant: "tenant",
27
+ base_url: "https://vra.corp.local")
28
28
  end
29
29
 
30
- let(:catalog_id) { '9e98042e-5443-4082-afd5-ab5a32939bbc' }
30
+ let(:catalog_id) { "9e98042e-5443-4082-afd5-ab5a32939bbc" }
31
31
 
32
32
  let(:catalog_item_payload) do
33
33
  {
34
- '@type' => 'CatalogItem',
35
- 'id' => '9e98042e-5443-4082-afd5-ab5a32939bbc',
36
- 'version' => 2,
37
- 'name' => 'CentOS 6.6',
38
- 'description' => 'Blueprint for deploying a CentOS Linux development server',
39
- 'status' => 'PUBLISHED',
40
- 'statusName' => 'Published',
41
- 'organization' => {
42
- 'tenantRef' => 'vsphere.local',
43
- 'tenantLabel' => 'vsphere.local',
44
- 'subtenantRef' => '962ab3f9-858c-4483-a49f-fa97392c314b',
45
- 'subtenantLabel' => 'catalog_subtenant'
34
+ "@type" => "CatalogItem",
35
+ "id" => "9e98042e-5443-4082-afd5-ab5a32939bbc",
36
+ "version" => 2,
37
+ "name" => "CentOS 6.6",
38
+ "description" => "Blueprint for deploying a CentOS Linux development server",
39
+ "status" => "PUBLISHED",
40
+ "statusName" => "Published",
41
+ "organization" => {
42
+ "tenantRef" => "vsphere.local",
43
+ "tenantLabel" => "vsphere.local",
44
+ "subtenantRef" => "962ab3f9-858c-4483-a49f-fa97392c314b",
45
+ "subtenantLabel" => "catalog_subtenant",
46
+ },
47
+ "providerBinding" => {
48
+ "bindingId" => "33af5413-4f20-4b3b-8268-32edad434dfb",
49
+ "providerRef" => {
50
+ "id" => "c3b2bc30-47b0-454f-b57d-df02a7356fe6",
51
+ "label" => "iaas-service",
52
+ },
46
53
  },
47
- 'providerBinding' => {
48
- 'bindingId' => '33af5413-4f20-4b3b-8268-32edad434dfb',
49
- 'providerRef' => {
50
- 'id' => 'c3b2bc30-47b0-454f-b57d-df02a7356fe6',
51
- 'label' => 'iaas-service'
52
- }
53
- }
54
54
  }
55
55
  end
56
56
 
57
- describe '#initialize' do
58
- it 'raises an error if no ID or catalog item data have been provided' do
57
+ describe "#initialize" do
58
+ it "raises an error if no ID or catalog item data have been provided" do
59
59
  expect { Vra::CatalogItem.new }.to raise_error(ArgumentError)
60
60
  end
61
61
 
62
- it 'raises an error if an ID and catalog item data have both been provided' do
63
- expect { Vra::CatalogItem.new(id: 123, data: 'foo') }.to raise_error(ArgumentError)
62
+ it "raises an error if an ID and catalog item data have both been provided" do
63
+ expect { Vra::CatalogItem.new(id: 123, data: "foo") }.to raise_error(ArgumentError)
64
64
  end
65
65
 
66
- context 'when an ID is provided' do
67
- it 'fetches the catalog_item record' do
66
+ context "when an ID is provided" do
67
+ it "fetches the catalog_item record" do
68
68
  catalog_item = Vra::CatalogItem.allocate
69
69
  expect(catalog_item).to receive(:fetch_catalog_item)
70
70
  catalog_item.send(:initialize, client, id: catalog_id)
71
71
  end
72
72
  end
73
73
 
74
- context 'when catalog item data is provided' do
75
- it 'populates the ID correctly' do
74
+ context "when catalog item data is provided" do
75
+ it "populates the ID correctly" do
76
76
  catalog_item = Vra::CatalogItem.new(client, data: catalog_item_payload)
77
77
  expect(catalog_item.id).to eq catalog_id
78
78
  end
79
79
  end
80
80
  end
81
81
 
82
- describe '#fetch_catalog_item' do
83
- context 'when the catalog item exists' do
84
- let(:response) { double('response', code: 200, body: catalog_item_payload.to_json) }
82
+ describe "#fetch_catalog_item" do
83
+ context "when the catalog item exists" do
84
+ let(:response) { double("response", code: 200, body: catalog_item_payload.to_json) }
85
85
 
86
- it 'calls http_get against the catalog_service' do
87
- expect(client).to receive(:http_get).with('/catalog-service/api/consumer/catalogItems/catalog-12345').and_return(response)
88
- Vra::CatalogItem.new(client, id: 'catalog-12345')
86
+ it "calls http_get against the catalog_service" do
87
+ expect(client).to receive(:http_get).with("/catalog-service/api/consumer/catalogItems/catalog-12345").and_return(response)
88
+ Vra::CatalogItem.new(client, id: "catalog-12345")
89
89
  end
90
90
  end
91
91
 
92
- context 'when the catalog item does not exist' do
93
- it 'raises an exception' do
94
- allow(client).to receive(:http_get).with('/catalog-service/api/consumer/catalogItems/catalog-12345').and_raise(Vra::Exception::HTTPNotFound)
95
- expect { Vra::CatalogItem.new(client, id: 'catalog-12345') }.to raise_error(Vra::Exception::NotFound)
92
+ context "when the catalog item does not exist" do
93
+ it "raises an exception" do
94
+ allow(client).to receive(:http_get).with("/catalog-service/api/consumer/catalogItems/catalog-12345").and_raise(Vra::Exception::HTTPNotFound)
95
+ expect { Vra::CatalogItem.new(client, id: "catalog-12345") }.to raise_error(Vra::Exception::NotFound)
96
96
  end
97
97
  end
98
98
  end
99
99
 
100
- describe '#organization' do
100
+ describe "#organization" do
101
101
  let(:catalog_item) { Vra::CatalogItem.new(client, data: catalog_item_payload) }
102
102
 
103
- context 'when organization data exists' do
103
+ context "when organization data exists" do
104
104
  let(:catalog_item_payload) do
105
105
  {
106
- '@type' => 'CatalogItem',
107
- 'id' => '9e98042e-5443-4082-afd5-ab5a32939bbc',
108
- 'organization' => {
109
- 'tenantRef' => 'vsphere.local',
110
- 'tenantLabel' => 'vsphere.local',
111
- 'subtenantRef' => '962ab3f9-858c-4483-a49f-fa97392c314b',
112
- 'subtenantLabel' => 'catalog_subtenant'
113
- }
106
+ "@type" => "CatalogItem",
107
+ "id" => "9e98042e-5443-4082-afd5-ab5a32939bbc",
108
+ "organization" => {
109
+ "tenantRef" => "vsphere.local",
110
+ "tenantLabel" => "vsphere.local",
111
+ "subtenantRef" => "962ab3f9-858c-4483-a49f-fa97392c314b",
112
+ "subtenantLabel" => "catalog_subtenant",
113
+ },
114
114
  }
115
115
  end
116
116
 
117
- it 'returns the correct organization data' do
118
- expect(catalog_item.organization['tenantRef']).to eq('vsphere.local')
117
+ it "returns the correct organization data" do
118
+ expect(catalog_item.organization["tenantRef"]).to eq("vsphere.local")
119
119
  end
120
120
  end
121
121
 
122
- context 'when organization data does not exist' do
122
+ context "when organization data does not exist" do
123
123
  let(:catalog_item_payload) do
124
124
  {
125
- '@type' => 'CatalogItem',
126
- 'id' => '9e98042e-5443-4082-afd5-ab5a32939bbc'
125
+ "@type" => "CatalogItem",
126
+ "id" => "9e98042e-5443-4082-afd5-ab5a32939bbc",
127
127
  }
128
128
  end
129
129
 
130
- it 'returns an empty hash' do
130
+ it "returns an empty hash" do
131
131
  expect(catalog_item.organization).to eq({})
132
132
  end
133
133
 
134
- it 'returns nil for any organization keys' do
135
- expect(catalog_item.organization['tenantRef']).to eq(nil)
134
+ it "returns nil for any organization keys" do
135
+ expect(catalog_item.organization["tenantRef"]).to eq(nil)
136
136
  end
137
137
  end
138
138
  end