class Kitchen::Driver::Gogetkitchen

Gogetkitchen driver for Kitchen.

@author Don Draper <donoldfashioned@gmail.com>

Public Instance Methods

choose_provider(provider) click to toggle source
# File lib/kitchen/driver/gogetkitchen.rb, line 80
def choose_provider(provider)
  case provider
  when 'lxd'
    Gogetit.lxd
  when 'kvm'
    # let's call it kvm externally but libvirt internally
    # because gogetit actually handles libvirtd
    Gogetit.libvirt
  end
end
create(state) click to toggle source
# File lib/kitchen/driver/gogetkitchen.rb, line 39
def create(state)
  provider = choose_provider(config[:provider])

  case provider
  when Gogetit::GogetLibvirt

    if Gogetit.maas.machine_exists?(instance.name)
      result = provider.deploy(instance.name, config)
    else
      result = provider.create(instance.name, config)
    end

  when Gogetit::GogetLXD
    result = provider.create(instance.name, config)
  end

  domain = Gogetit.maas.get_domain
  state[:hostname]      = instance.name + '.' + domain
  state[:username]      = result[:info][:default_user]
                          info 'Waiting for the new domain to be available..'
  wait_until_available(instance.name)

                          info 'Waiting for SSH..'
  conn = instance.transport.connection(state)
  conn.wait_until_ready
  conn.close
end
destroy(state) click to toggle source
# File lib/kitchen/driver/gogetkitchen.rb, line 67
def destroy(state)
  provider = choose_provider(config[:provider])

  case provider
  when Gogetit::GogetLibvirt
    provider.release(instance.name)
  when Gogetit::GogetLXD
    provider.destroy(instance.name)
  end

  instance.transport.connection(state).close
end
wait_until_available(hostname) click to toggle source
# File lib/kitchen/driver/gogetkitchen.rb, line 91
def wait_until_available(hostname)
  until Gogetit.maas.domain_name_exists?(hostname)
    sleep 3
  end
end