Commit Graph

25 Commits

Author SHA1 Message Date
James Bardin 026ba5b013 ensure context cancel is never nil
The context used for Stop is more appropriately tied to the lifetime of
the provisioner rather than a call to the ProvisionResource method. In
some cases Stop can be called before ProvisionResource, causing a panic
the provisioner.  Rather than adding nil checks to the CancelFunc call
for Stop, create a base context to use for cancellation with both Stop
and Close methods.
2021-01-08 12:36:45 -05:00
James Bardin 9adfaa9b5d rewrite local-exec to run internally
Use the new interface directly, so that there are no shims or plugins
involved with the execution of the provisioner.
2020-12-02 12:45:00 -05:00
James Bardin 01ac480a58 update provisioners to use legacy types 2020-12-02 12:16:35 -05:00
Alex Pilon 83aa07f907
prune NewResourceConfig and update tests 2019-08-05 22:08:03 -04:00
Andre Bindewald de43f01d65 provisioner/local-exec: Support custom environment variables on Windows
Due to an incorrect slice allocation, the environment variable list was created with an empty string
element for each real element added.

It appears that this was silently ignored on Unix, but caused the following environment settings
to be ignored altogether on Windows.
2018-06-15 18:26:43 -07:00
Kristiyan Nikolov 999f9096c1 provisioner/local-exec: Allow passing environment variables 2018-03-05 15:58:49 -08:00
chrisjob1021 10bb21e9c4 provisioner/local-exec: Optional "working_dir" argument
This new argument allows overriding of the working directory of the child process, with the default still being the working directory of Terraform itself.
2018-02-16 11:31:11 -08:00
Stephen Weatherford 5d5f8224d2 provisioner/local-exec: allow user to specify interpreter 2017-08-22 10:16:36 -07:00
Lars Lehtonen 47484e23fe provisioner/local-exec: Drop untestable error
TestResourceProvider_stop uses a goroutine, which means that any function with *testing.T as its receiver within that goroutine will silently fail.

Now the test to accepts that an error that occurs within the goroutine is lost. It also adds some more verbose logs to explain what is happening.
2017-08-21 19:05:49 -07:00
Sander van Harmelen 0e422737ba Fix and refactor the Chef provisioner
The tests did pass, but that was because they only tested part of the changes. By using the `schema.TestResourceDataRaw` function the schema and config are better tested and so they pointed out a problem with the schema of the Chef provisioner.

The `Elem` fields did not have a `*schema.Schema` but a `schema.Schema` and in an `Elem` schema only the `Type` field may (and must) be set. Any other fields like `Optional` are not allowed here.

Next to fixing that problem I also did a little refactoring and cleaning up. Mainly making the `ProvisionerS` private (`provisioner`) and removing the deprecated fields.
2017-05-19 21:05:21 +02:00
Vladislav Rassokhin f5449a62e0 Various built-in provisioners improvements:
1. Migrate `chef` provisioner to `schema.Provisioner`:

 * `chef.Provisioner` structure was renamed to `ProvisionerS`and  now it's decoded from `schema.ResourceData` instead of `terraform.ResourceConfig` using simple copy-paste-based solution;
 * Added simple schema without any validation yet.

 2. Support `ValidateFunc` validate function : implemented in `file` and `chef` provisioners.
2017-05-19 20:43:51 +02:00
James Bardin fd2ea3cd82 remove log.Fatal from test
also increase the timeout for slow test hosts.
2017-02-24 18:48:48 -05:00
James Bardin ff2936bb3f Fix cancellation when spawning a subprocess
If the shell spawns a subprocess which doesn't close the output file
descriptors, the exec.Cmd will block on Wait() (see
golang.org/issue/18874). Use an os.Pipe to provide the command with a
real file descriptor so the exec package doesn't need to do the copy
manually. This in turn may block our own reading goroutine, but we can
select on that and leave it for cleanup later.
2017-02-01 12:01:29 -05:00
James Bardin e0325d9b8f fix race with multiple calls to cmd.Wait()
There was still a race around the local-exec Command, where we were
calling Wait in 2 places which you can't do.
2017-01-31 18:07:26 -05:00
Mitchell Hashimoto 3776d31d69
provisioners/local-exec: remove data race by setting err only once 2017-01-30 10:21:05 -08:00
Mitchell Hashimoto 0fb87cd96b
provisioners/local-exec: stoppable
This modifies local-exec to be stoppable with the new Stop API call that
provisioners can listen to.
2017-01-26 15:03:28 -08:00
Mitchell Hashimoto c5b784c33f
provisioners/local-exec: switch to helper/schema 2017-01-26 15:03:28 -08:00
Mitchell Hashimoto 0808236c6e provisioners/local-exec: output the output 2014-10-05 23:05:49 -07:00
Mitchell Hashimoto e5868ebdd9 provisioners/*: new interface 2014-10-04 16:29:33 -07:00
Mitchell Hashimoto c452579512 provisioners/*: compiling, tests passing 2014-09-16 17:08:27 -07:00
Mitchell Hashimoto 8720d2465e builtin/provisioners/*: new API 2014-07-22 10:38:39 -07:00
Mitchell Hashimoto 01b58669b0 provisioners/local-exec: tests pass on Windows due to line-endings diff
/cc @armon
2014-07-10 13:09:09 -07:00
Armon Dadgar 7721caf867 provisioner/local-exec: Adding tests for Apply and Validate 2014-07-10 11:38:57 -07:00
Armon Dadgar 6ace8e12e5 provisioner/local-exec: Use interpolated values 2014-07-10 11:38:57 -07:00
Armon Dadgar 9c49642b37 provisioner/local-exec: First pass 2014-07-10 11:38:56 -07:00