Skip to content

Commit e173e3d

Browse files
authored
Specify ComputeID for risk_behavior, access_mutual_tls_hostname_settings (#792)
Fixes #791
1 parent 0407041 commit e173e3d

File tree

5 files changed

+65
-0
lines changed

5 files changed

+65
-0
lines changed

examples/regress-791/Pulumi.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
name: regress-791
2+
runtime: nodejs

examples/regress-791/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import * as pulumi from "@pulumi/pulumi";
2+
import * as cloudflare from "@pulumi/cloudflare";
3+
4+
const config = new pulumi.Config();
5+
const accountId = config.require("accountId");
6+
7+
new cloudflare.RiskBehavior("test", {
8+
accountId: accountId,
9+
});

examples/regress-791/package.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "cloudflare-record",
3+
"version": "0.1.0",
4+
"dependencies": {
5+
"@pulumi/cloudflare": "^5.0.0",
6+
"@pulumi/pulumi": "^3.0.0"
7+
}
8+
}

examples/regress-791/tsconfig.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"compilerOptions": {
3+
"outDir": "bin",
4+
"target": "es6",
5+
"module": "commonjs",
6+
"moduleResolution": "node",
7+
"declaration": true,
8+
"sourceMap": true,
9+
"stripInternal": true,
10+
"experimentalDecorators": true,
11+
"pretty": true,
12+
"noFallthroughCasesInSwitch": true,
13+
"noImplicitAny": true,
14+
"noImplicitReturns": true,
15+
"forceConsistentCasingInFileNames": true,
16+
"strictNullChecks": true
17+
},
18+
"files": [
19+
"index.ts"
20+
]
21+
}

provider/resources.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge"
2929
tfbridgetokens "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/tokens"
3030
shimv2 "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v2"
31+
"github.com/pulumi/pulumi/sdk/v3/go/common/resource"
3132

3233
"github.com/pulumi/pulumi-cloudflare/provider/v5/pkg/version"
3334
)
@@ -51,6 +52,11 @@ func Provider() tfbridge.ProviderInfo {
5152
provShim.PFProvider(),
5253
)
5354

55+
delegateID := func(pulumiField string) tfbridge.ComputeID {
56+
return tfbridge.DelegateIDField(resource.PropertyKey(pulumiField),
57+
"cloudflare", "https://github.com/pulumi/pulumi-cloudflare")
58+
}
59+
5460
// Create a Pulumi provider mapping
5561
prov := tfbridge.ProviderInfo{
5662
P: p,
@@ -115,6 +121,25 @@ func Provider() tfbridge.ProviderInfo {
115121
// resource will conflict with the old one. To avoid this, we set
116122
// `DeleteBeforeReplace: true`.
117123
"cloudflare_record": {DeleteBeforeReplace: true},
124+
125+
"cloudflare_risk_behavior": {ComputeID: delegateID("accountId")},
126+
// cloudflare_access_mutual_tls_hostname_settings has no
127+
"cloudflare_access_mutual_tls_hostname_settings": {
128+
ComputeID: func(_ context.Context, state resource.PropertyMap) (resource.ID, error) {
129+
account, hasAccount := state["accountId"]
130+
zone, hasZone := state["zoneId"]
131+
switch {
132+
case hasAccount && hasZone:
133+
return resource.ID(account.StringValue() + "__" + zone.StringValue()), nil
134+
case hasAccount:
135+
return resource.ID(account.StringValue()), nil
136+
case hasZone:
137+
return resource.ID(zone.StringValue()), nil
138+
default:
139+
return "id", nil
140+
}
141+
},
142+
},
118143
},
119144
JavaScript: &tfbridge.JavaScriptInfo{
120145
Dependencies: map[string]string{

0 commit comments

Comments
 (0)