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
@@ -31,6 +31,28 @@ module Fog
|
|
31
31
|
end
|
32
32
|
|
33
33
|
end
|
34
|
+
|
35
|
+
class Mock
|
36
|
+
def update_access_key(access_key_id, status, options = {})
|
37
|
+
if user = options['UserName']
|
38
|
+
if data[:users].has_key? user
|
39
|
+
access_keys_data = data[:users][user][:access_keys]
|
40
|
+
else
|
41
|
+
raise Fog::AWS::IAM::NotFound.new('The user with name #{user_name} cannot be found.')
|
42
|
+
end
|
43
|
+
else
|
44
|
+
access_keys_data = data[:access_keys]
|
45
|
+
end
|
46
|
+
key = access_keys_data.detect{|k| k["AccessKeyId"] == access_key_id}
|
47
|
+
key["Status"] = status
|
48
|
+
Excon::Response.new.tap do |response|
|
49
|
+
response.status = 200
|
50
|
+
response.body = { 'AccessKey' => key,
|
51
|
+
'RequestId' => Fog::AWS::Mock.request_id }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
34
56
|
end
|
35
57
|
end
|
36
58
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class AWS
|
4
|
+
class Real
|
5
|
+
|
6
|
+
# Delete tagging for a bucket
|
7
|
+
#
|
8
|
+
# @param bucket_name [String] name of bucket to delete tagging from
|
9
|
+
#
|
10
|
+
# @return [Excon::Response] response:
|
11
|
+
# * status [Integer] - 204
|
12
|
+
#
|
13
|
+
# @see http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETEtagging.html
|
14
|
+
|
15
|
+
def delete_bucket_tagging(bucket_name)
|
16
|
+
request({
|
17
|
+
:expects => 204,
|
18
|
+
:headers => {},
|
19
|
+
:bucket_name => bucket_name,
|
20
|
+
:method => 'DELETE',
|
21
|
+
:query => {'tagging' => nil}
|
22
|
+
})
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
class Mock # :nodoc:all
|
28
|
+
|
29
|
+
def delete_bucket_tagging(bucket_name)
|
30
|
+
response = Excon::Response.new
|
31
|
+
if self.data[:buckets][bucket_name]
|
32
|
+
self.data[:bucket_tagging].delete(bucket_name)
|
33
|
+
response.status = 204
|
34
|
+
else
|
35
|
+
response.status = 404
|
36
|
+
raise(Excon::Errors.status_error({:expects => 204}, response))
|
37
|
+
end
|
38
|
+
|
39
|
+
response
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class AWS
|
4
|
+
class Real
|
5
|
+
|
6
|
+
require 'fog/aws/parsers/storage/get_bucket_tagging'
|
7
|
+
|
8
|
+
# Get tags for an S3 bucket
|
9
|
+
#
|
10
|
+
# @param bucket_name [String] name of bucket to get tags for
|
11
|
+
#
|
12
|
+
# @return [Excon::Response] response:
|
13
|
+
# * body [Hash]:
|
14
|
+
# * BucketTagging [Hash]:
|
15
|
+
# * Key [String] - tag key
|
16
|
+
# * Value [String] - tag value
|
17
|
+
# @see http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETtagging.html
|
18
|
+
|
19
|
+
def get_bucket_tagging(bucket_name)
|
20
|
+
unless bucket_name
|
21
|
+
raise ArgumentError.new('bucket_name is required')
|
22
|
+
end
|
23
|
+
request({
|
24
|
+
:expects => 200,
|
25
|
+
:headers => {},
|
26
|
+
:bucket_name => bucket_name,
|
27
|
+
:idempotent => true,
|
28
|
+
:method => 'GET',
|
29
|
+
:parser => Fog::Parsers::Storage::AWS::GetBucketTagging.new,
|
30
|
+
:query => {'tagging' => nil}
|
31
|
+
})
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
class Mock # :nodoc:all
|
37
|
+
|
38
|
+
def get_bucket_tagging(bucket_name)
|
39
|
+
response = Excon::Response.new
|
40
|
+
if self.data[:buckets][bucket_name] && self.data[:bucket_tagging][bucket_name]
|
41
|
+
response.status = 200
|
42
|
+
response.body = {'BucketTagging' => self.data[:bucket_tagging][bucket_name]}
|
43
|
+
else
|
44
|
+
response.status = 404
|
45
|
+
raise(Excon::Errors.status_error({:expects => 200}, response))
|
46
|
+
end
|
47
|
+
response
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class AWS
|
4
|
+
class Real
|
5
|
+
|
6
|
+
# Change tag set for an S3 bucket
|
7
|
+
#
|
8
|
+
# @param bucket_name [String] name of bucket to modify
|
9
|
+
# @param tags [Hash]:
|
10
|
+
# * Key [String]: tag key
|
11
|
+
# * Value [String]: tag value
|
12
|
+
#
|
13
|
+
# @see http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTtagging.html
|
14
|
+
|
15
|
+
def put_bucket_tagging(bucket_name, tags)
|
16
|
+
tagging = tags.map do |k,v|
|
17
|
+
"<Tag><Key>#{k}</Key><Value>#{v}</Value></Tag>"
|
18
|
+
end.join("\n")
|
19
|
+
data =
|
20
|
+
<<-DATA
|
21
|
+
<Tagging xmlns="http://doc.s3.amazonaws.com/2006-03-01" >
|
22
|
+
<TagSet>
|
23
|
+
#{tagging}
|
24
|
+
</TagSet>
|
25
|
+
</Tagging>
|
26
|
+
DATA
|
27
|
+
|
28
|
+
request({
|
29
|
+
:body => data,
|
30
|
+
:expects => 204,
|
31
|
+
:headers => {'Content-MD5' => Base64.encode64(Digest::MD5.digest(data)).chomp!, 'Content-Type' => 'application/xml'},
|
32
|
+
:bucket_name => bucket_name,
|
33
|
+
:method => 'PUT',
|
34
|
+
:query => {'tagging' => nil}
|
35
|
+
})
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
class Mock # :nodoc:all
|
41
|
+
|
42
|
+
def put_bucket_tagging(bucket_name, tags)
|
43
|
+
response = Excon::Response.new
|
44
|
+
|
45
|
+
if self.data[:buckets][bucket_name]
|
46
|
+
self.data[:bucket_tagging][bucket_name] = tags
|
47
|
+
response.status = 204
|
48
|
+
else
|
49
|
+
response.status = 404
|
50
|
+
raise(Excon::Errors.status_error({:expects => 204}, response))
|
51
|
+
end
|
52
|
+
|
53
|
+
response
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/fog/aws/storage.rb
CHANGED
@@ -34,6 +34,7 @@ module Fog
|
|
34
34
|
response-content-type
|
35
35
|
response-expires
|
36
36
|
restore
|
37
|
+
tagging
|
37
38
|
torrent
|
38
39
|
uploadId
|
39
40
|
uploads
|
@@ -44,7 +45,7 @@ module Fog
|
|
44
45
|
]
|
45
46
|
|
46
47
|
requires :aws_access_key_id, :aws_secret_access_key
|
47
|
-
recognizes :endpoint, :region, :host, :
|
48
|
+
recognizes :endpoint, :region, :host, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :path_style
|
48
49
|
|
49
50
|
secrets :aws_secret_access_key, :hmac
|
50
51
|
|
@@ -65,6 +66,7 @@ module Fog
|
|
65
66
|
request :delete_bucket_website
|
66
67
|
request :delete_object
|
67
68
|
request :delete_multiple_objects
|
69
|
+
request :delete_bucket_tagging
|
68
70
|
request :get_bucket
|
69
71
|
request :get_bucket_acl
|
70
72
|
request :get_bucket_cors
|
@@ -73,6 +75,7 @@ module Fog
|
|
73
75
|
request :get_bucket_logging
|
74
76
|
request :get_bucket_object_versions
|
75
77
|
request :get_bucket_policy
|
78
|
+
request :get_bucket_tagging
|
76
79
|
request :get_bucket_versioning
|
77
80
|
request :get_bucket_website
|
78
81
|
request :get_object
|
@@ -95,6 +98,7 @@ module Fog
|
|
95
98
|
request :put_bucket_lifecycle
|
96
99
|
request :put_bucket_logging
|
97
100
|
request :put_bucket_policy
|
101
|
+
request :put_bucket_tagging
|
98
102
|
request :put_bucket_versioning
|
99
103
|
request :put_bucket_website
|
100
104
|
request :put_object
|
@@ -168,9 +172,9 @@ module Fog
|
|
168
172
|
"/#{escape(bucket_name.to_s)}#{path}"
|
169
173
|
end
|
170
174
|
|
171
|
-
# NOTE: differs
|
175
|
+
# NOTE: differs from Fog::AWS.escape by NOT escaping `/`
|
172
176
|
def escape(string)
|
173
|
-
string =
|
177
|
+
string = defined?(::UNF::Normalizer) ? ::UNF::Normalizer.normalize(string, :nfc) : string
|
174
178
|
string.gsub(/([^a-zA-Z0-9_.\-~\/]+)/) {
|
175
179
|
"%" + $1.unpack("H2" * $1.bytesize).join("%").upcase
|
176
180
|
}
|
@@ -184,9 +188,9 @@ module Fog
|
|
184
188
|
|
185
189
|
if params[:scheme]
|
186
190
|
scheme = params[:scheme]
|
187
|
-
port = params[:port]
|
191
|
+
port = params[:port] || DEFAULT_SCHEME_PORT[scheme]
|
188
192
|
else
|
189
|
-
scheme = @scheme
|
193
|
+
scheme = @scheme
|
190
194
|
port = @port
|
191
195
|
end
|
192
196
|
if DEFAULT_SCHEME_PORT[scheme] == port
|
@@ -225,7 +229,7 @@ module Fog
|
|
225
229
|
:host => host,
|
226
230
|
:port => port,
|
227
231
|
:path => path,
|
228
|
-
:headers => headers
|
232
|
+
:headers => headers
|
229
233
|
})
|
230
234
|
|
231
235
|
#
|
@@ -332,7 +336,8 @@ module Fog
|
|
332
336
|
:buckets => {},
|
333
337
|
:cors => {
|
334
338
|
:bucket => {}
|
335
|
-
}
|
339
|
+
},
|
340
|
+
:bucket_tagging => {}
|
336
341
|
}
|
337
342
|
end
|
338
343
|
end
|
@@ -403,27 +408,19 @@ module Fog
|
|
403
408
|
if @endpoint = options[:endpoint]
|
404
409
|
endpoint = URI.parse(@endpoint)
|
405
410
|
@host = endpoint.host
|
406
|
-
@path = if endpoint.path.empty?
|
407
|
-
'/'
|
408
|
-
else
|
409
|
-
endpoint.path
|
410
|
-
end
|
411
411
|
@scheme = endpoint.scheme
|
412
412
|
@port = endpoint.port
|
413
413
|
else
|
414
414
|
@region = options[:region] || DEFAULT_REGION
|
415
415
|
@host = options[:host] || region_to_host(@region)
|
416
|
-
@path = options[:path] || '/'
|
417
416
|
@scheme = options[:scheme] || DEFAULT_SCHEME
|
418
417
|
@port = options[:port] || DEFAULT_SCHEME_PORT[@scheme]
|
419
418
|
@path_style = options[:path_style] || false
|
420
419
|
end
|
421
|
-
|
422
|
-
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
|
423
420
|
end
|
424
421
|
|
425
422
|
def reload
|
426
|
-
@connection.reset
|
423
|
+
@connection.reset if @connection
|
427
424
|
end
|
428
425
|
|
429
426
|
def signature(params, expires)
|
@@ -493,6 +490,20 @@ DATA
|
|
493
490
|
@hmac = Fog::HMAC.new('sha1', @aws_secret_access_key)
|
494
491
|
end
|
495
492
|
|
493
|
+
def connection(scheme, host, port)
|
494
|
+
uri = "#{scheme}://#{host}:#{port}"
|
495
|
+
if @persistent
|
496
|
+
unless uri == @connection_uri
|
497
|
+
@connection_uri = uri
|
498
|
+
reload
|
499
|
+
@connection = nil
|
500
|
+
end
|
501
|
+
else
|
502
|
+
@connection = nil
|
503
|
+
end
|
504
|
+
@connection ||= Fog::Connection.new(uri, @persistent, @connection_options)
|
505
|
+
end
|
506
|
+
|
496
507
|
def request(params, &block)
|
497
508
|
refresh_credentials_if_expired
|
498
509
|
|
@@ -502,7 +513,9 @@ DATA
|
|
502
513
|
signature = signature(params, expires)
|
503
514
|
|
504
515
|
params = request_params(params)
|
505
|
-
params.delete(:
|
516
|
+
scheme = params.delete(:scheme)
|
517
|
+
host = params.delete(:host)
|
518
|
+
port = params.delete(:port) || DEFAULT_SCHEME_PORT[scheme]
|
506
519
|
|
507
520
|
params[:headers]['Date'] = expires
|
508
521
|
params[:headers]['Authorization'] = "AWS #{@aws_access_key_id}:#{signature}"
|
@@ -510,12 +523,12 @@ DATA
|
|
510
523
|
original_params = params.dup
|
511
524
|
|
512
525
|
begin
|
513
|
-
response =
|
526
|
+
response = connection(scheme, host, port).request(params, &block)
|
514
527
|
rescue Excon::Errors::TemporaryRedirect => error
|
515
528
|
headers = (error.response.is_a?(Hash) ? error.response[:headers] : error.response.headers)
|
516
529
|
uri = URI.parse(headers['Location'])
|
517
530
|
Fog::Logger.warning("fog: followed redirect to #{uri.host}, connecting to the matching region will be more performant")
|
518
|
-
response = Fog::Connection.new("#{
|
531
|
+
response = Fog::Connection.new("#{uri.scheme}://#{uri.host}:#{uri.port}", false, @connection_options).request(original_params, &block)
|
519
532
|
end
|
520
533
|
|
521
534
|
response
|
@@ -18,6 +18,14 @@ module Fog
|
|
18
18
|
attribute :healthcheck
|
19
19
|
attribute :listeners
|
20
20
|
|
21
|
+
# These SSL attributes act only as setters. You can not read certs or keys via the API
|
22
|
+
attribute :certificate_pem
|
23
|
+
attribute :certificate_private_key
|
24
|
+
|
25
|
+
# These SSL attributes act only as getters for metadata
|
26
|
+
attribute :certificate_expires_at
|
27
|
+
attribute :certificate_subject
|
28
|
+
|
21
29
|
# Times
|
22
30
|
attribute :created_at, :type => :time
|
23
31
|
attribute :deleted_at, :type => :time
|
@@ -39,7 +47,9 @@ module Fog
|
|
39
47
|
:listeners => listeners,
|
40
48
|
:healthcheck => healthcheck,
|
41
49
|
:policy => policy,
|
42
|
-
:name => name
|
50
|
+
:name => name,
|
51
|
+
:certificate_pem => certificate_pem,
|
52
|
+
:certificate_private_key => certificate_private_key
|
43
53
|
}.delete_if {|k,v| v.nil? || v == "" }
|
44
54
|
data = service.create_load_balancer(options)
|
45
55
|
merge_attributes(data)
|
@@ -52,8 +62,43 @@ module Fog
|
|
52
62
|
true
|
53
63
|
end
|
54
64
|
|
55
|
-
|
65
|
+
# SSL cert metadata for expiration of certificate
|
66
|
+
def certificate_expires_at
|
67
|
+
attributes[:certificate_expires_at]
|
68
|
+
end
|
69
|
+
|
70
|
+
# SSL cert metadata for subject
|
71
|
+
def certificate_subject
|
72
|
+
attributes[:certificate_subject]
|
73
|
+
end
|
56
74
|
|
75
|
+
# Sets the certificate metadata from the JSON object that contains it.
|
76
|
+
#
|
77
|
+
# It is used by fog's attribute setting and should not be used for attempting to set a
|
78
|
+
# certificate on a load balancer.
|
79
|
+
#
|
80
|
+
# @private
|
81
|
+
def certificate=(cert_metadata)
|
82
|
+
if cert_metadata
|
83
|
+
attributes[:certificate_expires_at] = time_or_original(cert_metadata["expires_at"])
|
84
|
+
attributes[:certificate_subject] = cert_metadata["subject"]
|
85
|
+
else
|
86
|
+
attributes[:certificate_expires_at] = nil
|
87
|
+
attributes[:certificate_subject] = nil
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
def time_or_original(value)
|
94
|
+
begin
|
95
|
+
Time.parse(value)
|
96
|
+
rescue TypeError, ArgumentError
|
97
|
+
value
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
57
102
|
end
|
58
103
|
end
|
59
104
|
end
|
data/lib/fog/core/logger.rb
CHANGED
@@ -5,7 +5,7 @@ module Fog
|
|
5
5
|
:deprecation => ::STDOUT,
|
6
6
|
:warning => ::STDOUT
|
7
7
|
}
|
8
|
-
|
8
|
+
|
9
9
|
@channels[:debug] = ::STDOUT if ENV['DEBUG']
|
10
10
|
|
11
11
|
def self.[](channel)
|
@@ -17,20 +17,19 @@ module Fog
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.debug(message)
|
20
|
-
self.write(:debug, "[light_black][DEBUG] #{message}[/]\n")
|
20
|
+
self.write(:debug, "[light_black][fog][DEBUG] #{message}[/]\n")
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.deprecation(message)
|
24
|
-
self.write(:deprecation, "[yellow][DEPRECATION] #{message}[/]\n")
|
24
|
+
self.write(:deprecation, "[yellow][fog][DEPRECATION] #{message}[/]\n")
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.warning(message)
|
28
|
-
self.write(:warning, "[yellow][WARNING] #{message}[/]\n")
|
28
|
+
self.write(:warning, "[yellow][fog][WARNING] #{message}[/]\n")
|
29
29
|
end
|
30
30
|
|
31
31
|
def self.write(key, value)
|
32
32
|
if channel = @channels[key]
|
33
|
-
value.gsub(Formatador::INDENT_REGEX, '')
|
34
33
|
message = if channel.tty?
|
35
34
|
value.gsub(Formatador::PARSE_REGEX) { "\e[#{Formatador::STYLES[$1.to_sym]}m" }.gsub(Formatador::INDENT_REGEX, '')
|
36
35
|
else
|