def to_model(cls, rule): name = getattr(rule, 'name', None) description = getattr(rule, 'description', None) # Create a trigger for the provided rule trigger_db = TriggerService.create_trigger_db_from_rule(rule) trigger = reference.get_str_resource_ref_from_model(trigger_db) criteria = dict(getattr(rule, 'criteria', {})) pack = getattr(rule, 'pack', DEFAULT_PACK_NAME) ref = ResourceReference.to_string_reference(pack=pack, name=name) # Validate criteria validator.validate_criteria(criteria) # Validate trigger parameters validator.validate_trigger_parameters(trigger_db=trigger_db) action = ActionExecutionSpecDB(ref=rule.action['ref'], parameters=rule.action['parameters']) enabled = rule.enabled tags = TagsHelper.to_model(getattr(rule, 'tags', [])) model = cls.model(name=name, description=description, pack=pack, ref=ref, trigger=trigger, criteria=criteria, action=action, enabled=enabled, tags=tags) return model
def _create_save_rule(trigger, action=None, enabled=True): name = 'rule-1' pack = 'default' ref = ResourceReference.to_string_reference(name=name, pack=pack) created = RuleDB(name=name, pack=pack, ref=ref) created.description = '' created.enabled = enabled created.trigger = reference.get_str_resource_ref_from_model(trigger) created.criteria = {} created.action = ActionExecutionSpecDB() action_ref = ResourceReference(pack=action.pack, name=action.name).ref created.action.ref = action_ref created.action.pack = action.pack created.action.parameters = {} return Rule.add_or_update(created)
def to_model(cls, rule): kwargs = {} kwargs["name"] = getattr(rule, "name", None) kwargs["description"] = getattr(rule, "description", None) # Validate trigger parameters # Note: This must happen before we create a trigger, otherwise create trigger could fail # with a cryptic error trigger = getattr(rule, "trigger", {}) trigger_type_ref = trigger.get("type", None) parameters = trigger.get("parameters", {}) validator.validate_trigger_parameters( trigger_type_ref=trigger_type_ref, parameters=parameters ) # Create a trigger for the provided rule trigger_db = TriggerService.create_trigger_db_from_rule(rule) kwargs["trigger"] = reference.get_str_resource_ref_from_model(trigger_db) kwargs["pack"] = getattr(rule, "pack", DEFAULT_PACK_NAME) kwargs["ref"] = ResourceReference.to_string_reference( pack=kwargs["pack"], name=kwargs["name"] ) # Validate criteria kwargs["criteria"] = dict(getattr(rule, "criteria", {})) validator.validate_criteria(kwargs["criteria"]) kwargs["action"] = ActionExecutionSpecDB( ref=rule.action["ref"], parameters=rule.action.get("parameters", {}) ) rule_type = dict(getattr(rule, "type", {})) if rule_type: kwargs["type"] = RuleTypeSpecDB( ref=rule_type["ref"], parameters=rule_type.get("parameters", {}) ) kwargs["enabled"] = getattr(rule, "enabled", False) kwargs["context"] = getattr(rule, "context", dict()) kwargs["tags"] = TagsHelper.to_model(getattr(rule, "tags", [])) kwargs["metadata_file"] = getattr(rule, "metadata_file", None) model = cls.model(**kwargs) return model
def to_model(cls, rule): kwargs = {} kwargs['name'] = getattr(rule, 'name', None) kwargs['description'] = getattr(rule, 'description', None) # Validate trigger parameters # Note: This must happen before we create a trigger, otherwise create trigger could fail # with a cryptic error trigger = getattr(rule, 'trigger', {}) trigger_type_ref = trigger.get('type', None) parameters = trigger.get('parameters', {}) validator.validate_trigger_parameters( trigger_type_ref=trigger_type_ref, parameters=parameters) # Create a trigger for the provided rule trigger_db = TriggerService.create_trigger_db_from_rule(rule) kwargs['trigger'] = reference.get_str_resource_ref_from_model( trigger_db) kwargs['pack'] = getattr(rule, 'pack', DEFAULT_PACK_NAME) kwargs['ref'] = ResourceReference.to_string_reference( pack=kwargs['pack'], name=kwargs['name']) # Validate criteria kwargs['criteria'] = dict(getattr(rule, 'criteria', {})) validator.validate_criteria(kwargs['criteria']) kwargs['action'] = ActionExecutionSpecDB(ref=rule.action['ref'], parameters=rule.action.get( 'parameters', {})) rule_type = dict(getattr(rule, 'type', {})) if rule_type: kwargs['type'] = RuleTypeSpecDB(ref=rule_type['ref'], parameters=rule_type.get( 'parameters', {})) kwargs['enabled'] = getattr(rule, 'enabled', False) kwargs['context'] = getattr(rule, 'context', dict()) kwargs['tags'] = TagsHelper.to_model(getattr(rule, 'tags', [])) kwargs['metadata_file'] = getattr(rule, 'metadata_file', None) model = cls.model(**kwargs) return model
def to_model(cls, rule): model = super(cls, cls).to_model(rule) trigger_db = TriggerService.create_trigger_db_from_rule(rule) model.trigger = reference.get_str_resource_ref_from_model(trigger_db) model.criteria = dict(getattr(rule, 'criteria', {})) model.pack = str(rule.pack) model.ref = ResourceReference.to_string_reference(pack=model.pack, name=model.name) # Validate criteria validator.validate_criteria(model.criteria) # Validate trigger parameters validator.validate_trigger_parameters(trigger_db=trigger_db) model.action = ActionExecutionSpecDB() model.action.ref = rule.action['ref'] model.action.parameters = rule.action['parameters'] model.enabled = rule.enabled model.tags = TagsHelper.to_model(getattr(rule, 'tags', [])) return model
def to_model(cls, rule): kwargs = {} kwargs['name'] = getattr(rule, 'name', None) kwargs['description'] = getattr(rule, 'description', None) # Create a trigger for the provided rule trigger_db = TriggerService.create_trigger_db_from_rule(rule) kwargs['trigger'] = reference.get_str_resource_ref_from_model( trigger_db) # Validate trigger parameters validator.validate_trigger_parameters(trigger_db=trigger_db) kwargs['pack'] = getattr(rule, 'pack', DEFAULT_PACK_NAME) kwargs['ref'] = ResourceReference.to_string_reference( pack=kwargs['pack'], name=kwargs['name']) # Validate criteria kwargs['criteria'] = dict(getattr(rule, 'criteria', {})) validator.validate_criteria(kwargs['criteria']) kwargs['action'] = ActionExecutionSpecDB(ref=rule.action['ref'], parameters=rule.action.get( 'parameters', {})) rule_type = dict(getattr(rule, 'type', {})) if rule_type: kwargs['type'] = RuleTypeSpecDB(ref=rule_type['ref'], parameters=rule_type.get( 'parameters', {})) kwargs['enabled'] = getattr(rule, 'enabled', False) kwargs['tags'] = TagsHelper.to_model(getattr(rule, 'tags', [])) model = cls.model(**kwargs) return model
'bool': True, 'int': 1, 'float': 0.8 }) MOCK_ACTION = ActionDB(id=bson.ObjectId(), pack='wolfpack', name='action-test-1.name') MOCK_RULE_1 = RuleDB( id=bson.ObjectId(), pack='wolfpack', name='some1', trigger=reference.get_str_resource_ref_from_model(MOCK_TRIGGER), criteria={}, action=ActionExecutionSpecDB(ref="somepack.someaction")) MOCK_RULE_2 = RuleDB( id=bson.ObjectId(), pack='wolfpack', name='some2', trigger=reference.get_str_resource_ref_from_model(MOCK_TRIGGER), criteria={}, action=ActionExecutionSpecDB(ref="somepack.someaction")) @mock.patch.object(reference, 'get_model_by_resource_ref', mock.MagicMock(return_value=MOCK_TRIGGER)) class FilterTest(DbTestCase): def test_empty_criteria(self): rule = MOCK_RULE_1
'bool': True, 'int': 1, 'float': 0.8 } MOCK_TRIGGER_INSTANCE.occurrence_time = date_utils.get_datetime_utc_now() MOCK_ACTION = ActionDB() MOCK_ACTION.id = bson.ObjectId() MOCK_ACTION.name = 'action-test-1.name' MOCK_RULE_1 = RuleDB() MOCK_RULE_1.id = bson.ObjectId() MOCK_RULE_1.name = "some1" MOCK_RULE_1.trigger = reference.get_str_resource_ref_from_model(MOCK_TRIGGER) MOCK_RULE_1.criteria = {} MOCK_RULE_1.action = ActionExecutionSpecDB(ref="somepack.someaction") MOCK_RULE_2 = RuleDB() MOCK_RULE_2.id = bson.ObjectId() MOCK_RULE_1.name = "some2" MOCK_RULE_2.trigger = reference.get_str_resource_ref_from_model(MOCK_TRIGGER) MOCK_RULE_2.criteria = {} MOCK_RULE_2.action = ActionExecutionSpecDB(ref="somepack.someaction") @mock.patch.object(reference, 'get_model_by_resource_ref', mock.MagicMock(return_value=MOCK_TRIGGER)) class FilterTest(DbTestCase): def test_empty_criteria(self): rule = MOCK_RULE_1 rule.criteria = {}