vcloud-core 0.7.0 → 0.8.0

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.
Files changed (46) hide show
  1. data/.gitignore +1 -1
  2. data/CHANGELOG.md +12 -0
  3. data/lib/vcloud/core.rb +2 -1
  4. data/lib/vcloud/core/api_interface.rb +35 -0
  5. data/lib/vcloud/core/compute_metadata.rb +1 -1
  6. data/lib/vcloud/core/edge_gateway.rb +2 -2
  7. data/lib/vcloud/core/fog.rb +40 -0
  8. data/lib/vcloud/core/fog/fog_constants.rb +35 -0
  9. data/lib/vcloud/core/fog/login.rb +40 -0
  10. data/lib/vcloud/core/fog/model_interface.rb +41 -0
  11. data/lib/vcloud/core/fog/service_interface.rb +253 -0
  12. data/lib/vcloud/core/login_cli.rb +1 -1
  13. data/lib/vcloud/core/metadata_helper.rb +1 -1
  14. data/lib/vcloud/core/org_vdc_network.rb +3 -3
  15. data/lib/vcloud/core/query_runner.rb +1 -1
  16. data/lib/vcloud/core/vapp.rb +6 -6
  17. data/lib/vcloud/core/vapp_template.rb +1 -1
  18. data/lib/vcloud/core/vdc.rb +1 -1
  19. data/lib/vcloud/core/version.rb +1 -1
  20. data/lib/vcloud/core/vm.rb +9 -9
  21. data/lib/vcloud/fog.rb +2 -39
  22. data/lib/vcloud/temporary_fog_classes.rb +11 -0
  23. data/spec/integration/{fog → core/fog}/login_manual.rb +1 -1
  24. data/spec/integration/{fog → core/fog}/login_spec.rb +13 -9
  25. data/spec/integration/core/vm_spec.rb +1 -1
  26. data/spec/support/integration_helper.rb +1 -1
  27. data/spec/vcloud/core/edge_gateway_spec.rb +1 -1
  28. data/spec/vcloud/{fog → core/fog}/fog_model_interface_spec.rb +2 -2
  29. data/spec/vcloud/{fog → core/fog}/login_spec.rb +4 -4
  30. data/spec/vcloud/core/fog/service_interface_spec.rb +53 -0
  31. data/spec/vcloud/{fog_spec.rb → core/fog_spec.rb} +2 -2
  32. data/spec/vcloud/core/login_cli_spec.rb +6 -6
  33. data/spec/vcloud/core/org_vdc_network_spec.rb +1 -1
  34. data/spec/vcloud/core/query_runner_spec.rb +1 -1
  35. data/spec/vcloud/core/vapp_spec.rb +1 -1
  36. data/spec/vcloud/core/vapp_template_spec.rb +1 -1
  37. data/spec/vcloud/core/vdc_spec.rb +1 -1
  38. data/spec/vcloud/core/vm_spec.rb +1 -1
  39. metadata +22 -21
  40. data/jenkins_integration_tests.sh +0 -5
  41. data/lib/vcloud/fog/content_types.rb +0 -18
  42. data/lib/vcloud/fog/login.rb +0 -38
  43. data/lib/vcloud/fog/model_interface.rb +0 -33
  44. data/lib/vcloud/fog/relation.rb +0 -8
  45. data/lib/vcloud/fog/service_interface.rb +0 -245
  46. data/spec/vcloud/fog/service_interface_spec.rb +0 -51
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Vcloud::Fog do
3
+ describe Vcloud::Core::Fog do
4
4
  describe "fog_credentials_pass" do
5
- let(:subject) { Vcloud::Fog::fog_credentials_pass }
5
+ let(:subject) { Vcloud::Core::Fog::fog_credentials_pass }
6
6
 
7
7
  context "vcloud_director_password not set" do
8
8
  it "should return nil" do
@@ -50,7 +50,7 @@ describe Vcloud::Core::LoginCli do
50
50
  end
51
51
 
52
52
  it "should prompt on stderr so that stdout can be scripted and mask password input" do
53
- expect(Vcloud::Fog::Login).to receive(:token_export).with(pass)
53
+ expect(Vcloud::Core::Fog::Login).to receive(:token_export).with(pass)
54
54
  expect(subject.stderr).to eq("vCloud password: " + "*" * pass.size)
55
55
  end
56
56
  end
@@ -61,7 +61,7 @@ describe Vcloud::Core::LoginCli do
61
61
  end
62
62
 
63
63
  it "should write stderr message to say that it's reading from pipe and not echo any input" do
64
- expect(Vcloud::Fog::Login).to receive(:token_export).with(pass)
64
+ expect(Vcloud::Core::Fog::Login).to receive(:token_export).with(pass)
65
65
  expect(subject.stderr).to eq("Reading password from pipe..")
66
66
  end
67
67
  end
@@ -71,7 +71,7 @@ describe Vcloud::Core::LoginCli do
71
71
  let(:args) { %w{--version} }
72
72
 
73
73
  it "should not call Login" do
74
- expect(Vcloud::Fog::Login).not_to receive(:token_export)
74
+ expect(Vcloud::Core::Fog::Login).not_to receive(:token_export)
75
75
  end
76
76
 
77
77
  it "should print version and exit normally" do
@@ -84,7 +84,7 @@ describe Vcloud::Core::LoginCli do
84
84
  let(:args) { %w{--help} }
85
85
 
86
86
  it "should not call Login" do
87
- expect(Vcloud::Fog::Login).not_to receive(:token_export)
87
+ expect(Vcloud::Core::Fog::Login).not_to receive(:token_export)
88
88
  end
89
89
 
90
90
  it "should print usage and exit normally" do
@@ -97,7 +97,7 @@ describe Vcloud::Core::LoginCli do
97
97
  describe "incorrect usage" do
98
98
  shared_examples "print usage and exit abnormally" do |error|
99
99
  it "should not call Login" do
100
- expect(Vcloud::Fog::Login).not_to receive(:token_export)
100
+ expect(Vcloud::Core::Fog::Login).not_to receive(:token_export)
101
101
  end
102
102
 
103
103
  it "should print error message and usage" do
@@ -133,7 +133,7 @@ describe Vcloud::Core::LoginCli do
133
133
  let(:exception_string) { 'something went horribly wrong' }
134
134
 
135
135
  it "should print error without backtrace and exit abnormally" do
136
- expect(Vcloud::Fog::Login).to receive(:token_export).
136
+ expect(Vcloud::Core::Fog::Login).to receive(:token_export).
137
137
  and_raise(exception_string)
138
138
  if STDIN.tty?
139
139
  expect(subject.stderr).to eq("vCloud password: #{'*' * pass.size}\n#{exception_string}")
@@ -11,7 +11,7 @@ module Vcloud
11
11
  @vdc_name = 'test-vdc-1'
12
12
  @net_name = 'test-net-1'
13
13
  @mock_fog_interface = StubFogInterface.new
14
- allow(Vcloud::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
14
+ allow(Vcloud::Core::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
15
15
  allow_any_instance_of(Vdc).to receive(:id).and_return(@vdc_id)
16
16
  @mock_vdc = double(:vdc, :id => @vdc_id)
17
17
  allow(Vdc).to receive(:get_by_name).and_return(@mock_vdc)
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Vcloud::Core::QueryRunner do
4
4
  before(:each) do
5
5
  @mock_fog_interface = StubFogInterface.new
6
- allow(Vcloud::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
6
+ allow(Vcloud::Core::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
7
7
  @query_runner = Vcloud::Core::QueryRunner.new()
8
8
  end
9
9
 
@@ -6,7 +6,7 @@ module Vcloud
6
6
  before(:each) do
7
7
  @vapp_id = 'vapp-12345678-1234-1234-1234-000000111111'
8
8
  @mock_fog_interface = StubFogInterface.new
9
- allow(Vcloud::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
9
+ allow(Vcloud::Core::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
10
10
  end
11
11
 
12
12
  context "Class public interface" do
@@ -7,7 +7,7 @@ module Vcloud
7
7
  before(:each) do
8
8
  @id = 'vappTemplate-12345678-1234-1234-1234-000000234121'
9
9
  @mock_fog_interface = StubFogInterface.new
10
- allow(Vcloud::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
10
+ allow(Vcloud::Core::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
11
11
  end
12
12
 
13
13
  context "Class public interface" do
@@ -7,7 +7,7 @@ module Vcloud
7
7
  before(:each) do
8
8
  @vdc_id = '12345678-1234-1234-1234-000000111232'
9
9
  @mock_fog_interface = StubFogInterface.new
10
- allow(Vcloud::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
10
+ allow(Vcloud::Core::Fog::ServiceInterface).to receive(:new).and_return(@mock_fog_interface)
11
11
  end
12
12
 
13
13
  context "Class public interface" do
@@ -21,7 +21,7 @@ module Vcloud
21
21
  @mock_vm_cpu_count = 1
22
22
  @fog_interface = StubFogInterface.new
23
23
  @mock_vapp = double(:vappm, :name => @vapp_name, :id => @vapp_id)
24
- allow(Vcloud::Fog::ServiceInterface).to receive(:new).and_return(@fog_interface)
24
+ allow(Vcloud::Core::Fog::ServiceInterface).to receive(:new).and_return(@fog_interface)
25
25
  allow(@fog_interface).to receive(:get_vapp).with(@vm_id).and_return({
26
26
  :name => "#{@vm_name}",
27
27
  :href => "vm-href/#{@vm_id}",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vcloud-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-29 00:00:00.000000000 Z
12
+ date: 2014-08-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
@@ -192,15 +192,20 @@ files:
192
192
  - bin/vcloud-login
193
193
  - bin/vcloud-query
194
194
  - jenkins.sh
195
- - jenkins_integration_tests.sh
196
195
  - jenkins_tests.sh
197
196
  - lib/vcloud/core.rb
197
+ - lib/vcloud/core/api_interface.rb
198
198
  - lib/vcloud/core/compute_metadata.rb
199
199
  - lib/vcloud/core/config_loader.rb
200
200
  - lib/vcloud/core/config_validator.rb
201
201
  - lib/vcloud/core/edge_gateway.rb
202
202
  - lib/vcloud/core/edge_gateway_interface.rb
203
203
  - lib/vcloud/core/entity.rb
204
+ - lib/vcloud/core/fog.rb
205
+ - lib/vcloud/core/fog/fog_constants.rb
206
+ - lib/vcloud/core/fog/login.rb
207
+ - lib/vcloud/core/fog/model_interface.rb
208
+ - lib/vcloud/core/fog/service_interface.rb
204
209
  - lib/vcloud/core/login_cli.rb
205
210
  - lib/vcloud/core/metadata_helper.rb
206
211
  - lib/vcloud/core/org_vdc_network.rb
@@ -213,19 +218,15 @@ files:
213
218
  - lib/vcloud/core/version.rb
214
219
  - lib/vcloud/core/vm.rb
215
220
  - lib/vcloud/fog.rb
216
- - lib/vcloud/fog/content_types.rb
217
- - lib/vcloud/fog/login.rb
218
- - lib/vcloud/fog/model_interface.rb
219
- - lib/vcloud/fog/relation.rb
220
- - lib/vcloud/fog/service_interface.rb
221
+ - lib/vcloud/temporary_fog_classes.rb
221
222
  - spec/integration/README.md
222
223
  - spec/integration/core/edge_gateway_spec.rb
224
+ - spec/integration/core/fog/login_manual.rb
225
+ - spec/integration/core/fog/login_spec.rb
223
226
  - spec/integration/core/query_runner_spec.rb
224
227
  - spec/integration/core/vapp_spec.rb
225
228
  - spec/integration/core/vdc_spec.rb
226
229
  - spec/integration/core/vm_spec.rb
227
- - spec/integration/fog/login_manual.rb
228
- - spec/integration/fog/login_spec.rb
229
230
  - spec/integration/vcloud_tools_testing_config.yaml.template
230
231
  - spec/spec_helper.rb
231
232
  - spec/support/integration_helper.rb
@@ -242,6 +243,10 @@ files:
242
243
  - spec/vcloud/core/data/working_with_defaults.yaml
243
244
  - spec/vcloud/core/edge_gateway_interface_spec.rb
244
245
  - spec/vcloud/core/edge_gateway_spec.rb
246
+ - spec/vcloud/core/fog/fog_model_interface_spec.rb
247
+ - spec/vcloud/core/fog/login_spec.rb
248
+ - spec/vcloud/core/fog/service_interface_spec.rb
249
+ - spec/vcloud/core/fog_spec.rb
245
250
  - spec/vcloud/core/login_cli_spec.rb
246
251
  - spec/vcloud/core/metadata_helper_spec.rb
247
252
  - spec/vcloud/core/org_vdc_network_spec.rb
@@ -252,10 +257,6 @@ files:
252
257
  - spec/vcloud/core/vapp_template_spec.rb
253
258
  - spec/vcloud/core/vdc_spec.rb
254
259
  - spec/vcloud/core/vm_spec.rb
255
- - spec/vcloud/fog/fog_model_interface_spec.rb
256
- - spec/vcloud/fog/login_spec.rb
257
- - spec/vcloud/fog/service_interface_spec.rb
258
- - spec/vcloud/fog_spec.rb
259
260
  - vcloud-core.gemspec
260
261
  homepage: http://github.com/gds-operations/vcloud-core
261
262
  licenses:
@@ -278,7 +279,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
278
279
  version: '0'
279
280
  segments:
280
281
  - 0
281
- hash: 622735401989777949
282
+ hash: 2495951714182978305
282
283
  requirements: []
283
284
  rubyforge_project:
284
285
  rubygems_version: 1.8.23
@@ -288,12 +289,12 @@ summary: Core tools for interacting with VMware vCloud Director
288
289
  test_files:
289
290
  - spec/integration/README.md
290
291
  - spec/integration/core/edge_gateway_spec.rb
292
+ - spec/integration/core/fog/login_manual.rb
293
+ - spec/integration/core/fog/login_spec.rb
291
294
  - spec/integration/core/query_runner_spec.rb
292
295
  - spec/integration/core/vapp_spec.rb
293
296
  - spec/integration/core/vdc_spec.rb
294
297
  - spec/integration/core/vm_spec.rb
295
- - spec/integration/fog/login_manual.rb
296
- - spec/integration/fog/login_spec.rb
297
298
  - spec/integration/vcloud_tools_testing_config.yaml.template
298
299
  - spec/spec_helper.rb
299
300
  - spec/support/integration_helper.rb
@@ -310,6 +311,10 @@ test_files:
310
311
  - spec/vcloud/core/data/working_with_defaults.yaml
311
312
  - spec/vcloud/core/edge_gateway_interface_spec.rb
312
313
  - spec/vcloud/core/edge_gateway_spec.rb
314
+ - spec/vcloud/core/fog/fog_model_interface_spec.rb
315
+ - spec/vcloud/core/fog/login_spec.rb
316
+ - spec/vcloud/core/fog/service_interface_spec.rb
317
+ - spec/vcloud/core/fog_spec.rb
313
318
  - spec/vcloud/core/login_cli_spec.rb
314
319
  - spec/vcloud/core/metadata_helper_spec.rb
315
320
  - spec/vcloud/core/org_vdc_network_spec.rb
@@ -320,7 +325,3 @@ test_files:
320
325
  - spec/vcloud/core/vapp_template_spec.rb
321
326
  - spec/vcloud/core/vdc_spec.rb
322
327
  - spec/vcloud/core/vm_spec.rb
323
- - spec/vcloud/fog/fog_model_interface_spec.rb
324
- - spec/vcloud/fog/login_spec.rb
325
- - spec/vcloud/fog/service_interface_spec.rb
326
- - spec/vcloud/fog_spec.rb
@@ -1,5 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
-
4
- # FIXME: Change the Carrenza job to use the following script directly.
5
- ./jenkins_tests.sh
@@ -1,18 +0,0 @@
1
- module Vcloud
2
- module Fog
3
- module ContentTypes
4
- ORG = 'application/vnd.vmware.vcloud.org+xml'
5
- VDC = 'application/vnd.vmware.vcloud.vdc+xml'
6
- NETWORK = 'application/vnd.vmware.vcloud.network+xml'
7
- METADATA = 'application/vnd.vmware.vcloud.metadata.value+xml'
8
- end
9
-
10
- module MetadataValueType
11
- String = 'MetadataStringValue'
12
- Number = 'MetadataNumberValue'
13
- DateTime = 'MetadataDateTimeValue'
14
- Boolean = 'MetadataBooleanValue'
15
- end
16
-
17
- end
18
- end
@@ -1,38 +0,0 @@
1
- require 'fog'
2
-
3
- module Vcloud
4
- module Fog
5
- module Login
6
- class << self
7
- def token(pass)
8
- check_plaintext_pass
9
- token = get_token(pass)
10
-
11
- return token
12
- end
13
-
14
- def token_export(*args)
15
- return "export #{Vcloud::Fog::TOKEN_ENV_VAR_NAME}=#{token(*args)}"
16
- end
17
-
18
- private
19
-
20
- def check_plaintext_pass
21
- pass = Vcloud::Fog::fog_credentials_pass
22
- unless pass.nil? || pass.empty?
23
- raise "Found plaintext #{Vcloud::Fog::FOG_CREDS_PASS_NAME} entry. Please set it to an empty string"
24
- end
25
- end
26
-
27
- def get_token(pass)
28
- ENV.delete(Vcloud::Fog::TOKEN_ENV_VAR_NAME)
29
- vcloud = ::Fog::Compute::VcloudDirector.new({
30
- Vcloud::Fog::FOG_CREDS_PASS_NAME => pass,
31
- })
32
-
33
- return vcloud.vcloud_token
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,33 +0,0 @@
1
- module Vcloud
2
- module Fog
3
- class ModelInterface
4
- def initialize
5
- @vcloud = ::Fog::Compute::VcloudDirector.new
6
- end
7
-
8
- def org_name
9
- @vcloud.org_name
10
- end
11
-
12
- def current_organization
13
- @vcloud.organizations.get_by_name org_name
14
- end
15
-
16
- def current_vdc vdc_id
17
- current_organization.vdcs.detect { |v| v.id == vdc_id }
18
- end
19
-
20
- def get_vm_by_href href
21
- vm = @vcloud.get_vms_in_lease_from_query(
22
- {
23
- :filter => "href==#{href}"
24
- }).body[:VMRecord].first
25
- return nil unless vm
26
- vdc = current_vdc(vm[:vdc].split('/').last)
27
- vapp = vdc.vapps.get_by_name(vm[:containerName])
28
- vapp.vms.first
29
- end
30
-
31
- end
32
- end
33
- end
@@ -1,8 +0,0 @@
1
- module Vcloud
2
- module Fog
3
- module RELATION
4
- PARENT = 'up'
5
- CHILD = 'down'
6
- end
7
- end
8
- end
@@ -1,245 +0,0 @@
1
- require 'forwardable'
2
-
3
- module Vcloud
4
- module Fog
5
- class ServiceInterface
6
- extend Forwardable
7
-
8
- def_delegators :@fog, :get_vapp, :organizations, :org_name, :delete_vapp, :vcloud_token, :end_point,
9
- :get_execute_query, :get_vapp_metadata, :power_off_vapp, :shutdown_vapp, :session,
10
- :post_instantiate_vapp_template, :put_memory, :put_cpu, :power_on_vapp, :put_vapp_metadata_value,
11
- :put_vm, :get_edge_gateway, :get_network_complete, :delete_network, :post_create_org_vdc_network,
12
- :post_configure_edge_gateway_services, :get_vdc, :post_undeploy_vapp
13
-
14
- #########################
15
- # FogFacade Inner class to represent a logic free facade over our interactions with Fog
16
-
17
- class FogFacade
18
- def initialize
19
- @vcloud = ::Fog::Compute::VcloudDirector.new
20
- end
21
-
22
- def get_vdc(id)
23
- @vcloud.get_vdc(id).body
24
- end
25
-
26
- def get_organization (id)
27
- @vcloud.get_organization(id).body
28
- end
29
-
30
- def session
31
- @vcloud.get_current_session.body
32
- end
33
-
34
- def get_vapps_in_lease_from_query(options)
35
- @vcloud.get_vapps_in_lease_from_query(options).body
36
- end
37
-
38
- def post_instantiate_vapp_template(vdc, template, name, params)
39
- Vcloud::Core.logger.debug("instantiating #{name} vapp in #{vdc[:name]}")
40
- vapp = @vcloud.post_instantiate_vapp_template(extract_id(vdc), template, name, params).body
41
- @vcloud.process_task(vapp[:Tasks][:Task])
42
- @vcloud.get_vapp(extract_id(vapp)).body
43
- end
44
-
45
- def put_memory(vm_id, memory)
46
- Vcloud::Core.logger.debug("putting #{memory}MB memory into VM #{vm_id}")
47
- task = @vcloud.put_memory(vm_id, memory).body
48
- @vcloud.process_task(task)
49
- end
50
-
51
- def get_vapp(id)
52
- @vcloud.get_vapp(id).body
53
- end
54
-
55
- def put_network_connection_system_section_vapp(vm_id, section)
56
- task = @vcloud.put_network_connection_system_section_vapp(vm_id, section).body
57
- @vcloud.process_task(task)
58
- end
59
-
60
- def put_cpu(vm_id, cpu)
61
- Vcloud::Core.logger.debug("putting #{cpu} CPU(s) into VM #{vm_id}")
62
- task = @vcloud.put_cpu(vm_id, cpu).body
63
- @vcloud.process_task(task)
64
- end
65
-
66
- def put_vm(id, name, options={})
67
- Vcloud::Core.logger.debug("updating name : #{name}, :options => #{options} in vm : #{id}")
68
- task = @vcloud.put_vm(id, name, options).body
69
- @vcloud.process_task(task)
70
- end
71
-
72
- def vcloud_token
73
- @vcloud.vcloud_token
74
- end
75
-
76
- def end_point
77
- @vcloud.end_point
78
- end
79
-
80
- def put_guest_customization_section_vapp(vm_id, customization_req)
81
- task = @vcloud.put_guest_customization_section_vapp(vm_id, customization_req).body
82
- @vcloud.process_task(task)
83
- end
84
-
85
- def get_execute_query(type=nil, options={})
86
- @vcloud.get_execute_query(type, options).body
87
- end
88
-
89
- def get_vapp_metadata(id)
90
- @vcloud.get_vapp_metadata(id).body
91
- end
92
-
93
-
94
- def organizations
95
- @vcloud.organizations
96
- end
97
-
98
- def org_name
99
- @vcloud.org_name
100
- end
101
-
102
- def post_undeploy_vapp(vapp_id)
103
- task = @vcloud.post_undeploy_vapp(vapp_id).body
104
- @vcloud.process_task(task)
105
- end
106
-
107
- def delete_vapp(vapp_id)
108
- task = @vcloud.delete_vapp(vapp_id).body
109
- @vcloud.process_task(task)
110
- end
111
-
112
- def get_network_complete(id)
113
- @vcloud.get_network_complete(id).body
114
- end
115
-
116
- def delete_network(id)
117
- task = @vcloud.delete_network(id).body
118
- @vcloud.process_task(task)
119
- end
120
-
121
- def post_create_org_vdc_network(vdc_id, name, options)
122
- Vcloud::Core.logger.debug("creating #{options[:fence_mode]} OrgVdcNetwork #{name} in vDC #{vdc_id}")
123
- attrs = @vcloud.post_create_org_vdc_network(vdc_id, name, options).body
124
- @vcloud.process_task(attrs[:Tasks][:Task])
125
- get_network_complete(extract_id(attrs))
126
- end
127
-
128
- def post_configure_edge_gateway_services(edgegw_id, config)
129
- Vcloud::Core.logger.info("Updating EdgeGateway #{edgegw_id}")
130
- begin
131
- task = @vcloud.post_configure_edge_gateway_services(edgegw_id, config).body
132
- @vcloud.process_task(task)
133
- rescue => ex
134
- Vcloud::Core.logger.error("Could not update EdgeGateway #{edgegw_id} : #{ex}")
135
- raise
136
- end
137
- end
138
-
139
- def power_off_vapp(vapp_id)
140
- task = @vcloud.post_power_off_vapp(vapp_id).body
141
- @vcloud.process_task(task)
142
- end
143
-
144
- def power_on_vapp(vapp_id)
145
- Vcloud::Core.logger.debug("Powering on vApp #{vapp_id}")
146
- task = @vcloud.post_power_on_vapp(vapp_id).body
147
- @vcloud.process_task(task)
148
- end
149
-
150
- def shutdown_vapp(vapp_id)
151
- task = @vcloud.post_shutdown_vapp(vapp_id).body
152
- @vcloud.process_task(task)
153
- end
154
-
155
- def put_vapp_metadata_value(id, k, v)
156
- Vcloud::Core.logger.debug("putting metadata pair '#{k}'=>'#{v}' to #{id}")
157
- # need to convert key to_s since Fog 0.17 borks on symbol key
158
- task = @vcloud.put_vapp_metadata_item_metadata(id, k.to_s, v).body
159
- @vcloud.process_task(task)
160
- end
161
-
162
- def get_edge_gateway(id)
163
- @vcloud.get_edge_gateway(id).body
164
- end
165
-
166
- private
167
- def extract_id(link)
168
- link[:href].split('/').last
169
- end
170
- end
171
- #
172
- #########################
173
-
174
-
175
-
176
- def initialize (fog = FogFacade.new)
177
- @fog = fog
178
- end
179
-
180
- def org
181
- link = session[:Link].select { |l| l[:rel] == RELATION::CHILD }.detect do |l|
182
- l[:type] == ContentTypes::ORG
183
- end
184
- @fog.get_organization(link[:href].split('/').last)
185
- end
186
-
187
- def get_vapp_by_name_and_vdc_name name, vdc_name
188
- response_body = @fog.get_vapps_in_lease_from_query({:filter => "name==#{name}"})
189
- response_body[:VAppRecord].detect { |record| record[:vdcName] == vdc_name }
190
- end
191
-
192
- def vdc(name)
193
- link = org[:Link].select { |l| l[:rel] == RELATION::CHILD }.detect do |l|
194
- l[:type] == ContentTypes::VDC && l[:name] == name
195
- end
196
- raise "vdc #{name} cannot be found" unless link
197
- @fog.get_vdc(link[:href].split('/').last)
198
-
199
- end
200
-
201
- def put_network_connection_system_section_vapp(vm_id, section)
202
- begin
203
- Vcloud::Core.logger.debug("adding NIC into VM #{vm_id}")
204
- @fog.put_network_connection_system_section_vapp(vm_id, section)
205
- rescue => ex
206
- Vcloud::Core.logger.error("failed to put_network_connection_system_section_vapp for vm #{vm_id}: #{ex}")
207
- Vcloud::Core.logger.debug("requested network section : #{section.inspect}")
208
- raise
209
- end
210
- end
211
-
212
- def find_networks(network_names, vdc_name)
213
- network_names.collect do |network|
214
- vdc(vdc_name)[:AvailableNetworks][:Network].detect do |l|
215
- l[:type] == ContentTypes::NETWORK && l[:name] == network
216
- end
217
- end
218
- end
219
-
220
- def put_guest_customization_section(vm_id, vm_name, script)
221
- begin
222
- Vcloud::Core.logger.debug("configuring guest customization section for vm : #{vm_id}")
223
- customization_req = {
224
- :Enabled => true,
225
- :CustomizationScript => script,
226
- :ComputerName => vm_name
227
- }
228
- @fog.put_guest_customization_section_vapp(vm_id, customization_req)
229
- rescue => ex
230
- Vcloud::Core.logger.error("Failed to update guest customization section: #{ex}")
231
- Vcloud::Core.logger.debug("=== interpolated preamble:")
232
- Vcloud::Core.logger.debug(script)
233
- raise
234
- end
235
- end
236
-
237
- private
238
- def extract_id(link)
239
- link[:href].split('/').last
240
- end
241
-
242
- end
243
-
244
- end
245
- end