1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
module Fog
module AWS
class IAM
class Role < Fog::Model
identity :id, :aliases => 'RoleId'
attribute :rolename, :aliases => 'RoleName'
attribute :create_date, :aliases => 'CreateDate', :type => :time
attribute :assume_role_policy_document, :aliases => 'AssumeRolePolicyDocument'
attribute :arn, :aliases => 'Arn'
attribute :path, :aliases => 'Path'
def save
raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
requires :rolename
requires :assume_role_policy_document
data = service.create_role(rolename, assume_role_policy_document, path).body["Role"]
merge_attributes(data)
true
end
def attach(policy_or_arn)
requires :rolename
arn = if policy_or_arn.respond_to?(:arn)
policy_or_arn.arn
else
policy_or_arn
end
service.attach_role_policy(self.rolename, arn)
end
def detach(policy_or_arn)
requires :rolename
arn = if policy_or_arn.respond_to?(:arn)
policy_or_arn.arn
else
policy_or_arn
end
service.detach_role_policy(self.rolename, arn)
end
def attached_policies
requires :rolename
service.managed_policies(:role_name => self.rolename)
end
def instance_profiles
requires :rolename
service.instance_profiles.load(service.list_instance_profiles_for_role(self.rolename).body["InstanceProfiles"])
end
def destroy
requires :rolename
service.delete_role(rolename)
true
end
end
end
end
end
|