mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
add offset for fog times
allows working around clock skew issues
This commit is contained in:
parent
63ac4159d9
commit
74e4288549
4 changed files with 51 additions and 0 deletions
28
lib/fog/aws/requests/storage/sync_clock.rb
Normal file
28
lib/fog/aws/requests/storage/sync_clock.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class Storage
|
||||
class Real
|
||||
|
||||
# Sync clock against S3 to avoid skew errors
|
||||
#
|
||||
def sync_clock
|
||||
response = begin
|
||||
get_service
|
||||
rescue => error
|
||||
error.response
|
||||
end
|
||||
Fog::Time.now = Time.parse(response.headers['Date'])
|
||||
end
|
||||
|
||||
end # Real
|
||||
|
||||
class Mock # :nodoc:all
|
||||
|
||||
def sync_clock
|
||||
true
|
||||
end
|
||||
|
||||
end # Mock
|
||||
end # Storage
|
||||
end # AWS
|
||||
end # Fog
|
|
@ -42,6 +42,7 @@ module Fog
|
|||
request :put_object_acl
|
||||
request :put_object_url
|
||||
request :put_request_payment
|
||||
request :sync_clock
|
||||
request :upload_part
|
||||
|
||||
module Utils
|
||||
|
|
|
@ -29,4 +29,5 @@ require 'fog/core/provider'
|
|||
require 'fog/core/service'
|
||||
require 'fog/core/ssh'
|
||||
require 'fog/core/storage'
|
||||
require 'fog/core/time'
|
||||
require 'fog/core/wait_for'
|
||||
|
|
21
lib/fog/core/time.rb
Normal file
21
lib/fog/core/time.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
module Fog
|
||||
class Time < ::Time
|
||||
class << self
|
||||
|
||||
def now
|
||||
::Time.now - offset
|
||||
end
|
||||
|
||||
def now=(new_now)
|
||||
old_now = ::Time.now
|
||||
@offset = old_now - new_now
|
||||
new_now
|
||||
end
|
||||
|
||||
def offset
|
||||
@offset ||= 0
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue