fog 1.16.0 → 1.17.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +6 -0
- data/README.md +25 -0
- data/changelog.txt +108 -0
- data/fog.gemspec +7 -5
- data/lib/fog/aws.rb +8 -2
- data/lib/fog/aws/cloud_formation.rb +0 -1
- data/lib/fog/aws/compute.rb +1 -1
- data/lib/fog/aws/elb.rb +0 -1
- data/lib/fog/aws/iam.rb +4 -1
- data/lib/fog/aws/models/iam/access_key.rb +5 -1
- data/lib/fog/aws/models/iam/access_keys.rb +0 -1
- data/lib/fog/aws/parsers/compute/describe_reserved_instances.rb +2 -1
- data/lib/fog/aws/parsers/storage/get_bucket_tagging.rb +37 -0
- data/lib/fog/aws/requests/compute/copy_image.rb +1 -1
- data/lib/fog/aws/requests/compute/describe_reserved_instances.rb +1 -0
- data/lib/fog/aws/requests/compute/purchase_reserved_instances_offering.rb +1 -0
- data/lib/fog/aws/requests/iam/create_access_key.rb +22 -15
- data/lib/fog/aws/requests/iam/list_access_keys.rb +15 -11
- data/lib/fog/aws/requests/iam/update_access_key.rb +22 -0
- data/lib/fog/aws/requests/storage/delete_bucket_tagging.rb +46 -0
- data/lib/fog/aws/requests/storage/get_bucket_tagging.rb +53 -0
- data/lib/fog/aws/requests/storage/put_bucket_tagging.rb +60 -0
- data/lib/fog/aws/storage.rb +32 -19
- data/lib/fog/brightbox/models/compute/load_balancer.rb +47 -2
- data/lib/fog/core/logger.rb +4 -5
- data/lib/fog/core/service.rb +1 -1
- data/lib/fog/google/README.md +2 -2
- data/lib/fog/google/compute.rb +2 -1
- data/lib/fog/google/examples/bootstrap.rb +1 -1
- data/lib/fog/google/examples/get_list_images.rb +1 -2
- data/lib/fog/google/examples/network.rb +2 -0
- data/lib/fog/google/models/compute/disk.rb +23 -0
- data/lib/fog/google/models/compute/snapshot.rb +1 -0
- data/lib/fog/google/requests/compute/insert_server.rb +1 -1
- data/lib/fog/google/requests/compute/insert_snapshot.rb +49 -0
- data/lib/fog/google/storage.rb +54 -29
- data/lib/fog/hp.rb +0 -4
- data/lib/fog/hp/block_storage.rb +2 -2
- data/lib/fog/hp/cdn.rb +2 -2
- data/lib/fog/hp/compute.rb +2 -2
- data/lib/fog/hp/storage.rb +3 -3
- data/lib/fog/linode/compute.rb +1 -1
- data/lib/fog/linode/dns.rb +1 -1
- data/lib/fog/rackspace/block_storage.rb +0 -2
- data/lib/fog/vcloud_director/compute.rb +76 -2
- data/lib/fog/vcloud_director/generators/compute/{edge_gateway.rb → edge_gateway_service_configuration.rb} +2 -1
- data/lib/fog/vcloud_director/requests/compute/delete_disk.rb +33 -0
- data/lib/fog/vcloud_director/requests/compute/delete_media.rb +82 -2
- data/lib/fog/vcloud_director/requests/compute/get_disk.rb +99 -1
- data/lib/fog/vcloud_director/requests/compute/get_disk_owner.rb +45 -0
- data/lib/fog/vcloud_director/requests/compute/get_edge_gateway.rb +33 -19
- data/lib/fog/vcloud_director/requests/compute/get_media.rb +75 -4
- data/lib/fog/vcloud_director/requests/compute/get_media_owner.rb +34 -4
- data/lib/fog/vcloud_director/requests/compute/get_task.rb +122 -3
- data/lib/fog/vcloud_director/requests/compute/get_task_list.rb +80 -37
- data/lib/fog/vcloud_director/requests/compute/{get_vms_disks_attached_to.rb → get_vms_disk_attached_to.rb} +16 -2
- data/lib/fog/vcloud_director/requests/compute/post_cancel_task.rb +18 -0
- data/lib/fog/vcloud_director/requests/compute/post_clone_media.rb +52 -1
- data/lib/fog/vcloud_director/requests/compute/post_configure_edge_gateway_services.rb +14 -2
- data/lib/fog/vcloud_director/requests/compute/post_instantiate_vapp_template.rb +2 -2
- data/lib/fog/vcloud_director/requests/compute/post_upload_disk.rb +133 -0
- data/lib/fog/vcloud_director/requests/compute/post_upload_media.rb +48 -4
- data/lib/fog/vcloud_director/requests/compute/put_guest_customization_section_vapp.rb +103 -26
- data/lib/fog/vcloud_director/requests/compute/put_network_connection_system_section_vapp.rb +90 -32
- data/lib/fog/version.rb +1 -1
- data/lib/fog/vsphere/compute.rb +29 -14
- data/lib/fog/vsphere/models/compute/server.rb +18 -6
- data/lib/fog/vsphere/requests/compute/create_vm.rb +1 -0
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +2 -9
- data/lib/fog/vsphere/requests/compute/vm_reconfig_cpus.rb +2 -2
- data/lib/fog/xenserver/requests/compute/create_server.rb +1 -1
- data/tests/aws/requests/compute/instance_tests.rb +1 -0
- data/tests/aws/requests/storage/bucket_tests.rb +19 -3
- data/tests/brightbox/compute/schema.rb +1 -0
- data/tests/core/credential_tests.rb +7 -1
- data/tests/core/parser_tests.rb +1 -1
- data/tests/rackspace/block_storage_tests.rb +1 -1
- data/tests/rackspace/cdn_tests.rb +1 -1
- data/tests/rackspace/compute_tests.rb +1 -1
- data/tests/rackspace/compute_v2_tests.rb +1 -1
- data/tests/rackspace/databases_tests.rb +1 -1
- data/tests/rackspace/dns_tests.rb +1 -1
- data/tests/rackspace/load_balancer_tests.rb +1 -1
- data/tests/rackspace/storage_tests.rb +1 -1
- data/tests/vcloud_director/ensure_list_tests.rb +30 -2
- data/tests/vcloud_director/requests/compute/disk_tests.rb +160 -5
- data/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +59 -1
- data/tests/vcloud_director/requests/compute/helper.rb +5 -1
- data/tests/vcloud_director/requests/compute/media_tests.rb +109 -99
- data/tests/vcloud_director/requests/compute/schema_helper.rb +15 -2
- data/tests/vcloud_director/requests/compute/task_tests.rb +21 -6
- metadata +27 -21
data/.travis.yml
CHANGED
@@ -9,6 +9,8 @@ rvm:
|
|
9
9
|
- 1.9.2
|
10
10
|
- 1.9.3
|
11
11
|
- 2.0.0
|
12
|
+
- jruby-18mode
|
13
|
+
- jruby-19mode
|
12
14
|
|
13
15
|
script: bundle exec rake travis
|
14
16
|
|
@@ -22,6 +24,10 @@ matrix:
|
|
22
24
|
gemfile: Gemfile.1.8.7
|
23
25
|
- rvm: 2.0.0
|
24
26
|
gemfile: Gemfile.1.8.7
|
27
|
+
- rvm: jruby-18mode
|
28
|
+
gemfile: Gemfile
|
29
|
+
- rvm: jruby-19mode
|
30
|
+
gemfile: Gemfile.1.8.7
|
25
31
|
|
26
32
|
notifications:
|
27
33
|
email: false
|
data/README.md
CHANGED
@@ -135,6 +135,31 @@ for more details and examples. Once you are ready to start scripting fog, here i
|
|
135
135
|
|
136
136
|
geemus says: "That should give you everything you need to get started, but let me know if there is anything I can do to help!"
|
137
137
|
|
138
|
+
## Versioning
|
139
|
+
|
140
|
+
Fog library aims to adhere to [Semantic Versioning 2.0.0][semver], although it does not
|
141
|
+
address challenges of multi-provider libraries. Semantic versioning is only guaranteed for
|
142
|
+
the common API, not any provider-specific extensions. You may also need to update your
|
143
|
+
configuration from time to time (even between Fog releases) as providers update or deprecate
|
144
|
+
services.
|
145
|
+
|
146
|
+
However, we still aim for forwards compatibility within Fog major versions. As a result of this policy, you can (and
|
147
|
+
should) specify a dependency on this gem using the [Pessimistic Version
|
148
|
+
Constraint][pvc] with two digits of precision. For example:
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
spec.add_dependency 'fog', '~> 1.0'
|
152
|
+
```
|
153
|
+
|
154
|
+
This means your project is compatible with Fog 1.0 up until 2.0. You can also set a higher minimum version:
|
155
|
+
|
156
|
+
```ruby
|
157
|
+
spec.add_dependency 'fog', '~> 1.16'
|
158
|
+
```
|
159
|
+
|
160
|
+
[semver]: http://semver.org/
|
161
|
+
[pvc]: http://guides.rubygems.org/patterns/
|
162
|
+
|
138
163
|
## Contributing
|
139
164
|
|
140
165
|
* Find something you would like to work on.
|
data/changelog.txt
CHANGED
@@ -1,3 +1,111 @@
|
|
1
|
+
1.17.0 10/29/2013 9f0627eec16e636bfe86895bbd36f89d7a017737
|
2
|
+
==========================================================
|
3
|
+
|
4
|
+
Stats! { 'collaborators' => 53, 'downloads' => 3531286, 'forks' => 964, 'open_issues' => 177, 'watchers' => 2765 }
|
5
|
+
|
6
|
+
MVP! Chris Roberts
|
7
|
+
|
8
|
+
[Brightbox]
|
9
|
+
Add SSL settings to load balancer. thanks Paul Thornthwaite
|
10
|
+
|
11
|
+
[aws|iam]
|
12
|
+
Don't pass :host to Excon request. thanks Robert Bousquet
|
13
|
+
|
14
|
+
[aws|storage]
|
15
|
+
ensure connection uses correct scheme, host and port. thanks Brian D. Burns
|
16
|
+
remove unused :path option. thanks Brian D. Burns
|
17
|
+
|
18
|
+
[core]
|
19
|
+
log warning for unrecognized arguments. thanks Brian D. Burns
|
20
|
+
identify origin of log messages. thanks Brian D. Burns
|
21
|
+
Make `ruby-libvirt` dependency optional. thanks Paul Thornthwaite
|
22
|
+
|
23
|
+
[google|compute]
|
24
|
+
examples tweaks. thanks Nat Welch
|
25
|
+
Fix externalIP setup. thanks Nat Welch
|
26
|
+
|
27
|
+
[google|storage]
|
28
|
+
ensure connection uses correct URI. thanks Brian D. Burns
|
29
|
+
|
30
|
+
[jruby]
|
31
|
+
Ignore failures until fully supported. thanks Paul Thornthwaite
|
32
|
+
|
33
|
+
[linode|compute]
|
34
|
+
Avoid passing host to request. thanks Fletcher Nichol
|
35
|
+
|
36
|
+
[linode|dns]
|
37
|
+
avoid passing host to request. thanks geemus
|
38
|
+
|
39
|
+
[misc]
|
40
|
+
Create a Snapshot based on a Disk. thanks Akshay Moghe
|
41
|
+
Add s3 bucket tagging support. thanks Chris Roberts
|
42
|
+
Add mocks in for bucket tagging and include in bucket tests. thanks Chris Roberts
|
43
|
+
Store tag information in mock and check for set tags in `put_bucket_tagging`. thanks Chris Roberts
|
44
|
+
Namespace tagging and move tagging tests prior to bucket deletion. thanks Chris Roberts
|
45
|
+
Return `body` out of test so we have proper value to match against expected `returns`. thanks Chris Roberts
|
46
|
+
Move mock storage initialization and remove storage checks. thanks Chris Roberts
|
47
|
+
AWS IAM userless key management. thanks Jacob Burkhart & Shai Rosenfeld
|
48
|
+
Removed errant :host argument. thanks Jon Topper
|
49
|
+
aws/compute: Hotfix, wrong Name argument for copy_image. thanks Jonas Pfenniger
|
50
|
+
Added testing in JRuby for Travis. thanks Kevin Menard
|
51
|
+
Don't load a couple MRI-only development dependencies on JRuby. thanks Kevin Menard
|
52
|
+
Temporary hack around #2279 to get fog loading on JRuby. thanks Kevin Menard
|
53
|
+
Added logging message for JRuby users to know they're at a disadvantage. thanks Kevin Menard
|
54
|
+
Scope the Unicode module so NameErrors make more sense. thanks Kevin Menard
|
55
|
+
Handle another case of the 'unicode' gem breaking things on JRuby. thanks Kevin Menard
|
56
|
+
Added a JRuby workaround in a test that's failing due to a JRuby bug. thanks Kevin Menard
|
57
|
+
Bound the 'myns' XML namespace to keep Nokogiri on JRuby happy. thanks Kevin Menard
|
58
|
+
Replaced the 'unicode' gem with 'unf' so it'll work with JRuby. thanks Kevin Menard
|
59
|
+
Made the 'unf' dependency optional. thanks Kevin Menard
|
60
|
+
Added a development dependency on 'unf' so the AWS escaping tests will pass. thanks Kevin Menard
|
61
|
+
Don't ignore JRuby failures in Travis any longer, since all known ones have been addressed. thanks Kevin Menard
|
62
|
+
Semantic Versioning (and Pessimistic Versioning Constraint) notice. thanks Max Lincoln
|
63
|
+
Update GCE to v1beta16. thanks Nat Welch
|
64
|
+
@icco can't spell. thanks Nat Welch
|
65
|
+
Fix bug in list images example. thanks Nat Welch
|
66
|
+
typo. thanks Nat Welch
|
67
|
+
Forgot to update Google Readme. thanks Nat Welch
|
68
|
+
allow custom hp_service_type. thanks Omar Reiss
|
69
|
+
applied hp_service_type fix on all services. thanks Omar Reiss
|
70
|
+
add v1 auth fix #2248. thanks Peter Bonnell
|
71
|
+
Add EnableLogging field to FirewallService XML. thanks Philip Potter
|
72
|
+
ensuring that edgegateway list elements are list. thanks Sneha Somwanshi
|
73
|
+
corrected name of edgegateway generator. thanks Sneha Somwanshi
|
74
|
+
tests for configure edge gateways. thanks Sneha Somwanshi
|
75
|
+
added comment on test. thanks Sneha Somwanshi
|
76
|
+
Add a reload() method to the vSphere service. thanks Timur Alperovich
|
77
|
+
Assign service to clone_result before new instance of vm. thanks Xavier Fontrodona
|
78
|
+
add end date for aws instance reservations. thanks aabes
|
79
|
+
- update compute api version to 2013/10/01 - add 'end' to described_reserved_instance. thanks aabes
|
80
|
+
fix mock for purchase ri. thanks aabes
|
81
|
+
Update create_server.rb. thanks avic85
|
82
|
+
Removed host params for excon connections. thanks ccloes
|
83
|
+
Invalid Excon request keys: :host, :port. thanks wenlock
|
84
|
+
|
85
|
+
[rackspace]
|
86
|
+
setting rackspace_region to nil in default tests to override any settings loaded via Fog.credentials. thanks Kyle Rames
|
87
|
+
|
88
|
+
[rackspace|block_storage]
|
89
|
+
fixing merge issue. thanks Kyle Rames
|
90
|
+
|
91
|
+
[vSphere]
|
92
|
+
Implemented feature to specify a socket cpu layout as specified in vmware API. If not used numCoresPerSocket is left out and default VMware behaviour is used. [vSphere] also fixed bug in vm_reconfig_memory: wrong memory value passed to reconfig_hardware (memory in bytes instead of memory in MB). thanks Marc Grimme
|
93
|
+
|
94
|
+
[vcloud_director]
|
95
|
+
improoved tests for #ensure_list!. thanks Dan Abel
|
96
|
+
fixes so that non configured gateway are supported. thanks Dan Abel
|
97
|
+
Change input options structure. thanks Nick Osborn
|
98
|
+
strftime not iso8601 for ruby 1.8.7. thanks Nick Osborn
|
99
|
+
Mocking for tasks. thanks Nick Osborn
|
100
|
+
strftime not iso8601 for ruby 1.8.7. thanks Nick Osborn
|
101
|
+
Consistent usage of ensure_list! in get_disk. thanks Nick Osborn
|
102
|
+
Fix ruby 1.9-isms in media_tests. thanks Nick Osborn
|
103
|
+
|
104
|
+
[vsphere|compute]
|
105
|
+
Small code cleanup. thanks Kevin Menard
|
106
|
+
cleanup merge conflicts with clone method. thanks Mick Pollard
|
107
|
+
|
108
|
+
|
1
109
|
1.16.0 10/16/2013 13a86cd41e8ea10022fb822cb0b4340cbf2c023d
|
2
110
|
==========================================================
|
3
111
|
|
data/fog.gemspec
CHANGED
@@ -6,8 +6,8 @@ Gem::Specification.new do |s|
|
|
6
6
|
## If your rubyforge_project name is different, then edit it and comment out
|
7
7
|
## the sub! line in the Rakefile
|
8
8
|
s.name = 'fog'
|
9
|
-
s.version = '1.
|
10
|
-
s.date = '2013-10-
|
9
|
+
s.version = '1.17.0'
|
10
|
+
s.date = '2013-10-29'
|
11
11
|
s.rubyforge_project = 'fog'
|
12
12
|
|
13
13
|
## Make sure your summary is short. The description may be as long
|
@@ -50,11 +50,10 @@ Gem::Specification.new do |s|
|
|
50
50
|
s.add_dependency('net-ssh', '>=2.1.3')
|
51
51
|
s.add_dependency('nokogiri', '~>1.5')
|
52
52
|
s.add_dependency('ruby-hmac')
|
53
|
-
s.add_dependency('unicode', "~> 0.4.4")
|
54
53
|
|
55
54
|
## List your development dependencies here. Development dependencies are
|
56
55
|
## those that are only needed during development
|
57
|
-
s.add_development_dependency('jekyll')
|
56
|
+
s.add_development_dependency('jekyll') unless RUBY_PLATFORM == 'java'
|
58
57
|
s.add_development_dependency('rake')
|
59
58
|
s.add_development_dependency('rbvmomi')
|
60
59
|
s.add_development_dependency('yard')
|
@@ -65,7 +64,10 @@ Gem::Specification.new do |s|
|
|
65
64
|
s.add_development_dependency('fission')
|
66
65
|
s.add_development_dependency('pry')
|
67
66
|
s.add_development_dependency('google-api-client', '~>0.6.2')
|
68
|
-
|
67
|
+
s.add_development_dependency('unf')
|
68
|
+
if ENV["FOG_USE_LIBVIRT"] && RUBY_PLATFORM != 'java'
|
69
|
+
s.add_development_dependency('ruby-libvirt','~>0.4.0')
|
70
|
+
end
|
69
71
|
|
70
72
|
s.files = `git ls-files`.split("\n")
|
71
73
|
s.test_files = `git ls-files -- {spec,tests}/*`.split("\n")
|
data/lib/fog/aws.rb
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
require 'fog/core'
|
2
2
|
require 'fog/aws/credential_fetcher'
|
3
3
|
require 'fog/aws/signaturev4'
|
4
|
-
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'unf/normalizer'
|
7
|
+
rescue LoadError
|
8
|
+
Fog::Logger.warning("Unable to load the 'unf' gem. Your AWS strings may not be properly encoded.")
|
9
|
+
end
|
10
|
+
|
5
11
|
module Fog
|
6
12
|
module AWS
|
7
13
|
extend Fog::Provider
|
@@ -86,7 +92,7 @@ module Fog
|
|
86
92
|
end
|
87
93
|
|
88
94
|
def self.escape(string)
|
89
|
-
string =
|
95
|
+
string = defined?(::UNF::Normalizer) ? ::UNF::Normalizer.normalize(string, :nfc) : string
|
90
96
|
string.gsub(/([^a-zA-Z0-9_.\-~]+)/) {
|
91
97
|
"%" + $1.unpack("H2" * $1.bytesize).join("%").upcase
|
92
98
|
}
|
data/lib/fog/aws/compute.rb
CHANGED
@@ -372,7 +372,7 @@ module Fog
|
|
372
372
|
@region = options[:region] ||= 'us-east-1'
|
373
373
|
@instrumentor = options[:instrumentor]
|
374
374
|
@instrumentor_name = options[:instrumentor_name] || 'fog.aws.compute'
|
375
|
-
@version = options[:version] || '2013-
|
375
|
+
@version = options[:version] || '2013-10-01'
|
376
376
|
|
377
377
|
if @endpoint = options[:endpoint]
|
378
378
|
endpoint = URI.parse(@endpoint)
|
data/lib/fog/aws/elb.rb
CHANGED
data/lib/fog/aws/iam.rb
CHANGED
@@ -88,6 +88,10 @@ module Fog
|
|
88
88
|
hash[key] = {
|
89
89
|
:owner_id => Fog::AWS::Mock.owner_id,
|
90
90
|
:server_certificates => {},
|
91
|
+
:access_keys => [{
|
92
|
+
"Status" => "Active",
|
93
|
+
"AccessKeyId" => key
|
94
|
+
}],
|
91
95
|
:users => Hash.new do |uhash, ukey|
|
92
96
|
uhash[ukey] = {
|
93
97
|
:user_id => Fog::AWS::Mock.key_id,
|
@@ -205,7 +209,6 @@ module Fog
|
|
205
209
|
:expects => 200,
|
206
210
|
:idempotent => idempotent,
|
207
211
|
:headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
|
208
|
-
:host => @host,
|
209
212
|
:method => 'POST',
|
210
213
|
:parser => parser
|
211
214
|
})
|
@@ -14,7 +14,11 @@ module Fog
|
|
14
14
|
def save
|
15
15
|
requires :username
|
16
16
|
|
17
|
-
|
17
|
+
if !persisted?
|
18
|
+
data = service.create_access_key('UserName'=> username).body["AccessKey"]
|
19
|
+
else
|
20
|
+
data = service.update_access_key(id, status, "UserName" => username).body["AccessKey"]
|
21
|
+
end
|
18
22
|
merge_attributes(data)
|
19
23
|
true
|
20
24
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Storage
|
4
|
+
module AWS
|
5
|
+
|
6
|
+
class GetBucketTagging < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def reset
|
9
|
+
@in_tag = {}
|
10
|
+
@response = {'BucketTagging' => {}}
|
11
|
+
end
|
12
|
+
|
13
|
+
def start_element(name, *args)
|
14
|
+
super
|
15
|
+
if name == 'Tag'
|
16
|
+
@in_tag = {}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def end_element(name)
|
21
|
+
case name
|
22
|
+
when 'Tag'
|
23
|
+
@response['BucketTagging'].merge!(@in_tag)
|
24
|
+
@in_tag = {}
|
25
|
+
when 'Key'
|
26
|
+
@in_tag[value] = nil
|
27
|
+
when 'Value'
|
28
|
+
@in_tag = {@in_tag.keys.first => value}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -26,7 +26,7 @@ module Fog
|
|
26
26
|
'Action' => 'CopyImage',
|
27
27
|
'SourceImageId' => source_image_id,
|
28
28
|
'SourceRegion' => source_region,
|
29
|
-
'Name' =>
|
29
|
+
'Name' => name,
|
30
30
|
'Description' => description,
|
31
31
|
'ClientToken' => client_token,
|
32
32
|
:parser => Fog::Parsers::Compute::AWS::CopyImage.new
|
@@ -25,6 +25,7 @@ module Fog
|
|
25
25
|
# * 'start'<~Time> - start time for reservation
|
26
26
|
# * 'state'<~String> - state of reserved instance purchase, in .[pending-payment, active, payment-failed, retired]
|
27
27
|
# * 'usagePrice"<~Float> - usage price of reserved instances, per hour
|
28
|
+
# * 'end' - time reservation stopped being applied (i.e sold or canceled - as of version 2013/10/01)
|
28
29
|
#
|
29
30
|
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeReservedInstances.html]
|
30
31
|
def describe_reserved_instances(filters = {})
|
@@ -45,6 +45,7 @@ module Fog
|
|
45
45
|
self.data[:reserved_instances][reserved_instances_id] = reserved_instance_offering.merge({
|
46
46
|
'reservedInstancesId' => reserved_instances_id,
|
47
47
|
'start' => Time.now,
|
48
|
+
'end' => Time.now,
|
48
49
|
'instanceCount' => instance_count,
|
49
50
|
'state' => 'payment-pending',
|
50
51
|
'tagSet' => []
|
@@ -36,23 +36,30 @@ module Fog
|
|
36
36
|
def create_access_key(options)
|
37
37
|
#FIXME: Not 100% correct as AWS will use the signing credentials when there is no 'UserName' in the options hash
|
38
38
|
# Also doesn't raise an error when there are too many keys
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
'UserName' => user_name
|
45
|
-
}
|
46
|
-
|
47
|
-
data[:users][user_name][:access_keys] << key
|
48
|
-
|
49
|
-
Excon::Response.new.tap do |response|
|
50
|
-
response.status = 200
|
51
|
-
response.body = { 'AccessKey' => key,
|
52
|
-
'RequestId' => Fog::AWS::Mock.request_id }
|
39
|
+
if user = options['UserName']
|
40
|
+
if data[:users].has_key? user
|
41
|
+
access_keys_data = data[:users][user][:access_keys]
|
42
|
+
else
|
43
|
+
raise Fog::AWS::IAM::NotFound.new('The user with name #{user_name} cannot be found.')
|
53
44
|
end
|
54
45
|
else
|
55
|
-
|
46
|
+
access_keys_data = data[:access_keys]
|
47
|
+
end
|
48
|
+
|
49
|
+
key = { 'SecretAccessKey' => Fog::Mock.random_base64(40),
|
50
|
+
'Status' => 'Active',
|
51
|
+
'AccessKeyId' => Fog::AWS::Mock.key_id(20),
|
52
|
+
}
|
53
|
+
if user
|
54
|
+
key["UserName"] = user
|
55
|
+
end
|
56
|
+
|
57
|
+
access_keys_data << key
|
58
|
+
|
59
|
+
Excon::Response.new.tap do |response|
|
60
|
+
response.status = 200
|
61
|
+
response.body = { 'AccessKey' => key,
|
62
|
+
'RequestId' => Fog::AWS::Mock.request_id }
|
56
63
|
end
|
57
64
|
end
|
58
65
|
end
|
@@ -40,19 +40,23 @@ module Fog
|
|
40
40
|
|
41
41
|
def list_access_keys(options = {})
|
42
42
|
#FIXME: Doesn't do anything with options, aside from UserName
|
43
|
-
user = options['UserName']
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
{'Status' => akey['Status'], 'AccessKeyId' => akey['AccessKeyId']}
|
49
|
-
end,
|
50
|
-
'IsTruncated' => false,
|
51
|
-
'RequestId' => Fog::AWS::Mock.request_id }
|
52
|
-
response.status = 200
|
43
|
+
if user = options['UserName']
|
44
|
+
if data[:users].has_key? user
|
45
|
+
access_keys_data = data[:users][user][:access_keys]
|
46
|
+
else
|
47
|
+
raise Fog::AWS::IAM::NotFound.new("The user with name #{user} cannot be found.")
|
53
48
|
end
|
54
49
|
else
|
55
|
-
|
50
|
+
access_keys_data = data[:access_keys]
|
51
|
+
end
|
52
|
+
|
53
|
+
Excon::Response.new.tap do |response|
|
54
|
+
response.body = { 'AccessKeys' => access_keys_data.map do |akey|
|
55
|
+
{'Status' => akey['Status'], 'AccessKeyId' => akey['AccessKeyId']}
|
56
|
+
end,
|
57
|
+
'IsTruncated' => false,
|
58
|
+
'RequestId' => Fog::AWS::Mock.request_id }
|
59
|
+
response.status = 200
|
56
60
|
end
|
57
61
|
end
|
58
62
|
end
|