class Fog::Rackspace::AutoScale::Policy

Public Instance Methods

check_attributes() click to toggle source

@return [Boolean] Returns true if the check passes

# File lib/fog/rackspace/models/auto_scale/policy.rb, line 76
def check_attributes
  raise ArgumentError, "This #{self.name} resource requires the #{type} argument" if type.nil?

  if type == 'schedule'
    raise ArgumentError, "This #{self.name} resource requires the args[cron] OR args[at] argument" if args['cron'].nil? && args['at'].nil?
  end

  true
end
create() click to toggle source

Creates policy

  • requires attributes: :name, :type, :cooldown

@return [Boolean] returns true if policy is being created

@raise [Fog::Rackspace::AutoScale:::NotFound] - HTTP 404 @raise [Fog::Rackspace::AutoScale:::BadRequest] - HTTP 400 @raise [Fog::Rackspace::AutoScale:::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::AutoScale:::ServiceError]

@see Policies#create @see docs.rackspace.com/cas/api/v1.0/autoscale-devguide/content/POST_createPolicies_v1.0__tenantId__groups__groupId__policies_Policies.html

# File lib/fog/rackspace/models/auto_scale/policy.rb, line 102
def create
  requires :name, :type, :cooldown

  check_attributes

  options = {}
  options['name'] = name unless name.nil?
  options['change'] = change unless change.nil?
  options['changePercent'] = change_percent unless change_percent.nil?
  options['cooldown'] = cooldown unless cooldown.nil?
  options['type'] = type unless type.nil?
  options['desiredCapacity'] = desired_capacity unless desired_capacity.nil?

  if type == 'schedule'
    options['args'] = args
  end

  data = service.create_policy(group.id, options)
  merge_attributes(data.body['policies'][0])
  true
end
destroy() click to toggle source

Destroy the policy

@return [Boolean] returns true if policy has started deleting

@raise [Fog::Rackspace::AutoScale:::NotFound] - HTTP 404 @raise [Fog::Rackspace::AutoScale:::BadRequest] - HTTP 400 @raise [Fog::Rackspace::AutoScale:::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::AutoScale:::ServiceError]

@see docs.rackspace.com/cas/api/v1.0/autoscale-devguide/content/DELETE_deletePolicy_v1.0__tenantId__groups__groupId__policies__policyId__Policies.html

# File lib/fog/rackspace/models/auto_scale/policy.rb, line 178
def destroy
  requires :identity
  service.delete_policy(group.id, identity)
  true
end
execute() click to toggle source

Executes the scaling policy

@return [Boolean] returns true if policy has been executed

@raise [Fog::Rackspace::AutoScale:::NotFound] - HTTP 404 @raise [Fog::Rackspace::AutoScale:::BadRequest] - HTTP 400 @raise [Fog::Rackspace::AutoScale:::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::AutoScale:::ServiceError]

@see docs.rackspace.com/cas/api/v1.0/autoscale-devguide/content/POST_executePolicy_v1.0__tenantId__groups__groupId__policies__policyId__execute_Policies.html

# File lib/fog/rackspace/models/auto_scale/policy.rb, line 194
def execute
  requires :identity
  service.execute_policy(group.id, identity)
  true
end
group=(group) click to toggle source
# File lib/fog/rackspace/models/auto_scale/policy.rb, line 86
def group=(group)
  attributes[:group] = group.is_a?(Group) ? group : service.groups.new(:id => group)
end
save() click to toggle source

Saves the policy Creates policy if it is new, otherwise it will update it @return [Boolean] true if policy has saved

# File lib/fog/rackspace/models/auto_scale/policy.rb, line 159
def save
  if persisted?
    update
  else
    create
  end
  true
end
update() click to toggle source

Updates the policy

@return [Boolean] returns true if policy has started updating

@raise [Fog::Rackspace::AutoScale:::NotFound] - HTTP 404 @raise [Fog::Rackspace::AutoScale:::BadRequest] - HTTP 400 @raise [Fog::Rackspace::AutoScale:::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::AutoScale:::ServiceError]

@see docs.rackspace.com/cas/api/v1.0/autoscale-devguide/content/PUT_putPolicy_v1.0__tenantId__groups__groupId__policies__policyId__Policies.html

# File lib/fog/rackspace/models/auto_scale/policy.rb, line 134
def update
  requires :identity

  check_attributes

  options = {}
  options['name'] = name unless name.nil?
  options['change'] = change unless change.nil?
  options['changePercent'] = change_percent unless change_percent.nil?
  options['cooldown'] = cooldown unless cooldown.nil?
  options['type'] = type unless type.nil?
  options['desiredCapacity'] = desired_capacity unless desired_capacity.nil?

  if type == 'schedule'
    options['args'] = args
  end

  data = service.update_policy(group.id, identity, options)
  merge_attributes(data.body)
  true
end
webhooks() click to toggle source

Gets the associated webhooks for this policy

@return [Fog::Rackspace::AutoScale::Webhooks] returns Webhooks

@raise [Fog::Rackspace::AutoScale:::NotFound] - HTTP 404 @raise [Fog::Rackspace::AutoScale:::BadRequest] - HTTP 400 @raise [Fog::Rackspace::AutoScale:::InternalServerError] - HTTP 500 @raise [Fog::Rackspace::AutoScale:::ServiceError]

# File lib/fog/rackspace/models/auto_scale/policy.rb, line 208
def webhooks
  requires :identity

  @webhooks ||= Fog::Rackspace::AutoScale::Webhooks.new({
    :service   => service,
    :policy => self,
    :group  => group
  })
end