Class: Fog::Compute::Tenderloin::Real

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/tenderloin/compute.rb,
lib/fog/tenderloin/requests/compute/get_vm.rb,
lib/fog/tenderloin/requests/compute/stop_vm.rb,
lib/fog/tenderloin/requests/compute/list_vms.rb,
lib/fog/tenderloin/requests/compute/start_vm.rb,
lib/fog/tenderloin/requests/compute/destroy_vm.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Real

Returns a new instance of Real.



35
36
37
38
# File 'lib/fog/tenderloin/compute.rb', line 35

def initialize(options)
  @vm_glob     = options[:loinfile_glob] || "**/*.loin"
  @loin_cmd    = options[:loin_cmd]      || "loin"
end

Instance Method Details

#destroy_vm(id) ⇒ Object



6
7
8
# File 'lib/fog/tenderloin/requests/compute/destroy_vm.rb', line 6

def destroy_vm(id)
  request(['destroy', '-f', id])
end

#get_vm(id) ⇒ Object



6
7
8
# File 'lib/fog/tenderloin/requests/compute/get_vm.rb', line 6

def get_vm(id)
  request(['jsondump', '-f', id], true).merge({:id => id})
end

#list_vmsObject



6
7
8
# File 'lib/fog/tenderloin/requests/compute/list_vms.rb', line 6

def list_vms()
  Dir[@vm_glob]
end

#request(params, json_resp = false) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/fog/tenderloin/compute.rb', line 40

def request(params, json_resp=false)
  params = params.join(" ") if params.kind_of? Array
  ret = `#{@loin_cmd} #{params}`

  raise "Error running command:\n#{ret}" if $? != 0

  if json_resp
    to_dotted_hash(Fog::JSON.decode(ret))
  else
    ret
  end
end

#start_vm(id) ⇒ Object



6
7
8
# File 'lib/fog/tenderloin/requests/compute/start_vm.rb', line 6

def start_vm(id)
  request(['up', '-f', id])
end

#stop_vm(id) ⇒ Object



6
7
8
# File 'lib/fog/tenderloin/requests/compute/stop_vm.rb', line 6

def stop_vm(id)
  request(['halt', '-f', id])
end

#to_dotted_hash(source, target = {}, namespace = nil) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/fog/tenderloin/compute.rb', line 53

def to_dotted_hash(source, target = {}, namespace = nil)
  prefix = "#{namespace}." if namespace
  case source
  when Hash
    source.each do |key, value|
      to_dotted_hash(value, target, "#{prefix}#{key}")
    end
  when Array
    source.each_with_index do |value, index|
      to_dotted_hash(value, target, "#{prefix}#{index}")
    end
  else
    target[namespace] = source
  end
  target
end