MCPcopy Create free account
hub / github.com/StackStorm/st2 / validate_trigger_parameters

Function validate_trigger_parameters

st2common/st2common/validators/api/reactor.py:71–125  ·  view source on GitHub ↗

This function validates parameters for system and user-defined triggers. :param trigger_type_ref: Reference of a trigger type. :type trigger_type_ref: ``str`` :param parameters: Trigger parameters. :type parameters: ``dict`` :return: Cleaned parameters on success, None if

(trigger_type_ref, parameters)

Source from the content-addressed store, hash-verified

69
70
71def validate_trigger_parameters(trigger_type_ref, parameters):
72 """
73 This function validates parameters for system and user-defined triggers.
74
75 :param trigger_type_ref: Reference of a trigger type.
76 :type trigger_type_ref: ``str``
77
78 :param parameters: Trigger parameters.
79 :type parameters: ``dict``
80
81 :return: Cleaned parameters on success, None if validation is not performed.
82 """
83 if not trigger_type_ref:
84 return None
85
86 is_system_trigger = trigger_type_ref in SYSTEM_TRIGGER_TYPES
87 if is_system_trigger:
88 # System trigger
89 parameters_schema = SYSTEM_TRIGGER_TYPES[trigger_type_ref]["parameters_schema"]
90 else:
91 trigger_type_db = triggers.get_trigger_type_db(trigger_type_ref)
92 if not trigger_type_db:
93 # Trigger doesn't exist in the database
94 return None
95
96 parameters_schema = getattr(trigger_type_db, "parameters_schema", {})
97 if not parameters_schema:
98 # Parameters schema not defined for the this trigger
99 return None
100
101 # We only validate non-system triggers if config option is set (enabled)
102 if not is_system_trigger and not cfg.CONF.system.validate_trigger_parameters:
103 LOG.debug(
104 'Got non-system trigger "%s", but trigger parameter validation for non-system'
105 "triggers is disabled, skipping validation." % (trigger_type_ref)
106 )
107 return None
108
109 cleaned = util_schema.validate(
110 instance=parameters,
111 schema=parameters_schema,
112 cls=util_schema.CustomValidator,
113 use_default=True,
114 allow_default_none=True,
115 )
116
117 # Additional validation for CronTimer trigger
118 # TODO: If we need to add more checks like this we should consider abstracting this out.
119 if trigger_type_ref == CRON_TIMER_TRIGGER_REF:
120 # Validate that the user provided parameters are valid. This is required since JSON schema
121 # allows arbitrary strings, but not any arbitrary string is a valid CronTrigger argument
122 # Note: Constructor throws ValueError on invalid parameters
123 CronTrigger(**parameters)
124
125 return cleaned
126
127
128def validate_trigger_payload(

Callers

nothing calls this directly

Calls 1

validateMethod · 0.45

Tested by

no test coverage detected