// Package statemgr defines the interfaces and some supporting functionality // for "state managers", which are components responsible for writing state // to some persistent storage and then later retrieving it. // // State managers will usually (but not necessarily) use the state file formats // implemented in the sibling directory "statefile" to serialize the persistent // parts of state for storage. // // State managers are responsible for ensuring that stored state can be updated // safely across multiple, possibly-concurrent Terraform runs (with reasonable // constraints and limitations). The rest of Terraform considers state to be // a mutable data structure, with state managers preserving that illusion // by creating snapshots of the state and updating them over time. // // From the perspective of callers of the general state manager API, a state // manager is able to return the latest snapshot and to replace that snapshot // with a new one. Some state managers may also preserve historical snapshots // using facilities offered by their storage backend, but this is always an // implementation detail: the historical versions are not visible to a user // of these interfaces. package statemgr