{"push_id":1114788068,"size":29,"distinct_size":1,"ref":"refs/heads/acctests/google","head":"0ae3ecb4f8cd178ad9fbcf1fe7e22f53ac43eca1","before":"28592ab5b4600332ab3f0bcf22dcb2b91c32f00c","commits":[{"sha":"fc4fa10981338ff165a1318660097658fe623cac","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"config: \"ResourceMode\" concept for resources\n\nPreviously resources were assumed to always support the full set of\ncreate, read, update and delete operations, and Terraform's resource\nmanagement lifecycle.\n\nData sources introduce a new kind of resource that only supports the\n\"read\" operation. To support this, a new \"Mode\" field is added to\nthe Resource concept within the config layer, which can be set to\nManagedResourceMode (to indicate the only mode previously possible) or\nDataResourceMode (to indicate that only \"read\" is supported).\n\nTo support both managed and data resources in the tests, the\nstringification of resources in config_string.go is adjusted slightly\nto use the Id() method rather than the unusual type[name] serialization\nfrom before, causing a simple mechanical adjustment to the loader tests'\nexpected result strings.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/fc4fa10981338ff165a1318660097658fe623cac"},{"sha":"860140074f2d4dd04184bf478319175d0ef9e229","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"config: Data source loading\n\nThis allows the config loader to read \"data\" blocks from the config and\nturn them into DataSource objects.\n\nThis just reads the data from the config file. It doesn't validate the\ndata nor do anything useful with it.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/860140074f2d4dd04184bf478319175d0ef9e229"},{"sha":"718cdda77b60291d40bed0b396823c726753e372","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"config: Parsing of data.TYPE.NAME.FIELD variables\n\nThis allows ${data.TYPE.NAME.FIELD} interpolation syntax at the\nconfiguration level, though since there is no special handling of them\nin the core package this currently just acts as an alias for\n${TYPE.NAME.FIELD}.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/718cdda77b60291d40bed0b396823c726753e372"},{"sha":"0e0e3d73af094b0935994adca175cd47d8661957","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":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/0e0e3d73af094b0935994adca175cd47d8661957"},{"sha":"6a468dcd83ef3a638294c325fa57d2b52c8bded2","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":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/6a468dcd83ef3a638294c325fa57d2b52c8bded2"},{"sha":"fb262d0dbe6690e8c71881e4bb2b132ed7c4c81b","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":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/fb262d0dbe6690e8c71881e4bb2b132ed7c4c81b"},{"sha":"3eb4a89104ba6c41f305af425ce91f19d4f35f4c","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":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/3eb4a89104ba6c41f305af425ce91f19d4f35f4c"},{"sha":"6cd22a4c9a53bc2ff507043dc7a415076d649552","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":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/6cd22a4c9a53bc2ff507043dc7a415076d649552"},{"sha":"64f2651204c837532ec6abbdb79de9959954cce6","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":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/64f2651204c837532ec6abbdb79de9959954cce6"},{"sha":"844e1abdd3c6f8c0a56fe5a364c95aaafe4d205e","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":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/844e1abdd3c6f8c0a56fe5a364c95aaafe4d205e"},{"sha":"c1315b3f09c49e38db0aee32a1f8c8a754f53f32","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":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/c1315b3f09c49e38db0aee32a1f8c8a754f53f32"},{"sha":"1da560b653eaa699692fb48e8935f8d32b922578","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":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/1da560b653eaa699692fb48e8935f8d32b922578"},{"sha":"36054470e4247a311c979baad9d892e20c1cce64","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"core: lifecycle for data resources\n\nThis implements the main behavior of data resources, including both the\nearly read in cases where the configuration is non-computed and the split\nplan/apply read for cases where full configuration can't be known until\napply time.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/36054470e4247a311c979baad9d892e20c1cce64"},{"sha":"4d50f22a238398f8833c4faf6fa67997d6afcc9e","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"core: separate lifecycle for data resource \"orphans\"\n\nThe handling of data \"orphans\" is simpler than for managed resources\nbecause the only thing we need to deal with is our own state, and the\nvalidation pass guarantees that by the time we get to refresh or apply\nthe instance state is no longer needed by any other resources and so\nwe can safely drop it with no fanfare.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/4d50f22a238398f8833c4faf6fa67997d6afcc9e"},{"sha":"afc7ec5ac0e0935647531a6a1a18d99963dc04b3","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"core: Destroy data resources with \"terraform destroy\"\n\nPreviously they would get left behind in the state because we had no\nsupport for planning their destruction. Now we'll create a \"destroy\" plan\nand act on it by just producing an empty state on apply, thus ensuring\nthat the data resources don't get left behind in the state after\neverything else is gone.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/afc7ec5ac0e0935647531a6a1a18d99963dc04b3"},{"sha":"61ab8bf39a1b69301a80c677cb1be0016373b189","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"core: ResourceAddress supports data resources\n\nThe ResourceAddress struct grows a new \"Mode\" field to match with\nResource, and its parser learns to recognize the \"data.\" prefix so it\ncan set that field.\n\nAllows -target to be applied to data sources, although that is arguably\nnot a very useful thing to do. Other future uses of resource addressing,\nlike the state plumbing commands, may be better uses of this.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/61ab8bf39a1b69301a80c677cb1be0016373b189"},{"sha":"60c24e3319d7ce6aee5d0b7f306287949c3bbbe4","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"command: Prevent data resources from being tainted\n\nSince the data resource lifecycle contains no steps to deal with tainted\ninstances, we must make sure that they never get created.\n\nDoing this out in the command layer is not the best, but this is currently\nthe only layer that has enough information to make this decision and so\nthis simple solution was preferred over a more disruptive refactoring,\nunder the assumption that this taint functionality eventually gets\nreworked in terms of StateFilter anyway.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/60c24e3319d7ce6aee5d0b7f306287949c3bbbe4"},{"sha":"5d27a5b3e25968e5ad1dd260dd8b03fd484f020b","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"command: Show id only when refreshing managed resources\n\nData resources don't have ids when they refresh, so we'll skip showing the\n\"(ID: ...)\"  indicator for these. Showing it with no id makes it look\nlike something is broken.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/5d27a5b3e25968e5ad1dd260dd8b03fd484f020b"},{"sha":"bfee4b02958e536cee811a835090a8c82b2d89eb","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"command: don't show old values for create diffs in plan\n\nNew resources logically don't have \"old values\" for their attributes, so\nshowing them as updates from the empty string is misleading and confusing.\n\nInstead, we'll skip showing the old value in a creation diff.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/bfee4b02958e536cee811a835090a8c82b2d89eb"},{"sha":"2ca10ad9627b0fcb0522d915a2e3f330121314ca","author":{"email":"a1bdfbfb01322b54f9edf8cea8f328c9384b211a@degeneration.co.uk","name":"Martin Atkins"},"message":"command: Show data source reads differently in plans\n\nInternally a data source read is represented as a creation diff for the\nresource, but in the UI we'll show it as a distinct icon and color so that\nthe user can more easily understand that these operations won't affect\nany real infrastructure.\n\nUnfortunately by the time we get to formatting the plan in the UI we\nonly have the resource names to work with, and can't get at the original\nresource mode. Thus we're forced to infer the resource mode by exploiting\nknowledge of the naming scheme.","distinct":false,"url":"https://api.github.com/repos/hashicorp/terraform/commits/2ca10ad9627b0fcb0522d915a2e3f330121314ca"}]}