fog 1.16.0 → 1.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/.travis.yml +6 -0
  2. data/README.md +25 -0
  3. data/changelog.txt +108 -0
  4. data/fog.gemspec +7 -5
  5. data/lib/fog/aws.rb +8 -2
  6. data/lib/fog/aws/cloud_formation.rb +0 -1
  7. data/lib/fog/aws/compute.rb +1 -1
  8. data/lib/fog/aws/elb.rb +0 -1
  9. data/lib/fog/aws/iam.rb +4 -1
  10. data/lib/fog/aws/models/iam/access_key.rb +5 -1
  11. data/lib/fog/aws/models/iam/access_keys.rb +0 -1
  12. data/lib/fog/aws/parsers/compute/describe_reserved_instances.rb +2 -1
  13. data/lib/fog/aws/parsers/storage/get_bucket_tagging.rb +37 -0
  14. data/lib/fog/aws/requests/compute/copy_image.rb +1 -1
  15. data/lib/fog/aws/requests/compute/describe_reserved_instances.rb +1 -0
  16. data/lib/fog/aws/requests/compute/purchase_reserved_instances_offering.rb +1 -0
  17. data/lib/fog/aws/requests/iam/create_access_key.rb +22 -15
  18. data/lib/fog/aws/requests/iam/list_access_keys.rb +15 -11
  19. data/lib/fog/aws/requests/iam/update_access_key.rb +22 -0
  20. data/lib/fog/aws/requests/storage/delete_bucket_tagging.rb +46 -0
  21. data/lib/fog/aws/requests/storage/get_bucket_tagging.rb +53 -0
  22. data/lib/fog/aws/requests/storage/put_bucket_tagging.rb +60 -0
  23. data/lib/fog/aws/storage.rb +32 -19
  24. data/lib/fog/brightbox/models/compute/load_balancer.rb +47 -2
  25. data/lib/fog/core/logger.rb +4 -5
  26. data/lib/fog/core/service.rb +1 -1
  27. data/lib/fog/google/README.md +2 -2
  28. data/lib/fog/google/compute.rb +2 -1
  29. data/lib/fog/google/examples/bootstrap.rb +1 -1
  30. data/lib/fog/google/examples/get_list_images.rb +1 -2
  31. data/lib/fog/google/examples/network.rb +2 -0
  32. data/lib/fog/google/models/compute/disk.rb +23 -0
  33. data/lib/fog/google/models/compute/snapshot.rb +1 -0
  34. data/lib/fog/google/requests/compute/insert_server.rb +1 -1
  35. data/lib/fog/google/requests/compute/insert_snapshot.rb +49 -0
  36. data/lib/fog/google/storage.rb +54 -29
  37. data/lib/fog/hp.rb +0 -4
  38. data/lib/fog/hp/block_storage.rb +2 -2
  39. data/lib/fog/hp/cdn.rb +2 -2
  40. data/lib/fog/hp/compute.rb +2 -2
  41. data/lib/fog/hp/storage.rb +3 -3
  42. data/lib/fog/linode/compute.rb +1 -1
  43. data/lib/fog/linode/dns.rb +1 -1
  44. data/lib/fog/rackspace/block_storage.rb +0 -2
  45. data/lib/fog/vcloud_director/compute.rb +76 -2
  46. data/lib/fog/vcloud_director/generators/compute/{edge_gateway.rb → edge_gateway_service_configuration.rb} +2 -1
  47. data/lib/fog/vcloud_director/requests/compute/delete_disk.rb +33 -0
  48. data/lib/fog/vcloud_director/requests/compute/delete_media.rb +82 -2
  49. data/lib/fog/vcloud_director/requests/compute/get_disk.rb +99 -1
  50. data/lib/fog/vcloud_director/requests/compute/get_disk_owner.rb +45 -0
  51. data/lib/fog/vcloud_director/requests/compute/get_edge_gateway.rb +33 -19
  52. data/lib/fog/vcloud_director/requests/compute/get_media.rb +75 -4
  53. data/lib/fog/vcloud_director/requests/compute/get_media_owner.rb +34 -4
  54. data/lib/fog/vcloud_director/requests/compute/get_task.rb +122 -3
  55. data/lib/fog/vcloud_director/requests/compute/get_task_list.rb +80 -37
  56. data/lib/fog/vcloud_director/requests/compute/{get_vms_disks_attached_to.rb → get_vms_disk_attached_to.rb} +16 -2
  57. data/lib/fog/vcloud_director/requests/compute/post_cancel_task.rb +18 -0
  58. data/lib/fog/vcloud_director/requests/compute/post_clone_media.rb +52 -1
  59. data/lib/fog/vcloud_director/requests/compute/post_configure_edge_gateway_services.rb +14 -2
  60. data/lib/fog/vcloud_director/requests/compute/post_instantiate_vapp_template.rb +2 -2
  61. data/lib/fog/vcloud_director/requests/compute/post_upload_disk.rb +133 -0
  62. data/lib/fog/vcloud_director/requests/compute/post_upload_media.rb +48 -4
  63. data/lib/fog/vcloud_director/requests/compute/put_guest_customization_section_vapp.rb +103 -26
  64. data/lib/fog/vcloud_director/requests/compute/put_network_connection_system_section_vapp.rb +90 -32
  65. data/lib/fog/version.rb +1 -1
  66. data/lib/fog/vsphere/compute.rb +29 -14
  67. data/lib/fog/vsphere/models/compute/server.rb +18 -6
  68. data/lib/fog/vsphere/requests/compute/create_vm.rb +1 -0
  69. data/lib/fog/vsphere/requests/compute/vm_clone.rb +2 -9
  70. data/lib/fog/vsphere/requests/compute/vm_reconfig_cpus.rb +2 -2
  71. data/lib/fog/xenserver/requests/compute/create_server.rb +1 -1
  72. data/tests/aws/requests/compute/instance_tests.rb +1 -0
  73. data/tests/aws/requests/storage/bucket_tests.rb +19 -3
  74. data/tests/brightbox/compute/schema.rb +1 -0
  75. data/tests/core/credential_tests.rb +7 -1
  76. data/tests/core/parser_tests.rb +1 -1
  77. data/tests/rackspace/block_storage_tests.rb +1 -1
  78. data/tests/rackspace/cdn_tests.rb +1 -1
  79. data/tests/rackspace/compute_tests.rb +1 -1
  80. data/tests/rackspace/compute_v2_tests.rb +1 -1
  81. data/tests/rackspace/databases_tests.rb +1 -1
  82. data/tests/rackspace/dns_tests.rb +1 -1
  83. data/tests/rackspace/load_balancer_tests.rb +1 -1
  84. data/tests/rackspace/storage_tests.rb +1 -1
  85. data/tests/vcloud_director/ensure_list_tests.rb +30 -2
  86. data/tests/vcloud_director/requests/compute/disk_tests.rb +160 -5
  87. data/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +59 -1
  88. data/tests/vcloud_director/requests/compute/helper.rb +5 -1
  89. data/tests/vcloud_director/requests/compute/media_tests.rb +109 -99
  90. data/tests/vcloud_director/requests/compute/schema_helper.rb +15 -2
  91. data/tests/vcloud_director/requests/compute/task_tests.rb +21 -6
  92. metadata +27 -21
@@ -25,7 +25,57 @@ Shindo.tests('Compute::VcloudDirector | edge gateway requests', ['vclouddirector
25
25
  end
26
26
 
27
27
  tests('#get_edge_gateway').data_matches_schema(VcloudDirector::Compute::Schema::GATEWAY_TYPE) do
28
- @service.get_edge_gateway(@edge_gateways[:EdgeGatewayRecord].first[:href].split('/').last).body
28
+ @edge_gateway_id = @edge_gateways[:EdgeGatewayRecord].first[:href].split('/').last
29
+ @edge_gateway_configuration = @service.get_edge_gateway(@edge_gateway_id).body
30
+ end
31
+
32
+ tests('#post_configure_edge_gateway_services') do
33
+ @new_edge_gateway_configuration = {
34
+ :FirewallService =>
35
+ {
36
+ :IsEnabled => "true",
37
+ :DefaultAction => "allow",
38
+ :LogDefaultAction => "false",
39
+ :FirewallRule => [
40
+ {
41
+ :IsEnabled => "false",
42
+ :MatchOnTranslate => "false",
43
+ :Id => "1000",
44
+ :Policy => "drop",
45
+ :Description => "description",
46
+ :Protocols => {
47
+ :Tcp => "true"
48
+ },
49
+ :Port => "3412",
50
+ :DestinationPortRange => "3412",
51
+ :DestinationIp => "internal",
52
+ :SourcePort => "3412",
53
+ :SourceIp => "internal",
54
+ :SourcePortRange => "3412",
55
+ :EnableLogging => "false"
56
+ }
57
+ ]
58
+ }
59
+ }
60
+
61
+ response = @service.post_configure_edge_gateway_services(@edge_gateway_id, @new_edge_gateway_configuration)
62
+ @service.process_task(response.body) unless Fog.mocking?
63
+ end
64
+
65
+ tests('#check for new firewall rule').returns(@new_edge_gateway_configuration[:FirewallService][:FirewallRule]) do
66
+ edge_gateway = @service.get_edge_gateway(@edge_gateway_id).body
67
+
68
+ edge_gateway[:Configuration][:EdgeGatewayServiceConfiguration][:FirewallService][:FirewallRule]
69
+ end
70
+
71
+ tests('#remove the firewall rule added by test').returns(nil) do
72
+ response = @service.post_configure_edge_gateway_services(@edge_gateway_id,
73
+ @edge_gateway_configuration[:Configuration][:EdgeGatewayServiceConfiguration])
74
+
75
+ @service.process_task(response.body) unless Fog.mocking?
76
+
77
+ edge_gateway = @service.get_edge_gateway(@edge_gateway_id).body
78
+ edge_gateway[:Configuration][:EdgeGatewayServiceConfiguration][:FirewallService][:FirewallRule].find { |rule| rule[:Id] == '1000' }
29
79
  end
30
80
 
31
81
  tests('Retrieve non-existent edge gateway').raises(Fog::Compute::VcloudDirector::Forbidden) do
@@ -36,4 +86,12 @@ Shindo.tests('Compute::VcloudDirector | edge gateway requests', ['vclouddirector
36
86
  end
37
87
  end
38
88
 
89
+ tests('Configure non-existent edge gateway').raises(Fog::Compute::VcloudDirector::Forbidden) do
90
+ begin
91
+ @service.post_configure_edge_gateway_services('00000000-0000-0000-0000-000000000000', {})
92
+ rescue Fog::Compute::VcloudDirector::Unauthorized # bug, may be localised
93
+ retry
94
+ end
95
+ end
96
+
39
97
  end
@@ -11,11 +11,15 @@ class VcloudDirector
11
11
  end
12
12
 
13
13
  def self.current_org(service)
14
+ service.get_organization(current_org_id(service)).body
15
+ end
16
+
17
+ def self.current_org_id(service)
14
18
  session = service.get_current_session.body
15
19
  link = session[:Link].detect do |l|
16
20
  l[:type] == 'application/vnd.vmware.vcloud.org+xml'
17
21
  end
18
- service.get_organization(link[:href].split('/').last).body
22
+ link[:href].split('/').last
19
23
  end
20
24
 
21
25
  def self.first_vdc_id(org)
@@ -1,31 +1,60 @@
1
1
  Shindo.tests('Compute::VcloudDirector | media requests', ['vclouddirector']) do
2
2
 
3
3
  @service = Fog::Compute::VcloudDirector.new
4
+
5
+ tests('error conditions') do
6
+ tests('#post_upload_media') do
7
+ tests('Invalid image_type').raises(Fog::Compute::VcloudDirector::BadRequest) do
8
+ @service.post_upload_media('00000000-0000-0000-0000-000000000000', 'test.iso', 'isox', 0)
9
+ end
10
+ tests('Invalid size').raises(Fog::Compute::VcloudDirector::BadRequest) do
11
+ @service.post_upload_media('00000000-0000-0000-0000-000000000000', 'test.iso', 'iso', -1)
12
+ end
13
+ end
14
+ tests('Upload to non-existent vDC').raises(Fog::Compute::VcloudDirector::Forbidden) do
15
+ @service.post_upload_media('00000000-0000-0000-0000-000000000000', 'test.iso', 'iso', 0)
16
+ end
17
+ tests('Retrieve non-existent Media').raises(Fog::Compute::VcloudDirector::Forbidden) do
18
+ @service.get_media('00000000-0000-0000-0000-000000000000')
19
+ end
20
+ tests('Retrieve owner of non-existent Media').raises(Fog::Compute::VcloudDirector::Forbidden) do
21
+ @service.get_media_owner('00000000-0000-0000-0000-000000000000')
22
+ end
23
+ tests('Delete non-existent Media').raises(Fog::Compute::VcloudDirector::Forbidden) do
24
+ @service.delete_media('00000000-0000-0000-0000-000000000000')
25
+ end
26
+ end
27
+
4
28
  @org = VcloudDirector::Compute::Helper.current_org(@service)
5
29
  @media_name = VcloudDirector::Compute::Helper.test_name
6
30
 
7
31
  tests('Upload and manipulate a media object') do
8
- pending if Fog.mocking?
9
-
10
32
  File.open(VcloudDirector::Compute::Helper.fixture('test.iso'), 'rb') do |iso|
11
33
  tests('#post_upload_media').data_matches_schema(VcloudDirector::Compute::Schema::MEDIA_TYPE) do
12
34
  @vdc_id = VcloudDirector::Compute::Helper.first_vdc_id(@org)
13
- @media = @service.post_upload_media(@vdc_id, @media_name, 'iso', iso.size).body
35
+ @size = File.size(iso.path)
36
+ @media = @service.post_upload_media(@vdc_id, @media_name, 'iso', @size).body
14
37
  end
15
38
 
16
- tests('media object has an upload link').returns(true) do
17
- @link = @media[:Files][:File][:Link]
39
+ tests('media object has exactly one file').returns(true) do
40
+ @media[:Files][:File].size == 1
41
+ end
42
+
43
+ tests('media object file has an upload link').returns(true) do
44
+ @link = @media[:Files][:File].first[:Link]
18
45
  @link[:rel] == 'upload:default'
19
46
  end
20
47
 
21
- headers = {
22
- 'Content-Length' => iso.size,
23
- 'Content-Type' => 'application/octet-stream',
24
- 'x-vcloud-authorization' => @service.vcloud_token
25
- }
26
- Excon.put(
27
- @link[:href], :body => iso.read, :expects => 200, :headers => headers
28
- )
48
+ unless Fog.mocking?
49
+ headers = {
50
+ 'Content-Length' => @size,
51
+ 'Content-Type' => 'application/octet-stream',
52
+ 'x-vcloud-authorization' => @service.vcloud_token
53
+ }
54
+ Excon.put(
55
+ @link[:href], :body => iso.read, :expects => 200, :headers => headers
56
+ )
57
+ end
29
58
 
30
59
  @service.process_task(@media[:Tasks][:Task])
31
60
  @media_id = @media[:href].split('/').last
@@ -35,81 +64,85 @@ Shindo.tests('Compute::VcloudDirector | media requests', ['vclouddirector']) do
35
64
  end
36
65
  tests("media[:name]").returns(@media_name) { @media[:name] }
37
66
  tests("media[:imageType]").returns('iso') { @media[:imageType] }
38
- tests("media[:size]").returns(iso.size) { @media[:size].to_i }
67
+ tests("media[:size]").returns(@size) { @media[:size].to_i }
39
68
 
40
69
  tests("#get_media_owner(#{@media_id})").data_matches_schema(VcloudDirector::Compute::Schema::OWNER_TYPE) do
41
70
  @owner = @service.get_media_owner(@media_id).body
42
71
  end
43
72
  tests("owner[:User][:name]").returns(@service.user_name) { @owner[:User][:name] }
44
73
 
45
- tests("#put_media_metadata_item_metadata(#{@media_id})").data_matches_schema(VcloudDirector::Compute::Schema::TASK_TYPE) do
46
- @task = @service.put_media_metadata_item_metadata(@media_id, 'fog-test-key', 'fog-test-value').body
47
- end
48
- @service.process_task(@task)
74
+ tests('media metadata') do
75
+ pending if Fog.mocking?
49
76
 
50
- tests("#put_media_metadata_item_metadata(#{@media_id})") do
51
- tests("#put_media_metadata_item_metadata(Boolean)").returns(true) do
52
- task = @service.put_media_metadata_item_metadata(@media_id, 'fog-test-boolean', true).body
53
- @service.process_task(task)
77
+ tests("#put_media_metadata_item_metadata(#{@media_id})").data_matches_schema(VcloudDirector::Compute::Schema::TASK_TYPE) do
78
+ @task = @service.put_media_metadata_item_metadata(@media_id, 'fog-test-key', 'fog-test-value').body
54
79
  end
55
- tests("#put_media_metadata_item_metadata(DateTime)").returns(true) do
56
- task = @service.put_media_metadata_item_metadata(@media_id, 'fog-test-datetime', DateTime.now).body
57
- @service.process_task(task)
58
- end
59
- tests("#put_media_metadata_item_metadata(Number)").returns(true) do
60
- task = @service.put_media_metadata_item_metadata(@media_id, 'fog-test-number', 111).body
61
- @service.process_task(task)
62
- end
63
- end
80
+ @service.process_task(@task)
64
81
 
65
- tests("#post_update_media_metadata(#{@media_id})").data_matches_schema(VcloudDirector::Compute::Schema::TASK_TYPE) do
66
- metadata = {
67
- 'fog-test-key-update' => 'fog-test-value-update',
68
- 'fog-test-boolean-update' => false,
69
- 'fog-test-datetime-update' => DateTime.now,
70
- 'fog-test-number-update' => 222
71
- }
72
- @task = @service.post_update_media_metadata(@media_id, metadata).body
73
- end
74
- @service.process_task(@task)
75
-
76
- tests("#get_media_metadata(#{@media_id})") do
77
- tests('response format').data_matches_schema(VcloudDirector::Compute::Schema::METADATA_TYPE) do
78
- @metadata = @service.get_media_metadata(@media_id).body
79
- end
80
- tests('TypedValue') do
81
- pending if @service.api_version.to_f < 5.1
82
- tests('key').returns('MetadataStringValue') do
83
- entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-key'}
84
- entry[:TypedValue][:xsi_type]
85
- end
86
- tests('boolean').returns('MetadataBooleanValue') do
87
- entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-boolean'}
88
- entry[:TypedValue][:xsi_type]
89
- end
90
- tests('datetime').returns('MetadataDateTimeValue') do
91
- entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-datetime'}
92
- entry[:TypedValue][:xsi_type]
93
- end
94
- tests('number').returns('MetadataNumberValue') do
95
- entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-number'}
96
- entry[:TypedValue][:xsi_type]
82
+ tests("#put_media_metadata_item_metadata(#{@media_id})") do
83
+ tests("#put_media_metadata_item_metadata(Boolean)").returns(true) do
84
+ task = @service.put_media_metadata_item_metadata(@media_id, 'fog-test-boolean', true).body
85
+ @service.process_task(task)
97
86
  end
98
- tests('key-update').returns('MetadataStringValue') do
99
- entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-key-update'}
100
- entry[:TypedValue][:xsi_type]
87
+ tests("#put_media_metadata_item_metadata(DateTime)").returns(true) do
88
+ task = @service.put_media_metadata_item_metadata(@media_id, 'fog-test-datetime', DateTime.now).body
89
+ @service.process_task(task)
101
90
  end
102
- tests('boolean-update').returns('MetadataBooleanValue') do
103
- entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-boolean-update'}
104
- entry[:TypedValue][:xsi_type]
91
+ tests("#put_media_metadata_item_metadata(Number)").returns(true) do
92
+ task = @service.put_media_metadata_item_metadata(@media_id, 'fog-test-number', 111).body
93
+ @service.process_task(task)
105
94
  end
106
- tests('datetime-update').returns('MetadataDateTimeValue') do
107
- entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-datetime-update'}
108
- entry[:TypedValue][:xsi_type]
95
+ end
96
+
97
+ tests("#post_update_media_metadata(#{@media_id})").data_matches_schema(VcloudDirector::Compute::Schema::TASK_TYPE) do
98
+ metadata = {
99
+ 'fog-test-key-update' => 'fog-test-value-update',
100
+ 'fog-test-boolean-update' => false,
101
+ 'fog-test-datetime-update' => DateTime.now,
102
+ 'fog-test-number-update' => 222
103
+ }
104
+ @task = @service.post_update_media_metadata(@media_id, metadata).body
105
+ end
106
+ @service.process_task(@task)
107
+
108
+ tests("#get_media_metadata(#{@media_id})") do
109
+ tests('response format').data_matches_schema(VcloudDirector::Compute::Schema::METADATA_TYPE) do
110
+ @metadata = @service.get_media_metadata(@media_id).body
109
111
  end
110
- tests('number-update').returns('MetadataNumberValue') do
111
- entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-number-update'}
112
- entry[:TypedValue][:xsi_type]
112
+ tests('TypedValue') do
113
+ pending if @service.api_version.to_f < 5.1
114
+ tests('key').returns('MetadataStringValue') do
115
+ entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-key'}
116
+ entry[:TypedValue][:xsi_type]
117
+ end
118
+ tests('boolean').returns('MetadataBooleanValue') do
119
+ entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-boolean'}
120
+ entry[:TypedValue][:xsi_type]
121
+ end
122
+ tests('datetime').returns('MetadataDateTimeValue') do
123
+ entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-datetime'}
124
+ entry[:TypedValue][:xsi_type]
125
+ end
126
+ tests('number').returns('MetadataNumberValue') do
127
+ entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-number'}
128
+ entry[:TypedValue][:xsi_type]
129
+ end
130
+ tests('key-update').returns('MetadataStringValue') do
131
+ entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-key-update'}
132
+ entry[:TypedValue][:xsi_type]
133
+ end
134
+ tests('boolean-update').returns('MetadataBooleanValue') do
135
+ entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-boolean-update'}
136
+ entry[:TypedValue][:xsi_type]
137
+ end
138
+ tests('datetime-update').returns('MetadataDateTimeValue') do
139
+ entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-datetime-update'}
140
+ entry[:TypedValue][:xsi_type]
141
+ end
142
+ tests('number-update').returns('MetadataNumberValue') do
143
+ entry = @metadata[:MetadataEntry].detect {|e| e[:Key] == 'fog-test-number-update'}
144
+ entry[:TypedValue][:xsi_type]
145
+ end
113
146
  end
114
147
  end
115
148
  end
@@ -131,7 +164,6 @@ Shindo.tests('Compute::VcloudDirector | media requests', ['vclouddirector']) do
131
164
  end
132
165
 
133
166
  tests('Media item no longer exists') do
134
- pending if Fog.mocking?
135
167
  tests("#get_media(#{@media_id})").raises(Fog::Compute::VcloudDirector::Forbidden) do
136
168
  @service.get_media(@media_id)
137
169
  end
@@ -139,6 +171,7 @@ Shindo.tests('Compute::VcloudDirector | media requests', ['vclouddirector']) do
139
171
  @service.get_media_owner(@media_id)
140
172
  end
141
173
  tests("#get_media_metadata(#{@media_id})").raises(Fog::Compute::VcloudDirector::Forbidden) do
174
+ pending if Fog.mocking?
142
175
  @service.get_media_metadata(@media_id)
143
176
  end
144
177
  tests("#delete_media(#{@media_id})").raises(Fog::Compute::VcloudDirector::Forbidden) do
@@ -159,27 +192,4 @@ Shindo.tests('Compute::VcloudDirector | media requests', ['vclouddirector']) do
159
192
  end
160
193
  end
161
194
 
162
- tests('Invalid image_type').raises(Fog::Compute::VcloudDirector::BadRequest) do
163
- @service.post_upload_media('00000000-0000-0000-0000-000000000000', 'test.iso', 'isox', 0)
164
- end
165
- tests('Invalid size').raises(Fog::Compute::VcloudDirector::BadRequest) do
166
- @service.post_upload_media('00000000-0000-0000-0000-000000000000', 'test.iso', 'iso', -1)
167
- end
168
-
169
- tests('Upload to non-existent vDC').raises(Fog::Compute::VcloudDirector::Forbidden) do
170
- @service.post_upload_media('00000000-0000-0000-0000-000000000000', 'test.iso', 'iso', 0)
171
- end
172
-
173
- tests('Retrieve non-existent Media').raises(Fog::Compute::VcloudDirector::Forbidden) do
174
- @service.get_media('00000000-0000-0000-0000-000000000000')
175
- end
176
-
177
- tests('Retrieve owner of non-existent Media').raises(Fog::Compute::VcloudDirector::Forbidden) do
178
- @service.get_media_owner('00000000-0000-0000-0000-000000000000')
179
- end
180
-
181
- tests('Delete non-existent Media').raises(Fog::Compute::VcloudDirector::Forbidden) do
182
- @service.delete_media('00000000-0000-0000-0000-000000000000')
183
- end
184
-
185
195
  end
@@ -81,7 +81,7 @@ class VcloudDirector
81
81
 
82
82
  # Represents a list of files to be transferred (uploaded or downloaded).
83
83
  FILES_LIST_TYPE = {
84
- :File => FILE_TYPE
84
+ :File => [FILE_TYPE]
85
85
  }
86
86
 
87
87
  # Container for query result sets.
@@ -123,7 +123,7 @@ class VcloudDirector
123
123
  :status => Fog::Nullable::String,
124
124
  :Description => Fog::Nullable::String,
125
125
  # :Tasks => TASKS_IN_PROGRESS_TYPE,
126
- # :Files => FILES_LIST_TYPE
126
+ # :Files => FILES_LIST_TYPE
127
127
  })
128
128
 
129
129
  # Container for references to ResourceEntity objects in this vDC.
@@ -620,6 +620,19 @@ class VcloudDirector
620
620
  :RoleReferences => ROLE_REFERENCES_TYPE,
621
621
  :Networks => NETWORKS_TYPE
622
622
  })
623
+
624
+ # Represents a named disk.
625
+ DISK_TYPE = RESOURCE_ENTITY_TYPE.merge({
626
+ :busSubType => Fog::Nullable::String,
627
+ :busType => Fog::Nullable::String,
628
+ :size => String,
629
+ :StorageProfile => REFERENCE_TYPE,
630
+ :Owner => OWNER_TYPE
631
+ })
632
+
633
+ VMS_TYPE = RESOURCE_TYPE.merge({
634
+ :VmReference => [REFERENCE_TYPE]
635
+ })
623
636
  end
624
637
  end
625
638
  end
@@ -2,6 +2,20 @@ Shindo.tests('Compute::VcloudDirector | task requests', ['vclouddirector']) do
2
2
 
3
3
  @service = Fog::Compute::VcloudDirector.new
4
4
 
5
+ tests('error conditions') do
6
+ tests('retrieve non-existent TasksList').raises(Fog::Compute::VcloudDirector::Forbidden) do
7
+ @service.get_task_list('00000000-0000-0000-0000-000000000000')
8
+ end
9
+ tests('retrieve non-existent Task').raises(Fog::Compute::VcloudDirector::Forbidden) do
10
+ @service.get_task('00000000-0000-0000-0000-000000000000')
11
+ end
12
+ tests('cancel non-existent Task').raises(Fog::Compute::VcloudDirector::Forbidden) do
13
+ @service.post_cancel_task('00000000-0000-0000-0000-000000000000')
14
+ end
15
+ end
16
+
17
+ @org_id = VcloudDirector::Compute::Helper.current_org_id(@service)
18
+
5
19
  tests('#get_task_list').data_matches_schema(VcloudDirector::Compute::Schema::TASKS_LIST_TYPE) do
6
20
  session = @service.get_current_session.body
7
21
  org_href = session[:Link].detect {|l| l[:type] == 'application/vnd.vmware.vcloud.org+xml'}[:href]
@@ -9,12 +23,13 @@ Shindo.tests('Compute::VcloudDirector | task requests', ['vclouddirector']) do
9
23
  @tasks_list = @service.get_task_list(@org_uuid).body
10
24
  end
11
25
 
12
- tests('retrieve non-existent TasksList').raises(Fog::Compute::VcloudDirector::Forbidden) do
13
- @service.get_task_list('00000000-0000-0000-0000-000000000000')
14
- end
15
-
16
- tests('retrieve non-existent Task').raises(Fog::Compute::VcloudDirector::Forbidden) do
17
- @service.get_task('00000000-0000-0000-0000-000000000000')
26
+ tests('each task in the task list') do
27
+ @tasks_list[:Task].each do |task|
28
+ task_id = task[:href].split('/').last
29
+ tests("#get_task(#{task_id}").data_matches_schema(VcloudDirector::Compute::Schema::TASK_TYPE) do
30
+ @service.get_task(task_id).body
31
+ end
32
+ end
18
33
  end
19
34
 
20
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.0
4
+ version: 1.17.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: 2013-10-16 00:00:00.000000000 Z
12
+ date: 2013-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder
@@ -155,22 +155,6 @@ dependencies:
155
155
  - - ! '>='
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
- - !ruby/object:Gem::Dependency
159
- name: unicode
160
- requirement: !ruby/object:Gem::Requirement
161
- none: false
162
- requirements:
163
- - - ~>
164
- - !ruby/object:Gem::Version
165
- version: 0.4.4
166
- type: :runtime
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
- requirements:
171
- - - ~>
172
- - !ruby/object:Gem::Version
173
- version: 0.4.4
174
158
  - !ruby/object:Gem::Dependency
175
159
  name: jekyll
176
160
  requirement: !ruby/object:Gem::Requirement
@@ -347,6 +331,22 @@ dependencies:
347
331
  - - ~>
348
332
  - !ruby/object:Gem::Version
349
333
  version: 0.6.2
334
+ - !ruby/object:Gem::Dependency
335
+ name: unf
336
+ requirement: !ruby/object:Gem::Requirement
337
+ none: false
338
+ requirements:
339
+ - - ! '>='
340
+ - !ruby/object:Gem::Version
341
+ version: '0'
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ none: false
346
+ requirements:
347
+ - - ! '>='
348
+ - !ruby/object:Gem::Version
349
+ version: '0'
350
350
  description: The Ruby cloud services library. Supports all major cloud providers including
351
351
  AWS, Rackspace, Linode, Blue Box, StormOnDemand, and many others. Full support for
352
352
  most AWS services including EC2, S3, CloudWatch, SimpleDB, ELB, and RDS.
@@ -831,6 +831,7 @@ files:
831
831
  - lib/fog/aws/parsers/storage/get_bucket_location.rb
832
832
  - lib/fog/aws/parsers/storage/get_bucket_logging.rb
833
833
  - lib/fog/aws/parsers/storage/get_bucket_object_versions.rb
834
+ - lib/fog/aws/parsers/storage/get_bucket_tagging.rb
834
835
  - lib/fog/aws/parsers/storage/get_bucket_versioning.rb
835
836
  - lib/fog/aws/parsers/storage/get_bucket_website.rb
836
837
  - lib/fog/aws/parsers/storage/get_request_payment.rb
@@ -1300,6 +1301,7 @@ files:
1300
1301
  - lib/fog/aws/requests/storage/delete_bucket_cors.rb
1301
1302
  - lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb
1302
1303
  - lib/fog/aws/requests/storage/delete_bucket_policy.rb
1304
+ - lib/fog/aws/requests/storage/delete_bucket_tagging.rb
1303
1305
  - lib/fog/aws/requests/storage/delete_bucket_website.rb
1304
1306
  - lib/fog/aws/requests/storage/delete_multiple_objects.rb
1305
1307
  - lib/fog/aws/requests/storage/delete_object.rb
@@ -1311,6 +1313,7 @@ files:
1311
1313
  - lib/fog/aws/requests/storage/get_bucket_logging.rb
1312
1314
  - lib/fog/aws/requests/storage/get_bucket_object_versions.rb
1313
1315
  - lib/fog/aws/requests/storage/get_bucket_policy.rb
1316
+ - lib/fog/aws/requests/storage/get_bucket_tagging.rb
1314
1317
  - lib/fog/aws/requests/storage/get_bucket_versioning.rb
1315
1318
  - lib/fog/aws/requests/storage/get_bucket_website.rb
1316
1319
  - lib/fog/aws/requests/storage/get_object.rb
@@ -1333,6 +1336,7 @@ files:
1333
1336
  - lib/fog/aws/requests/storage/put_bucket_lifecycle.rb
1334
1337
  - lib/fog/aws/requests/storage/put_bucket_logging.rb
1335
1338
  - lib/fog/aws/requests/storage/put_bucket_policy.rb
1339
+ - lib/fog/aws/requests/storage/put_bucket_tagging.rb
1336
1340
  - lib/fog/aws/requests/storage/put_bucket_versioning.rb
1337
1341
  - lib/fog/aws/requests/storage/put_bucket_website.rb
1338
1342
  - lib/fog/aws/requests/storage/put_object.rb
@@ -2266,6 +2270,7 @@ files:
2266
2270
  - lib/fog/google/requests/compute/insert_image.rb
2267
2271
  - lib/fog/google/requests/compute/insert_network.rb
2268
2272
  - lib/fog/google/requests/compute/insert_server.rb
2273
+ - lib/fog/google/requests/compute/insert_snapshot.rb
2269
2274
  - lib/fog/google/requests/compute/list_disks.rb
2270
2275
  - lib/fog/google/requests/compute/list_firewalls.rb
2271
2276
  - lib/fog/google/requests/compute/list_global_operations.rb
@@ -3899,7 +3904,7 @@ files:
3899
3904
  - lib/fog/vcloud_director/compute.rb
3900
3905
  - lib/fog/vcloud_director/generators/compute/customization.rb
3901
3906
  - lib/fog/vcloud_director/generators/compute/disks.rb
3902
- - lib/fog/vcloud_director/generators/compute/edge_gateway.rb
3907
+ - lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb
3903
3908
  - lib/fog/vcloud_director/generators/compute/metadata.rb
3904
3909
  - lib/fog/vcloud_director/generators/compute/vm_network.rb
3905
3910
  - lib/fog/vcloud_director/models/compute/catalog.rb
@@ -4046,7 +4051,7 @@ files:
4046
4051
  - lib/fog/vcloud_director/requests/compute/get_vm_pending_question.rb
4047
4052
  - lib/fog/vcloud_director/requests/compute/get_vms.rb
4048
4053
  - lib/fog/vcloud_director/requests/compute/get_vms_by_metadata.rb
4049
- - lib/fog/vcloud_director/requests/compute/get_vms_disks_attached_to.rb
4054
+ - lib/fog/vcloud_director/requests/compute/get_vms_disk_attached_to.rb
4050
4055
  - lib/fog/vcloud_director/requests/compute/get_vms_in_lease_from_query.rb
4051
4056
  - lib/fog/vcloud_director/requests/compute/instantiate_vapp_template.rb
4052
4057
  - lib/fog/vcloud_director/requests/compute/post_acquire_ticket.rb
@@ -4090,6 +4095,7 @@ files:
4090
4095
  - lib/fog/vcloud_director/requests/compute/post_update_vapp_metadata.rb
4091
4096
  - lib/fog/vcloud_director/requests/compute/post_update_vapp_template_metadata.rb
4092
4097
  - lib/fog/vcloud_director/requests/compute/post_upgrade_hw_version.rb
4098
+ - lib/fog/vcloud_director/requests/compute/post_upload_disk.rb
4093
4099
  - lib/fog/vcloud_director/requests/compute/post_upload_media.rb
4094
4100
  - lib/fog/vcloud_director/requests/compute/post_upload_vapp_template.rb
4095
4101
  - lib/fog/vcloud_director/requests/compute/put_catalog_item_metadata_item_metadata.rb
@@ -5146,7 +5152,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
5146
5152
  version: '0'
5147
5153
  segments:
5148
5154
  - 0
5149
- hash: -2999651766627595682
5155
+ hash: 4138993689130012902
5150
5156
  required_rubygems_version: !ruby/object:Gem::Requirement
5151
5157
  none: false
5152
5158
  requirements: