Class: Fog::Rackspace::AutoScale::Policy

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/rackspace/models/auto_scale/policy.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#argsString (readonly)

  • “cron”: “23 * * * *”

  • “at”: “2013-06-05T03:12Z”

  • “check”: {

        "label": "Website check 1",
        "type": "remote.http",
        "details": {
            "url": "http://www.example.com",
            "method": "GET"
        },
        "monitoring_zones_poll": [
            "mzA"
        ],
        "timeout": 30,
        "period": 100,
        "target_alias": "default"
    },
    "alarm_criteria": {
         "criteria": "if (metric[\"duration\"] >= 2) { return new AlarmStatus(OK); } return new AlarmStatus(CRITICAL);"
    }
    

Examples:

See below:


64
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 64

attribute :args

#changeFixnum (readonly)


26
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 26

attribute :change

#changePercentFixnum (readonly)


30
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 30

attribute :change_percent, :aliases => 'changePercent'

#cooldownFixnum (readonly)


34
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 34

attribute :cooldown

#desiredCapacityFixnum (readonly)


68
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 68

attribute :desired_capacity, :aliases => 'desiredCapacity'

#groupGroup


14
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 14

attribute :group

#idString (readonly)


10
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 10

identity :id

18
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 18

attribute :links

#nameString (readonly)


22
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 22

attribute :name

#typeString (readonly)

Note:

Can only be “webhook”, “schedule” or “cloud_monitoring”

Returns The policy's type


39
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 39

attribute :type

Instance Method Details

#check_attributesBoolean

Returns true if the check passes

Raises:

  • (ArgumentError)

76
77
78
79
80
81
82
83
84
# 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

#createBoolean

Creates policy

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

Raises:

  • (Fog::Rackspace::AutoScale:::NotFound)
    • HTTP 404

  • (Fog::Rackspace::AutoScale:::BadRequest)
    • HTTP 400

  • (Fog::Rackspace::AutoScale:::InternalServerError)
    • HTTP 500

  • (Fog::Rackspace::AutoScale:::ServiceError)

See Also:


102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# 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

#destroyBoolean

Destroy the policy

Raises:

  • (Fog::Rackspace::AutoScale:::NotFound)
    • HTTP 404

  • (Fog::Rackspace::AutoScale:::BadRequest)
    • HTTP 400

  • (Fog::Rackspace::AutoScale:::InternalServerError)
    • HTTP 500

  • (Fog::Rackspace::AutoScale:::ServiceError)

See Also:


178
179
180
181
182
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 178

def destroy
  requires :identity
  service.delete_policy(group.id, identity)
  true
end

#executeBoolean

Executes the scaling policy

Raises:

  • (Fog::Rackspace::AutoScale:::NotFound)
    • HTTP 404

  • (Fog::Rackspace::AutoScale:::BadRequest)
    • HTTP 400

  • (Fog::Rackspace::AutoScale:::InternalServerError)
    • HTTP 500

  • (Fog::Rackspace::AutoScale:::ServiceError)

See Also:


194
195
196
197
198
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 194

def execute
  requires :identity
  service.execute_policy(group.id, identity)
  true
end

#saveBoolean

Saves the policy Creates policy if it is new, otherwise it will update it


159
160
161
162
163
164
165
166
# File 'lib/fog/rackspace/models/auto_scale/policy.rb', line 159

def save
  if persisted?
    update
  else
    create
  end
  true
end

#updateBoolean

Updates the policy

Raises:

  • (Fog::Rackspace::AutoScale:::NotFound)
    • HTTP 404

  • (Fog::Rackspace::AutoScale:::BadRequest)
    • HTTP 400

  • (Fog::Rackspace::AutoScale:::InternalServerError)
    • HTTP 500

  • (Fog::Rackspace::AutoScale:::ServiceError)

See Also:


134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# 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

#webhooksFog::Rackspace::AutoScale::Webhooks

Gets the associated webhooks for this policy

Raises:

  • (Fog::Rackspace::AutoScale:::NotFound)
    • HTTP 404

  • (Fog::Rackspace::AutoScale:::BadRequest)
    • HTTP 400

  • (Fog::Rackspace::AutoScale:::InternalServerError)
    • HTTP 500

  • (Fog::Rackspace::AutoScale:::ServiceError)

208
209
210
211
212
213
214
215
216
# 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