(cls, rule)
| 185 | |
| 186 | @classmethod |
| 187 | def to_model(cls, rule): |
| 188 | kwargs = {} |
| 189 | kwargs["name"] = getattr(rule, "name", None) |
| 190 | kwargs["description"] = getattr(rule, "description", None) |
| 191 | |
| 192 | # Validate trigger parameters |
| 193 | # Note: This must happen before we create a trigger, otherwise create trigger could fail |
| 194 | # with a cryptic error |
| 195 | trigger = getattr(rule, "trigger", {}) |
| 196 | trigger_type_ref = trigger.get("type", None) |
| 197 | parameters = trigger.get("parameters", {}) |
| 198 | |
| 199 | validator.validate_trigger_parameters( |
| 200 | trigger_type_ref=trigger_type_ref, parameters=parameters |
| 201 | ) |
| 202 | |
| 203 | # Create a trigger for the provided rule |
| 204 | trigger_db = TriggerService.create_trigger_db_from_rule(rule) |
| 205 | kwargs["trigger"] = reference.get_str_resource_ref_from_model(trigger_db) |
| 206 | |
| 207 | kwargs["pack"] = getattr(rule, "pack", DEFAULT_PACK_NAME) |
| 208 | kwargs["ref"] = ResourceReference.to_string_reference( |
| 209 | pack=kwargs["pack"], name=kwargs["name"] |
| 210 | ) |
| 211 | |
| 212 | # Validate criteria |
| 213 | kwargs["criteria"] = dict(getattr(rule, "criteria", {})) |
| 214 | validator.validate_criteria(kwargs["criteria"]) |
| 215 | |
| 216 | kwargs["action"] = ActionExecutionSpecDB( |
| 217 | ref=rule.action["ref"], parameters=rule.action.get("parameters", {}) |
| 218 | ) |
| 219 | |
| 220 | rule_type = dict(getattr(rule, "type", {})) |
| 221 | if rule_type: |
| 222 | kwargs["type"] = RuleTypeSpecDB( |
| 223 | ref=rule_type["ref"], parameters=rule_type.get("parameters", {}) |
| 224 | ) |
| 225 | |
| 226 | kwargs["enabled"] = getattr(rule, "enabled", False) |
| 227 | kwargs["context"] = getattr(rule, "context", dict()) |
| 228 | kwargs["tags"] = TagsHelper.to_model(getattr(rule, "tags", [])) |
| 229 | kwargs["metadata_file"] = getattr(rule, "metadata_file", None) |
| 230 | |
| 231 | model = cls.model(**kwargs) |
| 232 | return model |
| 233 | |
| 234 | |
| 235 | class RuleViewAPI(RuleAPI): |
nothing calls this directly
no test coverage detected