1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/aws/models/iam/policies.rb

45 lines
1.3 KiB
Ruby
Raw Normal View History

require 'fog/core/collection'
require 'fog/aws/models/iam/policy'
module Fog
module AWS
class IAM
class Policies < Fog::Collection
2012-12-22 18:30:34 -05:00
model Fog::AWS::IAM::Policy
2012-12-22 18:30:34 -05:00
def initialize(attributes = {})
@username = attributes[:username]
raise ArgumentError.new("Can't get a policy's user without a username") unless @username
super
end
2012-12-22 18:30:34 -05:00
def all
2012-12-22 18:30:34 -05:00
# AWS method get_user_policy only returns an array of policy names, this is kind of useless,
# that's why it has to loop through the list to get the details of each element. I don't like it because it makes this method slow
2012-12-22 18:30:34 -05:00
policy_names = service.list_user_policies(@username).body['PolicyNames'] # it returns an array
policies = []
policy_names.each do |policy_name|
2012-12-22 18:30:34 -05:00
policies << service.get_user_policy(policy_name,@username).body['Policy']
end
load(policies) # data is an array of attribute hashes
end
def get(identity)
2012-12-22 18:30:34 -05:00
data = service.get_user_policy(identity,@username).body['Policy']
new(data) # data is an attribute hash
rescue Fog::AWS::IAM::NotFound
nil
end
2012-12-22 18:30:34 -05:00
def new(attributes = {})
super({ :username => @username }.merge!(attributes))
end
2012-12-22 18:30:34 -05:00
end
end
end
2012-12-22 18:30:34 -05:00
end