Merge pull request #27319 from hashicorp/alisdair/backend-remote-no-version-check-for-operations

backend/remote: No version check for operations
This commit is contained in:
Alisdair McDiarmid 2021-01-04 13:52:38 -05:00 committed by GitHub
commit c0a5a5be1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 11 deletions

View File

@ -694,19 +694,22 @@ func (b *Remote) Operation(ctx context.Context, op *backend.Operation) (*backend
}
}
// Terraform remote version conflicts are not a concern for operations. We
// are in one of three states:
//
// - Running remotely, in which case the local version is irrelevant;
// - Workspace configured for local operations, in which case the remote
// version is meaningless;
// - Forcing local operations with a remote backend, which should only
// happen in the Terraform Cloud worker, in which case the Terraform
// versions by definition match.
b.IgnoreVersionConflict()
// Check if we need to use the local backend to run the operation.
if b.forceLocal || !w.Operations {
if !w.Operations {
// Workspace is explicitly configured for local operations, so its
// configured Terraform version is meaningless
b.IgnoreVersionConflict()
}
return b.local.Operation(ctx, op)
}
// Running remotely so we don't care about version conflicts
b.IgnoreVersionConflict()
// Set the remote workspace name.
op.Workspace = w.Name

View File

@ -1298,12 +1298,11 @@ func TestRemote_applyVersionCheck(t *testing.T) {
remoteVersion: "0.13.5",
hasOperations: false,
},
"error if force local, has remote operations, different versions": {
"force local with remote operations and different versions is acceptable": {
localVersion: "0.14.0",
remoteVersion: "0.13.5",
remoteVersion: "0.14.0-acme-provider-bundle",
forceLocal: true,
hasOperations: true,
wantErr: `Remote workspace Terraform version "0.13.5" does not match local Terraform version "0.14.0"`,
},
"no error if versions are identical": {
localVersion: "0.14.0",