{"action":"created","issue":{"url":"https://api.github.com/repos/mitchellh/vagrant/issues/4484","labels_url":"https://api.github.com/repos/mitchellh/vagrant/issues/4484/labels{/name}","comments_url":"https://api.github.com/repos/mitchellh/vagrant/issues/4484/comments","events_url":"https://api.github.com/repos/mitchellh/vagrant/issues/4484/events","html_url":"https://github.com/mitchellh/vagrant/pull/4484","id":42384547,"number":4484,"title":"Add support for linked clones for VirtualBox.","user":{"login":"mpoeter","id":8653812,"avatar_url":"https://avatars.githubusercontent.com/u/8653812?v=3","gravatar_id":"","url":"https://api.github.com/users/mpoeter","html_url":"https://github.com/mpoeter","followers_url":"https://api.github.com/users/mpoeter/followers","following_url":"https://api.github.com/users/mpoeter/following{/other_user}","gists_url":"https://api.github.com/users/mpoeter/gists{/gist_id}","starred_url":"https://api.github.com/users/mpoeter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpoeter/subscriptions","organizations_url":"https://api.github.com/users/mpoeter/orgs","repos_url":"https://api.github.com/users/mpoeter/repos","events_url":"https://api.github.com/users/mpoeter/events{/privacy}","received_events_url":"https://api.github.com/users/mpoeter/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mitchellh/vagrant/labels/pr/reviewed","name":"pr/reviewed","color":"fef2c0"},{"url":"https://api.github.com/repos/mitchellh/vagrant/labels/waiting-reply","name":"waiting-reply","color":"5319e7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":16,"created_at":"2014-09-10T07:16:49Z","updated_at":"2015-07-27T16:55:34Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/mitchellh/vagrant/pulls/4484","html_url":"https://github.com/mitchellh/vagrant/pull/4484","diff_url":"https://github.com/mitchellh/vagrant/pull/4484.diff","patch_url":"https://github.com/mitchellh/vagrant/pull/4484.patch"},"body":"This allow creation of linked clones using the VirtualBox 4.3 provider:\r\n```\r\nconfig.vm.provider \"virtualbox\" do |vb|\r\n    vb.use_linked_clone = true\r\nend\r\n```\r\nInstead of creating a fresh machine via importing the ovf file a master VM is created once (via ovf import) and the clones are created based on this master VM. The id of the master VM is stored in a file \"master_id\" in the directory of the according box.\r\n\r\nThere are a few bits missing like preventing concurrent creation of master VMs for the same box, as well as maintaining the lifetime of the master VM (when shall it be destroyed and who is responsible for it?).\r\n\r\nAlso the code might need a few adaptions since this is the first time I wrote some Ruby.\r\n\r\nHowever, I thought this might be a good starting point for a discussion about how this feature could be added to Vagrant."},"comment":{"url":"https://api.github.com/repos/mitchellh/vagrant/issues/comments/125270894","html_url":"https://github.com/mitchellh/vagrant/pull/4484#issuecomment-125270894","issue_url":"https://api.github.com/repos/mitchellh/vagrant/issues/4484","id":125270894,"user":{"login":"lvillani","id":241660,"avatar_url":"https://avatars.githubusercontent.com/u/241660?v=3","gravatar_id":"","url":"https://api.github.com/users/lvillani","html_url":"https://github.com/lvillani","followers_url":"https://api.github.com/users/lvillani/followers","following_url":"https://api.github.com/users/lvillani/following{/other_user}","gists_url":"https://api.github.com/users/lvillani/gists{/gist_id}","starred_url":"https://api.github.com/users/lvillani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lvillani/subscriptions","organizations_url":"https://api.github.com/users/lvillani/orgs","repos_url":"https://api.github.com/users/lvillani/repos","events_url":"https://api.github.com/users/lvillani/events{/privacy}","received_events_url":"https://api.github.com/users/lvillani/received_events","type":"User","site_admin":false},"created_at":"2015-07-27T16:55:34Z","updated_at":"2015-07-27T16:55:34Z","body":"The (private) box is seen by `vagrant box list` as `lvillani/win2008r2.box`.\r\n\r\nAnd here is the full log:\r\n\r\n```\r\n➤ vagrant up windows\r\nYou appear to be running Vagrant outside of the official installers.\r\nNote that the installers are what ensure that Vagrant has all required\r\ndependencies, and Vagrant assumes that these dependencies exist. By\r\nrunning outside of the installer environment, Vagrant may not function\r\nproperly. To remove this warning, install Vagrant using one of the\r\nofficial packages from vagrantup.com.\r\n\r\nBringing machine 'windows' up with 'virtualbox' provider...\r\n/Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/environment.rb:492:in `initialize': No such file or directory - /Users/lvillani/.vagrant.d/data/lock.lvillani/win2008r2.lock (Errno::ENOENT)\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/environment.rb:492:in `open'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/environment.rb:492:in `block in lock'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/environment.rb:516:in `lock'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/environment.rb:491:in `lock'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/plugins/providers/virtualbox/action/import_master.rb:16:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/plugins/providers/virtualbox/action/customize.rb:40:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/plugins/providers/virtualbox/action/check_accessible.rb:18:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:95:in `block in finalize_action'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/builder.rb:116:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/runner.rb:66:in `block in run'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/util/busy.rb:19:in `busy'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/runner.rb:66:in `run'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/builtin/call.rb:53:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/builtin/config_validate.rb:25:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:95:in `block in finalize_action'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/builtin/handle_box.rb:56:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:95:in `block in finalize_action'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/builder.rb:116:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/runner.rb:66:in `block in run'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/util/busy.rb:19:in `busy'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/runner.rb:66:in `run'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/builtin/call.rb:53:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/plugins/providers/virtualbox/action/check_virtualbox.rb:17:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/warden.rb:34:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/builder.rb:116:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/runner.rb:66:in `block in run'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/util/busy.rb:19:in `busy'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/action/runner.rb:66:in `run'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/machine.rb:214:in `action_raw'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/machine.rb:191:in `block in action'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/environment.rb:516:in `lock'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/machine.rb:178:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/machine.rb:178:in `action'\r\n\tfrom /Users/lvillani/.gem/gems/vagrant-1.7.4.dev/lib/vagrant/batch_action.rb:82:in `block (2 levels) in run'\r\n\tfrom /Users/lvillani/.gem/gems/logging-1.8.2/lib/logging/diagnostic_context.rb:323:in `call'\r\n\tfrom /Users/lvillani/.gem/gems/logging-1.8.2/lib/logging/diagnostic_context.rb:323:in `block in create_with_logging_context'\r\n```"}}