# -*- mode: ruby -*-
# vi: set ft=ruby :

def local_cache(box_name)
  cache_dir = File.join(File.expand_path(Vagrant::Environment::DEFAULT_HOME),
                        'cache',
                        'apt',
                        box_name)
  partial_dir = File.join(cache_dir, 'partial')
  FileUtils.mkdir_p(partial_dir) unless File.exists? partial_dir
  cache_dir
end

# Not really needed, but useful while developing so that vagrant picks it up
Vagrant.require_plugin 'vagrant-lxc'

Vagrant.configure("2") do |config|
  config.vm.box      = "quantal64"
  config.vm.box_url  = 'http://dl.dropbox.com/u/13510779/lxc-quantal64-2013-03-31.box'
  # Uncomment if you want to try out a box built locally
  # config.vm.box_url  = '../boxes/output/lxc-quantal64.box'
  config.vm.hostname = 'lxc-quantal64-example'

  config.vm.synced_folder "/tmp", "/vagrant_data"

  cache_dir = local_cache(config.vm.box)
  config.vm.synced_folder cache_dir, "/var/cache/apt/archives"

  config.vm.provider :lxc do |lxc|
    lxc.start_opts << 'lxc.cgroup.memory.limit_in_bytes=400M'
    lxc.start_opts << 'lxc.cgroup.memory.memsw.limit_in_bytes=500M'
  end

  config.vm.provision :shell, :inline => <<-SCRIPT
echo "Hi there I'm a shell script used for provisioning"
  SCRIPT

  config.vm.provision :puppet do |puppet|
    puppet.module_path    = "puppet/modules"
    puppet.manifests_path = "puppet/manifests"
    puppet.manifest_file  = "site.pp"
  end

  config.vm.provision :chef_solo do |chef|
    chef.add_recipe "hello-world"
    chef.log_level = :debug
  end
end