Represents the collection of permissions for an EC2 resource. Each permission is a string containing the AWS account ID of a user who has permission to use the resource in question. The {Image} and {Snapshot} classes are currently the only ones that use this interface.
@private
# File lib/aws/ec2/permission_collection.rb, line 28 def initialize(resource, opts = {}) @resource = resource super(opts) end
Adds permissions for specific users to launch this AMI.
@param [Array of Strings] users The AWS account IDs of the
users that should be able to launch this AMI.
@return [nil]
# File lib/aws/ec2/permission_collection.rb, line 90 def add(*users) modify(:add, *users) end
@yield [user_id] Each user ID that has explicit
permissions to launch this AMI.
# File lib/aws/ec2/permission_collection.rb, line 35 def each(&block) resp = client.send(describe_call, describe_params) resp.send(inflected_permissions_attribute).each do |permission| if permission.respond_to?(:user_id) user_id = permission.user_id yield(user_id) end end end
@return [Boolean] True if the collection is empty.
# File lib/aws/ec2/permission_collection.rb, line 52 def empty? size == 0 end
@return [Boolean] True if the resource is private (i.e. not
public).
# File lib/aws/ec2/permission_collection.rb, line 66 def private? !public? end
Sets whether the resource is public or not. This has no effect on the explicit AWS account IDs that may already have permissions to use the resource.
@param [Boolean] value If true, the resource is made public,
otherwise the resource is made private.
@return [nil]
# File lib/aws/ec2/permission_collection.rb, line 77 def public= value params = value ? { :add => [{ :group => "all" }] } : { :remove => [{ :group => "all" }] } client.send(modify_call, modify_params(params)) nil end
@return [Boolean] True if the resource is public.
# File lib/aws/ec2/permission_collection.rb, line 57 def public? resp = client.send(describe_call, describe_params) resp.send(inflected_permissions_attribute).any? do |permission| permission.respond_to?(:group) and permission.group == "all" end end
Removes permissions for specific users to launch this AMI. @param [Array of Strings] users The AWS account IDs of the
users that should no longer be able to launch this AMI.
@return [nil]
# File lib/aws/ec2/permission_collection.rb, line 98 def remove(*users) modify(:remove, *users) end
Resets the launch permissions to their default state. @return [nil]
# File lib/aws/ec2/permission_collection.rb, line 104 def reset client.send(reset_call, reset_params) end
@return [Integer] The number of users that have explicit
permissions to launch this AMI.
# File lib/aws/ec2/permission_collection.rb, line 47 def size inject(0) { |sum, i| sum + 1 } end