@cdktn/provider-generator 0.24.0-pre.87 → 0.24.0-pre.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/__tests__/edge-provider-schema/builder.d.ts +9 -3
- package/build/__tests__/edge-provider-schema/builder.js +6 -3
- package/build/__tests__/edge-provider-schema/index.js +119 -1
- package/build/__tests__/provider.test.js +4 -1
- package/build/get/__tests__/generator/ephemeral-resources.test.d.ts +2 -0
- package/build/get/__tests__/generator/ephemeral-resources.test.js +49 -0
- package/build/get/__tests__/generator/provider-functions.test.d.ts +2 -0
- package/build/get/__tests__/generator/provider-functions.test.js +176 -0
- package/build/get/__tests__/generator/provider.test.js +9 -1
- package/build/get/__tests__/generator/write-only.test.d.ts +2 -0
- package/build/get/__tests__/generator/write-only.test.js +65 -0
- package/build/get/__tests__/target-versions.test.d.ts +2 -0
- package/build/get/__tests__/target-versions.test.js +171 -0
- package/build/get/constructs-maker.d.ts +8 -1
- package/build/get/constructs-maker.js +13 -4
- package/build/get/generator/emitter/attributes-emitter.d.ts +12 -2
- package/build/get/generator/emitter/attributes-emitter.js +47 -5
- package/build/get/generator/emitter/index.d.ts +1 -0
- package/build/get/generator/emitter/index.js +2 -1
- package/build/get/generator/emitter/provider-functions-emitter.d.ts +11 -0
- package/build/get/generator/emitter/provider-functions-emitter.js +94 -0
- package/build/get/generator/emitter/resource-emitter.d.ts +5 -1
- package/build/get/generator/emitter/resource-emitter.js +83 -7
- package/build/get/generator/models/attribute-model.d.ts +2 -0
- package/build/get/generator/models/attribute-model.js +2 -1
- package/build/get/generator/models/index.d.ts +1 -0
- package/build/get/generator/models/index.js +2 -1
- package/build/get/generator/models/provider-function-model.d.ts +102 -0
- package/build/get/generator/models/provider-function-model.js +667 -0
- package/build/get/generator/models/resource-model.d.ts +3 -0
- package/build/get/generator/models/resource-model.js +13 -4
- package/build/get/generator/models/struct.d.ts +2 -0
- package/build/get/generator/models/struct.js +6 -2
- package/build/get/generator/provider-generator.d.ts +2 -0
- package/build/get/generator/provider-generator.js +31 -3
- package/build/get/generator/resource-parser.js +3 -1
- package/package.json +5 -5
- package/src/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +4 -0
- package/src/__tests__/edge-provider-schema/builder.ts +17 -1
- package/src/__tests__/edge-provider-schema/index.ts +124 -1
- package/src/__tests__/provider.test.ts +3 -0
- package/src/get/__tests__/generator/__snapshots__/ephemeral-resources.test.ts.snap +524 -0
- package/src/get/__tests__/generator/__snapshots__/provider-functions.test.ts.snap +444 -0
- package/src/get/__tests__/generator/__snapshots__/write-only.test.ts.snap +262 -0
- package/src/get/__tests__/generator/ephemeral-resources.test.ts +46 -0
- package/src/get/__tests__/generator/fixtures/ephemeral-resources.test.fixture.json +160 -0
- package/src/get/__tests__/generator/fixtures/provider-functions-collision.test.fixture.json +31 -0
- package/src/get/__tests__/generator/fixtures/provider-functions-synthetic.test.fixture.json +192 -0
- package/src/get/__tests__/generator/fixtures/provider-functions.test.fixture.json +170 -0
- package/src/get/__tests__/generator/fixtures/write-only.test.fixture.json +58 -0
- package/src/get/__tests__/generator/provider-functions.test.ts +262 -0
- package/src/get/__tests__/generator/provider.test.ts +8 -0
- package/src/get/__tests__/generator/write-only.test.ts +71 -0
- package/src/get/__tests__/target-versions.test.ts +206 -0
- package/src/get/constructs-maker.ts +43 -3
- package/src/get/generator/emitter/attributes-emitter.ts +61 -6
- package/src/get/generator/emitter/index.ts +1 -0
- package/src/get/generator/emitter/provider-functions-emitter.ts +117 -0
- package/src/get/generator/emitter/resource-emitter.ts +110 -6
- package/src/get/generator/models/attribute-model.ts +3 -0
- package/src/get/generator/models/index.ts +1 -0
- package/src/get/generator/models/provider-function-model.ts +872 -0
- package/src/get/generator/models/resource-model.ts +25 -3
- package/src/get/generator/models/struct.ts +9 -1
- package/src/get/generator/provider-generator.ts +70 -4
- package/src/get/generator/resource-parser.ts +2 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
|
2
|
+
|
|
3
|
+
exports[`generate a vault_alicloud_secret_backend resource with a write-only attribute 1`] = `
|
|
4
|
+
"// https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend
|
|
5
|
+
// generated from terraform resource schema
|
|
6
|
+
|
|
7
|
+
import { Construct } from 'constructs';
|
|
8
|
+
import * as cdktn from 'cdktn';
|
|
9
|
+
|
|
10
|
+
// Configuration
|
|
11
|
+
|
|
12
|
+
export interface AlicloudSecretBackendConfig extends cdktn.TerraformMetaArguments {
|
|
13
|
+
/**
|
|
14
|
+
* The AliCloud Access Key ID to use when generating new credentials.
|
|
15
|
+
*
|
|
16
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend#access_key AlicloudSecretBackend#access_key}
|
|
17
|
+
*/
|
|
18
|
+
readonly accessKey: string;
|
|
19
|
+
/**
|
|
20
|
+
* Path of the AliCloud secrets engine mount. Must match the \`path\` of a \`vault_mount\` resource with \`type = "alicloud"\`. Use \`vault_mount.alicloud.path\` here.
|
|
21
|
+
*
|
|
22
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend#mount AlicloudSecretBackend#mount}
|
|
23
|
+
*/
|
|
24
|
+
readonly mount: string;
|
|
25
|
+
/**
|
|
26
|
+
* Target namespace. (requires Enterprise)
|
|
27
|
+
*
|
|
28
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend#namespace AlicloudSecretBackend#namespace}
|
|
29
|
+
*/
|
|
30
|
+
readonly namespace?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Write-only AliCloud Secret Access Key. This value will never be read back from Vault.
|
|
33
|
+
*
|
|
34
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend#secret_key_wo AlicloudSecretBackend#secret_key_wo}
|
|
35
|
+
*/
|
|
36
|
+
readonly secretKeyWo: string;
|
|
37
|
+
/**
|
|
38
|
+
* Optional write-only secondary AliCloud Secret Access Key. This value will never be read back from Vault.
|
|
39
|
+
*
|
|
40
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend#secondary_secret_key_wo AlicloudSecretBackend#secondary_secret_key_wo}
|
|
41
|
+
*/
|
|
42
|
+
readonly secondarySecretKeyWo?: string;
|
|
43
|
+
/**
|
|
44
|
+
* A version counter for the write-only \`secret_key_wo\` field. Incrementing this value will trigger an update to the secret key in Vault.
|
|
45
|
+
*
|
|
46
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend#secret_key_wo_version AlicloudSecretBackend#secret_key_wo_version}
|
|
47
|
+
*/
|
|
48
|
+
readonly secretKeyWoVersion: number;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Represents a {@link https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend vault_alicloud_secret_backend}
|
|
53
|
+
*/
|
|
54
|
+
export class AlicloudSecretBackend extends cdktn.TerraformResource {
|
|
55
|
+
|
|
56
|
+
// =================
|
|
57
|
+
// STATIC PROPERTIES
|
|
58
|
+
// =================
|
|
59
|
+
public static readonly tfResourceType = "vault_alicloud_secret_backend";
|
|
60
|
+
|
|
61
|
+
// ==============
|
|
62
|
+
// STATIC Methods
|
|
63
|
+
// ==============
|
|
64
|
+
/**
|
|
65
|
+
* Generates CDKTN code for importing a AlicloudSecretBackend resource upon running "cdktn plan <stack-name>"
|
|
66
|
+
* @param scope The scope in which to define this construct
|
|
67
|
+
* @param importToId The construct id used in the generated config for the AlicloudSecretBackend to import
|
|
68
|
+
* @param importFromId The id of the existing AlicloudSecretBackend that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend#import import section} in the documentation of this resource for the id to use
|
|
69
|
+
* @param provider? Optional instance of the provider where the AlicloudSecretBackend to import is found
|
|
70
|
+
*/
|
|
71
|
+
public static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider) {
|
|
72
|
+
return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "vault_alicloud_secret_backend", importId: importFromId, provider });
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ===========
|
|
76
|
+
// INITIALIZER
|
|
77
|
+
// ===========
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Create a new {@link https://registry.terraform.io/providers/hashicorp/vault/latest/docs/resources/alicloud_secret_backend vault_alicloud_secret_backend} Resource
|
|
81
|
+
*
|
|
82
|
+
* @param scope The scope in which to define this construct
|
|
83
|
+
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
|
|
84
|
+
* @param options AlicloudSecretBackendConfig
|
|
85
|
+
*/
|
|
86
|
+
public constructor(scope: Construct, id: string, config: AlicloudSecretBackendConfig) {
|
|
87
|
+
super(scope, id, {
|
|
88
|
+
terraformResourceType: 'vault_alicloud_secret_backend',
|
|
89
|
+
terraformGeneratorMetadata: {
|
|
90
|
+
providerName: 'vault'
|
|
91
|
+
},
|
|
92
|
+
provider: config.provider,
|
|
93
|
+
dependsOn: config.dependsOn,
|
|
94
|
+
count: config.count,
|
|
95
|
+
lifecycle: config.lifecycle,
|
|
96
|
+
provisioners: config.provisioners,
|
|
97
|
+
connection: config.connection,
|
|
98
|
+
forEach: config.forEach
|
|
99
|
+
});
|
|
100
|
+
this._accessKey = config.accessKey;
|
|
101
|
+
this._mount = config.mount;
|
|
102
|
+
this._namespace = config.namespace;
|
|
103
|
+
this._secretKeyWo = config.secretKeyWo;
|
|
104
|
+
this._secondarySecretKeyWo = config.secondarySecretKeyWo;
|
|
105
|
+
this._secretKeyWoVersion = config.secretKeyWoVersion;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// ==========
|
|
109
|
+
// ATTRIBUTES
|
|
110
|
+
// ==========
|
|
111
|
+
|
|
112
|
+
// access_key - computed: false, optional: false, required: true
|
|
113
|
+
private _accessKey?: string;
|
|
114
|
+
public get accessKey() {
|
|
115
|
+
return this.getStringAttribute('access_key');
|
|
116
|
+
}
|
|
117
|
+
public set accessKey(value: string) {
|
|
118
|
+
this._accessKey = value;
|
|
119
|
+
}
|
|
120
|
+
// Temporarily expose input value. Use with caution.
|
|
121
|
+
public get accessKeyInput() {
|
|
122
|
+
return this._accessKey;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// mount - computed: false, optional: false, required: true
|
|
126
|
+
private _mount?: string;
|
|
127
|
+
public get mount() {
|
|
128
|
+
return this.getStringAttribute('mount');
|
|
129
|
+
}
|
|
130
|
+
public set mount(value: string) {
|
|
131
|
+
this._mount = value;
|
|
132
|
+
}
|
|
133
|
+
// Temporarily expose input value. Use with caution.
|
|
134
|
+
public get mountInput() {
|
|
135
|
+
return this._mount;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// namespace - computed: false, optional: true, required: false
|
|
139
|
+
private _namespace?: string;
|
|
140
|
+
public get namespace() {
|
|
141
|
+
return this.getStringAttribute('namespace');
|
|
142
|
+
}
|
|
143
|
+
public set namespace(value: string) {
|
|
144
|
+
this._namespace = value;
|
|
145
|
+
}
|
|
146
|
+
public resetNamespace() {
|
|
147
|
+
this._namespace = undefined;
|
|
148
|
+
}
|
|
149
|
+
// Temporarily expose input value. Use with caution.
|
|
150
|
+
public get namespaceInput() {
|
|
151
|
+
return this._namespace;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// secret_key_wo - computed: false, optional: false, required: true
|
|
155
|
+
private _secretKeyWo?: string;
|
|
156
|
+
/**
|
|
157
|
+
* @deprecated Write-only: the provider never returns this value; reading it always yields null by protocol contract. The getter remains for compatibility and will be removed in a future prebuilt-provider major.
|
|
158
|
+
*/
|
|
159
|
+
public get secretKeyWo() {
|
|
160
|
+
return this.getStringAttribute('secret_key_wo');
|
|
161
|
+
}
|
|
162
|
+
public set secretKeyWo(value: string) {
|
|
163
|
+
this._secretKeyWo = value;
|
|
164
|
+
}
|
|
165
|
+
// Temporarily expose input value. Use with caution.
|
|
166
|
+
public get secretKeyWoInput() {
|
|
167
|
+
return this._secretKeyWo;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// secondary_secret_key_wo - computed: false, optional: true, required: false
|
|
171
|
+
private _secondarySecretKeyWo?: string;
|
|
172
|
+
/**
|
|
173
|
+
* @deprecated Write-only: the provider never returns this value; reading it always yields null by protocol contract. The getter remains for compatibility and will be removed in a future prebuilt-provider major.
|
|
174
|
+
*/
|
|
175
|
+
public get secondarySecretKeyWo() {
|
|
176
|
+
return this.getStringAttribute('secondary_secret_key_wo');
|
|
177
|
+
}
|
|
178
|
+
public set secondarySecretKeyWo(value: string) {
|
|
179
|
+
this._secondarySecretKeyWo = value;
|
|
180
|
+
}
|
|
181
|
+
public resetSecondarySecretKeyWo() {
|
|
182
|
+
this._secondarySecretKeyWo = undefined;
|
|
183
|
+
}
|
|
184
|
+
// Temporarily expose input value. Use with caution.
|
|
185
|
+
public get secondarySecretKeyWoInput() {
|
|
186
|
+
return this._secondarySecretKeyWo;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// secret_key_wo_version - computed: false, optional: false, required: true
|
|
190
|
+
private _secretKeyWoVersion?: number;
|
|
191
|
+
public get secretKeyWoVersion() {
|
|
192
|
+
return this.getNumberAttribute('secret_key_wo_version');
|
|
193
|
+
}
|
|
194
|
+
public set secretKeyWoVersion(value: number) {
|
|
195
|
+
this._secretKeyWoVersion = value;
|
|
196
|
+
}
|
|
197
|
+
// Temporarily expose input value. Use with caution.
|
|
198
|
+
public get secretKeyWoVersionInput() {
|
|
199
|
+
return this._secretKeyWoVersion;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// =========
|
|
203
|
+
// SYNTHESIS
|
|
204
|
+
// =========
|
|
205
|
+
|
|
206
|
+
protected synthesizeAttributes(): { [name: string]: any } {
|
|
207
|
+
return {
|
|
208
|
+
access_key: cdktn.stringToTerraform(this._accessKey),
|
|
209
|
+
mount: cdktn.stringToTerraform(this._mount),
|
|
210
|
+
namespace: cdktn.stringToTerraform(this._namespace),
|
|
211
|
+
secret_key_wo: this.markWriteOnlyAttribute(cdktn.stringToTerraform(this._secretKeyWo)),
|
|
212
|
+
secondary_secret_key_wo: this.markWriteOnlyAttribute(cdktn.stringToTerraform(this._secondarySecretKeyWo)),
|
|
213
|
+
secret_key_wo_version: cdktn.numberToTerraform(this._secretKeyWoVersion),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
protected synthesizeHclAttributes(): { [name: string]: any } {
|
|
218
|
+
const attrs = {
|
|
219
|
+
access_key: {
|
|
220
|
+
value: cdktn.stringToHclTerraform(this._accessKey),
|
|
221
|
+
isBlock: false,
|
|
222
|
+
type: "simple",
|
|
223
|
+
storageClassType: "string",
|
|
224
|
+
},
|
|
225
|
+
mount: {
|
|
226
|
+
value: cdktn.stringToHclTerraform(this._mount),
|
|
227
|
+
isBlock: false,
|
|
228
|
+
type: "simple",
|
|
229
|
+
storageClassType: "string",
|
|
230
|
+
},
|
|
231
|
+
namespace: {
|
|
232
|
+
value: cdktn.stringToHclTerraform(this._namespace),
|
|
233
|
+
isBlock: false,
|
|
234
|
+
type: "simple",
|
|
235
|
+
storageClassType: "string",
|
|
236
|
+
},
|
|
237
|
+
secret_key_wo: {
|
|
238
|
+
value: this.markWriteOnlyAttribute(cdktn.stringToHclTerraform(this._secretKeyWo)),
|
|
239
|
+
isBlock: false,
|
|
240
|
+
type: "simple",
|
|
241
|
+
storageClassType: "string",
|
|
242
|
+
},
|
|
243
|
+
secondary_secret_key_wo: {
|
|
244
|
+
value: this.markWriteOnlyAttribute(cdktn.stringToHclTerraform(this._secondarySecretKeyWo)),
|
|
245
|
+
isBlock: false,
|
|
246
|
+
type: "simple",
|
|
247
|
+
storageClassType: "string",
|
|
248
|
+
},
|
|
249
|
+
secret_key_wo_version: {
|
|
250
|
+
value: cdktn.numberToHclTerraform(this._secretKeyWoVersion),
|
|
251
|
+
isBlock: false,
|
|
252
|
+
type: "simple",
|
|
253
|
+
storageClassType: "number",
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
// remove undefined attributes
|
|
258
|
+
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined ))
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
"
|
|
262
|
+
`;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Copyright (c) HashiCorp, Inc
|
|
2
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import { TerraformProviderGenerator } from "../../generator/provider-generator";
|
|
6
|
+
import { CodeMaker } from "codemaker";
|
|
7
|
+
import { createTmpHelper } from "../util";
|
|
8
|
+
|
|
9
|
+
const tmp = createTmpHelper();
|
|
10
|
+
|
|
11
|
+
test("generate an ephemeral random_password resource alongside a regular random_uuid resource", async () => {
|
|
12
|
+
const code = new CodeMaker();
|
|
13
|
+
const workdir = tmp("ephemeral.test");
|
|
14
|
+
const spec = JSON.parse(
|
|
15
|
+
fs.readFileSync(
|
|
16
|
+
path.join(__dirname, "fixtures", "ephemeral-resources.test.fixture.json"),
|
|
17
|
+
"utf-8",
|
|
18
|
+
),
|
|
19
|
+
);
|
|
20
|
+
new TerraformProviderGenerator(code, spec).generateAll();
|
|
21
|
+
await code.save(workdir);
|
|
22
|
+
|
|
23
|
+
const ephemeralOutput = fs.readFileSync(
|
|
24
|
+
path.join(workdir, "providers/random/ephemeral-random-password/index.ts"),
|
|
25
|
+
"utf-8",
|
|
26
|
+
);
|
|
27
|
+
expect(ephemeralOutput).toMatchSnapshot("ephemeral-random-password");
|
|
28
|
+
|
|
29
|
+
const resourceOutput = fs.readFileSync(
|
|
30
|
+
path.join(workdir, "providers/random/uuid/index.ts"),
|
|
31
|
+
"utf-8",
|
|
32
|
+
);
|
|
33
|
+
expect(resourceOutput).toMatchSnapshot("random-uuid");
|
|
34
|
+
|
|
35
|
+
const providerIndex = fs.readFileSync(
|
|
36
|
+
path.join(workdir, "providers/random/index.ts"),
|
|
37
|
+
"utf-8",
|
|
38
|
+
);
|
|
39
|
+
expect(providerIndex).toMatchSnapshot("provider-index");
|
|
40
|
+
|
|
41
|
+
const providerLazyIndex = fs.readFileSync(
|
|
42
|
+
path.join(workdir, "providers/random/lazy-index.ts"),
|
|
43
|
+
"utf-8",
|
|
44
|
+
);
|
|
45
|
+
expect(providerLazyIndex).toMatchSnapshot("provider-lazy-index");
|
|
46
|
+
});
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
{
|
|
2
|
+
"provider_schemas": {
|
|
3
|
+
"registry.terraform.io/hashicorp/random": {
|
|
4
|
+
"resource_schemas": {
|
|
5
|
+
"random_uuid": {
|
|
6
|
+
"version": 0,
|
|
7
|
+
"block": {
|
|
8
|
+
"attributes": {
|
|
9
|
+
"id": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "The generated uuid presented in string format.",
|
|
12
|
+
"description_kind": "plain",
|
|
13
|
+
"computed": true
|
|
14
|
+
},
|
|
15
|
+
"keepers": {
|
|
16
|
+
"type": [
|
|
17
|
+
"map",
|
|
18
|
+
"string"
|
|
19
|
+
],
|
|
20
|
+
"description": "Arbitrary map of values that, when changed, will trigger recreation of resource. See [the main provider documentation](../index.html) for more information.",
|
|
21
|
+
"description_kind": "plain",
|
|
22
|
+
"optional": true
|
|
23
|
+
},
|
|
24
|
+
"result": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "The generated uuid presented in string format.",
|
|
27
|
+
"description_kind": "plain",
|
|
28
|
+
"computed": true
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"description": "The resource `random_uuid` generates a random uuid string that is intended to be used as a unique identifier for other resources.\n\nThis resource uses [hashicorp/go-uuid](https://github.com/hashicorp/go-uuid) to generate a UUID-formatted string for use with services needing a unique string identifier.",
|
|
32
|
+
"description_kind": "plain"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"ephemeral_resource_schemas": {
|
|
37
|
+
"random_bytes": {
|
|
38
|
+
"version": 0,
|
|
39
|
+
"block": {
|
|
40
|
+
"attributes": {
|
|
41
|
+
"base64": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"description": "The generated bytes presented in base64 string format.",
|
|
44
|
+
"description_kind": "plain",
|
|
45
|
+
"computed": true,
|
|
46
|
+
"sensitive": true
|
|
47
|
+
},
|
|
48
|
+
"hex": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"description": "The generated bytes presented in lowercase hexadecimal string format. The length of the encoded string is exactly twice the `length` parameter.",
|
|
51
|
+
"description_kind": "plain",
|
|
52
|
+
"computed": true,
|
|
53
|
+
"sensitive": true
|
|
54
|
+
},
|
|
55
|
+
"length": {
|
|
56
|
+
"type": "number",
|
|
57
|
+
"description": "The number of bytes requested. The minimum value for length is 1.",
|
|
58
|
+
"description_kind": "plain",
|
|
59
|
+
"required": true
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"description": "-> If the managed resource doesn't have a write-only argument available for the secret (first introduced in Terraform 1.11), then the secret can only be created with the managed resource variant of [`random_bytes`](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/bytes).\n\nGenerates ephemeral random bytes using a cryptographic random number generator.\n\nThe primary use-case for generating ephemeral random bytes is to be used in combination with a write-only argument in a managed resource, which will avoid Terraform storing the secret value in the plan or state file.",
|
|
63
|
+
"description_kind": "plain"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"random_password": {
|
|
67
|
+
"version": 0,
|
|
68
|
+
"block": {
|
|
69
|
+
"attributes": {
|
|
70
|
+
"bcrypt_hash": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"description": "A bcrypt hash of the generated random string. **NOTE**: If the generated random string is greater than 72 bytes in length, `bcrypt_hash` will contain a hash of the first 72 bytes.",
|
|
73
|
+
"description_kind": "plain",
|
|
74
|
+
"computed": true,
|
|
75
|
+
"sensitive": true
|
|
76
|
+
},
|
|
77
|
+
"length": {
|
|
78
|
+
"type": "number",
|
|
79
|
+
"description": "The length of the string desired. The minimum value for length is 1 and, length must also be >= (`min_upper` + `min_lower` + `min_numeric` + `min_special`).",
|
|
80
|
+
"description_kind": "plain",
|
|
81
|
+
"required": true
|
|
82
|
+
},
|
|
83
|
+
"lower": {
|
|
84
|
+
"type": "bool",
|
|
85
|
+
"description": "Include lowercase alphabet characters in the result. Default value is `true`.",
|
|
86
|
+
"description_kind": "plain",
|
|
87
|
+
"optional": true,
|
|
88
|
+
"computed": true
|
|
89
|
+
},
|
|
90
|
+
"min_lower": {
|
|
91
|
+
"type": "number",
|
|
92
|
+
"description": "Minimum number of lowercase alphabet characters in the result. Default value is `0`.",
|
|
93
|
+
"description_kind": "plain",
|
|
94
|
+
"optional": true,
|
|
95
|
+
"computed": true
|
|
96
|
+
},
|
|
97
|
+
"min_numeric": {
|
|
98
|
+
"type": "number",
|
|
99
|
+
"description": "Minimum number of numeric characters in the result. Default value is `0`.",
|
|
100
|
+
"description_kind": "plain",
|
|
101
|
+
"optional": true,
|
|
102
|
+
"computed": true
|
|
103
|
+
},
|
|
104
|
+
"min_special": {
|
|
105
|
+
"type": "number",
|
|
106
|
+
"description": "Minimum number of special characters in the result. Default value is `0`.",
|
|
107
|
+
"description_kind": "plain",
|
|
108
|
+
"optional": true,
|
|
109
|
+
"computed": true
|
|
110
|
+
},
|
|
111
|
+
"min_upper": {
|
|
112
|
+
"type": "number",
|
|
113
|
+
"description": "Minimum number of uppercase alphabet characters in the result. Default value is `0`.",
|
|
114
|
+
"description_kind": "plain",
|
|
115
|
+
"optional": true,
|
|
116
|
+
"computed": true
|
|
117
|
+
},
|
|
118
|
+
"numeric": {
|
|
119
|
+
"type": "bool",
|
|
120
|
+
"description": "Include numeric characters in the result. Default value is `true`. If `numeric`, `upper`, `lower`, and `special` are all configured, at least one of them must be set to `true`.",
|
|
121
|
+
"description_kind": "plain",
|
|
122
|
+
"optional": true,
|
|
123
|
+
"computed": true
|
|
124
|
+
},
|
|
125
|
+
"override_special": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"description": "Supply your own list of special characters to use for string generation. This overrides the default character list in the special argument. The `special` argument must still be set to true for any overwritten characters to be used in generation.",
|
|
128
|
+
"description_kind": "plain",
|
|
129
|
+
"optional": true
|
|
130
|
+
},
|
|
131
|
+
"result": {
|
|
132
|
+
"type": "string",
|
|
133
|
+
"description": "The generated random string.",
|
|
134
|
+
"description_kind": "plain",
|
|
135
|
+
"computed": true,
|
|
136
|
+
"sensitive": true
|
|
137
|
+
},
|
|
138
|
+
"special": {
|
|
139
|
+
"type": "bool",
|
|
140
|
+
"description": "Include special characters in the result. These are `!@#$%&*()-_=+[]{}<>:?`. Default value is `true`.",
|
|
141
|
+
"description_kind": "plain",
|
|
142
|
+
"optional": true,
|
|
143
|
+
"computed": true
|
|
144
|
+
},
|
|
145
|
+
"upper": {
|
|
146
|
+
"type": "bool",
|
|
147
|
+
"description": "Include uppercase alphabet characters in the result. Default value is `true`.",
|
|
148
|
+
"description_kind": "plain",
|
|
149
|
+
"optional": true,
|
|
150
|
+
"computed": true
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"description": "-> If the managed resource doesn't have a write-only argument available for the password (first introduced in Terraform 1.11), then the password can only be created with the managed resource variant of [`random_password`](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password).\n\nGenerates an ephemeral password string using a cryptographic random number generator.\n\nThe primary use-case for generating an ephemeral random password is to be used in combination with a write-only argument in a managed resource, which will avoid Terraform storing the password string in the plan or state file.",
|
|
154
|
+
"description_kind": "plain"
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"provider_schemas": {
|
|
3
|
+
"registry.terraform.io/hashicorp/example": {
|
|
4
|
+
"provider": {
|
|
5
|
+
"version": 0,
|
|
6
|
+
"block": {
|
|
7
|
+
"attributes": {
|
|
8
|
+
"functions": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "A config attribute that happens to be named the same as the generated functions getter.",
|
|
11
|
+
"description_kind": "plain",
|
|
12
|
+
"optional": true
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"functions": {
|
|
18
|
+
"greet": {
|
|
19
|
+
"description": "Greets the given name.",
|
|
20
|
+
"return_type": "string",
|
|
21
|
+
"parameters": [
|
|
22
|
+
{
|
|
23
|
+
"name": "name",
|
|
24
|
+
"type": "string"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|