class Fog::Compute::ProfitBricks::Datacenter

Attributes

options[RW]

Public Class Methods

new(attributes = {}) click to toggle source
Calls superclass method
# File lib/fog/profitbricks/models/compute/datacenter.rb, line 36
def initialize(attributes = {})
  super
end

Public Instance Methods

delete() click to toggle source
# File lib/fog/profitbricks/models/compute/datacenter.rb, line 90
def delete
  requires :id
  data = service.delete_datacenter(id)
  true
end
save() click to toggle source
# File lib/fog/profitbricks/models/compute/datacenter.rb, line 40
def save
  requires :name, :location

  options = {}
  options[:name] = name
  options[:location] = location
  options[:description] = description if description
  options[:servers] = servers if servers
  options[:volumes] = volumes if volumes
  options[:loadbalancers] = loadbalancers if loadbalancers
  options[:lans] = lans if lans

  entities = {}

  # Retrieve servers collection if present and generate appropriate JSON.
  if options.key?(:servers)
    entities[:servers] = collect_entities(options.delete(:servers))
  end

  # Retrieve volumes collection if present and generate appropriate JSON.
  if options.key?(:volumes)
    entities[:volumes] = collect_entities(options.delete(:volumes))
  end

  # Retrieve volumes collection if present and generate appropriate JSON.
  if options.key?(:loadbalancers)
    entities[:loadbalancers] = collect_entities(options.delete(:loadbalancers))
  end

  # Retrieve volumes collection if present and generate appropriate JSON.
  if options.key?(:lans)
    entities[:lans] = collect_entities(options.delete(:lans))
  end

  data = service.create_datacenter(options, entities)
  merge_attributes(flatten(data.body))
  true
end
update() click to toggle source
# File lib/fog/profitbricks/models/compute/datacenter.rb, line 79
def update
  requires :id

  options = {}
  options[:name] = name if name
  options[:description] = description if description
  data = service.update_datacenter(id, options)
  merge_attributes(flatten(data.body))
  true
end

Private Instance Methods

collect_entities(entities) click to toggle source
# File lib/fog/profitbricks/models/compute/datacenter.rb, line 98
def collect_entities(entities)
  if entities.is_a?(Array) && entities.length > 0
    items = []
    entities.each do |entity|
      if entity.key?(:volumes)
        subentities = collect_entities(entity.delete(:volumes))
        items << {
          properties: entity,
          entities: {volumes: subentities}
        }
      else
        items << {properties: entity}
      end
    end
    {items: items}
  end
end