Skip to content

Commit c8be1e2

Browse files
authored
Mark connector param validation failures as user errors (elastic#197812)
Resolves elastic/response-ops-team#255 In this PR, I'm changing the type of error thrown when connector parameter validation fails so it indicates it's a user type of error. This will allow us to exclude these errors from our serverless monitoring given the users define the parameters the connectors receive when they run. Mainly via alerting rule mustache templates, which are easy to render empty strings and such.
1 parent ae9c0d3 commit c8be1e2

File tree

14 files changed

+55
-44
lines changed

14 files changed

+55
-44
lines changed

x-pack/plugins/actions/server/lib/action_executor.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,7 @@ describe('Action Executor', () => {
851851
status: 'error',
852852
retry: false,
853853
message: `error validating action params: [param1]: expected value of type [string] but got [undefined]`,
854-
errorSource: TaskErrorSource.FRAMEWORK,
854+
errorSource: TaskErrorSource.USER,
855855
});
856856
});
857857

x-pack/plugins/actions/server/lib/action_executor.ts

+11
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,17 @@ function validateAction(
685685

686686
try {
687687
validatedParams = validateParams(actionType, params, validatorServices);
688+
} catch (err) {
689+
throw new ActionExecutionError(err.message, ActionExecutionErrorReason.Validation, {
690+
actionId,
691+
status: 'error',
692+
message: err.message,
693+
retry: !!taskInfo,
694+
errorSource: TaskErrorSource.USER,
695+
});
696+
}
697+
698+
try {
688699
validatedConfig = validateConfig(actionType, config, validatorServices);
689700
validatedSecrets = validateSecrets(actionType, secrets, validatorServices);
690701
if (actionType.validate?.connector) {

x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/bedrock.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ export default function bedrockTest({ getService }: FtrProviderContext) {
267267
message:
268268
'error validating action params: [subAction]: expected value of type [string] but got [undefined]',
269269
retry: false,
270-
errorSource: TaskErrorSource.FRAMEWORK,
270+
errorSource: TaskErrorSource.USER,
271271
});
272272
});
273273

@@ -620,7 +620,7 @@ export default function bedrockTest({ getService }: FtrProviderContext) {
620620
expect(body).to.eql({
621621
status: 'error',
622622
connector_id: bedrockActionId,
623-
errorSource: TaskErrorSource.FRAMEWORK,
623+
errorSource: TaskErrorSource.USER,
624624
message:
625625
'error validating action params: [subAction]: expected value of type [string] but got [undefined]',
626626
retry: false,

x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/cases_webhook.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ export default function casesWebhookTest({ getService }: FtrProviderContext) {
272272
retry: false,
273273
message:
274274
'error validating action params: [subAction]: expected value to equal [pushToService]',
275-
errorSource: TaskErrorSource.FRAMEWORK,
275+
errorSource: TaskErrorSource.USER,
276276
});
277277
});
278278
});
@@ -291,7 +291,7 @@ export default function casesWebhookTest({ getService }: FtrProviderContext) {
291291
retry: false,
292292
message:
293293
'error validating action params: [subActionParams.incident.title]: expected value of type [string] but got [undefined]',
294-
errorSource: TaskErrorSource.FRAMEWORK,
294+
errorSource: TaskErrorSource.USER,
295295
});
296296
});
297297
});
@@ -318,7 +318,7 @@ export default function casesWebhookTest({ getService }: FtrProviderContext) {
318318
retry: false,
319319
message:
320320
'error validating action params: [subActionParams.incident.title]: expected value of type [string] but got [undefined]',
321-
errorSource: TaskErrorSource.FRAMEWORK,
321+
errorSource: TaskErrorSource.USER,
322322
});
323323
});
324324
});
@@ -347,7 +347,7 @@ export default function casesWebhookTest({ getService }: FtrProviderContext) {
347347
retry: false,
348348
message:
349349
'error validating action params: [subActionParams.comments]: types that failed validation:\n- [subActionParams.comments.0.0.commentId]: expected value of type [string] but got [undefined]\n- [subActionParams.comments.1]: expected value to equal [null]',
350-
errorSource: TaskErrorSource.FRAMEWORK,
350+
errorSource: TaskErrorSource.USER,
351351
});
352352
});
353353
});
@@ -375,7 +375,7 @@ export default function casesWebhookTest({ getService }: FtrProviderContext) {
375375
retry: false,
376376
message:
377377
'error validating action params: [subActionParams.comments]: types that failed validation:\n- [subActionParams.comments.0.0.comment]: expected value of type [string] but got [undefined]\n- [subActionParams.comments.1]: expected value to equal [null]',
378-
errorSource: TaskErrorSource.FRAMEWORK,
378+
errorSource: TaskErrorSource.USER,
379379
});
380380
});
381381
});

x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/d3security.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ export default function d3SecurityTest({ getService }: FtrProviderContext) {
183183
message:
184184
'error validating action params: [subAction]: expected value of type [string] but got [undefined]',
185185
retry: false,
186-
errorSource: TaskErrorSource.FRAMEWORK,
186+
errorSource: TaskErrorSource.USER,
187187
});
188188
});
189189

@@ -311,7 +311,7 @@ export default function d3SecurityTest({ getService }: FtrProviderContext) {
311311
message:
312312
'error validating action params: [subAction]: expected value of type [string] but got [undefined]',
313313
retry: false,
314-
errorSource: TaskErrorSource.FRAMEWORK,
314+
errorSource: TaskErrorSource.USER,
315315
});
316316
});
317317
});

x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/gemini.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ export default function geminiTest({ getService }: FtrProviderContext) {
243243
message:
244244
'error validating action params: [subAction]: expected value of type [string] but got [undefined]',
245245
retry: false,
246-
errorSource: TaskErrorSource.FRAMEWORK,
246+
errorSource: TaskErrorSource.USER,
247247
});
248248
});
249249

@@ -378,7 +378,7 @@ export default function geminiTest({ getService }: FtrProviderContext) {
378378
message:
379379
'error validating action params: [subAction]: expected value of type [string] but got [undefined]',
380380
retry: false,
381-
errorSource: TaskErrorSource.FRAMEWORK,
381+
errorSource: TaskErrorSource.USER,
382382
});
383383
});
384384
});

x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/jira.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ export default function jiraTest({ getService }: FtrProviderContext) {
262262
retry: false,
263263
message:
264264
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [getFields]\n- [1.subAction]: expected value to equal [getIncident]\n- [2.subAction]: expected value to equal [handshake]\n- [3.subAction]: expected value to equal [pushToService]\n- [4.subAction]: expected value to equal [issueTypes]\n- [5.subAction]: expected value to equal [fieldsByIssueType]\n- [6.subAction]: expected value to equal [issues]\n- [7.subAction]: expected value to equal [issue]',
265-
errorSource: TaskErrorSource.FRAMEWORK,
265+
errorSource: TaskErrorSource.USER,
266266
});
267267
});
268268
});
@@ -281,7 +281,7 @@ export default function jiraTest({ getService }: FtrProviderContext) {
281281
retry: false,
282282
message:
283283
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [getFields]\n- [1.subAction]: expected value to equal [getIncident]\n- [2.subAction]: expected value to equal [handshake]\n- [3.subActionParams.incident.summary]: expected value of type [string] but got [undefined]\n- [4.subAction]: expected value to equal [issueTypes]\n- [5.subAction]: expected value to equal [fieldsByIssueType]\n- [6.subAction]: expected value to equal [issues]\n- [7.subAction]: expected value to equal [issue]',
284-
errorSource: TaskErrorSource.FRAMEWORK,
284+
errorSource: TaskErrorSource.USER,
285285
});
286286
});
287287
});
@@ -308,7 +308,7 @@ export default function jiraTest({ getService }: FtrProviderContext) {
308308
retry: false,
309309
message:
310310
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [getFields]\n- [1.subAction]: expected value to equal [getIncident]\n- [2.subAction]: expected value to equal [handshake]\n- [3.subActionParams.incident.summary]: expected value of type [string] but got [undefined]\n- [4.subAction]: expected value to equal [issueTypes]\n- [5.subAction]: expected value to equal [fieldsByIssueType]\n- [6.subAction]: expected value to equal [issues]\n- [7.subAction]: expected value to equal [issue]',
311-
errorSource: TaskErrorSource.FRAMEWORK,
311+
errorSource: TaskErrorSource.USER,
312312
});
313313
});
314314
});
@@ -337,7 +337,7 @@ export default function jiraTest({ getService }: FtrProviderContext) {
337337
retry: false,
338338
message:
339339
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [getFields]\n- [1.subAction]: expected value to equal [getIncident]\n- [2.subAction]: expected value to equal [handshake]\n- [3.subActionParams.comments]: types that failed validation:\n - [subActionParams.comments.0.0.commentId]: expected value of type [string] but got [undefined]\n - [subActionParams.comments.1]: expected value to equal [null]\n- [4.subAction]: expected value to equal [issueTypes]\n- [5.subAction]: expected value to equal [fieldsByIssueType]\n- [6.subAction]: expected value to equal [issues]\n- [7.subAction]: expected value to equal [issue]',
340-
errorSource: TaskErrorSource.FRAMEWORK,
340+
errorSource: TaskErrorSource.USER,
341341
});
342342
});
343343
});
@@ -365,7 +365,7 @@ export default function jiraTest({ getService }: FtrProviderContext) {
365365
retry: false,
366366
message:
367367
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [getFields]\n- [1.subAction]: expected value to equal [getIncident]\n- [2.subAction]: expected value to equal [handshake]\n- [3.subActionParams.comments]: types that failed validation:\n - [subActionParams.comments.0.0.comment]: expected value of type [string] but got [undefined]\n - [subActionParams.comments.1]: expected value to equal [null]\n- [4.subAction]: expected value to equal [issueTypes]\n- [5.subAction]: expected value to equal [fieldsByIssueType]\n- [6.subAction]: expected value to equal [issues]\n- [7.subAction]: expected value to equal [issue]',
368-
errorSource: TaskErrorSource.FRAMEWORK,
368+
errorSource: TaskErrorSource.USER,
369369
});
370370
});
371371
});
@@ -394,7 +394,7 @@ export default function jiraTest({ getService }: FtrProviderContext) {
394394
retry: false,
395395
message:
396396
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [getFields]\n- [1.subAction]: expected value to equal [getIncident]\n- [2.subAction]: expected value to equal [handshake]\n- [3.subActionParams.incident.labels]: types that failed validation:\n - [subActionParams.incident.labels.0.0]: The label label with spaces cannot contain spaces\n - [subActionParams.incident.labels.1]: expected value to equal [null]\n- [4.subAction]: expected value to equal [issueTypes]\n- [5.subAction]: expected value to equal [fieldsByIssueType]\n- [6.subAction]: expected value to equal [issues]\n- [7.subAction]: expected value to equal [issue]',
397-
errorSource: TaskErrorSource.FRAMEWORK,
397+
errorSource: TaskErrorSource.USER,
398398
});
399399
});
400400
});
@@ -430,7 +430,7 @@ export default function jiraTest({ getService }: FtrProviderContext) {
430430
retry: false,
431431
message:
432432
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [getFields]\n- [1.subAction]: expected value to equal [getIncident]\n- [2.subAction]: expected value to equal [handshake]\n- [3.subActionParams.incident.otherFields]: types that failed validation:\n - [subActionParams.incident.otherFields.0]: A maximum of 20 fields in otherFields can be defined at a time.\n - [subActionParams.incident.otherFields.1]: expected value to equal [null]\n- [4.subAction]: expected value to equal [issueTypes]\n- [5.subAction]: expected value to equal [fieldsByIssueType]\n- [6.subAction]: expected value to equal [issues]\n- [7.subAction]: expected value to equal [issue]',
433-
errorSource: TaskErrorSource.FRAMEWORK,
433+
errorSource: TaskErrorSource.USER,
434434
});
435435
});
436436
});
@@ -461,7 +461,7 @@ export default function jiraTest({ getService }: FtrProviderContext) {
461461
retry: false,
462462
message:
463463
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [getFields]\n- [1.subAction]: expected value to equal [getIncident]\n- [2.subAction]: expected value to equal [handshake]\n- [3.subActionParams.incident.otherFields]: types that failed validation:\n - [subActionParams.incident.otherFields.0.key("summary")]: The following properties cannot be defined inside otherFields: summary.\n - [subActionParams.incident.otherFields.1]: expected value to equal [null]\n- [4.subAction]: expected value to equal [issueTypes]\n- [5.subAction]: expected value to equal [fieldsByIssueType]\n- [6.subAction]: expected value to equal [issues]\n- [7.subAction]: expected value to equal [issue]',
464-
errorSource: TaskErrorSource.FRAMEWORK,
464+
errorSource: TaskErrorSource.USER,
465465
});
466466
});
467467
});

x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/openai.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ export default function genAiTest({ getService }: FtrProviderContext) {
251251
message:
252252
'error validating action params: [subAction]: expected value of type [string] but got [undefined]',
253253
retry: false,
254-
errorSource: TaskErrorSource.FRAMEWORK,
254+
errorSource: TaskErrorSource.USER,
255255
});
256256
});
257257

@@ -483,7 +483,7 @@ export default function genAiTest({ getService }: FtrProviderContext) {
483483
message:
484484
'error validating action params: [subAction]: expected value of type [string] but got [undefined]',
485485
retry: false,
486-
errorSource: TaskErrorSource.FRAMEWORK,
486+
errorSource: TaskErrorSource.USER,
487487
});
488488
});
489489

x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/actions/connector_types/servicenow_itom.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ export default function serviceNowITOMTest({ getService }: FtrProviderContext) {
440440
connector_id: simulatedActionId,
441441
status: 'error',
442442
retry: false,
443-
errorSource: TaskErrorSource.FRAMEWORK,
443+
errorSource: TaskErrorSource.USER,
444444
message:
445445
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [addEvent]\n- [1.subAction]: expected value to equal [getChoices]',
446446
});
@@ -459,7 +459,7 @@ export default function serviceNowITOMTest({ getService }: FtrProviderContext) {
459459
connector_id: simulatedActionId,
460460
status: 'error',
461461
retry: false,
462-
errorSource: TaskErrorSource.FRAMEWORK,
462+
errorSource: TaskErrorSource.USER,
463463
message:
464464
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [addEvent]\n- [1.subAction]: expected value to equal [getChoices]',
465465
});
@@ -482,7 +482,7 @@ export default function serviceNowITOMTest({ getService }: FtrProviderContext) {
482482
connector_id: simulatedActionId,
483483
status: 'error',
484484
retry: false,
485-
errorSource: TaskErrorSource.FRAMEWORK,
485+
errorSource: TaskErrorSource.USER,
486486
message:
487487
'error validating action params: types that failed validation:\n- [0.subAction]: expected value to equal [addEvent]\n- [1.subActionParams.fields]: expected value of type [array] but got [undefined]',
488488
});

0 commit comments

Comments
 (0)