diff --git a/src/vagrant/__init__.py b/src/vagrant/__init__.py index 6b8282e..54afebb 100644 --- a/src/vagrant/__init__.py +++ b/src/vagrant/__init__.py @@ -307,7 +307,7 @@ def init(self, box_name=None, box_url=None): """ self._call_vagrant_command(["init", box_name, box_url]) - def up( + def up( # pylint: disable-msg=too-many-locals self, vm_name=None, no_provision=False, @@ -315,6 +315,7 @@ def up( provision=None, provision_with=None, stream_output=False, + destroy_on_error=True, ): """ Invoke `vagrant up` to start a box or boxes, possibly streaming the @@ -330,6 +331,8 @@ def up( subprocess might hang. if False, None is returned and the command is run to completion without streaming the output. Defaults to False. + destroy_on_error: if True, the newly created will be destroyed if there + was any error in the provisioning. Note: If provision and no_provision are not None, no_provision will be ignored. returns: None or a generator yielding lines of output. @@ -350,7 +353,10 @@ def up( if provision else "--no-provision" ) - + if destroy_on_error: + destroy_on_error_arg = "--destroy-on-error" + else: + destroy_on_error_arg = "--no-destroy-on-error" args = [ "up", vm_name, @@ -359,6 +365,7 @@ def up( provider_arg, prov_with_arg, providers_arg, + destroy_on_error_arg, ] if stream_output: generator = self._stream_vagrant_command(args)