aws-sdk 1.3.8 → 1.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/aws.rb +2 -0
 - data/lib/aws/api_config/AutoScaling-2011-01-01.yml +563 -0
 - data/lib/aws/auto_scaling.rb +162 -0
 - data/lib/aws/auto_scaling/activity.rb +102 -0
 - data/lib/aws/auto_scaling/activity_collection.rb +82 -0
 - data/lib/aws/auto_scaling/client.rb +50 -0
 - data/lib/aws/auto_scaling/client/xml.rb +32 -0
 - data/lib/aws/auto_scaling/config.rb +18 -0
 - data/lib/aws/auto_scaling/errors.rb +26 -0
 - data/lib/aws/auto_scaling/group.rb +420 -0
 - data/lib/aws/auto_scaling/group_collection.rb +96 -0
 - data/lib/aws/auto_scaling/group_options.rb +146 -0
 - data/lib/aws/auto_scaling/instance.rb +192 -0
 - data/lib/aws/auto_scaling/instance_collection.rb +63 -0
 - data/lib/aws/auto_scaling/launch_configuration.rb +150 -0
 - data/lib/aws/auto_scaling/launch_configuration_collection.rb +144 -0
 - data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
 - data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
 - data/lib/aws/auto_scaling/request.rb +24 -0
 - data/lib/aws/auto_scaling/scaling_policy.rb +125 -0
 - data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
 - data/lib/aws/auto_scaling/scaling_policy_options.rb +61 -0
 - data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
 - data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
 - data/lib/aws/auto_scaling/tag.rb +59 -0
 - data/lib/aws/auto_scaling/tag_collection.rb +112 -0
 - data/lib/aws/core.rb +40 -8
 - data/lib/aws/core/client.rb +28 -3
 - data/lib/aws/core/configuration.rb +38 -31
 - data/lib/aws/core/http/request.rb +3 -3
 - data/lib/aws/core/http/response.rb +2 -1
 - data/lib/aws/core/log_formatter.rb +454 -0
 - data/lib/aws/core/resource.rb +2 -1
 - data/lib/aws/core/response.rb +5 -0
 - data/lib/aws/core/uri_escape.rb +1 -1
 - data/lib/aws/core/xml_grammar.rb +21 -0
 - data/lib/aws/dynamo_db/request.rb +1 -1
 - data/lib/aws/ec2/network_acl_collection.rb +1 -2
 - data/lib/aws/ec2/route_table_collection.rb +1 -2
 - data/lib/aws/ec2/vpn_gateway_collection.rb +1 -1
 - data/lib/aws/elb/load_balancer.rb +0 -2
 - data/lib/aws/errors.rb +2 -2
 - data/lib/aws/s3/object_version_collection.rb +1 -1
 - data/lib/aws/s3/s3_object.rb +4 -4
 - data/lib/aws/sqs/queue.rb +2 -2
 - metadata +52 -27
 - data/lib/aws/core/client_logging.rb +0 -133
 
| 
         @@ -0,0 +1,72 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License"). You
         
     | 
| 
      
 4 
     | 
    
         
            +
            # may not use this file except in compliance with the License. A copy of
         
     | 
| 
      
 5 
     | 
    
         
            +
            # the License is located at
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #     http://aws.amazon.com/apache2.0/
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # or in the "license" file accompanying this file. This file is
         
     | 
| 
      
 10 
     | 
    
         
            +
            # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
         
     | 
| 
      
 11 
     | 
    
         
            +
            # ANY KIND, either express or implied. See the License for the specific
         
     | 
| 
      
 12 
     | 
    
         
            +
            # language governing permissions and limitations under the License.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            module AWS
         
     | 
| 
      
 15 
     | 
    
         
            +
              class AutoScaling
         
     | 
| 
      
 16 
     | 
    
         
            +
                class ScalingPolicyCollection
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  include Core::Collection::Limitable
         
     | 
| 
      
 19 
     | 
    
         
            +
                  include ScalingPolicyOptions
         
     | 
| 
      
 20 
     | 
    
         
            +
                  
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def initialize auto_scaling_group, options = {}
         
     | 
| 
      
 22 
     | 
    
         
            +
                    @group = auto_scaling_group
         
     | 
| 
      
 23 
     | 
    
         
            +
                    super
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  # @return [Group]
         
     | 
| 
      
 27 
     | 
    
         
            +
                  attr_reader :group
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  alias_method :auto_scaling_group, :group
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
                  # @param [String] name The name of the policy you want to create or update.
         
     | 
| 
      
 33 
     | 
    
         
            +
                  # @param (see ScalingPolicyOptions#scaling_policy_options)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  # @option (see ScalingPolicyOptions#scaling_policy_options)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  # @return [ScalingPolicy]
         
     | 
| 
      
 36 
     | 
    
         
            +
                  def create name, options = {}
         
     | 
| 
      
 37 
     | 
    
         
            +
                    scaling_policy = self[name]
         
     | 
| 
      
 38 
     | 
    
         
            +
                    scaling_policy.put(options)
         
     | 
| 
      
 39 
     | 
    
         
            +
                    scaling_policy
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                  alias_method :put, :create
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  # @param [String] policy_name
         
     | 
| 
      
 44 
     | 
    
         
            +
                  # @return [ScalingPolicy]
         
     | 
| 
      
 45 
     | 
    
         
            +
                  def [] policy_name
         
     | 
| 
      
 46 
     | 
    
         
            +
                    ScalingPolicy.new(group, policy_name)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
                  
         
     | 
| 
      
 49 
     | 
    
         
            +
                  protected
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                  def _each_item next_token, limit, options = {}, &block
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                    options[:next_token] = next_token if next_token
         
     | 
| 
      
 54 
     | 
    
         
            +
                    options[:max_records] = limit if limit
         
     | 
| 
      
 55 
     | 
    
         
            +
                    options[:auto_scaling_group_name] = group.name
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                    resp = client.describe_policies(options)
         
     | 
| 
      
 58 
     | 
    
         
            +
                    resp.scaling_policies.each do |details|
         
     | 
| 
      
 59 
     | 
    
         
            +
                      
         
     | 
| 
      
 60 
     | 
    
         
            +
                      scaling_policy = ScalingPolicy.new_from(
         
     | 
| 
      
 61 
     | 
    
         
            +
                        :describe_policies, details, 
         
     | 
| 
      
 62 
     | 
    
         
            +
                        group, details.policy_name)
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                      yield(scaling_policy)
         
     | 
| 
      
 65 
     | 
    
         
            +
                      
         
     | 
| 
      
 66 
     | 
    
         
            +
                    end
         
     | 
| 
      
 67 
     | 
    
         
            +
                    resp.next_token if resp.respond_to?(:next_token)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,61 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License"). You
         
     | 
| 
      
 4 
     | 
    
         
            +
            # may not use this file except in compliance with the License. A copy of
         
     | 
| 
      
 5 
     | 
    
         
            +
            # the License is located at
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #     http://aws.amazon.com/apache2.0/
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # or in the "license" file accompanying this file. This file is
         
     | 
| 
      
 10 
     | 
    
         
            +
            # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
         
     | 
| 
      
 11 
     | 
    
         
            +
            # ANY KIND, either express or implied. See the License for the specific
         
     | 
| 
      
 12 
     | 
    
         
            +
            # language governing permissions and limitations under the License.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            module AWS
         
     | 
| 
      
 15 
     | 
    
         
            +
              class AutoScaling
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                # Provides a hepler method for parsing scaling policy options.
         
     | 
| 
      
 18 
     | 
    
         
            +
                # @private
         
     | 
| 
      
 19 
     | 
    
         
            +
                module ScalingPolicyOptions
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  protected
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  # @param [Hash] options
         
     | 
| 
      
 24 
     | 
    
         
            +
                  #
         
     | 
| 
      
 25 
     | 
    
         
            +
                  # @option options [required,String] :adjustment_type Specifies whether
         
     | 
| 
      
 26 
     | 
    
         
            +
                  #   the adjustment is an absolute number or a percentage of the current
         
     | 
| 
      
 27 
     | 
    
         
            +
                  #   capacity.  Valid values are:
         
     | 
| 
      
 28 
     | 
    
         
            +
                  #   * 'ChangeInCapacity'
         
     | 
| 
      
 29 
     | 
    
         
            +
                  #   * 'ExactCapacity'
         
     | 
| 
      
 30 
     | 
    
         
            +
                  #   * 'PercentChangeInCapacity'
         
     | 
| 
      
 31 
     | 
    
         
            +
                  #
         
     | 
| 
      
 32 
     | 
    
         
            +
                  # @option options [required,Integer] :scaling_adjustment The number of
         
     | 
| 
      
 33 
     | 
    
         
            +
                  #   instances by which to scale. +:adjustment_type+ determines the 
         
     | 
| 
      
 34 
     | 
    
         
            +
                  #   interpretation of this umber (e.g., as an absolute number or as a
         
     | 
| 
      
 35 
     | 
    
         
            +
                  #   percentage of the existing Auto Scaling group size). A positive 
         
     | 
| 
      
 36 
     | 
    
         
            +
                  #   increment adds to the current capacity and a negative value 
         
     | 
| 
      
 37 
     | 
    
         
            +
                  #   removes from the current capacity.
         
     | 
| 
      
 38 
     | 
    
         
            +
                  #
         
     | 
| 
      
 39 
     | 
    
         
            +
                  # @option options [Integer] :cooldown The amount of time, in seconds,
         
     | 
| 
      
 40 
     | 
    
         
            +
                  #   after a scaling activity completes before any further 
         
     | 
| 
      
 41 
     | 
    
         
            +
                  #   trigger-related scaling activities can start.
         
     | 
| 
      
 42 
     | 
    
         
            +
                  #
         
     | 
| 
      
 43 
     | 
    
         
            +
                  # @return [Hash]
         
     | 
| 
      
 44 
     | 
    
         
            +
                  #
         
     | 
| 
      
 45 
     | 
    
         
            +
                  def scaling_policy_options auto_scaling_group, policy_name, options
         
     | 
| 
      
 46 
     | 
    
         
            +
                    opts = {}
         
     | 
| 
      
 47 
     | 
    
         
            +
                    opts[:auto_scaling_group_name] = auto_scaling_group.name
         
     | 
| 
      
 48 
     | 
    
         
            +
                    opts[:policy_name] = policy_name
         
     | 
| 
      
 49 
     | 
    
         
            +
                    [
         
     | 
| 
      
 50 
     | 
    
         
            +
                      :cooldown,
         
     | 
| 
      
 51 
     | 
    
         
            +
                      :adjustment_type,
         
     | 
| 
      
 52 
     | 
    
         
            +
                      :scaling_adjustment,
         
     | 
| 
      
 53 
     | 
    
         
            +
                    ].each do |opt|
         
     | 
| 
      
 54 
     | 
    
         
            +
                      opts[opt] = options[opt] if options.key?(opt)
         
     | 
| 
      
 55 
     | 
    
         
            +
                    end
         
     | 
| 
      
 56 
     | 
    
         
            +
                    opts
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
              end
         
     | 
| 
      
 61 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,145 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License"). You
         
     | 
| 
      
 4 
     | 
    
         
            +
            # may not use this file except in compliance with the License. A copy of
         
     | 
| 
      
 5 
     | 
    
         
            +
            # the License is located at
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #     http://aws.amazon.com/apache2.0/
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # or in the "license" file accompanying this file. This file is
         
     | 
| 
      
 10 
     | 
    
         
            +
            # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
         
     | 
| 
      
 11 
     | 
    
         
            +
            # ANY KIND, either express or implied. See the License for the specific
         
     | 
| 
      
 12 
     | 
    
         
            +
            # language governing permissions and limitations under the License.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            require 'time'
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            module AWS
         
     | 
| 
      
 17 
     | 
    
         
            +
              class AutoScaling
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                # @attr_reader [String] auto_scaling_group_name
         
     | 
| 
      
 20 
     | 
    
         
            +
                #
         
     | 
| 
      
 21 
     | 
    
         
            +
                # @attr_reader [Integer] desired_capacity
         
     | 
| 
      
 22 
     | 
    
         
            +
                #
         
     | 
| 
      
 23 
     | 
    
         
            +
                # @attr_reader [String] recurrence
         
     | 
| 
      
 24 
     | 
    
         
            +
                #
         
     | 
| 
      
 25 
     | 
    
         
            +
                # @attr_reader [Time] start_time
         
     | 
| 
      
 26 
     | 
    
         
            +
                #
         
     | 
| 
      
 27 
     | 
    
         
            +
                # @attr_reader [Time] end_time
         
     | 
| 
      
 28 
     | 
    
         
            +
                #
         
     | 
| 
      
 29 
     | 
    
         
            +
                # @attr_reader [Integer] min_size
         
     | 
| 
      
 30 
     | 
    
         
            +
                #
         
     | 
| 
      
 31 
     | 
    
         
            +
                # @attr_reader [Integer] max_size
         
     | 
| 
      
 32 
     | 
    
         
            +
                #
         
     | 
| 
      
 33 
     | 
    
         
            +
                # @attr_reader [String] arn
         
     | 
| 
      
 34 
     | 
    
         
            +
                #
         
     | 
| 
      
 35 
     | 
    
         
            +
                class ScheduledAction < Core::Resource
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                  # @private
         
     | 
| 
      
 38 
     | 
    
         
            +
                  def initialize name, options = {}
         
     | 
| 
      
 39 
     | 
    
         
            +
                    @name = name
         
     | 
| 
      
 40 
     | 
    
         
            +
                    super
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  # @return [String]
         
     | 
| 
      
 44 
     | 
    
         
            +
                  attr_reader :name
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  attribute :arn, :as => :scheduled_action_arn
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  attribute :auto_scaling_group_name, :static => true
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  attribute :desired_capacity
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                  attribute :recurrence
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  attribute :start_time
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  attribute :end_time
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                  attribute :max_size
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                  attribute :min_size
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  populates_from(:describe_scheduled_actions) do |resp|
         
     | 
| 
      
 63 
     | 
    
         
            +
                    resp.scheduled_update_group_actions.find do |action|
         
     | 
| 
      
 64 
     | 
    
         
            +
                      action.scheduled_action_name == name
         
     | 
| 
      
 65 
     | 
    
         
            +
                    end
         
     | 
| 
      
 66 
     | 
    
         
            +
                  end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                  # @return [Group]
         
     | 
| 
      
 69 
     | 
    
         
            +
                  def group
         
     | 
| 
      
 70 
     | 
    
         
            +
                    Group.new(auto_scaling_group_name, :config => config)
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                  # Updates the scheduled action.  If you omit an option,
         
     | 
| 
      
 74 
     | 
    
         
            +
                  # the corresponding value remains unchanged in the Auto 
         
     | 
| 
      
 75 
     | 
    
         
            +
                  # Scaling group.
         
     | 
| 
      
 76 
     | 
    
         
            +
                  #
         
     | 
| 
      
 77 
     | 
    
         
            +
                  # @param [Hash] options
         
     | 
| 
      
 78 
     | 
    
         
            +
                  #
         
     | 
| 
      
 79 
     | 
    
         
            +
                  # @option options [Integer] :desired_capacity
         
     | 
| 
      
 80 
     | 
    
         
            +
                  #
         
     | 
| 
      
 81 
     | 
    
         
            +
                  # @option options [String] :recurrence
         
     | 
| 
      
 82 
     | 
    
         
            +
                  #
         
     | 
| 
      
 83 
     | 
    
         
            +
                  # @option options [Time,String] :start_time
         
     | 
| 
      
 84 
     | 
    
         
            +
                  #
         
     | 
| 
      
 85 
     | 
    
         
            +
                  # @option options [Time,String] :end_time
         
     | 
| 
      
 86 
     | 
    
         
            +
                  #
         
     | 
| 
      
 87 
     | 
    
         
            +
                  # @option options [Integer] :min_size
         
     | 
| 
      
 88 
     | 
    
         
            +
                  #
         
     | 
| 
      
 89 
     | 
    
         
            +
                  # @option options [Integer] :max_size
         
     | 
| 
      
 90 
     | 
    
         
            +
                  #
         
     | 
| 
      
 91 
     | 
    
         
            +
                  # @return [nil]
         
     | 
| 
      
 92 
     | 
    
         
            +
                  #
         
     | 
| 
      
 93 
     | 
    
         
            +
                  def update options = {}
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                    client_opts = options.dup
         
     | 
| 
      
 96 
     | 
    
         
            +
                    client_opts[:scheduled_action_name] = name
         
     | 
| 
      
 97 
     | 
    
         
            +
                    client_opts[:auto_scaling_group_name] = auto_scaling_group_name
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                    # convert these options to timestamps 
         
     | 
| 
      
 100 
     | 
    
         
            +
                    [:start_time, :end_time].each do |opt|
         
     | 
| 
      
 101 
     | 
    
         
            +
                      if client_opts[opt].is_a?(Time)
         
     | 
| 
      
 102 
     | 
    
         
            +
                        client_opts[opt] = client_opts[opt].iso8601
         
     | 
| 
      
 103 
     | 
    
         
            +
                      end
         
     | 
| 
      
 104 
     | 
    
         
            +
                    end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                    client.put_scheduled_update_group_action(client_opts)
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                  end
         
     | 
| 
      
 111 
     | 
    
         
            +
                  alias_method :put, :update
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                  # @return [Boolean]
         
     | 
| 
      
 114 
     | 
    
         
            +
                  def exists?
         
     | 
| 
      
 115 
     | 
    
         
            +
                    client_opts = {}  
         
     | 
| 
      
 116 
     | 
    
         
            +
                    client_opts[:scheduled_action_names] = [name]
         
     | 
| 
      
 117 
     | 
    
         
            +
                    resp = client.describe_scheduled_actions(client_opts)
         
     | 
| 
      
 118 
     | 
    
         
            +
                    !resp.scheduled_update_group_actions.empty?
         
     | 
| 
      
 119 
     | 
    
         
            +
                  end
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                  # Deletes the current scheduled action.
         
     | 
| 
      
 122 
     | 
    
         
            +
                  # @return [nil]
         
     | 
| 
      
 123 
     | 
    
         
            +
                  def delete
         
     | 
| 
      
 124 
     | 
    
         
            +
                    client_opts = {}
         
     | 
| 
      
 125 
     | 
    
         
            +
                    client_opts[:scheduled_action_name] = name
         
     | 
| 
      
 126 
     | 
    
         
            +
                    client_opts[:auto_scaling_group_name] = auto_scaling_group_name
         
     | 
| 
      
 127 
     | 
    
         
            +
                    client.delete_scheduled_action(client_opts)
         
     | 
| 
      
 128 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 129 
     | 
    
         
            +
                  end
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                  protected
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                  def resource_identifiers
         
     | 
| 
      
 134 
     | 
    
         
            +
                    [[:name, name]]
         
     | 
| 
      
 135 
     | 
    
         
            +
                  end
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
                  def get_resource attr_name = nil
         
     | 
| 
      
 138 
     | 
    
         
            +
                    client_opts = {}
         
     | 
| 
      
 139 
     | 
    
         
            +
                    client_opts[:scheduled_action_names] = [name]
         
     | 
| 
      
 140 
     | 
    
         
            +
                    client.describe_scheduled_actions(client_opts)
         
     | 
| 
      
 141 
     | 
    
         
            +
                  end
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
                end
         
     | 
| 
      
 144 
     | 
    
         
            +
              end
         
     | 
| 
      
 145 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,195 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License"). You
         
     | 
| 
      
 4 
     | 
    
         
            +
            # may not use this file except in compliance with the License. A copy of
         
     | 
| 
      
 5 
     | 
    
         
            +
            # the License is located at
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #     http://aws.amazon.com/apache2.0/
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # or in the "license" file accompanying this file. This file is
         
     | 
| 
      
 10 
     | 
    
         
            +
            # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
         
     | 
| 
      
 11 
     | 
    
         
            +
            # ANY KIND, either express or implied. See the License for the specific
         
     | 
| 
      
 12 
     | 
    
         
            +
            # language governing permissions and limitations under the License.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            require 'time'
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            module AWS
         
     | 
| 
      
 17 
     | 
    
         
            +
              class AutoScaling
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                class ScheduledActionCollection
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  include Core::Collection::Limitable
         
     | 
| 
      
 22 
     | 
    
         
            +
                  
         
     | 
| 
      
 23 
     | 
    
         
            +
                  # @private
         
     | 
| 
      
 24 
     | 
    
         
            +
                  def initialize options = {}
         
     | 
| 
      
 25 
     | 
    
         
            +
                    @filters = options[:filters] || {}
         
     | 
| 
      
 26 
     | 
    
         
            +
                    super
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  # Creates a scheduled scaling action for an Auto Scaling group. 
         
     | 
| 
      
 30 
     | 
    
         
            +
                  # If you leave a parameter unspecified, the corresponding attribute
         
     | 
| 
      
 31 
     | 
    
         
            +
                  # remains unchanged in the group.
         
     | 
| 
      
 32 
     | 
    
         
            +
                  #
         
     | 
| 
      
 33 
     | 
    
         
            +
                  # You must specify an Auto Scaling group.  This can be implicit
         
     | 
| 
      
 34 
     | 
    
         
            +
                  # or explicit:
         
     | 
| 
      
 35 
     | 
    
         
            +
                  #
         
     | 
| 
      
 36 
     | 
    
         
            +
                  #   # given explicity
         
     | 
| 
      
 37 
     | 
    
         
            +
                  #   auto_scaling.secheduled_actions.create('action-name', :group => 'group-name')
         
     | 
| 
      
 38 
     | 
    
         
            +
                  #
         
     | 
| 
      
 39 
     | 
    
         
            +
                  #   # implied by the group
         
     | 
| 
      
 40 
     | 
    
         
            +
                  #   group = auto_scaling.groups.first
         
     | 
| 
      
 41 
     | 
    
         
            +
                  #   group.secheduled_actions.create('action-name')
         
     | 
| 
      
 42 
     | 
    
         
            +
                  #
         
     | 
| 
      
 43 
     | 
    
         
            +
                  # @param [String] name
         
     | 
| 
      
 44 
     | 
    
         
            +
                  #
         
     | 
| 
      
 45 
     | 
    
         
            +
                  # @param [Hash] options
         
     | 
| 
      
 46 
     | 
    
         
            +
                  #
         
     | 
| 
      
 47 
     | 
    
         
            +
                  # @option options [Group,String] :group
         
     | 
| 
      
 48 
     | 
    
         
            +
                  #
         
     | 
| 
      
 49 
     | 
    
         
            +
                  # @option options [Integer] :desired_capacity
         
     | 
| 
      
 50 
     | 
    
         
            +
                  #
         
     | 
| 
      
 51 
     | 
    
         
            +
                  # @option options [Integer] :max_size
         
     | 
| 
      
 52 
     | 
    
         
            +
                  #
         
     | 
| 
      
 53 
     | 
    
         
            +
                  # @option options [Integer] :min_size
         
     | 
| 
      
 54 
     | 
    
         
            +
                  #
         
     | 
| 
      
 55 
     | 
    
         
            +
                  # @option options [String] :recurrence
         
     | 
| 
      
 56 
     | 
    
         
            +
                  #
         
     | 
| 
      
 57 
     | 
    
         
            +
                  # @option options [Time] :start_time
         
     | 
| 
      
 58 
     | 
    
         
            +
                  # 
         
     | 
| 
      
 59 
     | 
    
         
            +
                  # @option options [Time] :end_time
         
     | 
| 
      
 60 
     | 
    
         
            +
                  #
         
     | 
| 
      
 61 
     | 
    
         
            +
                  # @return [ScheduledAction]
         
     | 
| 
      
 62 
     | 
    
         
            +
                  #
         
     | 
| 
      
 63 
     | 
    
         
            +
                  def create name, options = {}
         
     | 
| 
      
 64 
     | 
    
         
            +
                    
         
     | 
| 
      
 65 
     | 
    
         
            +
                    scheduled_action = ScheduledAction.new(name, 
         
     | 
| 
      
 66 
     | 
    
         
            +
                      :auto_scaling_group_name => auto_scaling_group_name_opt(options),
         
     | 
| 
      
 67 
     | 
    
         
            +
                      :config => config)
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                    scheduled_action.update(options)
         
     | 
| 
      
 70 
     | 
    
         
            +
                    scheduled_action
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
      
 73 
     | 
    
         
            +
                  alias_method :put, :create
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                  # @param [String] name The name of the scheduled action.
         
     | 
| 
      
 76 
     | 
    
         
            +
                  # @return [ScheduledAction]
         
     | 
| 
      
 77 
     | 
    
         
            +
                  def [] name
         
     | 
| 
      
 78 
     | 
    
         
            +
                    options = {}
         
     | 
| 
      
 79 
     | 
    
         
            +
                    options[:config] = config
         
     | 
| 
      
 80 
     | 
    
         
            +
                    if group = @filters[:auto_scaling_group_name]
         
     | 
| 
      
 81 
     | 
    
         
            +
                      options[:auto_scaling_group_name] = group
         
     | 
| 
      
 82 
     | 
    
         
            +
                    end
         
     | 
| 
      
 83 
     | 
    
         
            +
                    ScheduledAction.new(name, options)
         
     | 
| 
      
 84 
     | 
    
         
            +
                  end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                  # Returns a new {ScheduledActionCollection} filtered
         
     | 
| 
      
 87 
     | 
    
         
            +
                  # by the given options.
         
     | 
| 
      
 88 
     | 
    
         
            +
                  #
         
     | 
| 
      
 89 
     | 
    
         
            +
                  #   auto_scaling.scheduled_actions.filter(:end_time => Time.now).each do |a|
         
     | 
| 
      
 90 
     | 
    
         
            +
                  #      # ...
         
     | 
| 
      
 91 
     | 
    
         
            +
                  #   end
         
     | 
| 
      
 92 
     | 
    
         
            +
                  #
         
     | 
| 
      
 93 
     | 
    
         
            +
                  # You can chain filter calls:
         
     | 
| 
      
 94 
     | 
    
         
            +
                  #
         
     | 
| 
      
 95 
     | 
    
         
            +
                  #   actions = auto_scaling.scheduled_actions.
         
     | 
| 
      
 96 
     | 
    
         
            +
                  #      filter(:group => 'auto-scaling-group-name').
         
     | 
| 
      
 97 
     | 
    
         
            +
                  #      filter(:start_time => Time.now - 3600).
         
     | 
| 
      
 98 
     | 
    
         
            +
                  #      filter(:end_time => Time.now)
         
     | 
| 
      
 99 
     | 
    
         
            +
                  #
         
     | 
| 
      
 100 
     | 
    
         
            +
                  #   actions.each {|scheduled_action| ... }
         
     | 
| 
      
 101 
     | 
    
         
            +
                  # 
         
     | 
| 
      
 102 
     | 
    
         
            +
                  # @param [Hash] filters
         
     | 
| 
      
 103 
     | 
    
         
            +
                  #
         
     | 
| 
      
 104 
     | 
    
         
            +
                  # @option filters [Group,String] :group
         
     | 
| 
      
 105 
     | 
    
         
            +
                  #
         
     | 
| 
      
 106 
     | 
    
         
            +
                  # @option filters [Array<String>] :scheduled_actions
         
     | 
| 
      
 107 
     | 
    
         
            +
                  #    A list of scheduled actions to be described. If this list is 
         
     | 
| 
      
 108 
     | 
    
         
            +
                  #    omitted, all scheduled actions are described. The list of 
         
     | 
| 
      
 109 
     | 
    
         
            +
                  #    requested scheduled actions cannot contain more than 50 items. 
         
     | 
| 
      
 110 
     | 
    
         
            +
                  #    If an Auto Scaling group name is provided, 
         
     | 
| 
      
 111 
     | 
    
         
            +
                  #    the results are limited to that group. If unknown scheduled 
         
     | 
| 
      
 112 
     | 
    
         
            +
                  #    actions are requested, they are ignored with no error.
         
     | 
| 
      
 113 
     | 
    
         
            +
                  #
         
     | 
| 
      
 114 
     | 
    
         
            +
                  # @option opitons [Time,String] :start_time The earliest scheduled 
         
     | 
| 
      
 115 
     | 
    
         
            +
                  #   start time to return. If +:scheduled_actions+ is provided, 
         
     | 
| 
      
 116 
     | 
    
         
            +
                  #   this field will be ignored.  Should be a Time object or
         
     | 
| 
      
 117 
     | 
    
         
            +
                  #   an iso8601 string.
         
     | 
| 
      
 118 
     | 
    
         
            +
                  #
         
     | 
| 
      
 119 
     | 
    
         
            +
                  # @option filters [Time,String] :end_time 
         
     | 
| 
      
 120 
     | 
    
         
            +
                  #
         
     | 
| 
      
 121 
     | 
    
         
            +
                  # @return [ScheduledActionCollection] Returns a scheduled action
         
     | 
| 
      
 122 
     | 
    
         
            +
                  #   collection that will filter the actions returned by the
         
     | 
| 
      
 123 
     | 
    
         
            +
                  #   given criteria.
         
     | 
| 
      
 124 
     | 
    
         
            +
                  #
         
     | 
| 
      
 125 
     | 
    
         
            +
                  def filter options = {}
         
     | 
| 
      
 126 
     | 
    
         
            +
                    init_opts = {}
         
     | 
| 
      
 127 
     | 
    
         
            +
                    init_opts[:config] = config
         
     | 
| 
      
 128 
     | 
    
         
            +
                    init_opts[:filters] = @filters
         
     | 
| 
      
 129 
     | 
    
         
            +
                    init_opts[:filters].merge!(filter_opts(options))
         
     | 
| 
      
 130 
     | 
    
         
            +
                    ScheduledActionCollection.new(init_opts)
         
     | 
| 
      
 131 
     | 
    
         
            +
                  end
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                  protected
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
                  def auto_scaling_group_name_opt options
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
                    group = options.delete(:group)
         
     | 
| 
      
 138 
     | 
    
         
            +
                    group ||= @filters[:auto_scaling_group_name]
         
     | 
| 
      
 139 
     | 
    
         
            +
                    group = group.name if group.is_a?(Group)
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
                    unless group
         
     | 
| 
      
 142 
     | 
    
         
            +
                      raise ArgumentError, 'missing required option :group'
         
     | 
| 
      
 143 
     | 
    
         
            +
                    end
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                    group
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                  end
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
                  def filter_opts options
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
                    opts = {}
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
                    if g = options[:group]
         
     | 
| 
      
 154 
     | 
    
         
            +
                      opts[:auto_scaling_group_name] = g.is_a?(Group) ? g.name : g
         
     | 
| 
      
 155 
     | 
    
         
            +
                    end
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
                    if actions = options[:scheduled_actions]
         
     | 
| 
      
 158 
     | 
    
         
            +
                      opts[:scheduled_action_names] = actions
         
     | 
| 
      
 159 
     | 
    
         
            +
                    end
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                    [:end_time, :start_time].each do |opt|
         
     | 
| 
      
 162 
     | 
    
         
            +
                      if options[opt].is_a?(Time)
         
     | 
| 
      
 163 
     | 
    
         
            +
                        opts[opt] = options[opt].iso8601
         
     | 
| 
      
 164 
     | 
    
         
            +
                      end
         
     | 
| 
      
 165 
     | 
    
         
            +
                    end
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
                    opts
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
                  end
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
                  def _each_item next_token, limit, options = {}, &block
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
      
 173 
     | 
    
         
            +
                    options[:next_token] = next_token if next_token
         
     | 
| 
      
 174 
     | 
    
         
            +
                    options[:max_records] = limit if limit
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
                    resp = client.describe_scheduled_actions(options.merge(@filters))
         
     | 
| 
      
 177 
     | 
    
         
            +
                    resp.scheduled_update_group_actions.each do |details|
         
     | 
| 
      
 178 
     | 
    
         
            +
                      
         
     | 
| 
      
 179 
     | 
    
         
            +
                      scheduled_action = ScheduledAction.new_from(
         
     | 
| 
      
 180 
     | 
    
         
            +
                        :describe_scheduled_actions,
         
     | 
| 
      
 181 
     | 
    
         
            +
                        details,
         
     | 
| 
      
 182 
     | 
    
         
            +
                        details.scheduled_action_name,
         
     | 
| 
      
 183 
     | 
    
         
            +
                        :config => config)
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
                      yield(scheduled_action)
         
     | 
| 
      
 186 
     | 
    
         
            +
                      
         
     | 
| 
      
 187 
     | 
    
         
            +
                    end
         
     | 
| 
      
 188 
     | 
    
         
            +
             
     | 
| 
      
 189 
     | 
    
         
            +
                    resp.next_token if resp.respond_to?(:next_token)
         
     | 
| 
      
 190 
     | 
    
         
            +
             
     | 
| 
      
 191 
     | 
    
         
            +
                  end
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     | 
| 
      
 193 
     | 
    
         
            +
                end
         
     | 
| 
      
 194 
     | 
    
         
            +
              end
         
     | 
| 
      
 195 
     | 
    
         
            +
            end
         
     |