Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Fix #1314: run vagrant test suite on Travis CI #1316

Closed
wants to merge 469 commits into
from
This pull request is big! We’re only showing the most recent 250 commits.
Commits on Jul 16, 2012
  1. Vagrant::Machine

    mitchellh committed Jul 16, 2012
    This is the class that will represent a machine that is managed by
    Vagrant. The class has a number of attributes associated with it and is
    meant to be a single API for managing the machines.
Commits on Jul 25, 2012
  1. Move drivers to the VirtualBox plugin. Use Machine class.

    mitchellh committed Jul 25, 2012
    This starts the transition of replacing VM with Machine. Machine still
    isn't ready to fully replace VM but by moving it now, I'm able to find
    the spots that need to be fixed. At this point `vagrant status` works
    with the new provider interface.
Commits on Jul 26, 2012
  1. Merge pull request #1042 from scoates/typo

    mitchellh committed Jul 26, 2012
    folder is ~/.vagrant.d not ~/vagrant.d
Commits on Jul 27, 2012
  1. Remove the action registry feature.

    mitchellh committed Jul 27, 2012
    This can be removed since in the future all actions will come from the
    providers or something. There are still issues with box actions but
    we'll get back to that later...
  2. Building up the `destroy` action again using new provider API.

    mitchellh committed Jul 27, 2012
    This shows me moving the built-in middleware sequences to the provider
    and how I'm organizing all that.
  3. The `Call` built-in middleware allows for conditional MW sequences.

    mitchellh committed Jul 27, 2012
    Read the documentation for more information.
  4. Added untar_failure locale.

    spk committed Jul 27, 2012
  5. Added already_exists locale.

    spk committed Jul 27, 2012
Commits on Jul 28, 2012
  1. Added the Confirm built-in middleware

    mitchellh committed Jul 28, 2012
    This middleware asks the user a question and expects a Y/N answer. This
    middleware can be used with the Call middleware.
Commits on Jul 29, 2012
  1. Clean up the actions a bit, move logic into actual middleware.

    mitchellh committed Jul 29, 2012
    This is a good idea because in the future it will allow plugins to
    properly override these behaviors.
Commits on Jul 30, 2012
Commits on Aug 3, 2012
Commits on Aug 4, 2012
Commits on Aug 5, 2012
  1. Provider API to return SSH info, must implement `ssh_info`.

    mitchellh committed Aug 5, 2012
    Since SSH is such a critical part of Vagrant, each provider must
    implement a method that returns the proper way to SSH into the machine.
  2. `vagrant ssh` with full console works with new provider.

    mitchellh committed Aug 5, 2012
    This works by now calling the `:ssh` action on the provider. This action
    is allowed to do whatever it pleases, but should at some point probably
    call the `SSHExec` built-in middleware.
    
    The `SSHExec` built-in middleware was added. This uses the information
    returned by `Machine#ssh_info` and uses the `Vagrant::Util::SSH` helper
    to exec into the remote machine. The provider should do any work upfront
    in verifying that the machine is ready to be SSHed into.
Commits on Aug 6, 2012
  1. Fix 2 broken document links

    jmazzi committed Aug 6, 2012
Commits on Aug 7, 2012
  1. Some SSH command cleanup

    mitchellh committed Aug 7, 2012
Commits on Aug 9, 2012
  1. Use 127.0.0.1 instead of localhost for port use checking. [GH-1057]

    mitchellh committed Aug 9, 2012
    Many systems actually don't have "localhost" setup as loopback in their
    /etc/hosts file, so this would fail. This makes it pass.
  2. Add the Communicator plugin API.

    mitchellh committed Aug 9, 2012
    This allows communication protocols to be defined for the machine. This
    is how things like SSH will be implemented.
  3. Just always return the SSH communicator for machines for now.

    mitchellh committed Aug 9, 2012
    In the future we'll actually find a matching communicator but for now
    since we're just focusing on machine abstraction, we just return SSH.
Commits on Aug 10, 2012
  1. Very early SIGINTs no longer cause ugly stack traces.

    mitchellh committed Aug 10, 2012
    We catch INT very very early in the Vagrant process in order to exit
    cleanly rather than raising any exceptions. This is eventually overriden
    by Vagrant at some point.
  2. Add config.arguments for Chef

    jtimberman committed Aug 10, 2012
    * Adds chef.arguments to Chef::Provisioner::Config
    * Usable in both chef-client and chef-solo
    * Specify as a string, "-L /tmp/foo.log", e.g.
Commits on Aug 12, 2012
  1. Test to ensure that the environment hash is returned from Machine#action

    mitchellh committed Aug 12, 2012
    This will allow methods that call into the action to use any results
    that might be set onto the environment hash by any of the middleware.
Commits on Aug 13, 2012
  1. Halt works with new machine.

    mitchellh committed Aug 13, 2012
    This required some modifications to the linux guest implementation. And
    the other guests will have to be modified as well. This is because
    `channel` is now `communicate`.
Commits on Aug 14, 2012
  1. `vagrant destroy` fully works

    mitchellh committed Aug 14, 2012
Commits on Aug 15, 2012
  1. `vagrant provision`

    mitchellh committed Aug 15, 2012
  2. `vagrant up`!

    mitchellh committed Aug 15, 2012
  3. Convey default destroy confirmation choice as 'N'

    bcwaldon committed Aug 15, 2012
    The convention is to capitalize the default choice when presenting
    the user with a confirmation dialog. This alters the choices for
    'vagrant destroy' confirmation from [Y/N] to [y/N].
Commits on Aug 16, 2012
  1. Delete more unused actions

    mitchellh committed Aug 16, 2012
Commits on Aug 18, 2012
  1. `vagrant box add` works again. Box verification remove temporarily.

    mitchellh committed Aug 18, 2012
    The built-in middleware sequences will now be hardcoded onto
    Vagrant::Action. Other plugins can hook into these sequences to provide
    verification and so on. So the VirtualBox plugin will hook into that
    action sequence and add verification.
Commits on Aug 19, 2012
  1. Remove Vagrant::VM

    mitchellh committed Aug 19, 2012
  2. Trivial whitespace changes

    mitchellh committed Aug 19, 2012
Commits on Aug 20, 2012
  1. Get vagrant package --base working in some hacky way.

    mitchellh committed Aug 20, 2012
    `vagrant package --base` is deprecated for a future feature so I didn't
    want to waste any brain cycles on how to do this the "right" way since a
    new system will be introduced to do this sort of thing in teh future.
  2. All tests passing

    mitchellh committed Aug 20, 2012
  3. Merge branch 'machine-abstraction'

    mitchellh committed Aug 20, 2012
    This branch brings in the "machine abstraction" code. This is a major
    milestone in the development of Vagrant as it abstracts all of the
    VirtualBox-specific code out into a plugin. There is zero VirtualBox
    specific code in the core ("lib/") directory at this point. Read on for
    important points.
    
    == Gotchas
    
    White it is technically possible now to write plugins for other
    providers, there is still major work to be done to make this feasible.
    The plugin interface itself is pretty much done, but there are some
    issues:
    
    * ":virtualbox" is the hardcoded provider to be used at the moment.
    
    * There is no way to configure a provider. For example,
      `config.vm.customize` would never work for anything other than
      VirtualBox, so there needs to be a way to have provider-specific
      configuration. This will come soon.
    
    * Shared folders and networking need to be rearchitected to be friendly
      for multiple providers, since it is unrealistic that a provider such as
      EC2 could provide the same level of networking, for example.
    
    * There is no way easy way (like `vagrant package --base`) to create
      boxes for providers other than VirtualBox. This will be addressed in a
      whole new feature of Vagrant probably in a future release after
      provider stuff has shipped.
    
    == Writing a Provider
    
    To write a provider, you create a Vagrant plugin that defines a
    "provider". See the "plugins/providers/virtualbox/plugin.rb" for more
    details. Providers themselves have an exremely simple API. The burden
    for writing providers mostly rests on the fact that you must define
    complex middleware sequences.
    
    Lots more work to come in the future, but this is a BIG MILESTONE!
  4. Make puppet provisioner work with latest machine changes.

    mitchellh committed Aug 20, 2012
    Specifically it was still reference env[:vm] which is now
    `env[:machine]`.
Commits on Aug 21, 2012
Commits on Aug 24, 2012
  1. `box.url` can use `file://` URI

    Nate Smith committed Aug 24, 2012
Commits on Aug 29, 2012
  1. Retry SSH on EHOSTUNREACH

    mitchellh committed Aug 29, 2012
    This is one of those errors that happens once in awhile that can be
    retried.
Commits on Sep 2, 2012
Commits on Sep 10, 2012
  1. Merge pull request #1096 from danmidwood/master

    mitchellh committed Sep 10, 2012
    Use the communicate interface for Arch Linux guests
  2. Merge pull request #1087 from nwjsmith/master

    mitchellh committed Sep 10, 2012
    Allow `file://` URIs from `config.box.url`
  3. Merge pull request #1071 from bcwaldon/confirm-opt-default

    mitchellh committed Sep 10, 2012
    Convey default destroy confirmation choice as 'N'
  4. Merge pull request #1056 from jmazzi/patch-1

    mitchellh committed Sep 10, 2012
    Fix 2 broken document links
Commits on Sep 13, 2012
Commits on Sep 14, 2012
  1. VirtualBox 4.2 support

    mitchellh committed Sep 14, 2012
Commits on Sep 19, 2012
  1. Forward Port GH-1140

    mitchellh committed Sep 19, 2012
  2. Forward port GH-1142

    mitchellh committed Sep 19, 2012
Commits on Sep 20, 2012
  1. create human readable dna.json

    piavlo committed Sep 20, 2012
Commits on Sep 26, 2012
Commits on Sep 27, 2012
  1. Merge pull request #1118 from hugowetterberg/master

    mitchellh committed Sep 27, 2012
    Emitting vagrant-mount events when mounting nfs volumes
  2. Update CHANGELOG

    mitchellh committed Sep 27, 2012
  3. Merge pull request #1155 from sl4m/patch-01

    mitchellh committed Sep 27, 2012
    Fixes an exception issue when a non-directory appears in the boxes dir
  4. Merge pull request #1067 from jtimberman/chef-command-args

    mitchellh committed Sep 27, 2012
    Add config.arguments for Chef
  5. Merge pull request #1048 from spk/locales

    mitchellh committed Sep 27, 2012
    Locales
  6. Update some translations

    mitchellh committed Sep 27, 2012
  7. Merge pull request #1146 from piavlo/master

    mitchellh committed Sep 27, 2012
    make chef provisioners to write human readable dna.json
  8. Update CHANGELOG

    mitchellh committed Sep 27, 2012
Commits on Oct 8, 2012
  1. Check exit codes of puppet provisioners

    Peter Eisentraut committed Oct 8, 2012
    Previously, failures in applying the puppet manifests would be
    ignored, because puppet apply/agent don't have any useful exit codes
    by default.  (Errors are printed, but vagrant continues.)
    
    Use the option --detailed-exitcodes of puppet apply/agent to check for
    success.
Commits on Oct 9, 2012
Commits on Oct 12, 2012
  1. Fix Windows shell provisioning

    obscurerichard committed Oct 12, 2012
    Resolves [GH-1036] [GH-1164] [GH-1181]
    
    Ported fixes from patches to 1-0-stable
Commits on Oct 13, 2012
  1. Merge pull request #1183 from obscurerichard/fix-windows-shell-provis…

    mitchellh committed Oct 13, 2012
    …ioning-vs-master
    
    Fix Windows shell provisioning.
  2. Whitespace and such

    mitchellh committed Oct 13, 2012
  3. Merge pull request #1175 from petere/puppet-exitcodes

    mitchellh committed Oct 13, 2012
    Check exit codes of puppet provisioners
  4. Merge pull request #1176 from paulv/master

    mitchellh committed Oct 13, 2012
    Fix for DNS resolution bug on Ubuntu 12.10
Commits on Oct 26, 2012
  1. Use a better check for systemd

    pbrisbin committed Oct 26, 2012
    Using `which systemctl` would return true on even non-systemd machines
    during this transitional time.
Commits on Oct 30, 2012
  1. Omit empty lines in Puppet provisioner output

    dcarley committed Oct 30, 2012
    The sudo() block and/or the Puppet provisioner often returns newline
    characters as separate strings. This makes the chomp() ineffective and
    results in extraneous spacing between the output lines.
    
    Separate out the call to chomp() so that we only do it once. Then only
    output info if that line is not an empty string.
Commits on Nov 3, 2012
  1. Merge pull request #1213 from dcarley/puppet_newline_output

    mitchellh committed Nov 3, 2012
    Omit empty lines in Puppet provisioner output
  2. Merge pull request #1209 from pbrisbin/arch-fix-3

    mitchellh committed Nov 3, 2012
    Additional Arch host class fixes
  3. Merge pull request #1191 from lorello/master

    mitchellh committed Nov 3, 2012
    Fix change_host_name on Ubuntu Hardy
Commits on Nov 4, 2012
  1. Remove plugin activation. It really isn't necessary.

    mitchellh committed Nov 4, 2012
    It was only used in a couple places and it isn't necessary since you can
    do the loading within the actual blocks themselves.
  2. Much cleaner plugin part querying syntax.

    mitchellh committed Nov 4, 2012
    Before we were manually going over every plugin and getting each piece,
    all over the place. Now we have a central manager that will give us all
    the pieces we want. There is still some cleanup to do here but this is
    much better overall.
  3. Add support for "upgrade safe" config classes to plugins.

    mitchellh committed Nov 4, 2012
    These are classes that use NO core classes of Vagrant, and are therefore
    safe to load for upgrades. i.e. a V2 core can load a V1 config class
    that is deemed upgrade safe without crashing Vagrant.
  4. V1 config loader loads upgradable config if not V1

    mitchellh committed Nov 4, 2012
    This is to prepare for the upcoming V2 configuration. When we're in V2,
    we only want to load _upgradable_ configuration keys.
  5. Clean up tests a bit more

    mitchellh committed Nov 4, 2012
Commits on Nov 7, 2012
  1. Communicators to v2 plugins.

    mitchellh committed Nov 7, 2012
  2. Guests to V2

    mitchellh committed Nov 7, 2012
  3. Hosts to V2

    mitchellh committed Nov 7, 2012
  4. Providers to V2

    mitchellh committed Nov 7, 2012
  5. Turn provisioners to V2

    mitchellh committed Nov 7, 2012
  6. Configure the V2 kernel.

    mitchellh committed Nov 7, 2012
Commits on Nov 8, 2012
  1. V2 loader now properly upgrades V1 configuration.

    mitchellh committed Nov 8, 2012
    This is done by calling the `upgrade` method on the _old_ configuration
    classes. The old configuration classes are given the complete new
    configuration and can set whatever settings they need to on it.
  2. Add the Environment#machine method

    mitchellh committed Nov 8, 2012
    This will eventually replace the Environment#vms method. Because of the
    introduction of providers, the environment doesn't know what the backing
    of the machines will be (and they're _machines_ now, not _vms_).
    Instead, users of Environment will now call `#machine` on the
    environment to retrieve a machine with the given backing provider as it
    needs it.
  3. Cache the machine objects created in Environment#machine.

    mitchellh committed Nov 8, 2012
    Each machine and provider backing should be represented by only one
    machine.
  4. Just some comments

    mitchellh committed Nov 8, 2012
Commits on Nov 19, 2012
  1. Change description of plugins to avoid self referencial definitions. …

    paulmars committed Nov 19, 2012
    …e.g. 'destroy' will destroy your VM
Commits on Nov 20, 2012
Commits on Dec 1, 2012
  1. Whitespace in gemspec

    mitchellh committed Dec 1, 2012
  2. Gemspec no longer depends on git.

    mitchellh committed Dec 1, 2012
    The CI works by pulling down tarballs of Vagrant, and the gemspecs
    depending on `git ls-files` were making it not work.
Commits on Dec 11, 2012
  1. Update lib/vagrant/plugin/v2/plugin.rb

    nwjsmith committed with Nate Smith Dec 11, 2012
    Require set in the V2 plugin file since it uses it.
    
    Fixes #1257
Commits on Dec 13, 2012
  1. fixes tcp and udp on the same port number GH-1108, GH-1109

    hdorio committed Dec 12, 2012
    fix a bug in forward_port_definitions() in Action::ForwardPorts
Commits on Dec 16, 2012
  1. Merge pull request #1259 from nwjsmith/patch-1

    mitchellh committed Dec 16, 2012
    Update lib/vagrant/plugin/v2/plugin.rb to require 'set'
  2. Style nitpick

    mitchellh committed Dec 16, 2012
Commits on Dec 21, 2012
  1. Fix failing test on 1.8.7

    mitchellh committed Dec 21, 2012
  2. Merge pull request #1232 from paulmars/master

    mitchellh committed Dec 21, 2012
    Altered messages so they were _not_ self referencing.
Commits on Dec 24, 2012
  1. Load the configuration per machine, so that provider boxes work

    mitchellh committed Nov 15, 2012
    Boxes are provider-specific, and we don't know the provider until
    Environment#machine is called, so we need to build up the machine
    configuration during this time.
  2. Add in some logging

    mitchellh committed Nov 15, 2012
  3. Warden only logs an error once

    mitchellh committed Nov 15, 2012
  4. V2 config supports the concept of an "UNSET" value when doing merges

    mitchellh committed Nov 15, 2012
    This value should be used as a default, and allows the parent `merge`
    method to "just work" most of the time.
  5. Begin work on supporting provider-specific configuration

    mitchellh committed Nov 19, 2012
    This works by registering a `config` with `:provider => true` with the
    same name as your provider. Vagrant will then automatically configure
    the provider when `config.vm.provider` is used.
  6. Environment#default_provider

    mitchellh committed Dec 22, 2012
  7. Fix bug where Call didn't propagate recovery. Warden has no recovery.

    mitchellh committed Dec 23, 2012
    The issue here is that when a middleware failed and a recovery sequence
    started, it would halt at the "call" step because the "Call" didn't
    properly recover the child sequence.
    
    An additional issue was that a Warden had no "recover" method, meaning
    embedded Wardens wouldn't recover their stacks properly.
  8. Upgrade VM customizations

    mitchellh committed Dec 23, 2012
  9. Comment clarification

    mitchellh committed Dec 23, 2012
  10. Remove unused files

    mitchellh committed Dec 24, 2012
  11. Merge commit that got missed. Ignore changes in this comit. Read message

    mitchellh committed Dec 24, 2012
    This branch brings in a whole lot of awesome. The name does not do it
    justice. The list of things that comes into play here:
    
    * "virtualbox" is no longer hardcoded anywhere in core. It is the default
      provider, yes, but it is 100% possible now to slip in another provider
      and have it work.
    
    * `vagrant up --provider` is a thing. This allows you to specify an
      alternate provider. Note that the other commands don't support
      `--provider` yet so its not THAT useful, but its getting really close.
    
    * True V2 configuration is in place. That means that `Vagrant.configure`
      calls now are loading a completely new configuration version, and old
      1.0.x Vagrantfiles are V1 configuration. V1 configuration is upgraded
      automatically internally, so backwards compatibility is maintained.
      Magic, people, magic.
    
    * `config.vm.provider` is the major new configuration option. This is
      how provider-specific configuration will be done. For example, Vagrant
      has always provided a way to make a pass of `VBoxManage` calls to
      customize your VM via `config.vm.customize` in V1. This now exists
      as a VirtualBox configuration option. See the example here:
      https://gist.github.com/98f5a0df6a05286dfb73
    
    * Unit tests no longer depend on VirtualBox being installed, because for
      unit tests we slip in a "no-op" provider, which is a fully valid
      Vagrant provider plug-in that does... NOTHING! Brilliant!
    
    * Lots of core middleware executor improvements that make writing and
      using middleware stacks a lot more enjoyable. Enjoy a set of "standard
      library middlewares" provided by Vagrant in Vagrant::Action::Builtin.
    
    The multi-provider is really shaping up here.
  12. Update CHANGELOG structure

    mitchellh committed Dec 24, 2012
  13. Re-order things in CHANGELOG

    mitchellh committed Dec 24, 2012
Commits on Dec 25, 2012
  1. Change boot_mode to a provider config `gui`.

    mitchellh committed Dec 25, 2012
    OLD:
    
    config.vm.boot_mode = :gui
    
    NEW:
    
    config.vm.provider :virtualbox do |vb|
      vb.gui = true
    end
Commits on Dec 27, 2012
  1. Get rid of a silly constant for subdirs in Environment

    mitchellh committed Dec 27, 2012
    The data is only used once anyways so just use a local variable.
  2. Local data path introduced

    mitchellh committed Dec 27, 2012
    The local data path is set to the `ROOT_DIR/.vagrant` by default and is
    a directory where Vagrant can store environment-local state. This can be
    overriden on a per-Environment basis using the `local_data_path`
    option.
  3. Store machine ID in "id" file in data directory.

    mitchellh committed Dec 27, 2012
    Instead of storing an "active" hash in the local_data of an Environment,
    we now place the ID of a machine in the "id" file of the machine data
    directory. This file is read upon re-instantiation in order to load the
    proper state.
  4. Remove Vagrant::DataStore

    mitchellh committed Dec 27, 2012
    We just don't use it yet and the old implementation was sketchy. I was
    not happy with it.
  5. Remove the dotfile_name configuration option.

    mitchellh committed Dec 27, 2012
    The dotfile is gone now so the configuration option is obselete
  6. Merge branch 'new-data-tiers'

    mitchellh committed Dec 27, 2012
    This branch changes how local data is stored for Vagrant environments
    from a single "dotfile" approach to having a directory of data, more
    similar in style to git.
    
    When a V1-style dotfile is encountered, it is automatically upgraded
    to the new style directory format.
  7. Upgrade V1-style dotfile to V2

    mitchellh committed Dec 27, 2012
    See the code and comments for details on how this is done. As usual, we
    are very careful about this so as not to inadvertently destruct real
    user data.
Commits on Dec 28, 2012
  1. Environment#active_machines

    mitchellh committed Dec 28, 2012
    This returns a list of active machines for the environment. An active
    machine is a machine that at one point was created by Vagrant.
Commits on Dec 30, 2012
  1. Only allow one provider active machine at a time.

    mitchellh committed Dec 30, 2012
    Temporary limitation of Vagrant to only allow one active machine with a
    provider at a time. That means you cant `up` a machine with both vmware
    and virtualbox at the same time. In the future you will be able to but
    to avoid various edge cases for now we're disallowing it.
  2. Environment#primary_machine_name and use it for with_target_vms

    mitchellh committed Dec 30, 2012
    This makes the single-provider and default provider semantics work with
    primary VMs.
Commits on Dec 31, 2012
  1. Convert provider to symbol

    mitchellh committed Dec 31, 2012
  2. One more final fix for 1.8.7

    mitchellh committed Dec 31, 2012
  3. Fix guest plugin for RH & SUSE

    Elad Rosenheim committed Dec 31, 2012
Commits on Jan 3, 2013
Commits on Jan 4, 2013
  1. Merge pull request #1293 from yarikoptic/master

    mitchellh committed Jan 4, 2013
    DOC: keys/README.md -- fix urls to docs.
  2. Merge pull request #1260 from hdorio/master

    mitchellh committed Jan 4, 2013
    Attempt to fix #1108, #1109, tcp and udp port on the same port number
Commits on Jan 5, 2013
Commits on Jan 6, 2013
  1. fedora 17 & 18 support

    llonchj committed Jan 6, 2013
Commits on Jan 7, 2013
  1. Merge pull request #1297 from llonchj/master

    mitchellh committed Jan 7, 2013
    fedora 17 & 18 support
  2. Merge pull request #1283 from eladroz/master

    mitchellh committed Jan 7, 2013
    Fixing guest code for RH & SUSE
Commits on Jan 10, 2013
Commits on Jan 11, 2013
  1. New Network VirtualBox middleware to handle the changes.

    mitchellh committed Jan 11, 2013
    Note this is a WIP (hence committed on a branch)
  2. Configure networks on the VM

    mitchellh committed Jan 11, 2013
  3. Remove the old networking code

    mitchellh committed Jan 11, 2013
  4. Util::ScopedHashOverride

    mitchellh committed Jan 11, 2013
Commits on Jan 12, 2013
  1. Merge branch 'abstract-networks'

    mitchellh committed Jan 12, 2013
    This introduces the new network configuration syntax for Vagrant 1.1
    and forward.
    
    == The Problem
    
    With multiple providers, the concept of networking as it stands in Vagrant
    1.0.x becomes really muddy. We have `config.vm.forward_port` and
    `config.vm.network :hostonly` and `config.vm.network :bridged`. But what
    if someone writes an AWS provider? What is a bridged network in AWS? It
    just doesn't make sense.
    
    Networking working out of the box with Vagrant is a core part of what
    makes Vagrant "magic" to new users. It is a core part of what makes Vagrant
    simple to use. One option to punt networking to provider-specific
    configuration was considered, but I found the whole idea of networking
    too core to Vagrant to simply punt.
    
    Because of this, a whole new method of networking is introduced.
    
    == The Solution
    
    The solution is to have a high-level notion of networking for Vagrant
    configuration. This should cover the most _common_ cases of networking, and
    every provider should do their best to implement these high-level
    abstractions, to ensure the "just works" nature of Vagrant.
    
    In addition to this high-level networking, low-level networking options
    should be exposed on the provider configuration. This allows users to do
    advanced provider-specific networking configuration if they want, but aren't
    required to.
    
    == High-Level Abstractions
    
    === Available Types
    
    The high-level abstractions built into Vagrant will be the following:
    
    * Forwarded ports - A mapping of host port to guest port that one can hit
      using `localhost`.
    * Private network - A private network, the machine should ideally be
      protected from public access.
    * Public network - A public network, one that is easily accessible by
      others.
    
    I'm not sure if these are the proper abstractions. They can change up
    until 2.0, but these are what we have so far.
    
    Theoretically, here is how mappings would work. Note that this is just
    an example, and the mappings in practice of such providers may or
    may not map to this as follows.
    
    **VirtualBox**
    * Forwarded ports - NAT network, forwared ports.
    * Private network - Hostonly network, static IP assigned.
    * Public network - Bridged network, IP assigned via DHCP from router.
    
    **VMWare**
    * Forwarded ports - NAT network, forwarded ports.
    * Private network - Hostonly network, static IP assigned.
    * Public network - Bridged network, IP assigned via DHCP from router.
    
    **AWS**
    * Forwarded ports - Unimplemented.
    * Private network - Public DNS in EC2, private IP in VPC.
    * Public network - Elastic IP in EC2 and VPC.
    
    === Syntax
    
    Networks are configured at the top-level of a Vagrantfile:
    
    ```ruby
    Vagrant.configure("2") do |config|
      # ...
    
      config.vm.network :forwarded_port, 80, 8080
      config.vm.network :private_network, "192.168.1.12"
      config.vm.network :public_network
    end
    ```
    
    Providers should do their best to honor these configurations.
    
    === Advanced Options
    
    While providers should do their best to satisfy the requirements for the
    high-level abstractions, it is expected that provider-specific configuration
    may be possible per network, even for the high-level configurations. For
    this, provider-prefixed configuration options should be done:
    
    ```ruby
    config.vm.network :forwarded_port, 80, 8000,
      :vmware__device => "vmnet8"
    
    config.vm.network :public_network,
      :aws__elastic_ip => "1.2.3.4",
      :vmware__device => "en0"
    ```
    
    If at all possible, providers should **not** require advanced options for
    these to function.
    
    == Low-level Configuration
    
    While the high-level configuration should satisfy the common case and make
    Vagrant work out of the box for most providers, one of the large benefits of
    many providers is the ability to do certain networking tricks. For example,
    KVM, Hyper-V, vSphere, etc. can create and be a part of true VLANs, which
    may be required for certain upstream networking rules/ACLs. For things like
    this, the network configuration should go directly into the provider
    configuration in some way.
    
    Examples:
    
    ```ruby
    config.vm.provider :virtualbox do |vb|
      vb.network_adapter 2, :hostonly
      vb.network_adapter 3, :nat
    end
    
    config.vm.provider :aws do |aws|
      aws.routing_table = "route-123456"
    end
    ```
    
    It is up to the provider implementation to define the configuration
    syntax as well as the implementation details of such an option. Other
    providers are unable to see provider configurations other than their own
    so it is truly private to the provider.
  2. Don't explicitly set the host to 127.0.0.1

    mitchellh committed Jan 12, 2013
    Other providers may not have this requirement
  3. Fix #1314: run vagrant test suite on Travis CI

    rogeriopradoj committed Jan 12, 2013
    Signed-off-by: Rogerio Prado de Jesus <rogeriopradoj@gmail.com>