class Kitchen::Driver::Fifo

Public Instance Methods

create(state) click to toggle source
# File lib/kitchen/driver/fifo.rb, line 19
def create(state)
  server = create_server
  state[:server_id] = server["uuid"]

  info("FIFO instance <#{state[:server_id]}> created.")
  wait_for_server(server)
  print "(server ready)"
  server = connection.vms.get(state[:server_id])
  state[:hostname] = server['config']['networks'].first['ip']
  wait_for_sshd(state[:hostname])      ; print "(ssh ready)\n"
end
destroy(state) click to toggle source
# File lib/kitchen/driver/fifo.rb, line 31
def destroy(state)
  return if state[:server_id].nil?

  server = connection.vms.get(state[:server_id])
  connection.vms.delete(state[:server_id]) unless server.nil?
  info("FIFO instance <#{state[:server_id]}> destroyed.")
  state.delete(:server_id)
  state.delete(:hostname)
end

Private Instance Methods

connection() click to toggle source
# File lib/kitchen/driver/fifo.rb, line 43
def connection
  @connection ||= begin
                    fifo = ProjectFifo.new(config[:fifo_endpoint], config[:fifo_username], config[:fifo_password])
                    fifo.connect
                    fifo
                  end
end
create_server() click to toggle source
# File lib/kitchen/driver/fifo.rb, line 51
def create_server
  # need to resolve names to uuid's
  # need to add better helpers to fifo client??
  # TODO: we should sort the get_by_name by version???
  connection.vms.create(
                        dataset: connection.datasets.get_by_name(config[:dataset]).last['dataset'],
                        package: connection.packages.get_by_name(config[:package]).first['uuid'],
                        config: {
                          alias: "kitchen-" + Time.now.to_i.to_s,
                          resolvers: [ "8.8.8.8" ],
                          ssh_keys: connection.ssh_keys,
                          networks: {
                            net0: connection.ipranges.get_by_name(config[:iprange]).first['uuid']
                          }
                        }
                        )
end
wait_for_server(server) click to toggle source

add to fifo gem?

# File lib/kitchen/driver/fifo.rb, line 71
def wait_for_server(server)
  id = server["uuid"]
  while true do
    s = connection.vms.get(id)
    break if s['state'] == "running"
    print "."
    sleep 10
  end
  sleep 10
end