def __init__(self, trigger_rule_type, configuration): """Creates an ingest trigger from the given configuration :param trigger_rule_type: The trigger rule type :type trigger_rule_type: str :param configuration: The ingest trigger configuration :type configuration: dict :raises trigger.configuration.exceptions.InvalidTriggerRule: If the configuration is invalid """ super(IngestTriggerRuleConfiguration, self).__init__(trigger_rule_type, configuration) try: validate(configuration, INGEST_TRIGGER_SCHEMA) except ValidationError as validation_error: raise InvalidTriggerRule(validation_error) self._populate_default_values() version = self._dict['version'] if version != '1.0': raise InvalidTriggerRule('%s is an unsupported version number' % version)
def __init__(self, trigger_rule_type, configuration): """Creates an ingest trigger from the given configuration :param trigger_rule_type: The trigger rule type :type trigger_rule_type: str :param configuration: The ingest trigger configuration :type configuration: dict :raises trigger.configuration.exceptions.InvalidTriggerRule: If the configuration is invalid """ super(IngestTriggerRuleConfiguration, self).__init__(trigger_rule_type, configuration) try: validate(configuration, INGEST_TRIGGER_SCHEMA) except ValidationError as validation_error: raise InvalidTriggerRule(validation_error) if 'version' not in self._dict: self._dict['version'] = SCHEMA_VERSION if self._dict['version'] != SCHEMA_VERSION: self.convert_ingest_trigger_rule_config() self._populate_default_values() self._validate_data_types()
def validate(self): '''See :meth:`trigger.configuration.trigger_rule.TriggerRuleConfiguration.validate` ''' workspace_name = self.get_workspace_name() if Workspace.objects.filter(name=workspace_name).count() == 0: raise InvalidTriggerRule('%s is an invalid workspace name' % workspace_name)
def _validate_data_types(self): """Cross-checks each of the three data_type lists to ensure no rules contradict one another. """ inclusive_data_tags = set(self._dict['condition']['data_types'] + self._dict['condition']['any_of_data_types']) for exclude_tag in self._dict['condition']['not_data_types']: if exclude_tag in inclusive_data_tags: raise InvalidTriggerRule( "The provided data_type rules for tag `%s` contain a contradiction" % exclude_tag)
def validate(self): """Validates the trigger rule configuration. This is a more thorough validation than the basic schema checks performed in trigger rule constructors and may include database queries. :raises trigger.configuration.exceptions.InvalidTriggerRule: If the configuration is invalid """ workspace_name = self.get_workspace_name() if Workspace.objects.filter(name=workspace_name).count() == 0: raise InvalidTriggerRule('%s is an invalid workspace name' % workspace_name)