Class: Fog::AWS::IAM::Policies

Inherits:
Collection
  • Object
show all
Defined in:
lib/fog/aws/models/iam/policies.rb

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Policies

Returns a new instance of Policies.

Raises:

  • (ArgumentError)


10
11
12
13
14
# File 'lib/fog/aws/models/iam/policies.rb', line 10

def initialize(attributes = {})
  @username = attributes[:username]
  raise ArgumentError.new("Can't get a policy's user without a username") unless @username
  super
end

Instance Method Details

#allObject



16
17
18
19
20
21
22
23
24
25
# File 'lib/fog/aws/models/iam/policies.rb', line 16

def all
  # 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
  policy_names = service.list_user_policies(@username).body['PolicyNames'] # it returns an array
  policies = []
  policy_names.each do |policy_name|
    policies << service.get_user_policy(policy_name,@username).body['Policy']
  end
  load(policies) # data is an array of attribute hashes
end

#get(identity) ⇒ Object



27
28
29
30
31
32
# File 'lib/fog/aws/models/iam/policies.rb', line 27

def get(identity)
  data = service.get_user_policy(identity,@username).body['Policy']
  new(data) # data is an attribute hash
rescue Fog::AWS::IAM::NotFound
  nil
end

#new(attributes = {}) ⇒ Object



34
35
36
# File 'lib/fog/aws/models/iam/policies.rb', line 34

def new(attributes = {})
  super({ :username => @username }.merge!(attributes))
end