class OVH::Provisioner::APIObject::Vrack

Represent a VRack

Attributes

dedicated_servers[R]
description[R]
name[R]
tasks[R]

Public Instance Methods

add(api_object) click to toggle source
# File lib/ovh/provisioner/api_object/vrack.rb, line 26
def add(api_object)
  path = path_from(api_object)
  ok, msg = parse_task(post(path, path => api_object.id))
  "#{api_object.id}: #{ok ? 'ok' : 'failed'}\n  #{msg}"
end
remove(api_object) click to toggle source
# File lib/ovh/provisioner/api_object/vrack.rb, line 32
def remove(api_object)
  path = "#{path_from(api_object)}/#{api_object.id}"
  ok, msg = parse_task(delete(path))
  "#{api_object.id}: #{ok ? 'ok' : 'failed'}\n  #{msg}"
end
to_s() click to toggle source
# File lib/ovh/provisioner/api_object/vrack.rb, line 38
def to_s
  "#{name}: #{id}#{" - #{description}" unless description.empty?}" \
  "#{list_to_s(:dedicated_servers)}" \
  "#{list_to_s(:tasks)}"
end

Private Instance Methods

list_to_s(list_sym) click to toggle source
# File lib/ovh/provisioner/api_object/vrack.rb, line 65
def list_to_s(list_sym)
  list = send(list_sym)
  return '' if list.nil? || list.empty?

  header = ["\n  #{list_sym}:"]
  tail = list.map { |i| "    #{i}" }.sort
  (header + tail).join("\n")
end
parse_task(msg) click to toggle source
# File lib/ovh/provisioner/api_object/vrack.rb, line 79
def parse_task(msg)
  return [false, msg] if msg.is_a?(String)

  method = /^[[:lower:]]+/.match(msg['function']).to_a.first
  [
    true,
    "#{msg['status']} #{msg['serviceName']}.#{method}" \
    "(#{msg['targetDomain']})"
  ]
end
path_from(api_object) click to toggle source
# File lib/ovh/provisioner/api_object/vrack.rb, line 74
def path_from(api_object)
  name = api_object.class.classname
  "#{name[0..0].downcase}#{name[1..-1]}"
end
set_dedicated_server() click to toggle source
# File lib/ovh/provisioner/api_object/vrack.rb, line 52
def set_dedicated_server
  @dedicated_servers = get('dedicatedServer')
end
set_general() click to toggle source
# File lib/ovh/provisioner/api_object/vrack.rb, line 46
def set_general
  general = get
  @name = general['name']
  @description = general['description']
end
set_tasks() click to toggle source
# File lib/ovh/provisioner/api_object/vrack.rb, line 56
def set_tasks
  tasks = get('task')
  futures = tasks.map { |t| future.get("task/#{t}") }
  @tasks = futures.map do |future|
    _ok, msg = parse_task(future.value)
    msg
  end
end