class Fog::Rackspace::AutoScale::GroupBuilder

Public Instance Methods

build(service, attributes) click to toggle source
# File lib/fog/rackspace/models/auto_scale/group_builder.rb, line 11
def build(service, attributes)
  service.groups.new :group_config => build_group_config(attributes), :launch_config => build_server_launch_config(attributes)
end
build_group_config(attributes) click to toggle source
# File lib/fog/rackspace/models/auto_scale/group_builder.rb, line 15
def build_group_config(attributes)
  Fog::Rackspace::AutoScale::GroupConfig.new :max_entities => attributes[:max_entities],
    :min_entities => attributes[:min_entities],
    :cooldown => attributes[:cooldown],
    :name => attributes[:name],
    :metadata => attributes[:metadata] || {}
end
build_server_launch_config(attributes) click to toggle source
# File lib/fog/rackspace/models/auto_scale/group_builder.rb, line 23
def build_server_launch_config(attributes)
  return nil unless attributes[:launch_config_type] == :launch_server
  args = {"server" => build_server_template(attributes) }
  args["loadBalancers"] = build_load_balancers(attributes) if attributes[:load_balancers]

  Fog::Rackspace::AutoScale::LaunchConfig.new :type => :launch_server, :args => args
end

Private Instance Methods

build_load_balancers(attributes) click to toggle source
# File lib/fog/rackspace/models/auto_scale/group_builder.rb, line 33
def build_load_balancers(attributes)
  return nil unless attributes[:load_balancers]

  load_balancers = attributes[:load_balancers].is_a?(Array) ? attributes[:load_balancers] : [attributes[:load_balancers]]
  load_balancers.map do |obj|
    obj.is_a?(Hash) ? obj : load_balancer_to_hash(obj)
  end
end
build_server_template(attributes) click to toggle source
# File lib/fog/rackspace/models/auto_scale/group_builder.rb, line 50
def build_server_template(attributes)
  image_id = get_id(:image, attributes)
  flavor_id = get_id(:flavor, attributes)

  server_template =   {
    "name" => attributes[:server_name],
    "imageRef" => image_id,
    "flavorRef" => flavor_id,
    "OS-DCF =>diskConfig" => attributes[:disk_config] || "MANUAL",
    "metadata" => attributes[:server_metadata] || {}
  }

  server_template["personality"] = attributes[:personality] if attributes[:personality]
  server_template["networks"] = networks_to_hash(attributes[:networks]) if attributes[:networks]
  server_template
end
get_id(type, attributes) click to toggle source
# File lib/fog/rackspace/models/auto_scale/group_builder.rb, line 71
def get_id(type, attributes)
  id = attributes["#{type}_id".to_sym]
  type_key = type.to_sym
  id ||= model?(attributes[type_key]) ? attributes[type_key].id : attributes[type_key]
end
load_balancer_to_hash(lb) click to toggle source
# File lib/fog/rackspace/models/auto_scale/group_builder.rb, line 42
def load_balancer_to_hash(lb)
  raise ArgumentError.new("Expected LoadBalancer") unless lb.respond_to?(:id) && lb.respond_to?(:port)
  {
    "port" =>  lb.port,
    "loadBalancerId" => lb.id
  }
end
model?(obj) click to toggle source
# File lib/fog/rackspace/models/auto_scale/group_builder.rb, line 67
def model?(obj)
  obj.class.ancestors.include?(Fog::Model)
end
networks_to_hash(networks) click to toggle source
# File lib/fog/rackspace/models/auto_scale/group_builder.rb, line 77
def networks_to_hash(networks)
  networks.map {|n| {"uuid" => n}}
end