Determine which container to use from Redis
This commit is contained in:
parent
49ec6effa7
commit
fdc819d53d
@ -20,7 +20,7 @@ module RemoteStorage
|
||||
def authorize_request(user, directory, token, listing=false)
|
||||
request_method = server.env["REQUEST_METHOD"]
|
||||
|
||||
if request_method.match(/PUT|DELETE/) && redis.sismember("migration_in_progress", user)
|
||||
if request_method.match(/PUT|DELETE/) && container_type(user) == "locked"
|
||||
server.halt 503, "Down for maintenance. Back soon!"
|
||||
end
|
||||
|
||||
@ -383,13 +383,11 @@ module RemoteStorage
|
||||
end
|
||||
|
||||
def container_url_for(user)
|
||||
user_container_url = "#{base_url}/#{container_for(user)}"
|
||||
res = do_head_request(user_container_url)
|
||||
# User before container migration
|
||||
return user_container_url if res.status == 200
|
||||
rescue RestClient::ResourceNotFound
|
||||
# User after container migration
|
||||
"#{base_url}/rs:documents:#{settings.environment.to_s}/#{user}"
|
||||
if container_type(user) == "shared"
|
||||
"#{base_url}/rs:documents:#{settings.environment.to_s}/#{user}"
|
||||
else
|
||||
user_container_url
|
||||
end
|
||||
end
|
||||
|
||||
def url_for_key(user, directory, key)
|
||||
@ -404,6 +402,10 @@ module RemoteStorage
|
||||
"rs:#{settings.environment.to_s.chars.first}:#{user}"
|
||||
end
|
||||
|
||||
def container_type(user)
|
||||
redis.get("rs:container:#{user}") || "legacy"
|
||||
end
|
||||
|
||||
def default_headers
|
||||
{"x-auth-token" => swift_token}
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user