Skip to content

Commit

Permalink
fix(manager/terraform/lockfile): use registryURL defined in lockfile (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
secustor authored May 7, 2024
1 parent 8191cf8 commit cbbfcd1
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 7 deletions.
6 changes: 3 additions & 3 deletions lib/modules/manager/terraform/lockfile/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ describe('modules/manager/terraform/lockfile/index', () => {

it('update single dependency with exact constraint and depType provider', async () => {
fs.readLocalFile.mockResolvedValueOnce(codeBlock`
provider "registry.terraform.io/hashicorp/aws" {
provider "registry.opentofu.org/hashicorp/aws" {
version = "3.0.0"
constraints = "3.0.0"
hashes = [
Expand Down Expand Up @@ -111,7 +111,7 @@ describe('modules/manager/terraform/lockfile/index', () => {
{
file: {
contents: codeBlock`
provider "registry.terraform.io/hashicorp/aws" {
provider "registry.opentofu.org/hashicorp/aws" {
version = "3.36.0"
constraints = "3.36.0"
hashes = [
Expand All @@ -126,7 +126,7 @@ describe('modules/manager/terraform/lockfile/index', () => {
},
]);
expect(mockHash.mock.calls).toEqual([
['https://registry.terraform.io', 'hashicorp/aws', '3.36.0'],
['https://registry.opentofu.org', 'hashicorp/aws', '3.36.0'],
]);
});

Expand Down
8 changes: 4 additions & 4 deletions lib/modules/manager/terraform/lockfile/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { logger } from '../../../../logger';
import * as p from '../../../../util/promises';
import { escapeRegExp, regEx } from '../../../../util/regex';
import { GetPkgReleasesConfig, getPkgReleases } from '../../../datasource';
import { TerraformProviderDatasource } from '../../../datasource/terraform-provider';
import { get as getVersioning } from '../../../versioning';
import type {
UpdateArtifact,
Expand Down Expand Up @@ -167,9 +166,6 @@ export async function updateArtifacts({
massageProviderLookupName(dep);
const { registryUrls, newVersion, packageName } = dep;

const registryUrl = registryUrls
? registryUrls[0]
: TerraformProviderDatasource.defaultRegistryUrls[0];
const updateLock = locks.find(
(value) => value.packageName === packageName,
);
Expand All @@ -191,6 +187,10 @@ export async function updateArtifacts({
continue;
}
}

// use registryURL defined in the update and fall back to the one defined in the lockfile
const registryUrl = registryUrls?.[0] ?? updateLock.registryUrl;

const newConstraint = getNewConstraint(dep, updateLock.constraints);
const update: ProviderLockUpdate = {
// TODO #22198
Expand Down
17 changes: 17 additions & 0 deletions lib/modules/manager/terraform/readme.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
### Terraform vs OpenTofu

There is no way for Renovate to differentiate, if a user is a Terraform user or has already adopted OpenTofu.
Therefore, Renovate defaults currently to interpret providers without a registry definition to be located at `registry.terraform.io`.
This behaviour can be modified using `packageRules`:

```json title="Prefer releases from OpenTofu"
{
"packageRules": [
{
"matchDatasources": ["terraform-provider"],
"registryUrl": "https://registry.opentofu.org"
}
]
}
```

### Supported dependencies

Renovate supports updating the Terraform dependencies listed below.
Expand Down

0 comments on commit cbbfcd1

Please sign in to comment.