Commit Graph

168 Commits

Author SHA1 Message Date
Martin Atkins 0e0e3d73af core: New ResourceProvider methods for data resources
This is a breaking change to the ResourceProvider interface that adds the
new operations relating to data sources.

DataSources, ValidateDataSource, ReadDataDiff and ReadDataApply are the
data source equivalents of Resources, Validate, Diff and Apply (respectively)
for managed resources.

The diff/apply model seems at first glance a rather strange workflow for
read-only resources, but implementing data resources in this way allows them
to fit cleanly into the standard plan/apply lifecycle in cases where the
configuration contains computed arguments and thus the read must be deferred
until apply time.

Along with breaking the interface, we also fix up the plugin client/server
and helper/schema implementations of it, which are all of the callers
used when provider plugins use helper/schema. This would be a breaking
change for any provider plugin that directly implements the provider
interface, but no known plugins do this and it is not recommended.

At the helper/schema layer the implementer sees ReadDataApply as a "Read",
as opposed to "Create" or "Update" as in the managed resource Apply
implementation. The planning mechanics are handled entirely within
helper/schema, so that complexity is hidden from the provider implementation
itself.
2016-05-14 08:26:36 -07:00
Mitchell Hashimoto ba84485c87
plugin: tests for ImportState 2016-05-11 13:02:35 -07:00
Mitchell Hashimoto a6b4bb4932
plugin: new API for ImportState 2016-05-11 13:02:35 -07:00
Mitchell Hashimoto 498e23162d
plugin: implement new interface methods 2016-05-11 13:02:34 -07:00
Mitchell Hashimoto 84214437b3 Use hashicorp/go-plugin for plugin system
This replaces this plugin system with the extracted hashicorp/go-plugin
library.

This doesn't introduce any new features such as binary flattening but
opens us up to that a lot more easily and removes a lot of code from TF
in favor of the upstream lib.

This will introduce a protocol change that will cause all existing
plugins to have to be recompiled to work properly. There is no actual
API changes so they just have to recompile, but it is technically
backwards incompatible.
2016-05-10 14:14:47 -04:00
Martin Atkins 8173cd25bb Demote some log lines to DEBUG.
Now that we support log line filtering (as of 0090c063) it's good to be
a bit more fussy about what log levels are assigned to different things.

Here we make a few things that are implementation details log as DEBUG,
and prevent spurious errors from EvalValidateCount where it was returning
an empty EvalValidateError rather than nil when everything was okay.
2015-10-11 10:45:33 -07:00
Sander van Harmelen c9e9e374bb Adding some abstractions for the communicators
This is needed as preperation for adding WinRM support. There is still
one error in the tests which needs another look, but other than that it
seems like were now ready to start working on the WinRM part…
2015-05-01 18:48:54 +02:00
Mitchell Hashimoto 04858e1a15 plugin: Client/Server uses new RPC client/server 2014-09-28 11:19:24 -07:00
Mitchell Hashimoto 0281c1108e rpc: Create the Client/Server 2014-09-28 10:49:27 -07:00
Mitchell Hashimoto 0de633abeb plugin: up API version to 2 2014-09-16 16:49:21 -07:00
Mitchell Hashimoto 08dbf4daf0 fmt 2014-08-30 17:02:11 -07:00
Mitchell Hashimoto fb9810ca5c website: document how to write providers using the new helper/schema 2014-08-26 21:31:53 -07:00
Alex Gaynor 46154ca1d3 Fixed a ton of typos in docs and comments 2014-08-07 00:19:56 -07:00
Mitchell Hashimoto e0f2197d6c plugin: better logging 2014-07-24 07:30:21 -07:00
Armon Dadgar 3849ca80ef plugin: Adding support for provisioners 2014-07-10 11:38:56 -07:00
Mitchell Hashimoto 0cda9a7539 some comments, package comments 2014-05-28 21:27:10 -07:00
Mitchell Hashimoto 8163d364c9 plugin: ResourceProviderFactory 2014-05-28 21:19:44 -07:00
Mitchell Hashimoto 951b7b18eb plugin: can execute plugins and communicate that way 2014-05-28 21:09:47 -07:00