mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
Handle host specification on database users
This commit is contained in:
parent
1a934826f6
commit
fc242385f6
5 changed files with 35 additions and 8 deletions
|
@ -23,14 +23,12 @@ module Fog
|
|||
|
||||
def grant_access_for(user)
|
||||
requires :identity, :instance
|
||||
user_name = user.respond_to?(:name) ? user.name : user
|
||||
service.grant_user_access(instance.identity, user_name, name)
|
||||
service.grant_user_access(instance.identity, user, name)
|
||||
end
|
||||
|
||||
def revoke_access_for(user)
|
||||
requires :identity, :instance
|
||||
user_name = user.respond_to?(:name) ? user.name : user
|
||||
service.revoke_user_access(instance.identity, user_name, name)
|
||||
service.revoke_user_access(instance.identity, user, name)
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -8,6 +8,11 @@ module Fog
|
|||
|
||||
attribute :password
|
||||
attribute :databases
|
||||
attribute :host
|
||||
|
||||
def initialize(params = {})
|
||||
super
|
||||
end
|
||||
|
||||
def save
|
||||
requires :identity, :instance, :password
|
||||
|
|
|
@ -15,6 +15,8 @@ module Fog
|
|||
|
||||
def get(user_name)
|
||||
data = retrieve_users.find { |database| database['name'] == user_name }
|
||||
require 'pry'
|
||||
binding.pry
|
||||
data && new(data)
|
||||
end
|
||||
|
||||
|
|
|
@ -2,7 +2,18 @@ module Fog
|
|||
module Rackspace
|
||||
class Databases
|
||||
class Real
|
||||
def grant_user_access(instance_id, user_name, *databases)
|
||||
def grant_user_access(instance_id, user, *databases)
|
||||
user =
|
||||
if user.respond_to?(:name) && user.respond_to?(:host)
|
||||
if user.host == '%'
|
||||
user.name
|
||||
else
|
||||
"#{user.name}@#{user.host}"
|
||||
end
|
||||
else
|
||||
user
|
||||
end
|
||||
|
||||
data = { :databases => [] }
|
||||
databases.each do |db_name|
|
||||
data[:databases] << { :name => db_name }
|
||||
|
@ -12,7 +23,7 @@ module Fog
|
|||
:body => Fog::JSON.encode(data),
|
||||
:expects => 202,
|
||||
:method => 'PUT',
|
||||
:path => "instances/#{instance_id}/users/#{user_name}/databases"
|
||||
:path => "instances/#{instance_id}/users/#{user}/databases"
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,11 +2,22 @@ module Fog
|
|||
module Rackspace
|
||||
class Databases
|
||||
class Real
|
||||
def revoke_user_access(instance_id, user_name, database)
|
||||
def revoke_user_access(instance_id, user, database)
|
||||
user =
|
||||
if user.respond_to?(:name) && user.respond_to?(:host)
|
||||
if user.host == '%'
|
||||
user.name
|
||||
else
|
||||
"#{user.name}@#{user.host}"
|
||||
end
|
||||
else
|
||||
user
|
||||
end
|
||||
|
||||
request(
|
||||
:expects => 202,
|
||||
:method => 'DELETE',
|
||||
:path => "instances/#{instance_id}/users/#{user_name}/databases/#{database}"
|
||||
:path => "instances/#{instance_id}/users/#{user}/databases/#{database}"
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue