diff --git a/backend/remote-state/etcdv3/backend.go b/backend/remote-state/etcdv3/backend.go index 2b25ce3508..ddcbaa1cf7 100644 --- a/backend/remote-state/etcdv3/backend.go +++ b/backend/remote-state/etcdv3/backend.go @@ -60,12 +60,14 @@ type Backend struct { *schema.Backend // The fields below are set from configure. + client *etcdv3.Client data *schema.ResourceData lock bool prefix string } func (b *Backend) configure(ctx context.Context) error { + var err error // Grab the resource data. b.data = schema.FromContextBackendConfig(ctx) // Store the lock information. @@ -73,7 +75,7 @@ func (b *Backend) configure(ctx context.Context) error { // Store the prefix information. b.prefix = b.data.Get("prefix").(string) // Initialize a client to test config. - _, err := b.rawClient() + b.client, err = b.rawClient() // Return err, if any. return err } diff --git a/backend/remote-state/etcdv3/backend_state.go b/backend/remote-state/etcdv3/backend_state.go index 1df89008a3..4c9f78a9b5 100644 --- a/backend/remote-state/etcdv3/backend_state.go +++ b/backend/remote-state/etcdv3/backend_state.go @@ -14,12 +14,7 @@ import ( ) func (b *Backend) States() ([]string, error) { - client, err := b.rawClient() - if err != nil { - return nil, err - } - - res, err := client.Get(context.TODO(), b.prefix, etcdv3.WithPrefix(), etcdv3.WithKeysOnly()) + res, err := b.client.Get(context.TODO(), b.prefix, etcdv3.WithPrefix(), etcdv3.WithKeysOnly()) if err != nil { return nil, err } @@ -39,26 +34,16 @@ func (b *Backend) DeleteState(name string) error { return fmt.Errorf("Can't delete default state.") } - client, err := b.rawClient() - if err != nil { - return err - } - key := b.determineKey(name) - _, err = client.Delete(context.TODO(), key) + _, err := b.client.Delete(context.TODO(), key) return err } func (b *Backend) State(name string) (state.State, error) { - client, err := b.rawClient() - if err != nil { - return nil, err - } - var stateMgr state.State = &remote.State{ Client: &RemoteClient{ - Client: client, + Client: b.client, DoLock: b.lock, Key: b.determineKey(name), },