@atensec/pulumi-thoth 0.1.0 → 0.1.1
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/browser/policy.ts +6 -6
- package/config/vars.ts +1 -1
- package/governance/decisionFieldBackfill.ts +277 -0
- package/governance/evidenceBackfill.ts +227 -0
- package/governance/getEvidenceSlos.ts +64 -0
- package/governance/index.ts +29 -0
- package/governance/packAssignmentBulk.ts +266 -0
- package/package.json +1 -1
- package/provider.ts +2 -2
- package/tsconfig.json +4 -0
package/browser/policy.ts
CHANGED
|
@@ -45,7 +45,7 @@ export class Policy extends pulumi.CustomResource {
|
|
|
45
45
|
*/
|
|
46
46
|
declare public /*out*/ readonly createdAt: pulumi.Output<string>;
|
|
47
47
|
/**
|
|
48
|
-
* Override createdBy audit value.
|
|
48
|
+
* Override<span pulumi-lang-nodejs=" createdBy " pulumi-lang-dotnet=" CreatedBy " pulumi-lang-go=" createdBy " pulumi-lang-python=" created_by " pulumi-lang-yaml=" createdBy " pulumi-lang-java=" createdBy "> createdBy </span>audit value.
|
|
49
49
|
*/
|
|
50
50
|
declare public readonly createdBy: pulumi.Output<string | undefined>;
|
|
51
51
|
/**
|
|
@@ -81,7 +81,7 @@ export class Policy extends pulumi.CustomResource {
|
|
|
81
81
|
*/
|
|
82
82
|
declare public /*out*/ readonly updatedAt: pulumi.Output<string>;
|
|
83
83
|
/**
|
|
84
|
-
* Override updatedBy audit value.
|
|
84
|
+
* Override<span pulumi-lang-nodejs=" updatedBy " pulumi-lang-dotnet=" UpdatedBy " pulumi-lang-go=" updatedBy " pulumi-lang-python=" updated_by " pulumi-lang-yaml=" updatedBy " pulumi-lang-java=" updatedBy "> updatedBy </span>audit value.
|
|
85
85
|
*/
|
|
86
86
|
declare public readonly updatedBy: pulumi.Output<string | undefined>;
|
|
87
87
|
/**
|
|
@@ -164,7 +164,7 @@ export interface PolicyState {
|
|
|
164
164
|
*/
|
|
165
165
|
createdAt?: pulumi.Input<string | undefined>;
|
|
166
166
|
/**
|
|
167
|
-
* Override createdBy audit value.
|
|
167
|
+
* Override<span pulumi-lang-nodejs=" createdBy " pulumi-lang-dotnet=" CreatedBy " pulumi-lang-go=" createdBy " pulumi-lang-python=" created_by " pulumi-lang-yaml=" createdBy " pulumi-lang-java=" createdBy "> createdBy </span>audit value.
|
|
168
168
|
*/
|
|
169
169
|
createdBy?: pulumi.Input<string | undefined>;
|
|
170
170
|
/**
|
|
@@ -200,7 +200,7 @@ export interface PolicyState {
|
|
|
200
200
|
*/
|
|
201
201
|
updatedAt?: pulumi.Input<string | undefined>;
|
|
202
202
|
/**
|
|
203
|
-
* Override updatedBy audit value.
|
|
203
|
+
* Override<span pulumi-lang-nodejs=" updatedBy " pulumi-lang-dotnet=" UpdatedBy " pulumi-lang-go=" updatedBy " pulumi-lang-python=" updated_by " pulumi-lang-yaml=" updatedBy " pulumi-lang-java=" updatedBy "> updatedBy </span>audit value.
|
|
204
204
|
*/
|
|
205
205
|
updatedBy?: pulumi.Input<string | undefined>;
|
|
206
206
|
/**
|
|
@@ -218,7 +218,7 @@ export interface PolicyArgs {
|
|
|
218
218
|
*/
|
|
219
219
|
active?: pulumi.Input<boolean | undefined>;
|
|
220
220
|
/**
|
|
221
|
-
* Override createdBy audit value.
|
|
221
|
+
* Override<span pulumi-lang-nodejs=" createdBy " pulumi-lang-dotnet=" CreatedBy " pulumi-lang-go=" createdBy " pulumi-lang-python=" created_by " pulumi-lang-yaml=" createdBy " pulumi-lang-java=" createdBy "> createdBy </span>audit value.
|
|
222
222
|
*/
|
|
223
223
|
createdBy?: pulumi.Input<string | undefined>;
|
|
224
224
|
/**
|
|
@@ -246,7 +246,7 @@ export interface PolicyArgs {
|
|
|
246
246
|
*/
|
|
247
247
|
providerName: pulumi.Input<string>;
|
|
248
248
|
/**
|
|
249
|
-
* Override updatedBy audit value.
|
|
249
|
+
* Override<span pulumi-lang-nodejs=" updatedBy " pulumi-lang-dotnet=" UpdatedBy " pulumi-lang-go=" updatedBy " pulumi-lang-python=" updated_by " pulumi-lang-yaml=" updatedBy " pulumi-lang-java=" updatedBy "> updatedBy </span>audit value.
|
|
250
250
|
*/
|
|
251
251
|
updatedBy?: pulumi.Input<string | undefined>;
|
|
252
252
|
/**
|
package/config/vars.ts
CHANGED
|
@@ -30,7 +30,7 @@ Object.defineProperty(exports, "adminBearerTokenFile", {
|
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
|
-
* Apex domain used to derive GovAPI host when apiBaseUrl is omitted. Defaults to atensecurity.com.
|
|
33
|
+
* Apex domain used to derive GovAPI host when<span pulumi-lang-nodejs=" apiBaseUrl " pulumi-lang-dotnet=" ApiBaseUrl " pulumi-lang-go=" apiBaseUrl " pulumi-lang-python=" api_base_url " pulumi-lang-yaml=" apiBaseUrl " pulumi-lang-java=" apiBaseUrl "> apiBaseUrl </span>is omitted. Defaults to atensecurity.com.
|
|
34
34
|
*/
|
|
35
35
|
export declare const apexDomain: string | undefined;
|
|
36
36
|
Object.defineProperty(exports, "apexDomain", {
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
|
|
2
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
3
|
+
|
|
4
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
5
|
+
import * as utilities from "../utilities";
|
|
6
|
+
|
|
7
|
+
export class DecisionFieldBackfill extends pulumi.CustomResource {
|
|
8
|
+
/**
|
|
9
|
+
* Get an existing DecisionFieldBackfill resource's state with the given name, ID, and optional extra
|
|
10
|
+
* properties used to qualify the lookup.
|
|
11
|
+
*
|
|
12
|
+
* @param name The _unique_ name of the resulting resource.
|
|
13
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
14
|
+
* @param state Any extra arguments used during the lookup.
|
|
15
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
16
|
+
*/
|
|
17
|
+
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: DecisionFieldBackfillState, opts?: pulumi.CustomResourceOptions): DecisionFieldBackfill {
|
|
18
|
+
return new DecisionFieldBackfill(name, <any>state, { ...opts, id: id });
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** @internal */
|
|
22
|
+
public static readonly __pulumiType = 'thoth:governance/decisionFieldBackfill:DecisionFieldBackfill';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Returns true if the given object is an instance of DecisionFieldBackfill. This is designed to work even
|
|
26
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
27
|
+
*/
|
|
28
|
+
public static isInstance(obj: any): obj is DecisionFieldBackfill {
|
|
29
|
+
if (obj === undefined || obj === null) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return obj['__pulumiType'] === DecisionFieldBackfill.__pulumiType;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Rows eligible for decision-field patching.
|
|
37
|
+
*/
|
|
38
|
+
declare public /*out*/ readonly candidates: pulumi.Output<number>;
|
|
39
|
+
/**
|
|
40
|
+
* Preview candidate patches without persisting updates.
|
|
41
|
+
*/
|
|
42
|
+
declare public readonly dryRun: pulumi.Output<boolean | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* Rows scanned by the backfill operation.
|
|
45
|
+
*/
|
|
46
|
+
declare public /*out*/ readonly examined: pulumi.Output<number>;
|
|
47
|
+
/**
|
|
48
|
+
* Timestamp when backfill execution completed.
|
|
49
|
+
*/
|
|
50
|
+
declare public /*out*/ readonly executedAt: pulumi.Output<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Include blocked events in candidate selection.
|
|
53
|
+
*/
|
|
54
|
+
declare public readonly includeBlockedEvents: pulumi.Output<boolean | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* Maximum number of candidate rows to evaluate (1-5000).
|
|
57
|
+
*/
|
|
58
|
+
declare public readonly limit: pulumi.Output<number | undefined>;
|
|
59
|
+
/**
|
|
60
|
+
* Rows where<span pulumi-lang-nodejs=" authorizationDecision " pulumi-lang-dotnet=" AuthorizationDecision " pulumi-lang-go=" authorizationDecision " pulumi-lang-python=" authorization_decision " pulumi-lang-yaml=" authorizationDecision " pulumi-lang-java=" authorizationDecision "> authorizationDecision </span>was patched.
|
|
61
|
+
*/
|
|
62
|
+
declare public /*out*/ readonly patchedAuthorizationDecision: pulumi.Output<number>;
|
|
63
|
+
/**
|
|
64
|
+
* Rows where<span pulumi-lang-nodejs=" decisionEvidence " pulumi-lang-dotnet=" DecisionEvidence " pulumi-lang-go=" decisionEvidence " pulumi-lang-python=" decision_evidence " pulumi-lang-yaml=" decisionEvidence " pulumi-lang-java=" decisionEvidence "> decisionEvidence </span>was patched.
|
|
65
|
+
*/
|
|
66
|
+
declare public /*out*/ readonly patchedDecisionEvidence: pulumi.Output<number>;
|
|
67
|
+
/**
|
|
68
|
+
* Rows where<span pulumi-lang-nodejs=" decisionReasonCode " pulumi-lang-dotnet=" DecisionReasonCode " pulumi-lang-go=" decisionReasonCode " pulumi-lang-python=" decision_reason_code " pulumi-lang-yaml=" decisionReasonCode " pulumi-lang-java=" decisionReasonCode "> decisionReasonCode </span>was patched.
|
|
69
|
+
*/
|
|
70
|
+
declare public /*out*/ readonly patchedDecisionReasonCode: pulumi.Output<number>;
|
|
71
|
+
/**
|
|
72
|
+
* Rows where<span pulumi-lang-nodejs=" deepllmEnrichment " pulumi-lang-dotnet=" DeepllmEnrichment " pulumi-lang-go=" deepllmEnrichment " pulumi-lang-python=" deepllm_enrichment " pulumi-lang-yaml=" deepllmEnrichment " pulumi-lang-java=" deepllmEnrichment "> deepllmEnrichment </span>was patched.
|
|
73
|
+
*/
|
|
74
|
+
declare public /*out*/ readonly patchedDeepllmEnrichment: pulumi.Output<number>;
|
|
75
|
+
/**
|
|
76
|
+
* Rows where<span pulumi-lang-nodejs=" enforcementTraceId " pulumi-lang-dotnet=" EnforcementTraceId " pulumi-lang-go=" enforcementTraceId " pulumi-lang-python=" enforcement_trace_id " pulumi-lang-yaml=" enforcementTraceId " pulumi-lang-java=" enforcementTraceId "> enforcementTraceId </span>was patched.
|
|
77
|
+
*/
|
|
78
|
+
declare public /*out*/ readonly patchedEnforcementTraceId: pulumi.Output<number>;
|
|
79
|
+
/**
|
|
80
|
+
* Rows where<span pulumi-lang-nodejs=" violationId " pulumi-lang-dotnet=" ViolationId " pulumi-lang-go=" violationId " pulumi-lang-python=" violation_id " pulumi-lang-yaml=" violationId " pulumi-lang-java=" violationId "> violationId </span>was patched.
|
|
81
|
+
*/
|
|
82
|
+
declare public /*out*/ readonly patchedViolationId: pulumi.Output<number>;
|
|
83
|
+
/**
|
|
84
|
+
* Candidate row IDs as a JSON array.
|
|
85
|
+
*/
|
|
86
|
+
declare public /*out*/ readonly rowIdsJson: pulumi.Output<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Eligible rows skipped because no field changes were required.
|
|
89
|
+
*/
|
|
90
|
+
declare public /*out*/ readonly skippedNoChange: pulumi.Output<number>;
|
|
91
|
+
/**
|
|
92
|
+
* Tenant ID from provider configuration.
|
|
93
|
+
*/
|
|
94
|
+
declare public /*out*/ readonly tenantId: pulumi.Output<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Change this value to force a re-run.
|
|
97
|
+
*/
|
|
98
|
+
declare public readonly trigger: pulumi.Output<string | undefined>;
|
|
99
|
+
/**
|
|
100
|
+
* Rows updated when dry_run=false.
|
|
101
|
+
*/
|
|
102
|
+
declare public /*out*/ readonly updated: pulumi.Output<number>;
|
|
103
|
+
/**
|
|
104
|
+
* Trailing lookback window in hours (1-2880).
|
|
105
|
+
*/
|
|
106
|
+
declare public readonly windowHours: pulumi.Output<number | undefined>;
|
|
107
|
+
/**
|
|
108
|
+
* Rows that would be updated when dry_run=true.
|
|
109
|
+
*/
|
|
110
|
+
declare public /*out*/ readonly wouldUpdate: pulumi.Output<number>;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Create a DecisionFieldBackfill resource with the given unique name, arguments, and options.
|
|
114
|
+
*
|
|
115
|
+
* @param name The _unique_ name of the resource.
|
|
116
|
+
* @param args The arguments to use to populate this resource's properties.
|
|
117
|
+
* @param opts A bag of options that control this resource's behavior.
|
|
118
|
+
*/
|
|
119
|
+
constructor(name: string, args?: DecisionFieldBackfillArgs, opts?: pulumi.CustomResourceOptions)
|
|
120
|
+
constructor(name: string, argsOrState?: DecisionFieldBackfillArgs | DecisionFieldBackfillState, opts?: pulumi.CustomResourceOptions) {
|
|
121
|
+
let resourceInputs: pulumi.Inputs = {};
|
|
122
|
+
opts = opts || {};
|
|
123
|
+
if (opts.id) {
|
|
124
|
+
const state = argsOrState as DecisionFieldBackfillState | undefined;
|
|
125
|
+
resourceInputs["candidates"] = state?.candidates;
|
|
126
|
+
resourceInputs["dryRun"] = state?.dryRun;
|
|
127
|
+
resourceInputs["examined"] = state?.examined;
|
|
128
|
+
resourceInputs["executedAt"] = state?.executedAt;
|
|
129
|
+
resourceInputs["includeBlockedEvents"] = state?.includeBlockedEvents;
|
|
130
|
+
resourceInputs["limit"] = state?.limit;
|
|
131
|
+
resourceInputs["patchedAuthorizationDecision"] = state?.patchedAuthorizationDecision;
|
|
132
|
+
resourceInputs["patchedDecisionEvidence"] = state?.patchedDecisionEvidence;
|
|
133
|
+
resourceInputs["patchedDecisionReasonCode"] = state?.patchedDecisionReasonCode;
|
|
134
|
+
resourceInputs["patchedDeepllmEnrichment"] = state?.patchedDeepllmEnrichment;
|
|
135
|
+
resourceInputs["patchedEnforcementTraceId"] = state?.patchedEnforcementTraceId;
|
|
136
|
+
resourceInputs["patchedViolationId"] = state?.patchedViolationId;
|
|
137
|
+
resourceInputs["rowIdsJson"] = state?.rowIdsJson;
|
|
138
|
+
resourceInputs["skippedNoChange"] = state?.skippedNoChange;
|
|
139
|
+
resourceInputs["tenantId"] = state?.tenantId;
|
|
140
|
+
resourceInputs["trigger"] = state?.trigger;
|
|
141
|
+
resourceInputs["updated"] = state?.updated;
|
|
142
|
+
resourceInputs["windowHours"] = state?.windowHours;
|
|
143
|
+
resourceInputs["wouldUpdate"] = state?.wouldUpdate;
|
|
144
|
+
} else {
|
|
145
|
+
const args = argsOrState as DecisionFieldBackfillArgs | undefined;
|
|
146
|
+
resourceInputs["dryRun"] = args?.dryRun;
|
|
147
|
+
resourceInputs["includeBlockedEvents"] = args?.includeBlockedEvents;
|
|
148
|
+
resourceInputs["limit"] = args?.limit;
|
|
149
|
+
resourceInputs["trigger"] = args?.trigger;
|
|
150
|
+
resourceInputs["windowHours"] = args?.windowHours;
|
|
151
|
+
resourceInputs["candidates"] = undefined /*out*/;
|
|
152
|
+
resourceInputs["examined"] = undefined /*out*/;
|
|
153
|
+
resourceInputs["executedAt"] = undefined /*out*/;
|
|
154
|
+
resourceInputs["patchedAuthorizationDecision"] = undefined /*out*/;
|
|
155
|
+
resourceInputs["patchedDecisionEvidence"] = undefined /*out*/;
|
|
156
|
+
resourceInputs["patchedDecisionReasonCode"] = undefined /*out*/;
|
|
157
|
+
resourceInputs["patchedDeepllmEnrichment"] = undefined /*out*/;
|
|
158
|
+
resourceInputs["patchedEnforcementTraceId"] = undefined /*out*/;
|
|
159
|
+
resourceInputs["patchedViolationId"] = undefined /*out*/;
|
|
160
|
+
resourceInputs["rowIdsJson"] = undefined /*out*/;
|
|
161
|
+
resourceInputs["skippedNoChange"] = undefined /*out*/;
|
|
162
|
+
resourceInputs["tenantId"] = undefined /*out*/;
|
|
163
|
+
resourceInputs["updated"] = undefined /*out*/;
|
|
164
|
+
resourceInputs["wouldUpdate"] = undefined /*out*/;
|
|
165
|
+
}
|
|
166
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
|
|
167
|
+
super(DecisionFieldBackfill.__pulumiType, name, resourceInputs, opts);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Input properties used for looking up and filtering DecisionFieldBackfill resources.
|
|
173
|
+
*/
|
|
174
|
+
export interface DecisionFieldBackfillState {
|
|
175
|
+
/**
|
|
176
|
+
* Rows eligible for decision-field patching.
|
|
177
|
+
*/
|
|
178
|
+
candidates?: pulumi.Input<number | undefined>;
|
|
179
|
+
/**
|
|
180
|
+
* Preview candidate patches without persisting updates.
|
|
181
|
+
*/
|
|
182
|
+
dryRun?: pulumi.Input<boolean | undefined>;
|
|
183
|
+
/**
|
|
184
|
+
* Rows scanned by the backfill operation.
|
|
185
|
+
*/
|
|
186
|
+
examined?: pulumi.Input<number | undefined>;
|
|
187
|
+
/**
|
|
188
|
+
* Timestamp when backfill execution completed.
|
|
189
|
+
*/
|
|
190
|
+
executedAt?: pulumi.Input<string | undefined>;
|
|
191
|
+
/**
|
|
192
|
+
* Include blocked events in candidate selection.
|
|
193
|
+
*/
|
|
194
|
+
includeBlockedEvents?: pulumi.Input<boolean | undefined>;
|
|
195
|
+
/**
|
|
196
|
+
* Maximum number of candidate rows to evaluate (1-5000).
|
|
197
|
+
*/
|
|
198
|
+
limit?: pulumi.Input<number | undefined>;
|
|
199
|
+
/**
|
|
200
|
+
* Rows where<span pulumi-lang-nodejs=" authorizationDecision " pulumi-lang-dotnet=" AuthorizationDecision " pulumi-lang-go=" authorizationDecision " pulumi-lang-python=" authorization_decision " pulumi-lang-yaml=" authorizationDecision " pulumi-lang-java=" authorizationDecision "> authorizationDecision </span>was patched.
|
|
201
|
+
*/
|
|
202
|
+
patchedAuthorizationDecision?: pulumi.Input<number | undefined>;
|
|
203
|
+
/**
|
|
204
|
+
* Rows where<span pulumi-lang-nodejs=" decisionEvidence " pulumi-lang-dotnet=" DecisionEvidence " pulumi-lang-go=" decisionEvidence " pulumi-lang-python=" decision_evidence " pulumi-lang-yaml=" decisionEvidence " pulumi-lang-java=" decisionEvidence "> decisionEvidence </span>was patched.
|
|
205
|
+
*/
|
|
206
|
+
patchedDecisionEvidence?: pulumi.Input<number | undefined>;
|
|
207
|
+
/**
|
|
208
|
+
* Rows where<span pulumi-lang-nodejs=" decisionReasonCode " pulumi-lang-dotnet=" DecisionReasonCode " pulumi-lang-go=" decisionReasonCode " pulumi-lang-python=" decision_reason_code " pulumi-lang-yaml=" decisionReasonCode " pulumi-lang-java=" decisionReasonCode "> decisionReasonCode </span>was patched.
|
|
209
|
+
*/
|
|
210
|
+
patchedDecisionReasonCode?: pulumi.Input<number | undefined>;
|
|
211
|
+
/**
|
|
212
|
+
* Rows where<span pulumi-lang-nodejs=" deepllmEnrichment " pulumi-lang-dotnet=" DeepllmEnrichment " pulumi-lang-go=" deepllmEnrichment " pulumi-lang-python=" deepllm_enrichment " pulumi-lang-yaml=" deepllmEnrichment " pulumi-lang-java=" deepllmEnrichment "> deepllmEnrichment </span>was patched.
|
|
213
|
+
*/
|
|
214
|
+
patchedDeepllmEnrichment?: pulumi.Input<number | undefined>;
|
|
215
|
+
/**
|
|
216
|
+
* Rows where<span pulumi-lang-nodejs=" enforcementTraceId " pulumi-lang-dotnet=" EnforcementTraceId " pulumi-lang-go=" enforcementTraceId " pulumi-lang-python=" enforcement_trace_id " pulumi-lang-yaml=" enforcementTraceId " pulumi-lang-java=" enforcementTraceId "> enforcementTraceId </span>was patched.
|
|
217
|
+
*/
|
|
218
|
+
patchedEnforcementTraceId?: pulumi.Input<number | undefined>;
|
|
219
|
+
/**
|
|
220
|
+
* Rows where<span pulumi-lang-nodejs=" violationId " pulumi-lang-dotnet=" ViolationId " pulumi-lang-go=" violationId " pulumi-lang-python=" violation_id " pulumi-lang-yaml=" violationId " pulumi-lang-java=" violationId "> violationId </span>was patched.
|
|
221
|
+
*/
|
|
222
|
+
patchedViolationId?: pulumi.Input<number | undefined>;
|
|
223
|
+
/**
|
|
224
|
+
* Candidate row IDs as a JSON array.
|
|
225
|
+
*/
|
|
226
|
+
rowIdsJson?: pulumi.Input<string | undefined>;
|
|
227
|
+
/**
|
|
228
|
+
* Eligible rows skipped because no field changes were required.
|
|
229
|
+
*/
|
|
230
|
+
skippedNoChange?: pulumi.Input<number | undefined>;
|
|
231
|
+
/**
|
|
232
|
+
* Tenant ID from provider configuration.
|
|
233
|
+
*/
|
|
234
|
+
tenantId?: pulumi.Input<string | undefined>;
|
|
235
|
+
/**
|
|
236
|
+
* Change this value to force a re-run.
|
|
237
|
+
*/
|
|
238
|
+
trigger?: pulumi.Input<string | undefined>;
|
|
239
|
+
/**
|
|
240
|
+
* Rows updated when dry_run=false.
|
|
241
|
+
*/
|
|
242
|
+
updated?: pulumi.Input<number | undefined>;
|
|
243
|
+
/**
|
|
244
|
+
* Trailing lookback window in hours (1-2880).
|
|
245
|
+
*/
|
|
246
|
+
windowHours?: pulumi.Input<number | undefined>;
|
|
247
|
+
/**
|
|
248
|
+
* Rows that would be updated when dry_run=true.
|
|
249
|
+
*/
|
|
250
|
+
wouldUpdate?: pulumi.Input<number | undefined>;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* The set of arguments for constructing a DecisionFieldBackfill resource.
|
|
255
|
+
*/
|
|
256
|
+
export interface DecisionFieldBackfillArgs {
|
|
257
|
+
/**
|
|
258
|
+
* Preview candidate patches without persisting updates.
|
|
259
|
+
*/
|
|
260
|
+
dryRun?: pulumi.Input<boolean | undefined>;
|
|
261
|
+
/**
|
|
262
|
+
* Include blocked events in candidate selection.
|
|
263
|
+
*/
|
|
264
|
+
includeBlockedEvents?: pulumi.Input<boolean | undefined>;
|
|
265
|
+
/**
|
|
266
|
+
* Maximum number of candidate rows to evaluate (1-5000).
|
|
267
|
+
*/
|
|
268
|
+
limit?: pulumi.Input<number | undefined>;
|
|
269
|
+
/**
|
|
270
|
+
* Change this value to force a re-run.
|
|
271
|
+
*/
|
|
272
|
+
trigger?: pulumi.Input<string | undefined>;
|
|
273
|
+
/**
|
|
274
|
+
* Trailing lookback window in hours (1-2880).
|
|
275
|
+
*/
|
|
276
|
+
windowHours?: pulumi.Input<number | undefined>;
|
|
277
|
+
}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
|
|
2
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
3
|
+
|
|
4
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
5
|
+
import * as utilities from "../utilities";
|
|
6
|
+
|
|
7
|
+
export class EvidenceBackfill extends pulumi.CustomResource {
|
|
8
|
+
/**
|
|
9
|
+
* Get an existing EvidenceBackfill resource's state with the given name, ID, and optional extra
|
|
10
|
+
* properties used to qualify the lookup.
|
|
11
|
+
*
|
|
12
|
+
* @param name The _unique_ name of the resulting resource.
|
|
13
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
14
|
+
* @param state Any extra arguments used during the lookup.
|
|
15
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
16
|
+
*/
|
|
17
|
+
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: EvidenceBackfillState, opts?: pulumi.CustomResourceOptions): EvidenceBackfill {
|
|
18
|
+
return new EvidenceBackfill(name, <any>state, { ...opts, id: id });
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** @internal */
|
|
22
|
+
public static readonly __pulumiType = 'thoth:governance/evidenceBackfill:EvidenceBackfill';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Returns true if the given object is an instance of EvidenceBackfill. This is designed to work even
|
|
26
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
27
|
+
*/
|
|
28
|
+
public static isInstance(obj: any): obj is EvidenceBackfill {
|
|
29
|
+
if (obj === undefined || obj === null) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return obj['__pulumiType'] === EvidenceBackfill.__pulumiType;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Number of events that qualified for backfill.
|
|
37
|
+
*/
|
|
38
|
+
declare public /*out*/ readonly candidates: pulumi.Output<number>;
|
|
39
|
+
/**
|
|
40
|
+
* Number of new evidence records created.
|
|
41
|
+
*/
|
|
42
|
+
declare public /*out*/ readonly created: pulumi.Output<number>;
|
|
43
|
+
/**
|
|
44
|
+
* When true, preview records without persisting evidence.
|
|
45
|
+
*/
|
|
46
|
+
declare public readonly dryRun: pulumi.Output<boolean | undefined>;
|
|
47
|
+
/**
|
|
48
|
+
* Created or candidate evidence IDs as JSON array.
|
|
49
|
+
*/
|
|
50
|
+
declare public /*out*/ readonly evidenceIdsJson: pulumi.Output<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Number of source events examined.
|
|
53
|
+
*/
|
|
54
|
+
declare public /*out*/ readonly examined: pulumi.Output<number>;
|
|
55
|
+
/**
|
|
56
|
+
* Timestamp when backfill was executed.
|
|
57
|
+
*/
|
|
58
|
+
declare public /*out*/ readonly executedAt: pulumi.Output<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Include blocked decisions in addition to explicit violations.
|
|
61
|
+
*/
|
|
62
|
+
declare public readonly includeBlockedEvents: pulumi.Output<boolean | undefined>;
|
|
63
|
+
/**
|
|
64
|
+
* Optional integration ID stamped on created evidence records.
|
|
65
|
+
*/
|
|
66
|
+
declare public readonly integrationId: pulumi.Output<string | undefined>;
|
|
67
|
+
/**
|
|
68
|
+
* Maximum number of candidate events to evaluate (1-1000).
|
|
69
|
+
*/
|
|
70
|
+
declare public readonly limit: pulumi.Output<number | undefined>;
|
|
71
|
+
/**
|
|
72
|
+
* Number of candidates skipped due to existing evidence.
|
|
73
|
+
*/
|
|
74
|
+
declare public /*out*/ readonly skippedExisting: pulumi.Output<number>;
|
|
75
|
+
/**
|
|
76
|
+
* Source collection used by the backfill endpoint.
|
|
77
|
+
*/
|
|
78
|
+
declare public /*out*/ readonly sourceCollection: pulumi.Output<string>;
|
|
79
|
+
/**
|
|
80
|
+
* Tenant ID from provider configuration.
|
|
81
|
+
*/
|
|
82
|
+
declare public /*out*/ readonly tenantId: pulumi.Output<string>;
|
|
83
|
+
/**
|
|
84
|
+
* Change this value to force a re-run.
|
|
85
|
+
*/
|
|
86
|
+
declare public readonly trigger: pulumi.Output<string | undefined>;
|
|
87
|
+
/**
|
|
88
|
+
* Number of records that would be created in dry-run mode.
|
|
89
|
+
*/
|
|
90
|
+
declare public /*out*/ readonly wouldCreate: pulumi.Output<number>;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Create a EvidenceBackfill resource with the given unique name, arguments, and options.
|
|
94
|
+
*
|
|
95
|
+
* @param name The _unique_ name of the resource.
|
|
96
|
+
* @param args The arguments to use to populate this resource's properties.
|
|
97
|
+
* @param opts A bag of options that control this resource's behavior.
|
|
98
|
+
*/
|
|
99
|
+
constructor(name: string, args?: EvidenceBackfillArgs, opts?: pulumi.CustomResourceOptions)
|
|
100
|
+
constructor(name: string, argsOrState?: EvidenceBackfillArgs | EvidenceBackfillState, opts?: pulumi.CustomResourceOptions) {
|
|
101
|
+
let resourceInputs: pulumi.Inputs = {};
|
|
102
|
+
opts = opts || {};
|
|
103
|
+
if (opts.id) {
|
|
104
|
+
const state = argsOrState as EvidenceBackfillState | undefined;
|
|
105
|
+
resourceInputs["candidates"] = state?.candidates;
|
|
106
|
+
resourceInputs["created"] = state?.created;
|
|
107
|
+
resourceInputs["dryRun"] = state?.dryRun;
|
|
108
|
+
resourceInputs["evidenceIdsJson"] = state?.evidenceIdsJson;
|
|
109
|
+
resourceInputs["examined"] = state?.examined;
|
|
110
|
+
resourceInputs["executedAt"] = state?.executedAt;
|
|
111
|
+
resourceInputs["includeBlockedEvents"] = state?.includeBlockedEvents;
|
|
112
|
+
resourceInputs["integrationId"] = state?.integrationId;
|
|
113
|
+
resourceInputs["limit"] = state?.limit;
|
|
114
|
+
resourceInputs["skippedExisting"] = state?.skippedExisting;
|
|
115
|
+
resourceInputs["sourceCollection"] = state?.sourceCollection;
|
|
116
|
+
resourceInputs["tenantId"] = state?.tenantId;
|
|
117
|
+
resourceInputs["trigger"] = state?.trigger;
|
|
118
|
+
resourceInputs["wouldCreate"] = state?.wouldCreate;
|
|
119
|
+
} else {
|
|
120
|
+
const args = argsOrState as EvidenceBackfillArgs | undefined;
|
|
121
|
+
resourceInputs["dryRun"] = args?.dryRun;
|
|
122
|
+
resourceInputs["includeBlockedEvents"] = args?.includeBlockedEvents;
|
|
123
|
+
resourceInputs["integrationId"] = args?.integrationId;
|
|
124
|
+
resourceInputs["limit"] = args?.limit;
|
|
125
|
+
resourceInputs["trigger"] = args?.trigger;
|
|
126
|
+
resourceInputs["candidates"] = undefined /*out*/;
|
|
127
|
+
resourceInputs["created"] = undefined /*out*/;
|
|
128
|
+
resourceInputs["evidenceIdsJson"] = undefined /*out*/;
|
|
129
|
+
resourceInputs["examined"] = undefined /*out*/;
|
|
130
|
+
resourceInputs["executedAt"] = undefined /*out*/;
|
|
131
|
+
resourceInputs["skippedExisting"] = undefined /*out*/;
|
|
132
|
+
resourceInputs["sourceCollection"] = undefined /*out*/;
|
|
133
|
+
resourceInputs["tenantId"] = undefined /*out*/;
|
|
134
|
+
resourceInputs["wouldCreate"] = undefined /*out*/;
|
|
135
|
+
}
|
|
136
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
|
|
137
|
+
super(EvidenceBackfill.__pulumiType, name, resourceInputs, opts);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Input properties used for looking up and filtering EvidenceBackfill resources.
|
|
143
|
+
*/
|
|
144
|
+
export interface EvidenceBackfillState {
|
|
145
|
+
/**
|
|
146
|
+
* Number of events that qualified for backfill.
|
|
147
|
+
*/
|
|
148
|
+
candidates?: pulumi.Input<number | undefined>;
|
|
149
|
+
/**
|
|
150
|
+
* Number of new evidence records created.
|
|
151
|
+
*/
|
|
152
|
+
created?: pulumi.Input<number | undefined>;
|
|
153
|
+
/**
|
|
154
|
+
* When true, preview records without persisting evidence.
|
|
155
|
+
*/
|
|
156
|
+
dryRun?: pulumi.Input<boolean | undefined>;
|
|
157
|
+
/**
|
|
158
|
+
* Created or candidate evidence IDs as JSON array.
|
|
159
|
+
*/
|
|
160
|
+
evidenceIdsJson?: pulumi.Input<string | undefined>;
|
|
161
|
+
/**
|
|
162
|
+
* Number of source events examined.
|
|
163
|
+
*/
|
|
164
|
+
examined?: pulumi.Input<number | undefined>;
|
|
165
|
+
/**
|
|
166
|
+
* Timestamp when backfill was executed.
|
|
167
|
+
*/
|
|
168
|
+
executedAt?: pulumi.Input<string | undefined>;
|
|
169
|
+
/**
|
|
170
|
+
* Include blocked decisions in addition to explicit violations.
|
|
171
|
+
*/
|
|
172
|
+
includeBlockedEvents?: pulumi.Input<boolean | undefined>;
|
|
173
|
+
/**
|
|
174
|
+
* Optional integration ID stamped on created evidence records.
|
|
175
|
+
*/
|
|
176
|
+
integrationId?: pulumi.Input<string | undefined>;
|
|
177
|
+
/**
|
|
178
|
+
* Maximum number of candidate events to evaluate (1-1000).
|
|
179
|
+
*/
|
|
180
|
+
limit?: pulumi.Input<number | undefined>;
|
|
181
|
+
/**
|
|
182
|
+
* Number of candidates skipped due to existing evidence.
|
|
183
|
+
*/
|
|
184
|
+
skippedExisting?: pulumi.Input<number | undefined>;
|
|
185
|
+
/**
|
|
186
|
+
* Source collection used by the backfill endpoint.
|
|
187
|
+
*/
|
|
188
|
+
sourceCollection?: pulumi.Input<string | undefined>;
|
|
189
|
+
/**
|
|
190
|
+
* Tenant ID from provider configuration.
|
|
191
|
+
*/
|
|
192
|
+
tenantId?: pulumi.Input<string | undefined>;
|
|
193
|
+
/**
|
|
194
|
+
* Change this value to force a re-run.
|
|
195
|
+
*/
|
|
196
|
+
trigger?: pulumi.Input<string | undefined>;
|
|
197
|
+
/**
|
|
198
|
+
* Number of records that would be created in dry-run mode.
|
|
199
|
+
*/
|
|
200
|
+
wouldCreate?: pulumi.Input<number | undefined>;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* The set of arguments for constructing a EvidenceBackfill resource.
|
|
205
|
+
*/
|
|
206
|
+
export interface EvidenceBackfillArgs {
|
|
207
|
+
/**
|
|
208
|
+
* When true, preview records without persisting evidence.
|
|
209
|
+
*/
|
|
210
|
+
dryRun?: pulumi.Input<boolean | undefined>;
|
|
211
|
+
/**
|
|
212
|
+
* Include blocked decisions in addition to explicit violations.
|
|
213
|
+
*/
|
|
214
|
+
includeBlockedEvents?: pulumi.Input<boolean | undefined>;
|
|
215
|
+
/**
|
|
216
|
+
* Optional integration ID stamped on created evidence records.
|
|
217
|
+
*/
|
|
218
|
+
integrationId?: pulumi.Input<string | undefined>;
|
|
219
|
+
/**
|
|
220
|
+
* Maximum number of candidate events to evaluate (1-1000).
|
|
221
|
+
*/
|
|
222
|
+
limit?: pulumi.Input<number | undefined>;
|
|
223
|
+
/**
|
|
224
|
+
* Change this value to force a re-run.
|
|
225
|
+
*/
|
|
226
|
+
trigger?: pulumi.Input<string | undefined>;
|
|
227
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
|
|
2
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
3
|
+
|
|
4
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
5
|
+
import * as utilities from "../utilities";
|
|
6
|
+
|
|
7
|
+
export function getEvidenceSlos(args?: GetEvidenceSlosArgs, opts?: pulumi.InvokeOptions): Promise<GetEvidenceSlosResult> {
|
|
8
|
+
args = args || {};
|
|
9
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
|
|
10
|
+
return pulumi.runtime.invoke("thoth:governance/getEvidenceSlos:getEvidenceSlos", {
|
|
11
|
+
"scanLimit": args.scanLimit,
|
|
12
|
+
"windowHours": args.windowHours,
|
|
13
|
+
}, opts);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A collection of arguments for invoking getEvidenceSlos.
|
|
18
|
+
*/
|
|
19
|
+
export interface GetEvidenceSlosArgs {
|
|
20
|
+
scanLimit?: number;
|
|
21
|
+
windowHours?: number;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A collection of values returned by getEvidenceSlos.
|
|
26
|
+
*/
|
|
27
|
+
export interface GetEvidenceSlosResult {
|
|
28
|
+
readonly decisionReasonCodeCoverage: number;
|
|
29
|
+
readonly decisionToApiVisibilityLatencyP95Seconds: number;
|
|
30
|
+
readonly deepllmEnrichmentJoinRate: number;
|
|
31
|
+
readonly evidenceChainVerificationSuccess: number;
|
|
32
|
+
readonly failuresJson: string;
|
|
33
|
+
readonly generatedAt: string;
|
|
34
|
+
/**
|
|
35
|
+
* The provider-assigned unique ID for this managed resource.
|
|
36
|
+
*/
|
|
37
|
+
readonly id: string;
|
|
38
|
+
readonly metricsJson: string;
|
|
39
|
+
readonly passed: boolean;
|
|
40
|
+
readonly policyReferenceCoverageNonAllow: number;
|
|
41
|
+
readonly rowsScanned: number;
|
|
42
|
+
readonly scanLimit?: number;
|
|
43
|
+
readonly tenantId: string;
|
|
44
|
+
readonly thresholdsJson: string;
|
|
45
|
+
readonly violationIdPresenceRate: number;
|
|
46
|
+
readonly violationRelevantRows: number;
|
|
47
|
+
readonly windowHours?: number;
|
|
48
|
+
}
|
|
49
|
+
export function getEvidenceSlosOutput(args?: GetEvidenceSlosOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetEvidenceSlosResult> {
|
|
50
|
+
args = args || {};
|
|
51
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
|
|
52
|
+
return pulumi.runtime.invokeOutput("thoth:governance/getEvidenceSlos:getEvidenceSlos", {
|
|
53
|
+
"scanLimit": args.scanLimit,
|
|
54
|
+
"windowHours": args.windowHours,
|
|
55
|
+
}, opts);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* A collection of arguments for invoking getEvidenceSlos.
|
|
60
|
+
*/
|
|
61
|
+
export interface GetEvidenceSlosOutputArgs {
|
|
62
|
+
scanLimit?: pulumi.Input<number | undefined>;
|
|
63
|
+
windowHours?: pulumi.Input<number | undefined>;
|
|
64
|
+
}
|
package/governance/index.ts
CHANGED
|
@@ -10,6 +10,21 @@ export type ApprovalDecision = import("./approvalDecision").ApprovalDecision;
|
|
|
10
10
|
export const ApprovalDecision: typeof import("./approvalDecision").ApprovalDecision = null as any;
|
|
11
11
|
utilities.lazyLoad(exports, ["ApprovalDecision"], () => require("./approvalDecision"));
|
|
12
12
|
|
|
13
|
+
export { DecisionFieldBackfillArgs, DecisionFieldBackfillState } from "./decisionFieldBackfill";
|
|
14
|
+
export type DecisionFieldBackfill = import("./decisionFieldBackfill").DecisionFieldBackfill;
|
|
15
|
+
export const DecisionFieldBackfill: typeof import("./decisionFieldBackfill").DecisionFieldBackfill = null as any;
|
|
16
|
+
utilities.lazyLoad(exports, ["DecisionFieldBackfill"], () => require("./decisionFieldBackfill"));
|
|
17
|
+
|
|
18
|
+
export { EvidenceBackfillArgs, EvidenceBackfillState } from "./evidenceBackfill";
|
|
19
|
+
export type EvidenceBackfill = import("./evidenceBackfill").EvidenceBackfill;
|
|
20
|
+
export const EvidenceBackfill: typeof import("./evidenceBackfill").EvidenceBackfill = null as any;
|
|
21
|
+
utilities.lazyLoad(exports, ["EvidenceBackfill"], () => require("./evidenceBackfill"));
|
|
22
|
+
|
|
23
|
+
export { GetEvidenceSlosArgs, GetEvidenceSlosResult, GetEvidenceSlosOutputArgs } from "./getEvidenceSlos";
|
|
24
|
+
export const getEvidenceSlos: typeof import("./getEvidenceSlos").getEvidenceSlos = null as any;
|
|
25
|
+
export const getEvidenceSlosOutput: typeof import("./getEvidenceSlos").getEvidenceSlosOutput = null as any;
|
|
26
|
+
utilities.lazyLoad(exports, ["getEvidenceSlos","getEvidenceSlosOutput"], () => require("./getEvidenceSlos"));
|
|
27
|
+
|
|
13
28
|
export { GetFeedArgs, GetFeedResult, GetFeedOutputArgs } from "./getFeed";
|
|
14
29
|
export const getFeed: typeof import("./getFeed").getFeed = null as any;
|
|
15
30
|
export const getFeedOutput: typeof import("./getFeed").getFeedOutput = null as any;
|
|
@@ -30,6 +45,11 @@ export type PackAssignment = import("./packAssignment").PackAssignment;
|
|
|
30
45
|
export const PackAssignment: typeof import("./packAssignment").PackAssignment = null as any;
|
|
31
46
|
utilities.lazyLoad(exports, ["PackAssignment"], () => require("./packAssignment"));
|
|
32
47
|
|
|
48
|
+
export { PackAssignmentBulkArgs, PackAssignmentBulkState } from "./packAssignmentBulk";
|
|
49
|
+
export type PackAssignmentBulk = import("./packAssignmentBulk").PackAssignmentBulk;
|
|
50
|
+
export const PackAssignmentBulk: typeof import("./packAssignmentBulk").PackAssignmentBulk = null as any;
|
|
51
|
+
utilities.lazyLoad(exports, ["PackAssignmentBulk"], () => require("./packAssignmentBulk"));
|
|
52
|
+
|
|
33
53
|
export { PolicySyncArgs, PolicySyncState } from "./policySync";
|
|
34
54
|
export type PolicySync = import("./policySync").PolicySync;
|
|
35
55
|
export const PolicySync: typeof import("./policySync").PolicySync = null as any;
|
|
@@ -52,8 +72,14 @@ const _module = {
|
|
|
52
72
|
switch (type) {
|
|
53
73
|
case "thoth:governance/approvalDecision:ApprovalDecision":
|
|
54
74
|
return new ApprovalDecision(name, <any>undefined, { urn })
|
|
75
|
+
case "thoth:governance/decisionFieldBackfill:DecisionFieldBackfill":
|
|
76
|
+
return new DecisionFieldBackfill(name, <any>undefined, { urn })
|
|
77
|
+
case "thoth:governance/evidenceBackfill:EvidenceBackfill":
|
|
78
|
+
return new EvidenceBackfill(name, <any>undefined, { urn })
|
|
55
79
|
case "thoth:governance/packAssignment:PackAssignment":
|
|
56
80
|
return new PackAssignment(name, <any>undefined, { urn })
|
|
81
|
+
case "thoth:governance/packAssignmentBulk:PackAssignmentBulk":
|
|
82
|
+
return new PackAssignmentBulk(name, <any>undefined, { urn })
|
|
57
83
|
case "thoth:governance/policySync:PolicySync":
|
|
58
84
|
return new PolicySync(name, <any>undefined, { urn })
|
|
59
85
|
case "thoth:governance/tenantSettings:TenantSettings":
|
|
@@ -66,7 +92,10 @@ const _module = {
|
|
|
66
92
|
},
|
|
67
93
|
};
|
|
68
94
|
pulumi.runtime.registerResourceModule("thoth", "governance/approvalDecision", _module)
|
|
95
|
+
pulumi.runtime.registerResourceModule("thoth", "governance/decisionFieldBackfill", _module)
|
|
96
|
+
pulumi.runtime.registerResourceModule("thoth", "governance/evidenceBackfill", _module)
|
|
69
97
|
pulumi.runtime.registerResourceModule("thoth", "governance/packAssignment", _module)
|
|
98
|
+
pulumi.runtime.registerResourceModule("thoth", "governance/packAssignmentBulk", _module)
|
|
70
99
|
pulumi.runtime.registerResourceModule("thoth", "governance/policySync", _module)
|
|
71
100
|
pulumi.runtime.registerResourceModule("thoth", "governance/tenantSettings", _module)
|
|
72
101
|
pulumi.runtime.registerResourceModule("thoth", "governance/webhookTest", _module)
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
|
|
2
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
3
|
+
|
|
4
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
5
|
+
import * as utilities from "../utilities";
|
|
6
|
+
|
|
7
|
+
export class PackAssignmentBulk extends pulumi.CustomResource {
|
|
8
|
+
/**
|
|
9
|
+
* Get an existing PackAssignmentBulk resource's state with the given name, ID, and optional extra
|
|
10
|
+
* properties used to qualify the lookup.
|
|
11
|
+
*
|
|
12
|
+
* @param name The _unique_ name of the resulting resource.
|
|
13
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
14
|
+
* @param state Any extra arguments used during the lookup.
|
|
15
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
16
|
+
*/
|
|
17
|
+
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: PackAssignmentBulkState, opts?: pulumi.CustomResourceOptions): PackAssignmentBulk {
|
|
18
|
+
return new PackAssignmentBulk(name, <any>state, { ...opts, id: id });
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** @internal */
|
|
22
|
+
public static readonly __pulumiType = 'thoth:governance/packAssignmentBulk:PackAssignmentBulk';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Returns true if the given object is an instance of PackAssignmentBulk. This is designed to work even
|
|
26
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
27
|
+
*/
|
|
28
|
+
public static isInstance(obj: any): obj is PackAssignmentBulk {
|
|
29
|
+
if (obj === undefined || obj === null) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return obj['__pulumiType'] === PackAssignmentBulk.__pulumiType;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Specific agent IDs to target.
|
|
37
|
+
*/
|
|
38
|
+
declare public readonly agentIds: pulumi.Output<string[] | undefined>;
|
|
39
|
+
/**
|
|
40
|
+
* Apply to all known agents for the tenant.
|
|
41
|
+
*/
|
|
42
|
+
declare public readonly allAgents: pulumi.Output<boolean | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* Successful apply operations.
|
|
45
|
+
*/
|
|
46
|
+
declare public /*out*/ readonly appliedCount: pulumi.Output<number>;
|
|
47
|
+
/**
|
|
48
|
+
* Approval policy ID for pack application (defaults to 'default').
|
|
49
|
+
*/
|
|
50
|
+
declare public readonly approvalPolicyId: pulumi.Output<string | undefined>;
|
|
51
|
+
/**
|
|
52
|
+
* Endpoint IDs whose agents should receive the selected packs.
|
|
53
|
+
*/
|
|
54
|
+
declare public readonly endpointIds: pulumi.Output<string[] | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* Environment: dev or prod.
|
|
57
|
+
*/
|
|
58
|
+
declare public readonly environment: pulumi.Output<string | undefined>;
|
|
59
|
+
/**
|
|
60
|
+
* Failed apply operations.
|
|
61
|
+
*/
|
|
62
|
+
declare public /*out*/ readonly failedCount: pulumi.Output<number>;
|
|
63
|
+
/**
|
|
64
|
+
* Fleet IDs whose agents should receive the selected packs.
|
|
65
|
+
*/
|
|
66
|
+
declare public readonly fleetIds: pulumi.Output<string[] | undefined>;
|
|
67
|
+
/**
|
|
68
|
+
* Timestamp of the most recent apply operation.
|
|
69
|
+
*/
|
|
70
|
+
declare public /*out*/ readonly lastAppliedAt: pulumi.Output<string>;
|
|
71
|
+
/**
|
|
72
|
+
* JSON map keyed by<span pulumi-lang-nodejs=" packId " pulumi-lang-dotnet=" PackId " pulumi-lang-go=" packId " pulumi-lang-python=" pack_id " pulumi-lang-yaml=" packId " pulumi-lang-java=" packId "> packId </span>with per-pack overrides.
|
|
73
|
+
*/
|
|
74
|
+
declare public readonly overridesByPackJson: pulumi.Output<string | undefined>;
|
|
75
|
+
/**
|
|
76
|
+
* Pack IDs to apply in one bulk operation.
|
|
77
|
+
*/
|
|
78
|
+
declare public readonly packIds: pulumi.Output<string[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Raw apply results as JSON array.
|
|
81
|
+
*/
|
|
82
|
+
declare public /*out*/ readonly resultsJson: pulumi.Output<string>;
|
|
83
|
+
/**
|
|
84
|
+
* Resolved target agent IDs as JSON array.
|
|
85
|
+
*/
|
|
86
|
+
declare public /*out*/ readonly targetAgentIdsJson: pulumi.Output<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Tenant ID from provider configuration.
|
|
89
|
+
*/
|
|
90
|
+
declare public /*out*/ readonly tenantId: pulumi.Output<string>;
|
|
91
|
+
/**
|
|
92
|
+
* Total attempted apply operations.
|
|
93
|
+
*/
|
|
94
|
+
declare public /*out*/ readonly totalOps: pulumi.Output<number>;
|
|
95
|
+
/**
|
|
96
|
+
* Change this value to force a fresh apply run.
|
|
97
|
+
*/
|
|
98
|
+
declare public readonly trigger: pulumi.Output<string | undefined>;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Create a PackAssignmentBulk resource with the given unique name, arguments, and options.
|
|
102
|
+
*
|
|
103
|
+
* @param name The _unique_ name of the resource.
|
|
104
|
+
* @param args The arguments to use to populate this resource's properties.
|
|
105
|
+
* @param opts A bag of options that control this resource's behavior.
|
|
106
|
+
*/
|
|
107
|
+
constructor(name: string, args: PackAssignmentBulkArgs, opts?: pulumi.CustomResourceOptions)
|
|
108
|
+
constructor(name: string, argsOrState?: PackAssignmentBulkArgs | PackAssignmentBulkState, opts?: pulumi.CustomResourceOptions) {
|
|
109
|
+
let resourceInputs: pulumi.Inputs = {};
|
|
110
|
+
opts = opts || {};
|
|
111
|
+
if (opts.id) {
|
|
112
|
+
const state = argsOrState as PackAssignmentBulkState | undefined;
|
|
113
|
+
resourceInputs["agentIds"] = state?.agentIds;
|
|
114
|
+
resourceInputs["allAgents"] = state?.allAgents;
|
|
115
|
+
resourceInputs["appliedCount"] = state?.appliedCount;
|
|
116
|
+
resourceInputs["approvalPolicyId"] = state?.approvalPolicyId;
|
|
117
|
+
resourceInputs["endpointIds"] = state?.endpointIds;
|
|
118
|
+
resourceInputs["environment"] = state?.environment;
|
|
119
|
+
resourceInputs["failedCount"] = state?.failedCount;
|
|
120
|
+
resourceInputs["fleetIds"] = state?.fleetIds;
|
|
121
|
+
resourceInputs["lastAppliedAt"] = state?.lastAppliedAt;
|
|
122
|
+
resourceInputs["overridesByPackJson"] = state?.overridesByPackJson;
|
|
123
|
+
resourceInputs["packIds"] = state?.packIds;
|
|
124
|
+
resourceInputs["resultsJson"] = state?.resultsJson;
|
|
125
|
+
resourceInputs["targetAgentIdsJson"] = state?.targetAgentIdsJson;
|
|
126
|
+
resourceInputs["tenantId"] = state?.tenantId;
|
|
127
|
+
resourceInputs["totalOps"] = state?.totalOps;
|
|
128
|
+
resourceInputs["trigger"] = state?.trigger;
|
|
129
|
+
} else {
|
|
130
|
+
const args = argsOrState as PackAssignmentBulkArgs | undefined;
|
|
131
|
+
if (args?.packIds === undefined && !opts.urn) {
|
|
132
|
+
throw new Error("Missing required property 'packIds'");
|
|
133
|
+
}
|
|
134
|
+
resourceInputs["agentIds"] = args?.agentIds;
|
|
135
|
+
resourceInputs["allAgents"] = args?.allAgents;
|
|
136
|
+
resourceInputs["approvalPolicyId"] = args?.approvalPolicyId;
|
|
137
|
+
resourceInputs["endpointIds"] = args?.endpointIds;
|
|
138
|
+
resourceInputs["environment"] = args?.environment;
|
|
139
|
+
resourceInputs["fleetIds"] = args?.fleetIds;
|
|
140
|
+
resourceInputs["overridesByPackJson"] = args?.overridesByPackJson;
|
|
141
|
+
resourceInputs["packIds"] = args?.packIds;
|
|
142
|
+
resourceInputs["trigger"] = args?.trigger;
|
|
143
|
+
resourceInputs["appliedCount"] = undefined /*out*/;
|
|
144
|
+
resourceInputs["failedCount"] = undefined /*out*/;
|
|
145
|
+
resourceInputs["lastAppliedAt"] = undefined /*out*/;
|
|
146
|
+
resourceInputs["resultsJson"] = undefined /*out*/;
|
|
147
|
+
resourceInputs["targetAgentIdsJson"] = undefined /*out*/;
|
|
148
|
+
resourceInputs["tenantId"] = undefined /*out*/;
|
|
149
|
+
resourceInputs["totalOps"] = undefined /*out*/;
|
|
150
|
+
}
|
|
151
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
|
|
152
|
+
super(PackAssignmentBulk.__pulumiType, name, resourceInputs, opts);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Input properties used for looking up and filtering PackAssignmentBulk resources.
|
|
158
|
+
*/
|
|
159
|
+
export interface PackAssignmentBulkState {
|
|
160
|
+
/**
|
|
161
|
+
* Specific agent IDs to target.
|
|
162
|
+
*/
|
|
163
|
+
agentIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
|
|
164
|
+
/**
|
|
165
|
+
* Apply to all known agents for the tenant.
|
|
166
|
+
*/
|
|
167
|
+
allAgents?: pulumi.Input<boolean | undefined>;
|
|
168
|
+
/**
|
|
169
|
+
* Successful apply operations.
|
|
170
|
+
*/
|
|
171
|
+
appliedCount?: pulumi.Input<number | undefined>;
|
|
172
|
+
/**
|
|
173
|
+
* Approval policy ID for pack application (defaults to 'default').
|
|
174
|
+
*/
|
|
175
|
+
approvalPolicyId?: pulumi.Input<string | undefined>;
|
|
176
|
+
/**
|
|
177
|
+
* Endpoint IDs whose agents should receive the selected packs.
|
|
178
|
+
*/
|
|
179
|
+
endpointIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
|
|
180
|
+
/**
|
|
181
|
+
* Environment: dev or prod.
|
|
182
|
+
*/
|
|
183
|
+
environment?: pulumi.Input<string | undefined>;
|
|
184
|
+
/**
|
|
185
|
+
* Failed apply operations.
|
|
186
|
+
*/
|
|
187
|
+
failedCount?: pulumi.Input<number | undefined>;
|
|
188
|
+
/**
|
|
189
|
+
* Fleet IDs whose agents should receive the selected packs.
|
|
190
|
+
*/
|
|
191
|
+
fleetIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
|
|
192
|
+
/**
|
|
193
|
+
* Timestamp of the most recent apply operation.
|
|
194
|
+
*/
|
|
195
|
+
lastAppliedAt?: pulumi.Input<string | undefined>;
|
|
196
|
+
/**
|
|
197
|
+
* JSON map keyed by<span pulumi-lang-nodejs=" packId " pulumi-lang-dotnet=" PackId " pulumi-lang-go=" packId " pulumi-lang-python=" pack_id " pulumi-lang-yaml=" packId " pulumi-lang-java=" packId "> packId </span>with per-pack overrides.
|
|
198
|
+
*/
|
|
199
|
+
overridesByPackJson?: pulumi.Input<string | undefined>;
|
|
200
|
+
/**
|
|
201
|
+
* Pack IDs to apply in one bulk operation.
|
|
202
|
+
*/
|
|
203
|
+
packIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
|
|
204
|
+
/**
|
|
205
|
+
* Raw apply results as JSON array.
|
|
206
|
+
*/
|
|
207
|
+
resultsJson?: pulumi.Input<string | undefined>;
|
|
208
|
+
/**
|
|
209
|
+
* Resolved target agent IDs as JSON array.
|
|
210
|
+
*/
|
|
211
|
+
targetAgentIdsJson?: pulumi.Input<string | undefined>;
|
|
212
|
+
/**
|
|
213
|
+
* Tenant ID from provider configuration.
|
|
214
|
+
*/
|
|
215
|
+
tenantId?: pulumi.Input<string | undefined>;
|
|
216
|
+
/**
|
|
217
|
+
* Total attempted apply operations.
|
|
218
|
+
*/
|
|
219
|
+
totalOps?: pulumi.Input<number | undefined>;
|
|
220
|
+
/**
|
|
221
|
+
* Change this value to force a fresh apply run.
|
|
222
|
+
*/
|
|
223
|
+
trigger?: pulumi.Input<string | undefined>;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* The set of arguments for constructing a PackAssignmentBulk resource.
|
|
228
|
+
*/
|
|
229
|
+
export interface PackAssignmentBulkArgs {
|
|
230
|
+
/**
|
|
231
|
+
* Specific agent IDs to target.
|
|
232
|
+
*/
|
|
233
|
+
agentIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
|
|
234
|
+
/**
|
|
235
|
+
* Apply to all known agents for the tenant.
|
|
236
|
+
*/
|
|
237
|
+
allAgents?: pulumi.Input<boolean | undefined>;
|
|
238
|
+
/**
|
|
239
|
+
* Approval policy ID for pack application (defaults to 'default').
|
|
240
|
+
*/
|
|
241
|
+
approvalPolicyId?: pulumi.Input<string | undefined>;
|
|
242
|
+
/**
|
|
243
|
+
* Endpoint IDs whose agents should receive the selected packs.
|
|
244
|
+
*/
|
|
245
|
+
endpointIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
|
|
246
|
+
/**
|
|
247
|
+
* Environment: dev or prod.
|
|
248
|
+
*/
|
|
249
|
+
environment?: pulumi.Input<string | undefined>;
|
|
250
|
+
/**
|
|
251
|
+
* Fleet IDs whose agents should receive the selected packs.
|
|
252
|
+
*/
|
|
253
|
+
fleetIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
|
|
254
|
+
/**
|
|
255
|
+
* JSON map keyed by<span pulumi-lang-nodejs=" packId " pulumi-lang-dotnet=" PackId " pulumi-lang-go=" packId " pulumi-lang-python=" pack_id " pulumi-lang-yaml=" packId " pulumi-lang-java=" packId "> packId </span>with per-pack overrides.
|
|
256
|
+
*/
|
|
257
|
+
overridesByPackJson?: pulumi.Input<string | undefined>;
|
|
258
|
+
/**
|
|
259
|
+
* Pack IDs to apply in one bulk operation.
|
|
260
|
+
*/
|
|
261
|
+
packIds: pulumi.Input<pulumi.Input<string>[]>;
|
|
262
|
+
/**
|
|
263
|
+
* Change this value to force a fresh apply run.
|
|
264
|
+
*/
|
|
265
|
+
trigger?: pulumi.Input<string | undefined>;
|
|
266
|
+
}
|
package/package.json
CHANGED
package/provider.ts
CHANGED
|
@@ -34,7 +34,7 @@ export class Provider extends pulumi.ProviderResource {
|
|
|
34
34
|
*/
|
|
35
35
|
declare public readonly adminBearerTokenFile: pulumi.Output<string | undefined>;
|
|
36
36
|
/**
|
|
37
|
-
* Apex domain used to derive GovAPI host when apiBaseUrl is omitted. Defaults to atensecurity.com.
|
|
37
|
+
* Apex domain used to derive GovAPI host when<span pulumi-lang-nodejs=" apiBaseUrl " pulumi-lang-dotnet=" ApiBaseUrl " pulumi-lang-go=" apiBaseUrl " pulumi-lang-python=" api_base_url " pulumi-lang-yaml=" apiBaseUrl " pulumi-lang-java=" apiBaseUrl "> apiBaseUrl </span>is omitted. Defaults to atensecurity.com.
|
|
38
38
|
*/
|
|
39
39
|
declare public readonly apexDomain: pulumi.Output<string | undefined>;
|
|
40
40
|
/**
|
|
@@ -100,7 +100,7 @@ export interface ProviderArgs {
|
|
|
100
100
|
*/
|
|
101
101
|
adminBearerTokenFile?: pulumi.Input<string | undefined>;
|
|
102
102
|
/**
|
|
103
|
-
* Apex domain used to derive GovAPI host when apiBaseUrl is omitted. Defaults to atensecurity.com.
|
|
103
|
+
* Apex domain used to derive GovAPI host when<span pulumi-lang-nodejs=" apiBaseUrl " pulumi-lang-dotnet=" ApiBaseUrl " pulumi-lang-go=" apiBaseUrl " pulumi-lang-python=" api_base_url " pulumi-lang-yaml=" apiBaseUrl " pulumi-lang-java=" apiBaseUrl "> apiBaseUrl </span>is omitted. Defaults to atensecurity.com.
|
|
104
104
|
*/
|
|
105
105
|
apexDomain?: pulumi.Input<string | undefined>;
|
|
106
106
|
/**
|
package/tsconfig.json
CHANGED
|
@@ -29,11 +29,15 @@
|
|
|
29
29
|
"config/index.ts",
|
|
30
30
|
"config/vars.ts",
|
|
31
31
|
"governance/approvalDecision.ts",
|
|
32
|
+
"governance/decisionFieldBackfill.ts",
|
|
33
|
+
"governance/evidenceBackfill.ts",
|
|
34
|
+
"governance/getEvidenceSlos.ts",
|
|
32
35
|
"governance/getFeed.ts",
|
|
33
36
|
"governance/getTenantSettings.ts",
|
|
34
37
|
"governance/getTools.ts",
|
|
35
38
|
"governance/index.ts",
|
|
36
39
|
"governance/packAssignment.ts",
|
|
40
|
+
"governance/packAssignmentBulk.ts",
|
|
37
41
|
"governance/policySync.ts",
|
|
38
42
|
"governance/tenantSettings.ts",
|
|
39
43
|
"governance/webhookTest.ts",
|