lib/aws-sdk-ec2/image.rb in aws-sdk-ec2-1.0.0.rc2 vs lib/aws-sdk-ec2/image.rb in aws-sdk-ec2-1.0.0.rc3

- old
+ new

@@ -1,462 +1,460 @@ # WARNING ABOUT GENERATED CODE # -# This file is generated. See the contributing for info on making contributions: +# This file is generated. See the contributing guide for more information: # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md # # WARNING ABOUT GENERATED CODE -module Aws - module EC2 - class Image +module Aws::EC2 + class Image - extend Aws::Deprecations + extend Aws::Deprecations - # @overload def initialize(id, options = {}) - # @param [String] id - # @option options [Client] :client - # @overload def initialize(options = {}) - # @option options [required, String] :id - # @option options [Client] :client - def initialize(*args) - options = Hash === args.last ? args.pop.dup : {} - @id = extract_id(args, options) - @data = options.delete(:data) - @client = options.delete(:client) || Client.new(options) - end + # @overload def initialize(id, options = {}) + # @param [String] id + # @option options [Client] :client + # @overload def initialize(options = {}) + # @option options [required, String] :id + # @option options [Client] :client + def initialize(*args) + options = Hash === args.last ? args.pop.dup : {} + @id = extract_id(args, options) + @data = options.delete(:data) + @client = options.delete(:client) || Client.new(options) + end - # @!group Read-Only Attributes + # @!group Read-Only Attributes - # @return [String] - def id - @id - end - alias :image_id :id + # @return [String] + def id + @id + end + alias :image_id :id - # The location of the AMI. - # @return [String] - def image_location - data.image_location - end + # The location of the AMI. + # @return [String] + def image_location + data.image_location + end - # The current state of the AMI. If the state is `available`, the image - # is successfully registered and can be used to launch an instance. - # @return [String] - def state - data.state - end + # The current state of the AMI. If the state is `available`, the image + # is successfully registered and can be used to launch an instance. + # @return [String] + def state + data.state + end - # The AWS account ID of the image owner. - # @return [String] - def owner_id - data.owner_id - end + # The AWS account ID of the image owner. + # @return [String] + def owner_id + data.owner_id + end - # The date and time the image was created. - # @return [String] - def creation_date - data.creation_date - end + # The date and time the image was created. + # @return [String] + def creation_date + data.creation_date + end - # Indicates whether the image has public launch permissions. The value - # is `true` if this image has public launch permissions or `false` if it - # has only implicit and explicit launch permissions. - # @return [Boolean] - def public - data.public - end + # Indicates whether the image has public launch permissions. The value + # is `true` if this image has public launch permissions or `false` if it + # has only implicit and explicit launch permissions. + # @return [Boolean] + def public + data.public + end - # Any product codes associated with the AMI. - # @return [Array<Types::ProductCode>] - def product_codes - data.product_codes - end + # Any product codes associated with the AMI. + # @return [Array<Types::ProductCode>] + def product_codes + data.product_codes + end - # The architecture of the image. - # @return [String] - def architecture - data.architecture - end + # The architecture of the image. + # @return [String] + def architecture + data.architecture + end - # The type of image. - # @return [String] - def image_type - data.image_type - end + # The type of image. + # @return [String] + def image_type + data.image_type + end - # The kernel associated with the image, if any. Only applicable for - # machine images. - # @return [String] - def kernel_id - data.kernel_id - end + # The kernel associated with the image, if any. Only applicable for + # machine images. + # @return [String] + def kernel_id + data.kernel_id + end - # The RAM disk associated with the image, if any. Only applicable for - # machine images. - # @return [String] - def ramdisk_id - data.ramdisk_id - end + # The RAM disk associated with the image, if any. Only applicable for + # machine images. + # @return [String] + def ramdisk_id + data.ramdisk_id + end - # The value is `Windows` for Windows AMIs; otherwise blank. - # @return [String] - def platform - data.platform - end + # The value is `Windows` for Windows AMIs; otherwise blank. + # @return [String] + def platform + data.platform + end - # Specifies whether enhanced networking with the Intel 82599 Virtual - # Function interface is enabled. - # @return [String] - def sriov_net_support - data.sriov_net_support - end + # Specifies whether enhanced networking with the Intel 82599 Virtual + # Function interface is enabled. + # @return [String] + def sriov_net_support + data.sriov_net_support + end - # Specifies whether enhanced networking with ENA is enabled. - # @return [Boolean] - def ena_support - data.ena_support - end + # Specifies whether enhanced networking with ENA is enabled. + # @return [Boolean] + def ena_support + data.ena_support + end - # The reason for the state change. - # @return [Types::StateReason] - def state_reason - data.state_reason - end + # The reason for the state change. + # @return [Types::StateReason] + def state_reason + data.state_reason + end - # The AWS account alias (for example, `amazon`, `self`) or the AWS - # account ID of the AMI owner. - # @return [String] - def image_owner_alias - data.image_owner_alias - end + # The AWS account alias (for example, `amazon`, `self`) or the AWS + # account ID of the AMI owner. + # @return [String] + def image_owner_alias + data.image_owner_alias + end - # The name of the AMI that was provided during image creation. - # @return [String] - def name - data.name - end + # The name of the AMI that was provided during image creation. + # @return [String] + def name + data.name + end - # The description of the AMI that was provided during image creation. - # @return [String] - def description - data.description - end + # The description of the AMI that was provided during image creation. + # @return [String] + def description + data.description + end - # The type of root device used by the AMI. The AMI can use an EBS volume - # or an instance store volume. - # @return [String] - def root_device_type - data.root_device_type - end + # The type of root device used by the AMI. The AMI can use an EBS volume + # or an instance store volume. + # @return [String] + def root_device_type + data.root_device_type + end - # The device name of the root device (for example, `/dev/sda1` or - # `/dev/xvda`). - # @return [String] - def root_device_name - data.root_device_name - end + # The device name of the root device (for example, `/dev/sda1` or + # `/dev/xvda`). + # @return [String] + def root_device_name + data.root_device_name + end - # Any block device mapping entries. - # @return [Array<Types::BlockDeviceMapping>] - def block_device_mappings - data.block_device_mappings - end + # Any block device mapping entries. + # @return [Array<Types::BlockDeviceMapping>] + def block_device_mappings + data.block_device_mappings + end - # The type of virtualization of the AMI. - # @return [String] - def virtualization_type - data.virtualization_type - end + # The type of virtualization of the AMI. + # @return [String] + def virtualization_type + data.virtualization_type + end - # Any tags assigned to the image. - # @return [Array<Types::Tag>] - def tags - data.tags - end + # Any tags assigned to the image. + # @return [Array<Types::Tag>] + def tags + data.tags + end - # The hypervisor type of the image. - # @return [String] - def hypervisor - data.hypervisor - end + # The hypervisor type of the image. + # @return [String] + def hypervisor + data.hypervisor + end - # @!endgroup + # @!endgroup - # @return [Client] - def client - @client - end + # @return [Client] + def client + @client + end - # Loads, or reloads {#data} for the current {Image}. - # Returns `self` making it possible to chain methods. - # - # image.reload.data - # - # @return [self] - def load - resp = @client.describe_images(image_ids: [@id]) - @data = resp.images[0] - self - end - alias :reload :load + # Loads, or reloads {#data} for the current {Image}. + # Returns `self` making it possible to chain methods. + # + # image.reload.data + # + # @return [self] + def load + resp = @client.describe_images(image_ids: [@id]) + @data = resp.images[0] + self + end + alias :reload :load - # @return [Types::Image] - # Returns the data for this {Image}. Calls - # {Client#describe_images} if {#data_loaded?} is `false`. - def data - load unless @data - @data - end + # @return [Types::Image] + # Returns the data for this {Image}. Calls + # {Client#describe_images} if {#data_loaded?} is `false`. + def data + load unless @data + @data + end - # @return [Boolean] - # Returns `true` if this resource is loaded. Accessing attributes or - # {#data} on an unloaded resource will trigger a call to {#load}. - def data_loaded? - !!@data - end + # @return [Boolean] + # Returns `true` if this resource is loaded. Accessing attributes or + # {#data} on an unloaded resource will trigger a call to {#load}. + def data_loaded? + !!@data + end - # @param [Hash] options ({}) - # @return [Boolean] - # Returns `true` if the Image exists. - def exists?(options = {}) - begin - wait_until_exists(options.merge(max_attempts: 1)) - true - rescue Aws::Waiters::Errors::UnexpectedError => e - raise e.error - rescue Aws::Waiters::Errors::WaiterFailed - false - end + # @param [Hash] options ({}) + # @return [Boolean] + # Returns `true` if the Image exists. + def exists?(options = {}) + begin + wait_until_exists(options.merge(max_attempts: 1)) + true + rescue Aws::Waiters::Errors::UnexpectedError => e + raise e.error + rescue Aws::Waiters::Errors::WaiterFailed + false end + end - # @param [Hash] options ({}) - # @option options [Integer] :max_attempts (40) - # @option options [Float] :delay (15) - # @option options [Proc] :before_attempt - # @option options [Proc] :before_wait - # @return [Image] - def wait_until_exists(options = {}) - options, params = separate_params_and_options(options) - waiter = Waiters::ImageExists.new(options) - yield_waiter_and_warn(waiter, &Proc.new) if block_given? - resp = waiter.wait(params.merge(image_ids: [@id])) - Image.new({ - id: @id, - data: resp.data.images[0], - client: @client - }) - end + # @param [Hash] options ({}) + # @option options [Integer] :max_attempts (40) + # @option options [Float] :delay (15) + # @option options [Proc] :before_attempt + # @option options [Proc] :before_wait + # @return [Image] + def wait_until_exists(options = {}) + options, params = separate_params_and_options(options) + waiter = Waiters::ImageExists.new(options) + yield_waiter_and_warn(waiter, &Proc.new) if block_given? + resp = waiter.wait(params.merge(image_ids: [@id])) + Image.new({ + id: @id, + data: resp.data.images[0], + client: @client + }) + end - # @!group Actions + # @!group Actions - # @example Request syntax with placeholder values - # - # tag = image.create_tags({ - # dry_run: false, - # tags: [ # required - # { - # key: "String", - # value: "String", - # }, - # ], - # }) - # @param [Hash] options ({}) - # @option options [Boolean] :dry_run - # Checks whether you have the required permissions for the action, - # without actually making the request, and provides an error response. - # If you have the required permissions, the error response is - # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. - # @option options [required, Array<Types::Tag>] :tags - # One or more tags. The `value` parameter is required, but if you don't - # want the tag to have a value, specify the parameter with no value, and - # we set the value to an empty string. - # @return [Tag::Collection] - def create_tags(options = {}) - batch = [] - options = Aws::Util.deep_merge(options, resources: [@id]) - resp = @client.create_tags(options) - options[:tags].each do |t| - batch << Tag.new( - resource_id: @id, - key: t[:key], - value: t[:value], - client: @client - ) - end - Tag::Collection.new([batch], size: batch.size) + # @example Request syntax with placeholder values + # + # tag = image.create_tags({ + # dry_run: false, + # tags: [ # required + # { + # key: "String", + # value: "String", + # }, + # ], + # }) + # @param [Hash] options ({}) + # @option options [Boolean] :dry_run + # Checks whether you have the required permissions for the action, + # without actually making the request, and provides an error response. + # If you have the required permissions, the error response is + # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. + # @option options [required, Array<Types::Tag>] :tags + # One or more tags. The `value` parameter is required, but if you don't + # want the tag to have a value, specify the parameter with no value, and + # we set the value to an empty string. + # @return [Tag::Collection] + def create_tags(options = {}) + batch = [] + options = Aws::Util.deep_merge(options, resources: [@id]) + resp = @client.create_tags(options) + options[:tags].each do |t| + batch << Tag.new( + resource_id: @id, + key: t[:key], + value: t[:value], + client: @client + ) end + Tag::Collection.new([batch], size: batch.size) + end - # @example Request syntax with placeholder values - # - # image.deregister({ - # dry_run: false, - # }) - # @param [Hash] options ({}) - # @option options [Boolean] :dry_run - # Checks whether you have the required permissions for the action, - # without actually making the request, and provides an error response. - # If you have the required permissions, the error response is - # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. - # @return [EmptyStructure] - def deregister(options = {}) - options = options.merge(image_id: @id) - resp = @client.deregister_image(options) - resp.data - end + # @example Request syntax with placeholder values + # + # image.deregister({ + # dry_run: false, + # }) + # @param [Hash] options ({}) + # @option options [Boolean] :dry_run + # Checks whether you have the required permissions for the action, + # without actually making the request, and provides an error response. + # If you have the required permissions, the error response is + # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. + # @return [EmptyStructure] + def deregister(options = {}) + options = options.merge(image_id: @id) + resp = @client.deregister_image(options) + resp.data + end - # @example Request syntax with placeholder values - # - # image.describe_attribute({ - # dry_run: false, - # attribute: "description", # required, accepts description, kernel, ramdisk, launchPermission, productCodes, blockDeviceMapping, sriovNetSupport - # }) - # @param [Hash] options ({}) - # @option options [Boolean] :dry_run - # Checks whether you have the required permissions for the action, - # without actually making the request, and provides an error response. - # If you have the required permissions, the error response is - # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. - # @option options [required, String] :attribute - # The AMI attribute. - # - # **Note**\: Depending on your account privileges, the - # `blockDeviceMapping` attribute may return a `Client.AuthFailure` - # error. If this happens, use DescribeImages to get information about - # the block device mapping for the AMI. - # @return [Types::ImageAttribute] - def describe_attribute(options = {}) - options = options.merge(image_id: @id) - resp = @client.describe_image_attribute(options) - resp.data - end + # @example Request syntax with placeholder values + # + # image.describe_attribute({ + # dry_run: false, + # attribute: "description", # required, accepts description, kernel, ramdisk, launchPermission, productCodes, blockDeviceMapping, sriovNetSupport + # }) + # @param [Hash] options ({}) + # @option options [Boolean] :dry_run + # Checks whether you have the required permissions for the action, + # without actually making the request, and provides an error response. + # If you have the required permissions, the error response is + # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. + # @option options [required, String] :attribute + # The AMI attribute. + # + # **Note**\: Depending on your account privileges, the + # `blockDeviceMapping` attribute may return a `Client.AuthFailure` + # error. If this happens, use DescribeImages to get information about + # the block device mapping for the AMI. + # @return [Types::ImageAttribute] + def describe_attribute(options = {}) + options = options.merge(image_id: @id) + resp = @client.describe_image_attribute(options) + resp.data + end - # @example Request syntax with placeholder values - # - # image.modify_attribute({ - # dry_run: false, - # attribute: "String", - # operation_type: "add", # accepts add, remove - # user_ids: ["String"], - # user_groups: ["String"], - # product_codes: ["String"], - # value: "String", - # launch_permission: { - # add: [ - # { - # user_id: "String", - # group: "all", # accepts all - # }, - # ], - # remove: [ - # { - # user_id: "String", - # group: "all", # accepts all - # }, - # ], - # }, - # description: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil> - # }) - # @param [Hash] options ({}) - # @option options [Boolean] :dry_run - # Checks whether you have the required permissions for the action, - # without actually making the request, and provides an error response. - # If you have the required permissions, the error response is - # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. - # @option options [String] :attribute - # The name of the attribute to modify. - # @option options [String] :operation_type - # The operation type. - # @option options [Array<String>] :user_ids - # One or more AWS account IDs. This is only valid when modifying the - # `launchPermission` attribute. - # @option options [Array<String>] :user_groups - # One or more user groups. This is only valid when modifying the - # `launchPermission` attribute. - # @option options [Array<String>] :product_codes - # One or more product codes. After you add a product code to an AMI, it - # can't be removed. This is only valid when modifying the - # `productCodes` attribute. - # @option options [String] :value - # The value of the attribute being modified. This is only valid when - # modifying the `description` attribute. - # @option options [Types::LaunchPermissionModifications] :launch_permission - # A launch permission modification. - # @option options [Types::AttributeValue] :description - # A description for the AMI. - # @return [EmptyStructure] - def modify_attribute(options = {}) - options = options.merge(image_id: @id) - resp = @client.modify_image_attribute(options) - resp.data - end + # @example Request syntax with placeholder values + # + # image.modify_attribute({ + # dry_run: false, + # attribute: "String", + # operation_type: "add", # accepts add, remove + # user_ids: ["String"], + # user_groups: ["String"], + # product_codes: ["String"], + # value: "String", + # launch_permission: { + # add: [ + # { + # user_id: "String", + # group: "all", # accepts all + # }, + # ], + # remove: [ + # { + # user_id: "String", + # group: "all", # accepts all + # }, + # ], + # }, + # description: "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil> + # }) + # @param [Hash] options ({}) + # @option options [Boolean] :dry_run + # Checks whether you have the required permissions for the action, + # without actually making the request, and provides an error response. + # If you have the required permissions, the error response is + # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. + # @option options [String] :attribute + # The name of the attribute to modify. + # @option options [String] :operation_type + # The operation type. + # @option options [Array<String>] :user_ids + # One or more AWS account IDs. This is only valid when modifying the + # `launchPermission` attribute. + # @option options [Array<String>] :user_groups + # One or more user groups. This is only valid when modifying the + # `launchPermission` attribute. + # @option options [Array<String>] :product_codes + # One or more product codes. After you add a product code to an AMI, it + # can't be removed. This is only valid when modifying the + # `productCodes` attribute. + # @option options [String] :value + # The value of the attribute being modified. This is only valid when + # modifying the `description` attribute. + # @option options [Types::LaunchPermissionModifications] :launch_permission + # A launch permission modification. + # @option options [Types::AttributeValue] :description + # A description for the AMI. + # @return [EmptyStructure] + def modify_attribute(options = {}) + options = options.merge(image_id: @id) + resp = @client.modify_image_attribute(options) + resp.data + end - # @example Request syntax with placeholder values - # - # image.reset_attribute({ - # dry_run: false, - # attribute: "launchPermission", # required, accepts launchPermission - # }) - # @param [Hash] options ({}) - # @option options [Boolean] :dry_run - # Checks whether you have the required permissions for the action, - # without actually making the request, and provides an error response. - # If you have the required permissions, the error response is - # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. - # @option options [required, String] :attribute - # The attribute to reset (currently you can only reset the launch - # permission attribute). - # @return [EmptyStructure] - def reset_attribute(options = {}) - options = options.merge(image_id: @id) - resp = @client.reset_image_attribute(options) - resp.data - end + # @example Request syntax with placeholder values + # + # image.reset_attribute({ + # dry_run: false, + # attribute: "launchPermission", # required, accepts launchPermission + # }) + # @param [Hash] options ({}) + # @option options [Boolean] :dry_run + # Checks whether you have the required permissions for the action, + # without actually making the request, and provides an error response. + # If you have the required permissions, the error response is + # `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`. + # @option options [required, String] :attribute + # The attribute to reset (currently you can only reset the launch + # permission attribute). + # @return [EmptyStructure] + def reset_attribute(options = {}) + options = options.merge(image_id: @id) + resp = @client.reset_image_attribute(options) + resp.data + end - # @deprecated - # @api private - def identifiers - { id: @id } - end - deprecated(:identifiers) + # @deprecated + # @api private + def identifiers + { id: @id } + end + deprecated(:identifiers) - private + private - def extract_id(args, options) - value = args[0] || options.delete(:id) - case value - when String then value - when nil then raise ArgumentError, "missing required option :id" - else - msg = "expected :id to be a String, got #{value.class}" - raise ArgumentError, msg - end + def extract_id(args, options) + value = args[0] || options.delete(:id) + case value + when String then value + when nil then raise ArgumentError, "missing required option :id" + else + msg = "expected :id to be a String, got #{value.class}" + raise ArgumentError, msg end + end - def yield_waiter_and_warn(waiter, &block) - if !@waiter_block_warned - msg = "pass options to configure the waiter; " - msg << "yielding the waiter is deprecated" - warn(msg) - @waiter_block_warned = true - end - yield(waiter.waiter) + def yield_waiter_and_warn(waiter, &block) + if !@waiter_block_warned + msg = "pass options to configure the waiter; " + msg << "yielding the waiter is deprecated" + warn(msg) + @waiter_block_warned = true end + yield(waiter.waiter) + end - def separate_params_and_options(options) - opts = Set.new([:client, :max_attempts, :delay, :before_attempt, :before_wait]) - waiter_opts = {} - waiter_params = {} - options.each_pair do |key, value| - if opts.include?(key) - waiter_opts[key] = value - else - waiter_params[key] = value - end + def separate_params_and_options(options) + opts = Set.new([:client, :max_attempts, :delay, :before_attempt, :before_wait]) + waiter_opts = {} + waiter_params = {} + options.each_pair do |key, value| + if opts.include?(key) + waiter_opts[key] = value + else + waiter_params[key] = value end - waiter_opts[:client] ||= @client - [waiter_opts, waiter_params] end - - class Collection < Aws::Resources::Collection; end + waiter_opts[:client] ||= @client + [waiter_opts, waiter_params] end + + class Collection < Aws::Resources::Collection; end end end