class ProfitBricks::Datacenter

Datacenter class

Public Class Methods

create(options = {}) click to toggle source
# File lib/profitbricks/datacenter.rb, line 86
def create(options = {})
  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

  response = ProfitBricks.request(
    method: :post,
    path: '/datacenters',
    body: { properties: options, entities: entities }.to_json,
    expects: 202
  )
  instantiate_objects(response)
end
get(datacenter_id) click to toggle source
# File lib/profitbricks/datacenter.rb, line 127
def get(datacenter_id)
  response = ProfitBricks.request(
    method: :get,
    path: "/datacenters/#{datacenter_id}",
    expects: 200
  )
  instantiate_objects(response)
end
list() click to toggle source
# File lib/profitbricks/datacenter.rb, line 118
def list
  response = ProfitBricks.request(
    method: :get,
    path: '/datacenters',
    expects: 200
  )
  instantiate_objects(response)
end

Private Class Methods

collect_entities(entities) click to toggle source
# File lib/profitbricks/datacenter.rb, line 139
def self.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

Public Instance Methods

create_lan(options = {}) click to toggle source
# File lib/profitbricks/datacenter.rb, line 72
def create_lan(options = {})
  ProfitBricks::LAN.create(id, options)
end
create_loadbalancer(options = {}) click to toggle source
# File lib/profitbricks/datacenter.rb, line 60
def create_loadbalancer(options = {})
  ProfitBricks::Loadbalancer.create(id, options)
end
create_server(options = {}) click to toggle source
# File lib/profitbricks/datacenter.rb, line 36
def create_server(options = {})
  ProfitBricks::Server.create(id, options)
end
create_volume(options = {}) click to toggle source
# File lib/profitbricks/datacenter.rb, line 48
def create_volume(options = {})
  ProfitBricks::Volume.create(id, options)
end
delete() click to toggle source
# File lib/profitbricks/datacenter.rb, line 4
def delete
  response = ProfitBricks.request(
    method: :delete,
    path: "/datacenters/#{id}",
    expects: 202
  )
  self.requestId = response[:requestId]
  self
end
get_lan(lan_id) click to toggle source
# File lib/profitbricks/datacenter.rb, line 68
def get_lan(lan_id)
  ProfitBricks::LAN.get(id, lan_id)
end
Also aliased as: lan
get_loadbalancer(loadbalancer_id) click to toggle source
# File lib/profitbricks/datacenter.rb, line 56
def get_loadbalancer(loadbalancer_id)
  ProfitBricks::Loadbalancer.get(id, loadbalancer_id)
end
Also aliased as: loadbalancer
get_server(server_id) click to toggle source
# File lib/profitbricks/datacenter.rb, line 32
def get_server(server_id)
  ProfitBricks::Server.get(id, server_id)
end
Also aliased as: server
get_volume(volume_id) click to toggle source
# File lib/profitbricks/datacenter.rb, line 44
def get_volume(volume_id)
  ProfitBricks::Volume.get(id, nil, volume_id)
end
Also aliased as: volume
lan(lan_id)
Alias for: get_lan
lans()
Alias for: list_lans
list_lans() click to toggle source
# File lib/profitbricks/datacenter.rb, line 64
def list_lans
  ProfitBricks::LAN.list(id)
end
Also aliased as: lans
list_loadbalancers() click to toggle source
# File lib/profitbricks/datacenter.rb, line 52
def list_loadbalancers
  ProfitBricks::Loadbalancer.list(id)
end
Also aliased as: loadbalancers
list_servers() click to toggle source
# File lib/profitbricks/datacenter.rb, line 28
def list_servers
  ProfitBricks::Server.list(id)
end
Also aliased as: servers
list_volumes() click to toggle source
# File lib/profitbricks/datacenter.rb, line 40
def list_volumes
  ProfitBricks::Volume.list(id)
end
Also aliased as: volumes
loadbalancer(loadbalancer_id)
Alias for: get_loadbalancer
loadbalancers()
Alias for: list_loadbalancers
server(server_id)
Alias for: get_server
servers()
Alias for: list_servers
update(options = {}) click to toggle source
# File lib/profitbricks/datacenter.rb, line 14
def update(options = {})
  response = ProfitBricks.request(
    path: "/datacenters/#{id}",
    method: :patch,
    expects: 202,
    body: options.to_json
  )
  if response
    self.requestId = response['requestId']
    @properties.merge!(response['properties'])
  end
  self
end
volume(volume_id)
Alias for: get_volume
volumes()
Alias for: list_volumes