@pulumi/dbtcloud 0.1.0-alpha.1715944408

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.
Files changed (166) hide show
  1. package/LICENSE +177 -0
  2. package/README.md +70 -0
  3. package/bigQueryConnection.d.ts +399 -0
  4. package/bigQueryConnection.js +196 -0
  5. package/bigQueryConnection.js.map +1 -0
  6. package/bigQueryCredential.d.ts +117 -0
  7. package/bigQueryCredential.js +91 -0
  8. package/bigQueryCredential.js.map +1 -0
  9. package/config/index.d.ts +1 -0
  10. package/config/index.js +21 -0
  11. package/config/index.js.map +1 -0
  12. package/config/vars.d.ts +14 -0
  13. package/config/vars.js +29 -0
  14. package/config/vars.js.map +1 -0
  15. package/connection.d.ts +321 -0
  16. package/connection.js +149 -0
  17. package/connection.js.map +1 -0
  18. package/databricksCredential.d.ts +168 -0
  19. package/databricksCredential.js +120 -0
  20. package/databricksCredential.js.map +1 -0
  21. package/environment.d.ts +209 -0
  22. package/environment.js +123 -0
  23. package/environment.js.map +1 -0
  24. package/environmentVariable.d.ts +120 -0
  25. package/environmentVariable.js +101 -0
  26. package/environmentVariable.js.map +1 -0
  27. package/environmentVariableJobOverride.d.ts +119 -0
  28. package/environmentVariableJobOverride.js +93 -0
  29. package/environmentVariableJobOverride.js.map +1 -0
  30. package/extendedAttributes.d.ts +135 -0
  31. package/extendedAttributes.js +107 -0
  32. package/extendedAttributes.js.map +1 -0
  33. package/fabricConnection.d.ts +177 -0
  34. package/fabricConnection.js +108 -0
  35. package/fabricConnection.js.map +1 -0
  36. package/fabricCredential.d.ts +167 -0
  37. package/fabricCredential.js +93 -0
  38. package/fabricCredential.js.map +1 -0
  39. package/getAzureDevOpsProject.d.ts +72 -0
  40. package/getAzureDevOpsProject.js +53 -0
  41. package/getAzureDevOpsProject.js.map +1 -0
  42. package/getAzureDevOpsRepository.d.ts +98 -0
  43. package/getAzureDevOpsRepository.js +56 -0
  44. package/getAzureDevOpsRepository.js.map +1 -0
  45. package/getBigQueryConnection.d.ts +134 -0
  46. package/getBigQueryConnection.js +20 -0
  47. package/getBigQueryConnection.js.map +1 -0
  48. package/getBigQueryCredential.d.ts +58 -0
  49. package/getBigQueryCredential.js +20 -0
  50. package/getBigQueryCredential.js.map +1 -0
  51. package/getConnection.d.ts +86 -0
  52. package/getConnection.js +20 -0
  53. package/getConnection.js.map +1 -0
  54. package/getDatabricksCredential.d.ts +66 -0
  55. package/getDatabricksCredential.js +20 -0
  56. package/getDatabricksCredential.js.map +1 -0
  57. package/getEnvironment.d.ts +82 -0
  58. package/getEnvironment.js +20 -0
  59. package/getEnvironment.js.map +1 -0
  60. package/getEnvironmentVariable.d.ts +52 -0
  61. package/getEnvironmentVariable.js +20 -0
  62. package/getEnvironmentVariable.js.map +1 -0
  63. package/getExtendedAttributes.d.ts +80 -0
  64. package/getExtendedAttributes.js +46 -0
  65. package/getExtendedAttributes.js.map +1 -0
  66. package/getGroup.d.ts +50 -0
  67. package/getGroup.js +19 -0
  68. package/getGroup.js.map +1 -0
  69. package/getGroupUsers.d.ts +67 -0
  70. package/getGroupUsers.js +47 -0
  71. package/getGroupUsers.js.map +1 -0
  72. package/getJob.d.ts +89 -0
  73. package/getJob.js +20 -0
  74. package/getJob.js.map +1 -0
  75. package/getNotification.d.ts +82 -0
  76. package/getNotification.js +43 -0
  77. package/getNotification.js.map +1 -0
  78. package/getPostgresCredential.d.ts +62 -0
  79. package/getPostgresCredential.js +20 -0
  80. package/getPostgresCredential.js.map +1 -0
  81. package/getPrivatelinkEndpoint.d.ts +98 -0
  82. package/getPrivatelinkEndpoint.js +61 -0
  83. package/getPrivatelinkEndpoint.js.map +1 -0
  84. package/getProject.d.ts +102 -0
  85. package/getProject.js +57 -0
  86. package/getProject.js.map +1 -0
  87. package/getRepository.d.ts +86 -0
  88. package/getRepository.js +21 -0
  89. package/getRepository.js.map +1 -0
  90. package/getServiceToken.d.ts +47 -0
  91. package/getServiceToken.js +19 -0
  92. package/getServiceToken.js.map +1 -0
  93. package/getSnowflakeCredential.d.ts +66 -0
  94. package/getSnowflakeCredential.js +20 -0
  95. package/getSnowflakeCredential.js.map +1 -0
  96. package/getUser.d.ts +58 -0
  97. package/getUser.js +43 -0
  98. package/getUser.js.map +1 -0
  99. package/getUserGroups.d.ts +62 -0
  100. package/getUserGroups.js +43 -0
  101. package/getUserGroups.js.map +1 -0
  102. package/getWebhook.d.ts +66 -0
  103. package/getWebhook.js +19 -0
  104. package/getWebhook.js.map +1 -0
  105. package/group.d.ts +127 -0
  106. package/group.js +95 -0
  107. package/group.js.map +1 -0
  108. package/index.d.ts +144 -0
  109. package/index.js +220 -0
  110. package/index.js.map +1 -0
  111. package/job.d.ts +443 -0
  112. package/job.js +228 -0
  113. package/job.js.map +1 -0
  114. package/licenseMap.d.ts +96 -0
  115. package/licenseMap.js +90 -0
  116. package/licenseMap.js.map +1 -0
  117. package/notification.d.ts +202 -0
  118. package/notification.js +126 -0
  119. package/notification.js.map +1 -0
  120. package/package.json +31 -0
  121. package/package.json.bak +31 -0
  122. package/postgresCredential.d.ts +171 -0
  123. package/postgresCredential.js +110 -0
  124. package/postgresCredential.js.map +1 -0
  125. package/project.d.ts +87 -0
  126. package/project.js +78 -0
  127. package/project.js.map +1 -0
  128. package/projectArtefacts.d.ts +99 -0
  129. package/projectArtefacts.js +83 -0
  130. package/projectArtefacts.js.map +1 -0
  131. package/projectConnection.d.ts +86 -0
  132. package/projectConnection.js +83 -0
  133. package/projectConnection.js.map +1 -0
  134. package/projectRepository.d.ts +86 -0
  135. package/projectRepository.js +83 -0
  136. package/projectRepository.js.map +1 -0
  137. package/provider.d.ts +50 -0
  138. package/provider.js +48 -0
  139. package/provider.js.map +1 -0
  140. package/repository.d.ts +204 -0
  141. package/repository.js +103 -0
  142. package/repository.js.map +1 -0
  143. package/serviceToken.d.ts +126 -0
  144. package/serviceToken.js +95 -0
  145. package/serviceToken.js.map +1 -0
  146. package/snowflakeCredential.d.ts +218 -0
  147. package/snowflakeCredential.js +120 -0
  148. package/snowflakeCredential.js.map +1 -0
  149. package/types/index.d.ts +3 -0
  150. package/types/index.js +11 -0
  151. package/types/index.js.map +1 -0
  152. package/types/input.d.ts +43 -0
  153. package/types/input.js +5 -0
  154. package/types/input.js.map +1 -0
  155. package/types/output.d.ts +74 -0
  156. package/types/output.js +5 -0
  157. package/types/output.js.map +1 -0
  158. package/userGroups.d.ts +105 -0
  159. package/userGroups.js +102 -0
  160. package/userGroups.js.map +1 -0
  161. package/utilities.d.ts +8 -0
  162. package/utilities.js +101 -0
  163. package/utilities.js.map +1 -0
  164. package/webhook.d.ts +175 -0
  165. package/webhook.js +110 -0
  166. package/webhook.js.map +1 -0
package/job.d.ts ADDED
@@ -0,0 +1,443 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "./types/input";
3
+ import * as outputs from "./types/output";
4
+ /**
5
+ * > As of October 2023, CI improvements have been rolled out to dbt Cloud with minor impacts to some jobs: [more info](https://docs.getdbt.com/docs/dbt-versions/release-notes/june-2023/ci-updates-phase1-rn).
6
+ * <br/>
7
+ * <br/>
8
+ * Those improvements include modifications to deferral which was historically set at the job level and will now be set at the environment level.
9
+ * Deferral can still be set to "self" by setting `selfDeferring` to `true` but with the new approach, deferral to other runs need to be done with `deferringEnvironmentId` instead of `deferringJobId`.
10
+ *
11
+ * > As of beginning of February 2024, job chaining with `jobCompletionTriggerCondition` is in private beta and not available to all users.
12
+ * <br/>
13
+ * <br/>
14
+ * This notice will be removed once the feature is generally available.
15
+ *
16
+ * ## Example Usage
17
+ *
18
+ * ```typescript
19
+ * import * as pulumi from "@pulumi/pulumi";
20
+ * import * as dbtcloud from "@pulumi/dbtcloud";
21
+ *
22
+ * // NOTE for customers using the LEGACY dbt_cloud provider:
23
+ * // a job that has github_webhook and git_provider_webhook
24
+ * // set to false will be categorized as a "Deploy Job"
25
+ * const dailyJob = new dbtcloud.Job("daily_job", {
26
+ * environmentId: prodEnvironment.environmentId,
27
+ * executeSteps: ["dbt build"],
28
+ * generateDocs: true,
29
+ * isActive: true,
30
+ * name: "Daily job",
31
+ * numThreads: 64,
32
+ * projectId: dbtProject.id,
33
+ * runGenerateSources: true,
34
+ * targetName: "default",
35
+ * triggers: {
36
+ * custom_branch_only: false,
37
+ * github_webhook: false,
38
+ * git_provider_webhook: false,
39
+ * schedule: true,
40
+ * },
41
+ * scheduleDays: [
42
+ * 0,
43
+ * 1,
44
+ * 2,
45
+ * 3,
46
+ * 4,
47
+ * 5,
48
+ * 6,
49
+ * ],
50
+ * scheduleType: "days_of_week",
51
+ * scheduleHours: [0],
52
+ * });
53
+ * // a job that has github_webhook and git_provider_webhook set
54
+ * // to true will be categorized as a "Continuous Integration Job"
55
+ * const ciJob = new dbtcloud.Job("ci_job", {
56
+ * environmentId: ciEnvironment.environmentId,
57
+ * executeSteps: ["dbt build -s state:modified+ --fail-fast"],
58
+ * generateDocs: false,
59
+ * deferringEnvironmentId: prodEnvironment.environmentId,
60
+ * name: "CI Job",
61
+ * numThreads: 32,
62
+ * projectId: dbtProject.id,
63
+ * runGenerateSources: false,
64
+ * triggers: {
65
+ * custom_branch_only: true,
66
+ * github_webhook: true,
67
+ * git_provider_webhook: true,
68
+ * schedule: false,
69
+ * },
70
+ * scheduleDays: [
71
+ * 0,
72
+ * 1,
73
+ * 2,
74
+ * 3,
75
+ * 4,
76
+ * 5,
77
+ * 6,
78
+ * ],
79
+ * scheduleType: "days_of_week",
80
+ * });
81
+ * // a job that is set to be triggered after another job finishes
82
+ * // this is sometimes referred as 'job chaining'
83
+ * const downstreamJob = new dbtcloud.Job("downstream_job", {
84
+ * environmentId: project2ProdEnvironment.environmentId,
85
+ * executeSteps: ["dbt build -s +my_model"],
86
+ * generateDocs: true,
87
+ * name: "Downstream job in project 2",
88
+ * numThreads: 32,
89
+ * projectId: dbtProject2.id,
90
+ * runGenerateSources: true,
91
+ * triggers: {
92
+ * custom_branch_only: false,
93
+ * github_webhook: false,
94
+ * git_provider_webhook: false,
95
+ * schedule: false,
96
+ * },
97
+ * scheduleDays: [
98
+ * 0,
99
+ * 1,
100
+ * 2,
101
+ * 3,
102
+ * 4,
103
+ * 5,
104
+ * 6,
105
+ * ],
106
+ * scheduleType: "days_of_week",
107
+ * jobCompletionTriggerCondition: {
108
+ * jobId: dailyJob.id,
109
+ * projectId: dbtProject.id,
110
+ * statuses: ["success"],
111
+ * },
112
+ * });
113
+ * ```
114
+ *
115
+ * ## Import
116
+ *
117
+ * Import using a job ID found in the URL or via the API.
118
+ *
119
+ * ```sh
120
+ * $ pulumi import dbtcloud:index/job:Job test_job "job_id"
121
+ * ```
122
+ *
123
+ * ```sh
124
+ * $ pulumi import dbtcloud:index/job:Job test_job 12345
125
+ * ```
126
+ */
127
+ export declare class Job extends pulumi.CustomResource {
128
+ /**
129
+ * Get an existing Job resource's state with the given name, ID, and optional extra
130
+ * properties used to qualify the lookup.
131
+ *
132
+ * @param name The _unique_ name of the resulting resource.
133
+ * @param id The _unique_ provider ID of the resource to lookup.
134
+ * @param state Any extra arguments used during the lookup.
135
+ * @param opts Optional settings to control the behavior of the CustomResource.
136
+ */
137
+ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: JobState, opts?: pulumi.CustomResourceOptions): Job;
138
+ /**
139
+ * Returns true if the given object is an instance of Job. This is designed to work even
140
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
141
+ */
142
+ static isInstance(obj: any): obj is Job;
143
+ /**
144
+ * Version number of dbt to use in this job, usually in the format 1.2.0-latest rather than core versions
145
+ */
146
+ readonly dbtVersion: pulumi.Output<string | undefined>;
147
+ /**
148
+ * Environment identifier that this job defers to (new deferring approach)
149
+ */
150
+ readonly deferringEnvironmentId: pulumi.Output<number | undefined>;
151
+ /**
152
+ * Job identifier that this job defers to (legacy deferring approach)
153
+ */
154
+ readonly deferringJobId: pulumi.Output<number | undefined>;
155
+ /**
156
+ * Description for the job
157
+ */
158
+ readonly description: pulumi.Output<string | undefined>;
159
+ /**
160
+ * Environment ID to create the job in
161
+ */
162
+ readonly environmentId: pulumi.Output<number>;
163
+ /**
164
+ * List of commands to execute for the job
165
+ */
166
+ readonly executeSteps: pulumi.Output<string[]>;
167
+ /**
168
+ * Flag for whether the job should generate documentation
169
+ */
170
+ readonly generateDocs: pulumi.Output<boolean | undefined>;
171
+ /**
172
+ * Flag for whether the job is marked active or deleted. To create/keep a job in a 'deactivated' state, check the `triggers` config.
173
+ */
174
+ readonly isActive: pulumi.Output<boolean | undefined>;
175
+ /**
176
+ * Which other job should trigger this job when it finishes, and on which conditions (sometimes referred as 'job chaining').
177
+ */
178
+ readonly jobCompletionTriggerCondition: pulumi.Output<outputs.JobJobCompletionTriggerCondition | undefined>;
179
+ /**
180
+ * Job name
181
+ */
182
+ readonly name: pulumi.Output<string>;
183
+ /**
184
+ * Number of threads to use in the job
185
+ */
186
+ readonly numThreads: pulumi.Output<number | undefined>;
187
+ /**
188
+ * Project ID to create the job in
189
+ */
190
+ readonly projectId: pulumi.Output<number>;
191
+ /**
192
+ * Flag for whether the job should add a `dbt source freshness` step to the job. The difference between manually adding a step with `dbt source freshness` in the job steps or using this flag is that with this flag, a failed freshness will still allow the following steps to run.
193
+ */
194
+ readonly runGenerateSources: pulumi.Output<boolean | undefined>;
195
+ /**
196
+ * Custom cron expression for schedule
197
+ */
198
+ readonly scheduleCron: pulumi.Output<string | undefined>;
199
+ /**
200
+ * List of days of week as numbers (0 = Sunday, 7 = Saturday) to execute the job at if running on a schedule
201
+ */
202
+ readonly scheduleDays: pulumi.Output<number[] | undefined>;
203
+ /**
204
+ * List of hours to execute the job at if running on a schedule
205
+ */
206
+ readonly scheduleHours: pulumi.Output<number[] | undefined>;
207
+ /**
208
+ * Number of hours between job executions if running on a schedule
209
+ */
210
+ readonly scheduleInterval: pulumi.Output<number | undefined>;
211
+ /**
212
+ * Type of schedule to use, one of every*day/ days*of*week/ custom*cron
213
+ */
214
+ readonly scheduleType: pulumi.Output<string | undefined>;
215
+ /**
216
+ * Whether this job defers on a previous run of itself
217
+ */
218
+ readonly selfDeferring: pulumi.Output<boolean | undefined>;
219
+ /**
220
+ * Target name for the dbt profile
221
+ */
222
+ readonly targetName: pulumi.Output<string | undefined>;
223
+ /**
224
+ * Number of seconds to allow the job to run before timing out
225
+ */
226
+ readonly timeoutSeconds: pulumi.Output<number | undefined>;
227
+ /**
228
+ * Flags for which types of triggers to use, possible values are `githubWebhook`, `gitProviderWebhook`, `schedule` and `customBranchOnly`. \n\n`customBranchOnly` is only relevant for CI jobs triggered automatically on PR creation to only trigger a job on a PR to the custom branch of the environment. To create a job in a 'deactivated' state, set all to `false`.
229
+ */
230
+ readonly triggers: pulumi.Output<{
231
+ [key: string]: boolean;
232
+ }>;
233
+ /**
234
+ * Whether the CI job should be automatically triggered on draft PRs
235
+ */
236
+ readonly triggersOnDraftPr: pulumi.Output<boolean | undefined>;
237
+ /**
238
+ * Create a Job resource with the given unique name, arguments, and options.
239
+ *
240
+ * @param name The _unique_ name of the resource.
241
+ * @param args The arguments to use to populate this resource's properties.
242
+ * @param opts A bag of options that control this resource's behavior.
243
+ */
244
+ constructor(name: string, args: JobArgs, opts?: pulumi.CustomResourceOptions);
245
+ }
246
+ /**
247
+ * Input properties used for looking up and filtering Job resources.
248
+ */
249
+ export interface JobState {
250
+ /**
251
+ * Version number of dbt to use in this job, usually in the format 1.2.0-latest rather than core versions
252
+ */
253
+ dbtVersion?: pulumi.Input<string>;
254
+ /**
255
+ * Environment identifier that this job defers to (new deferring approach)
256
+ */
257
+ deferringEnvironmentId?: pulumi.Input<number>;
258
+ /**
259
+ * Job identifier that this job defers to (legacy deferring approach)
260
+ */
261
+ deferringJobId?: pulumi.Input<number>;
262
+ /**
263
+ * Description for the job
264
+ */
265
+ description?: pulumi.Input<string>;
266
+ /**
267
+ * Environment ID to create the job in
268
+ */
269
+ environmentId?: pulumi.Input<number>;
270
+ /**
271
+ * List of commands to execute for the job
272
+ */
273
+ executeSteps?: pulumi.Input<pulumi.Input<string>[]>;
274
+ /**
275
+ * Flag for whether the job should generate documentation
276
+ */
277
+ generateDocs?: pulumi.Input<boolean>;
278
+ /**
279
+ * Flag for whether the job is marked active or deleted. To create/keep a job in a 'deactivated' state, check the `triggers` config.
280
+ */
281
+ isActive?: pulumi.Input<boolean>;
282
+ /**
283
+ * Which other job should trigger this job when it finishes, and on which conditions (sometimes referred as 'job chaining').
284
+ */
285
+ jobCompletionTriggerCondition?: pulumi.Input<inputs.JobJobCompletionTriggerCondition>;
286
+ /**
287
+ * Job name
288
+ */
289
+ name?: pulumi.Input<string>;
290
+ /**
291
+ * Number of threads to use in the job
292
+ */
293
+ numThreads?: pulumi.Input<number>;
294
+ /**
295
+ * Project ID to create the job in
296
+ */
297
+ projectId?: pulumi.Input<number>;
298
+ /**
299
+ * Flag for whether the job should add a `dbt source freshness` step to the job. The difference between manually adding a step with `dbt source freshness` in the job steps or using this flag is that with this flag, a failed freshness will still allow the following steps to run.
300
+ */
301
+ runGenerateSources?: pulumi.Input<boolean>;
302
+ /**
303
+ * Custom cron expression for schedule
304
+ */
305
+ scheduleCron?: pulumi.Input<string>;
306
+ /**
307
+ * List of days of week as numbers (0 = Sunday, 7 = Saturday) to execute the job at if running on a schedule
308
+ */
309
+ scheduleDays?: pulumi.Input<pulumi.Input<number>[]>;
310
+ /**
311
+ * List of hours to execute the job at if running on a schedule
312
+ */
313
+ scheduleHours?: pulumi.Input<pulumi.Input<number>[]>;
314
+ /**
315
+ * Number of hours between job executions if running on a schedule
316
+ */
317
+ scheduleInterval?: pulumi.Input<number>;
318
+ /**
319
+ * Type of schedule to use, one of every*day/ days*of*week/ custom*cron
320
+ */
321
+ scheduleType?: pulumi.Input<string>;
322
+ /**
323
+ * Whether this job defers on a previous run of itself
324
+ */
325
+ selfDeferring?: pulumi.Input<boolean>;
326
+ /**
327
+ * Target name for the dbt profile
328
+ */
329
+ targetName?: pulumi.Input<string>;
330
+ /**
331
+ * Number of seconds to allow the job to run before timing out
332
+ */
333
+ timeoutSeconds?: pulumi.Input<number>;
334
+ /**
335
+ * Flags for which types of triggers to use, possible values are `githubWebhook`, `gitProviderWebhook`, `schedule` and `customBranchOnly`. \n\n`customBranchOnly` is only relevant for CI jobs triggered automatically on PR creation to only trigger a job on a PR to the custom branch of the environment. To create a job in a 'deactivated' state, set all to `false`.
336
+ */
337
+ triggers?: pulumi.Input<{
338
+ [key: string]: pulumi.Input<boolean>;
339
+ }>;
340
+ /**
341
+ * Whether the CI job should be automatically triggered on draft PRs
342
+ */
343
+ triggersOnDraftPr?: pulumi.Input<boolean>;
344
+ }
345
+ /**
346
+ * The set of arguments for constructing a Job resource.
347
+ */
348
+ export interface JobArgs {
349
+ /**
350
+ * Version number of dbt to use in this job, usually in the format 1.2.0-latest rather than core versions
351
+ */
352
+ dbtVersion?: pulumi.Input<string>;
353
+ /**
354
+ * Environment identifier that this job defers to (new deferring approach)
355
+ */
356
+ deferringEnvironmentId?: pulumi.Input<number>;
357
+ /**
358
+ * Job identifier that this job defers to (legacy deferring approach)
359
+ */
360
+ deferringJobId?: pulumi.Input<number>;
361
+ /**
362
+ * Description for the job
363
+ */
364
+ description?: pulumi.Input<string>;
365
+ /**
366
+ * Environment ID to create the job in
367
+ */
368
+ environmentId: pulumi.Input<number>;
369
+ /**
370
+ * List of commands to execute for the job
371
+ */
372
+ executeSteps: pulumi.Input<pulumi.Input<string>[]>;
373
+ /**
374
+ * Flag for whether the job should generate documentation
375
+ */
376
+ generateDocs?: pulumi.Input<boolean>;
377
+ /**
378
+ * Flag for whether the job is marked active or deleted. To create/keep a job in a 'deactivated' state, check the `triggers` config.
379
+ */
380
+ isActive?: pulumi.Input<boolean>;
381
+ /**
382
+ * Which other job should trigger this job when it finishes, and on which conditions (sometimes referred as 'job chaining').
383
+ */
384
+ jobCompletionTriggerCondition?: pulumi.Input<inputs.JobJobCompletionTriggerCondition>;
385
+ /**
386
+ * Job name
387
+ */
388
+ name?: pulumi.Input<string>;
389
+ /**
390
+ * Number of threads to use in the job
391
+ */
392
+ numThreads?: pulumi.Input<number>;
393
+ /**
394
+ * Project ID to create the job in
395
+ */
396
+ projectId: pulumi.Input<number>;
397
+ /**
398
+ * Flag for whether the job should add a `dbt source freshness` step to the job. The difference between manually adding a step with `dbt source freshness` in the job steps or using this flag is that with this flag, a failed freshness will still allow the following steps to run.
399
+ */
400
+ runGenerateSources?: pulumi.Input<boolean>;
401
+ /**
402
+ * Custom cron expression for schedule
403
+ */
404
+ scheduleCron?: pulumi.Input<string>;
405
+ /**
406
+ * List of days of week as numbers (0 = Sunday, 7 = Saturday) to execute the job at if running on a schedule
407
+ */
408
+ scheduleDays?: pulumi.Input<pulumi.Input<number>[]>;
409
+ /**
410
+ * List of hours to execute the job at if running on a schedule
411
+ */
412
+ scheduleHours?: pulumi.Input<pulumi.Input<number>[]>;
413
+ /**
414
+ * Number of hours between job executions if running on a schedule
415
+ */
416
+ scheduleInterval?: pulumi.Input<number>;
417
+ /**
418
+ * Type of schedule to use, one of every*day/ days*of*week/ custom*cron
419
+ */
420
+ scheduleType?: pulumi.Input<string>;
421
+ /**
422
+ * Whether this job defers on a previous run of itself
423
+ */
424
+ selfDeferring?: pulumi.Input<boolean>;
425
+ /**
426
+ * Target name for the dbt profile
427
+ */
428
+ targetName?: pulumi.Input<string>;
429
+ /**
430
+ * Number of seconds to allow the job to run before timing out
431
+ */
432
+ timeoutSeconds?: pulumi.Input<number>;
433
+ /**
434
+ * Flags for which types of triggers to use, possible values are `githubWebhook`, `gitProviderWebhook`, `schedule` and `customBranchOnly`. \n\n`customBranchOnly` is only relevant for CI jobs triggered automatically on PR creation to only trigger a job on a PR to the custom branch of the environment. To create a job in a 'deactivated' state, set all to `false`.
435
+ */
436
+ triggers: pulumi.Input<{
437
+ [key: string]: pulumi.Input<boolean>;
438
+ }>;
439
+ /**
440
+ * Whether the CI job should be automatically triggered on draft PRs
441
+ */
442
+ triggersOnDraftPr?: pulumi.Input<boolean>;
443
+ }
package/job.js ADDED
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.Job = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("./utilities");
8
+ /**
9
+ * > As of October 2023, CI improvements have been rolled out to dbt Cloud with minor impacts to some jobs: [more info](https://docs.getdbt.com/docs/dbt-versions/release-notes/june-2023/ci-updates-phase1-rn).
10
+ * <br/>
11
+ * <br/>
12
+ * Those improvements include modifications to deferral which was historically set at the job level and will now be set at the environment level.
13
+ * Deferral can still be set to "self" by setting `selfDeferring` to `true` but with the new approach, deferral to other runs need to be done with `deferringEnvironmentId` instead of `deferringJobId`.
14
+ *
15
+ * > As of beginning of February 2024, job chaining with `jobCompletionTriggerCondition` is in private beta and not available to all users.
16
+ * <br/>
17
+ * <br/>
18
+ * This notice will be removed once the feature is generally available.
19
+ *
20
+ * ## Example Usage
21
+ *
22
+ * ```typescript
23
+ * import * as pulumi from "@pulumi/pulumi";
24
+ * import * as dbtcloud from "@pulumi/dbtcloud";
25
+ *
26
+ * // NOTE for customers using the LEGACY dbt_cloud provider:
27
+ * // a job that has github_webhook and git_provider_webhook
28
+ * // set to false will be categorized as a "Deploy Job"
29
+ * const dailyJob = new dbtcloud.Job("daily_job", {
30
+ * environmentId: prodEnvironment.environmentId,
31
+ * executeSteps: ["dbt build"],
32
+ * generateDocs: true,
33
+ * isActive: true,
34
+ * name: "Daily job",
35
+ * numThreads: 64,
36
+ * projectId: dbtProject.id,
37
+ * runGenerateSources: true,
38
+ * targetName: "default",
39
+ * triggers: {
40
+ * custom_branch_only: false,
41
+ * github_webhook: false,
42
+ * git_provider_webhook: false,
43
+ * schedule: true,
44
+ * },
45
+ * scheduleDays: [
46
+ * 0,
47
+ * 1,
48
+ * 2,
49
+ * 3,
50
+ * 4,
51
+ * 5,
52
+ * 6,
53
+ * ],
54
+ * scheduleType: "days_of_week",
55
+ * scheduleHours: [0],
56
+ * });
57
+ * // a job that has github_webhook and git_provider_webhook set
58
+ * // to true will be categorized as a "Continuous Integration Job"
59
+ * const ciJob = new dbtcloud.Job("ci_job", {
60
+ * environmentId: ciEnvironment.environmentId,
61
+ * executeSteps: ["dbt build -s state:modified+ --fail-fast"],
62
+ * generateDocs: false,
63
+ * deferringEnvironmentId: prodEnvironment.environmentId,
64
+ * name: "CI Job",
65
+ * numThreads: 32,
66
+ * projectId: dbtProject.id,
67
+ * runGenerateSources: false,
68
+ * triggers: {
69
+ * custom_branch_only: true,
70
+ * github_webhook: true,
71
+ * git_provider_webhook: true,
72
+ * schedule: false,
73
+ * },
74
+ * scheduleDays: [
75
+ * 0,
76
+ * 1,
77
+ * 2,
78
+ * 3,
79
+ * 4,
80
+ * 5,
81
+ * 6,
82
+ * ],
83
+ * scheduleType: "days_of_week",
84
+ * });
85
+ * // a job that is set to be triggered after another job finishes
86
+ * // this is sometimes referred as 'job chaining'
87
+ * const downstreamJob = new dbtcloud.Job("downstream_job", {
88
+ * environmentId: project2ProdEnvironment.environmentId,
89
+ * executeSteps: ["dbt build -s +my_model"],
90
+ * generateDocs: true,
91
+ * name: "Downstream job in project 2",
92
+ * numThreads: 32,
93
+ * projectId: dbtProject2.id,
94
+ * runGenerateSources: true,
95
+ * triggers: {
96
+ * custom_branch_only: false,
97
+ * github_webhook: false,
98
+ * git_provider_webhook: false,
99
+ * schedule: false,
100
+ * },
101
+ * scheduleDays: [
102
+ * 0,
103
+ * 1,
104
+ * 2,
105
+ * 3,
106
+ * 4,
107
+ * 5,
108
+ * 6,
109
+ * ],
110
+ * scheduleType: "days_of_week",
111
+ * jobCompletionTriggerCondition: {
112
+ * jobId: dailyJob.id,
113
+ * projectId: dbtProject.id,
114
+ * statuses: ["success"],
115
+ * },
116
+ * });
117
+ * ```
118
+ *
119
+ * ## Import
120
+ *
121
+ * Import using a job ID found in the URL or via the API.
122
+ *
123
+ * ```sh
124
+ * $ pulumi import dbtcloud:index/job:Job test_job "job_id"
125
+ * ```
126
+ *
127
+ * ```sh
128
+ * $ pulumi import dbtcloud:index/job:Job test_job 12345
129
+ * ```
130
+ */
131
+ class Job extends pulumi.CustomResource {
132
+ /**
133
+ * Get an existing Job resource's state with the given name, ID, and optional extra
134
+ * properties used to qualify the lookup.
135
+ *
136
+ * @param name The _unique_ name of the resulting resource.
137
+ * @param id The _unique_ provider ID of the resource to lookup.
138
+ * @param state Any extra arguments used during the lookup.
139
+ * @param opts Optional settings to control the behavior of the CustomResource.
140
+ */
141
+ static get(name, id, state, opts) {
142
+ return new Job(name, state, Object.assign(Object.assign({}, opts), { id: id }));
143
+ }
144
+ /**
145
+ * Returns true if the given object is an instance of Job. This is designed to work even
146
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
147
+ */
148
+ static isInstance(obj) {
149
+ if (obj === undefined || obj === null) {
150
+ return false;
151
+ }
152
+ return obj['__pulumiType'] === Job.__pulumiType;
153
+ }
154
+ constructor(name, argsOrState, opts) {
155
+ let resourceInputs = {};
156
+ opts = opts || {};
157
+ if (opts.id) {
158
+ const state = argsOrState;
159
+ resourceInputs["dbtVersion"] = state ? state.dbtVersion : undefined;
160
+ resourceInputs["deferringEnvironmentId"] = state ? state.deferringEnvironmentId : undefined;
161
+ resourceInputs["deferringJobId"] = state ? state.deferringJobId : undefined;
162
+ resourceInputs["description"] = state ? state.description : undefined;
163
+ resourceInputs["environmentId"] = state ? state.environmentId : undefined;
164
+ resourceInputs["executeSteps"] = state ? state.executeSteps : undefined;
165
+ resourceInputs["generateDocs"] = state ? state.generateDocs : undefined;
166
+ resourceInputs["isActive"] = state ? state.isActive : undefined;
167
+ resourceInputs["jobCompletionTriggerCondition"] = state ? state.jobCompletionTriggerCondition : undefined;
168
+ resourceInputs["name"] = state ? state.name : undefined;
169
+ resourceInputs["numThreads"] = state ? state.numThreads : undefined;
170
+ resourceInputs["projectId"] = state ? state.projectId : undefined;
171
+ resourceInputs["runGenerateSources"] = state ? state.runGenerateSources : undefined;
172
+ resourceInputs["scheduleCron"] = state ? state.scheduleCron : undefined;
173
+ resourceInputs["scheduleDays"] = state ? state.scheduleDays : undefined;
174
+ resourceInputs["scheduleHours"] = state ? state.scheduleHours : undefined;
175
+ resourceInputs["scheduleInterval"] = state ? state.scheduleInterval : undefined;
176
+ resourceInputs["scheduleType"] = state ? state.scheduleType : undefined;
177
+ resourceInputs["selfDeferring"] = state ? state.selfDeferring : undefined;
178
+ resourceInputs["targetName"] = state ? state.targetName : undefined;
179
+ resourceInputs["timeoutSeconds"] = state ? state.timeoutSeconds : undefined;
180
+ resourceInputs["triggers"] = state ? state.triggers : undefined;
181
+ resourceInputs["triggersOnDraftPr"] = state ? state.triggersOnDraftPr : undefined;
182
+ }
183
+ else {
184
+ const args = argsOrState;
185
+ if ((!args || args.environmentId === undefined) && !opts.urn) {
186
+ throw new Error("Missing required property 'environmentId'");
187
+ }
188
+ if ((!args || args.executeSteps === undefined) && !opts.urn) {
189
+ throw new Error("Missing required property 'executeSteps'");
190
+ }
191
+ if ((!args || args.projectId === undefined) && !opts.urn) {
192
+ throw new Error("Missing required property 'projectId'");
193
+ }
194
+ if ((!args || args.triggers === undefined) && !opts.urn) {
195
+ throw new Error("Missing required property 'triggers'");
196
+ }
197
+ resourceInputs["dbtVersion"] = args ? args.dbtVersion : undefined;
198
+ resourceInputs["deferringEnvironmentId"] = args ? args.deferringEnvironmentId : undefined;
199
+ resourceInputs["deferringJobId"] = args ? args.deferringJobId : undefined;
200
+ resourceInputs["description"] = args ? args.description : undefined;
201
+ resourceInputs["environmentId"] = args ? args.environmentId : undefined;
202
+ resourceInputs["executeSteps"] = args ? args.executeSteps : undefined;
203
+ resourceInputs["generateDocs"] = args ? args.generateDocs : undefined;
204
+ resourceInputs["isActive"] = args ? args.isActive : undefined;
205
+ resourceInputs["jobCompletionTriggerCondition"] = args ? args.jobCompletionTriggerCondition : undefined;
206
+ resourceInputs["name"] = args ? args.name : undefined;
207
+ resourceInputs["numThreads"] = args ? args.numThreads : undefined;
208
+ resourceInputs["projectId"] = args ? args.projectId : undefined;
209
+ resourceInputs["runGenerateSources"] = args ? args.runGenerateSources : undefined;
210
+ resourceInputs["scheduleCron"] = args ? args.scheduleCron : undefined;
211
+ resourceInputs["scheduleDays"] = args ? args.scheduleDays : undefined;
212
+ resourceInputs["scheduleHours"] = args ? args.scheduleHours : undefined;
213
+ resourceInputs["scheduleInterval"] = args ? args.scheduleInterval : undefined;
214
+ resourceInputs["scheduleType"] = args ? args.scheduleType : undefined;
215
+ resourceInputs["selfDeferring"] = args ? args.selfDeferring : undefined;
216
+ resourceInputs["targetName"] = args ? args.targetName : undefined;
217
+ resourceInputs["timeoutSeconds"] = args ? args.timeoutSeconds : undefined;
218
+ resourceInputs["triggers"] = args ? args.triggers : undefined;
219
+ resourceInputs["triggersOnDraftPr"] = args ? args.triggersOnDraftPr : undefined;
220
+ }
221
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
222
+ super(Job.__pulumiType, name, resourceInputs, opts);
223
+ }
224
+ }
225
+ exports.Job = Job;
226
+ /** @internal */
227
+ Job.__pulumiType = 'dbtcloud:index/job:Job';
228
+ //# sourceMappingURL=job.js.map
package/job.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../job.ts"],"names":[],"mappings":"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"}