class Fog::Rackspace::LoadBalancers::LoadBalancer

Constants

ACTIVE

States

BUILD
DELETED
ERROR
PENDING_DELTE
PENDING_UPDATE
SUSPENDED

Public Class Methods

new(attributes) click to toggle source
Calls superclass method Fog::Model.new
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 32
def initialize(attributes)
  #HACK - Since we are hacking how sub-collections work, we have to make sure the service is valid first.
  # Old 'connection' is renamed as service and should be used instead
  @service = attributes[:service] || attributes[:connection]
  super
end

Public Instance Methods

access_rules() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 39
def access_rules
  @access_rules ||= begin
    Fog::Rackspace::LoadBalancers::AccessRules.new({
      :service => service,
      :load_balancer => self})
  end
end
access_rules=(new_access_rules=[]) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 47
def access_rules=(new_access_rules=[])
  access_rules.load(new_access_rules)
end
connection_throttling() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 139
def connection_throttling
  requires :identity
  throttle = service.get_connection_throttling(identity).body['connectionThrottle']
  throttle.count == 0 ? nil : throttle
end
content_caching() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 104
def content_caching
  requires :identity
  connection.get_content_caching(identity).body['contentCaching']['enabled']
end
destroy() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 175
def destroy
  requires :identity
  service.delete_load_balancer(identity)
  true
end
disable_connection_logging() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 115
def disable_connection_logging
  requires :identity
  service.set_connection_logging identity, false
  attributes[:connection_logging] = false
end
disable_connection_throttling() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 151
def disable_connection_throttling
  requires :identity
  service.remove_connection_throttling(identity)
  true
end
disable_content_caching() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 98
def disable_content_caching
  requires :identity
  connection.set_content_caching identity, false
  true
end
disable_health_monitor() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 133
def disable_health_monitor
  requires :identity
  service.remove_monitor(identity)
  true
end
disable_session_persistence() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 169
def disable_session_persistence
  requires :identity
  service.remove_session_persistence(identity)
  true
end
disable_ssl_termination() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 75
def disable_ssl_termination
  requires :identity
  service.remove_ssl_termination(identity)
end
enable_connection_logging() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 109
def enable_connection_logging
  requires :identity
  service.set_connection_logging identity, true
  attributes[:connection_logging] = true
end
enable_connection_throttling(max_connections, min_connections, max_connection_rate, rate_interval) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 145
def enable_connection_throttling(max_connections, min_connections, max_connection_rate, rate_interval)
  requires :identity
  service.set_connection_throttling(identity, max_connections, min_connections, max_connection_rate, rate_interval)
  true
end
enable_content_caching() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 92
def enable_content_caching
  requires :identity
  connection.set_content_caching identity, true
  true
end
enable_health_monitor(type, delay, timeout, attempsBeforeDeactivation, options = {}) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 127
def enable_health_monitor(type, delay, timeout, attempsBeforeDeactivation, options = {})
  requires :identity
  service.set_monitor(identity, type, delay, timeout, attempsBeforeDeactivation, options)
  true
end
enable_session_persistence(type) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 163
def enable_session_persistence(type)
  requires :identity
  service.set_session_persistence(identity, type)
  true
end
enable_ssl_termination(securePort, privatekey, certificate, options = {}) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 70
def enable_ssl_termination(securePort, privatekey, certificate, options = {})
  requires :identity
  service.set_ssl_termination(identity, securePort, privatekey, certificate, options)
end
error_page() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 199
def error_page
  requires :identity
  service.get_error_page(identity).body['errorpage']['content']
end
error_page=(content) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 204
def error_page=(content)
  requires :identity
  service.set_error_page identity, content
end
health_monitor() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 121
def health_monitor
  requires :identity
  monitor = service.get_monitor(identity).body['healthMonitor']
  monitor.count == 0 ? nil : monitor
end
nodes() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 51
def nodes
  @nodes ||= begin
    Fog::Rackspace::LoadBalancers::Nodes.new({
      :service => service,
      :load_balancer => self})
  end
end
nodes=(new_nodes=[]) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 59
def nodes=(new_nodes=[])
  nodes.load(new_nodes)
end
ready?() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 181
def ready?
  state == ACTIVE
end
reset_error_page() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 209
def reset_error_page
  requires :identity
  service.remove_error_page identity
end
save() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 185
def save
  if persisted?
    update
  else
    create
  end
  true
end
session_persistence() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 157
def session_persistence
  requires :identity
  persistence = service.get_session_persistence(identity).body['sessionPersistence']
  persistence.count == 0 ? nil : persistence
end
ssl_termination() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 63
def ssl_termination
  requires :identity
  ssl_termination = service.get_ssl_termination(identity).body['sslTermination']
rescue Fog::Rackspace::LoadBalancers::NotFound
  nil
end
usage(options = {}) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 194
def usage(options = {})
  requires :identity
  service.get_load_balancer_usage(identity, options).body
end
virtual_ips() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 80
def virtual_ips
  @virtual_ips ||= begin
    Fog::Rackspace::LoadBalancers::VirtualIps.new({
      :service => service,
      :load_balancer => self})
  end
end
virtual_ips=(new_virtual_ips=[]) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 88
def virtual_ips=(new_virtual_ips=[])
  virtual_ips.load(new_virtual_ips)
end

Private Instance Methods

connection_logging=(new_value) click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 253
def connection_logging=(new_value)
  if !new_value.nil? and new_value.is_a?(Hash)
    attributes[:connection_logging] = case new_value['enabled']
                                      when true,'true'
                                        true
                                      when false,'false'
                                        false
                                      end
  else
    attributes[:connection_logging] = new_value
  end
end
create() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 215
def create
  requires :name, :protocol, :port, :virtual_ips, :nodes

  options = {}
  options[:algorithm] = algorithm if algorithm
  options[:timeout] = timeout if timeout

  data = service.create_load_balancer(name, protocol, port, virtual_ips_hash, nodes_hash, options)
  merge_attributes(data.body['loadBalancer'])
end
nodes_hash() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 247
def nodes_hash
  nodes.collect do |node|
    { :address => node.address, :port => node.port, :condition => node.condition, :weight => node.weight }
  end
end
update() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 226
def update
  requires :name, :protocol, :port, :algorithm, :timeout
  options = {
    :name => name,
    :algorithm => algorithm,
    :protocol => protocol,
    :port => port,
    :timeout => timeout }
  service.update_load_balancer(identity, options)

  #TODO - Should this bubble down to nodes? Without tracking changes this would be very inefficient.
  # For now, individual nodes will have to be saved individually after saving an LB
end
virtual_ips_hash() click to toggle source
# File lib/fog/rackspace/models/load_balancers/load_balancer.rb, line 240
def virtual_ips_hash
  virtual_ips.collect do |virtual_ip|
    { :type => virtual_ip.type }
  end

end