terraform/internal/states/remote/remote.go

39 lines
998 B
Go
Raw Normal View History

2015-02-21 20:52:55 +01:00
package remote
2015-02-22 00:13:28 +01:00
import (
"github.com/hashicorp/terraform/internal/states/statemgr"
2015-02-22 00:13:28 +01:00
)
2015-02-21 20:52:55 +01:00
// Client is the interface that must be implemented for a remote state
// driver. It supports dumb put/get/delete, and the higher level structs
// handle persisting the state properly here.
type Client interface {
Get() (*Payload, error)
Put([]byte) error
Delete() error
}
// ClientForcePusher is an optional interface that allows a remote
// state to force push by managing a flag on the client that is
// toggled on by a call to EnableForcePush.
type ClientForcePusher interface {
Client
EnableForcePush()
}
// ClientLocker is an optional interface that allows a remote state
// backend to enable state lock/unlock.
type ClientLocker interface {
Client
statemgr.Locker
}
2015-02-21 20:52:55 +01:00
// Payload is the return value from the remote state storage.
type Payload struct {
MD5 []byte
Data []byte
}
// Factory is the factory function to create a remote client.
type Factory func(map[string]string) (Client, error)