{"push_id":1101514496,"size":10,"distinct_size":10,"ref":"refs/heads/f-data-sources","head":"4ff1b3855b82f4b1e17185699300cc0aeff12424","before":"ce07201e951aa08d602c98a1a22e458d35ba3339","commits":[{"sha":"834ba48a97b18e74ec01e896eb3b1503460153ba","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"core: New ResourceProvider methods for data resources\n\nThis is a breaking change to the ResourceProvider interface that adds the\nnew operations relating to data sources.\n\nDataSources, ValidateDataSource, ReadDataDiff and ReadDataApply are the\ndata source equivalents of Resources, Validate, Diff and Apply (respectively)\nfor managed resources.\n\nThe diff/apply model seems at first glance a rather strange workflow for\nread-only resources, but implementing data resources in this way allows them\nto fit cleanly into the standard plan/apply lifecycle in cases where the\nconfiguration contains computed arguments and thus the read must be deferred\nuntil apply time.\n\nAlong with breaking the interface, we also fix up the plugin client/server\nand helper/schema implementations of it, which are all of the callers\nused when provider plugins use helper/schema. This would be a breaking\nchange for any provider plugin that directly implements the provider\ninterface, but no known plugins do this and it is not recommended.\n\nAt the helper/schema layer the implementer sees ReadDataApply as a \"Read\",\nas opposed to \"Create\" or \"Update\" as in the managed resource Apply\nimplementation. The planning mechanics are handled entirely within\nhelper/schema, so that complexity is hidden from the provider implementation\nitself.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/834ba48a97b18e74ec01e896eb3b1503460153ba"},{"sha":"7c094c8919e403da388232172d76c6a307ab4154","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"helper/schema: Resource can be writable or not\n\nIn the \"schema\" layer a Resource is just any \"thing\" that has a schema\nand supports some or all of the CRUD operations. Data sources introduce\na new use of Resource to represent read-only resources, which require\nsome different InternalValidate logic.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/7c094c8919e403da388232172d76c6a307ab4154"},{"sha":"9c597406f94223f69f1a27e679d8e89bce9061d7","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"helper/schema: shim for making data sources act like resources\n\nHistorically we've had some \"read-only\" and \"logical\" resources. With the\naddition of the data source concept these will gradually become data\nsources, but we need to retain backward compatibility with existing\nconfigurations that use the now-deprecated resources.\n\nThis shim is intended to allow us to easily create a resource from a\ndata source implementation. It adjusts the schema as needed and adds\nstub Create and Delete implementations.\n\nThis would ideally also produce a deprecation warning whenever such a\nshimmed resource is used, but the schema system doesn't currently have\na mechanism for resource-specific validation, so that remains just a TODO\nfor the moment.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/9c597406f94223f69f1a27e679d8e89bce9061d7"},{"sha":"98f58806af052aa7bd67d4c09326947da30d13f6","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"provider/terraform: remote state resource becomes a data source\n\nAs a first example of a real-world data source, the pre-existing\nterraform_remote_state resource is adapted to be a data source. The\noriginal resource is shimmed to wrap the data source for backward\ncompatibility.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/98f58806af052aa7bd67d4c09326947da30d13f6"},{"sha":"71b40419151a50f1e6d4069f5357364c260d9f50","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"helper/schema: emit warning when using data source resource shim\n\nFor backward compatibility we will continue to support using the data\nsources that were formerly logical resources as resources for the moment,\nbut we want to warn the user about it since this support is likely to\nbe removed in future.\n\nThis is done by adding a new \"deprecation message\" feature to\nschema.Resource, but for the moment this is done as an internal feature\n(not usable directly by plugins) so that we can collect additional\nuse-cases and design a more general interface before creating a\ncompatibility constraint.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/71b40419151a50f1e6d4069f5357364c260d9f50"},{"sha":"ceef95fb1432dc7cf9b8a1c52095fd83b84db83d","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"website: Initial documentation about data sources\n\nThis will undoubtedly evolve as implementation continues, but this is some\ninitial documentation based on the design doc.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/ceef95fb1432dc7cf9b8a1c52095fd83b84db83d"},{"sha":"fb4be16e96e08acfa98e6e61b555e10c0655f7c3","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"core: ResourceStateKey understands resource modes\n\nOnce a data resource gets into the state, the state system needs to be\nable to parse its id to match it with resources in the configuration.\nSince data resources live in a separate namespace than managed resources,\nthe extra \"mode\" discriminator is required to specify which namespace\nwe're talking about, just like we do in the resource configuration.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/fb4be16e96e08acfa98e6e61b555e10c0655f7c3"},{"sha":"aefc4cd1d4a39e1d752de8a058ea2da0b2ec2424","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"core: EvalValidate calls appropriate validator for resource mode\n\ndata resources are a separate namespace of resources than managed\nresources, so we need to call a different provider method depending on\nwhat mode of resource we're visiting.\n\nManaged resources use ValidateResource, while data resources use\nValidateDataSource, since at the provider level of abstraction each\nprovider has separate sets of resources and data sources respectively.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/aefc4cd1d4a39e1d752de8a058ea2da0b2ec2424"},{"sha":"53d8f4325f50d9745e268d04be14d6c71acc7799","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"core: Separate resource lifecycle for data vs. managed resources\n\nThe key difference between data and managed resources is in their\nrespective lifecycles. Now the expanded resource EvalTree switches on\nthe resource mode, generating a different lifecycle for each mode.\n\nFor this initial change only managed resources are implemented, using the\nsame implementation as before; data resources are no-ops. The data\nresource implementation will follow in a subsequent change.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/53d8f4325f50d9745e268d04be14d6c71acc7799"},{"sha":"4ff1b3855b82f4b1e17185699300cc0aeff12424","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"core: refresh steps for data resources\n\nThis causes data resources that don't have computed arguments to be loaded\nas expected, populating the state so that dependent resources can use\ntheir attributes.\n\nIt doesn't yet work for data resources with computed arguments; there are\nsome TODO comments in there for what remains to complete that.","distinct":true,"url":"https://api.github.com/repos/hashicorp/terraform/commits/4ff1b3855b82f4b1e17185699300cc0aeff12424"}]}