Exemplo n.º 1
0
    def test_system_transform(self):
        k5 = KeyValuePair.add_or_update(KeyValuePairDB(name='k5', value='v5'))
        k6 = KeyValuePair.add_or_update(KeyValuePairDB(name='k6', value='v6'))
        k7 = KeyValuePair.add_or_update(KeyValuePairDB(name='k7', value='v7'))
        k8 = KeyValuePair.add_or_update(
            KeyValuePairDB(name='k8', value='v8', scope=FULL_SYSTEM_SCOPE))

        try:
            transformer = datatransform.get_transformer(PAYLOAD)
            mapping = {
                'ip5': '{{trigger.k2}}-static',
                'ip6': '{{st2kv.system.k6}}-static',
                'ip7': '{{st2kv.system.k7}}-static'
            }
            result = transformer(mapping)
            expected = {
                'ip5': 'v2-static',
                'ip6': 'v6-static',
                'ip7': 'v7-static'
            }
            self.assertEqual(result, expected)
        finally:
            KeyValuePair.delete(k5)
            KeyValuePair.delete(k6)
            KeyValuePair.delete(k7)
            KeyValuePair.delete(k8)
Exemplo n.º 2
0
Arquivo: filter.py Projeto: miqui/st2
    def filter(self):
        LOG.info('Validating rule %s for %s.', self.rule.id,
                 self.trigger['name'])
        if not self.rule.enabled:
            return False

        criteria = self.rule.criteria
        is_rule_applicable = True

        if criteria and not self.trigger_instance.payload:
            return False

        transform = get_transformer(self.trigger_instance.payload)

        LOG.debug('Trigger payload: %s', self.trigger_instance.payload)
        for criterion_k in criteria.keys():
            criterion_v = criteria[criterion_k]
            is_rule_applicable = self._check_criterion(criterion_k,
                                                       criterion_v, transform)
            if not is_rule_applicable:
                break

        if not is_rule_applicable:
            LOG.debug('Rule %s not applicable for %s.', self.rule.id,
                      self.trigger['name'])

        return is_rule_applicable
Exemplo n.º 3
0
 def test_hypenated_payload_transform(self):
     payload = {'headers': {'hypenated-header': 'dont-care'}, 'k2': 'v2'}
     transformer = datatransform.get_transformer(payload)
     mapping = {'ip1': '{{trigger.headers[\'hypenated-header\']}}-static',
                'ip2': '{{trigger.k2}} static'}
     result = transformer(mapping)
     self.assertEqual(result, {'ip1': 'dont-care-static', 'ip2': 'v2 static'})
Exemplo n.º 4
0
 def test_hypenated_payload_transform(self):
     payload = {'headers': {'hypenated-header': 'dont-care'}, 'k2': 'v2'}
     transformer = datatransform.get_transformer(payload)
     mapping = {'ip1': '{{trigger.headers[\'hypenated-header\']}}-static',
                'ip2': '{{trigger.k2}} static'}
     result = transformer(mapping)
     self.assertEqual(result, {'ip1': 'dont-care-static', 'ip2': 'v2 static'})
Exemplo n.º 5
0
    def filter(self):
        LOG.info('Validating rule %s for %s.', self.rule.id, self.trigger['name'])
        if not self.rule.enabled:
            return False

        criteria = RuleAPI.from_model(self.rule).criteria
        is_rule_applicable = True

        if criteria and not self.trigger_instance.payload:
            return False

        transform = get_transformer(self.trigger_instance.payload)

        LOG.debug('Trigger payload: %s', self.trigger_instance.payload)
        for criterion_k in criteria.keys():
            criterion_v = criteria[criterion_k]
            is_rule_applicable = self._check_criterion(criterion_k, criterion_v, transform)
            if not is_rule_applicable:
                break

        if not is_rule_applicable:
            LOG.debug('Rule %s not applicable for %s.', self.rule.id,
                      self.trigger['name'])

        return is_rule_applicable
Exemplo n.º 6
0
 def test_payload_transform(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {
         'ip1': '{{trigger.k1}}-static',
         'ip2': '{{trigger.k2}} static'
     }
     result = transformer(mapping)
     self.assertEqual(result, {'ip1': 'v1-static', 'ip2': 'v2 static'})
Exemplo n.º 7
0
 def test_payload_transform_complex_type(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {"complex_dict": {"bool": True, "int": 666, "str": "{{trigger.k1}}-string"}}
     result = transformer(mapping)
     expected = {"complex_dict": {"bool": True, "int": 666, "str": "v1-string"}}
     self.assertEqual(result, expected)
     mapping = {"simple_list": [1, 2, 3]}
     result = transformer(mapping)
     self.assertEqual(result, mapping)
Exemplo n.º 8
0
 def test_payload_transform_complex_type(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {'complex_dict': {'bool': True, 'int': 666, 'str': '{{trigger.k1}}-string'}}
     result = transformer(mapping)
     expected = {'complex_dict': {'bool': True, 'int': 666, 'str': 'v1-string'}}
     self.assertEqual(result, expected)
     mapping = {'simple_list': [1, 2, 3]}
     result = transformer(mapping)
     self.assertEqual(result, mapping)
Exemplo n.º 9
0
    def __init__(self, trigger_instance, rule):
        self.trigger_instance = trigger_instance
        self.rule = rule

        try:
            self.data_transformer = get_transformer(trigger_instance.payload)
        except Exception as e:
            message = ('Failed to template-ize trigger payload: %s. If the payload contains '
                       'special characters such as "{{" which dont\'t reference value in '
                       'a datastore, those characters need to be escaped' % (str(e)))
            raise ValueError(message)
Exemplo n.º 10
0
    def __init__(self, trigger_instance, rule):
        self.trigger_instance = trigger_instance
        self.rule = rule

        try:
            self.data_transformer = get_transformer(trigger_instance.payload)
        except Exception as e:
            message = (
                'Failed to template-ize trigger payload: %s. If the payload contains '
                'special characters such as "{{" which dont\'t reference value in '
                'a datastore, those characters need to be escaped' % (str(e)))
            raise ValueError(message)
Exemplo n.º 11
0
 def test_system_transform(self):
     k5 = KeyValuePair.add_or_update(KeyValuePairDB(name="k5", value="v5"))
     k6 = KeyValuePair.add_or_update(KeyValuePairDB(name="k6", value="v6"))
     k7 = KeyValuePair.add_or_update(KeyValuePairDB(name="k7", value="v7"))
     try:
         transformer = datatransform.get_transformer(PAYLOAD)
         mapping = {"ip5": "{{trigger.k2}}-static", "ip6": "{{system.k6}}-static", "ip7": "{{system.k7}}-static"}
         result = transformer(mapping)
         expected = {"ip5": "v2-static", "ip6": "v6-static", "ip7": "v7-static"}
         self.assertEqual(result, expected)
     finally:
         KeyValuePair.delete(k5)
         KeyValuePair.delete(k6)
         KeyValuePair.delete(k7)
Exemplo n.º 12
0
 def test_system_transform(self):
     k5 = KeyValuePair.add_or_update(KeyValuePairDB(name='k5', value='v5'))
     k6 = KeyValuePair.add_or_update(KeyValuePairDB(name='k6', value='v6'))
     k7 = KeyValuePair.add_or_update(KeyValuePairDB(name='k7', value='v7'))
     try:
         transformer = datatransform.get_transformer(PAYLOAD_WITH_KVP)
         mapping = {'ip5': '{{trigger.k5}}-static',
                    'ip6': '{{system.k6}}-static',
                    'ip7': '{{system.k7}}-static'}
         result = transformer(mapping)
         expected = {'ip5': 'v5-static',
                     'ip6': 'v6-static',
                     'ip7': 'v7-static'}
         self.assertEqual(result, expected)
     finally:
         KeyValuePair.delete(k5)
         KeyValuePair.delete(k6)
         KeyValuePair.delete(k7)
Exemplo n.º 13
0
 def test_system_transform(self):
     k5 = KeyValuePair.add_or_update(KeyValuePairDB(name='k5', value='v5'))
     k6 = KeyValuePair.add_or_update(KeyValuePairDB(name='k6', value='v6'))
     k7 = KeyValuePair.add_or_update(KeyValuePairDB(name='k7', value='v7'))
     try:
         transformer = datatransform.get_transformer(PAYLOAD_WITH_KVP)
         mapping = {'ip5': '{{trigger.k5}}-static',
                    'ip6': '{{system.k6}}-static',
                    'ip7': '{{system.k7}}-static'}
         result = transformer(mapping)
         expected = {'ip5': 'v5-static',
                     'ip6': 'v6-static',
                     'ip7': 'v7-static'}
         self.assertEqual(result, expected)
     finally:
         KeyValuePair.delete(k5)
         KeyValuePair.delete(k6)
         KeyValuePair.delete(k7)
Exemplo n.º 14
0
 def test_payload_transform_complex_type(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {
         'complex_dict': {
             'bool': True,
             'int': 666,
             'str': '{{trigger.k1}}-string'
         }
     }
     result = transformer(mapping)
     expected = {
         'complex_dict': {
             'bool': True,
             'int': 666,
             'str': 'v1-string'
         }
     }
     self.assertEqual(result, expected)
     mapping = {'simple_list': [1, 2, 3]}
     result = transformer(mapping)
     self.assertEqual(result, mapping)
Exemplo n.º 15
0
    def test_system_transform(self):
        k5 = KeyValuePair.add_or_update(KeyValuePairDB(name='k5', value='v5'))
        k6 = KeyValuePair.add_or_update(KeyValuePairDB(name='k6', value='v6'))
        k7 = KeyValuePair.add_or_update(KeyValuePairDB(name='k7', value='v7'))
        k8 = KeyValuePair.add_or_update(KeyValuePairDB(name='k8', value='v8',
                                                       scope=FULL_SYSTEM_SCOPE))

        try:
            transformer = datatransform.get_transformer(PAYLOAD)
            mapping = {'ip5': '{{trigger.k2}}-static',
                       'ip6': '{{st2kv.system.k6}}-static',
                       'ip7': '{{st2kv.system.k7}}-static',
                       'ip8': '{{system.k8}}-static'}
            result = transformer(mapping)
            expected = {'ip5': 'v2-static',
                        'ip6': 'v6-static',
                        'ip7': 'v7-static',
                        'ip8': 'v8-static'}
            self.assertEqual(result, expected)
        finally:
            KeyValuePair.delete(k5)
            KeyValuePair.delete(k6)
            KeyValuePair.delete(k7)
            KeyValuePair.delete(k8)
Exemplo n.º 16
0
 def test_payload_transform(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {'ip1': '{{trigger.k1}}-static',
                'ip2': '{{trigger.k2}} static'}
     result = transformer(mapping)
     self.assertEqual(result, {'ip1': 'v1-static', 'ip2': 'v2 static'})
Exemplo n.º 17
0
 def test_payload_transform_bool_type(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {'bool': True}
     result = transformer(mapping)
     self.assertEqual(result, {'bool': True})
Exemplo n.º 18
0
 def test_payload_transofrm_int_type(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {'int': 666}
     result = transformer(mapping)
     self.assertEqual(result, {'int': 666})
Exemplo n.º 19
0
 def __init__(self, trigger_instance, rule):
     self.trigger_instance = trigger_instance
     self.rule = rule
     self.data_transformer = get_transformer(trigger_instance.payload)
Exemplo n.º 20
0
 def test_payload_transform(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {"ip1": "{{trigger.k1}}-static", "ip2": "{{trigger.k2}} static"}
     result = transformer(mapping)
     self.assertEqual(result, {"ip1": "v1-static", "ip2": "v2 static"})
Exemplo n.º 21
0
 def test_hypenated_payload_transform(self):
     payload = {"headers": {"hypenated-header": "dont-care"}, "k2": "v2"}
     transformer = datatransform.get_transformer(payload)
     mapping = {"ip1": "{{trigger.headers['hypenated-header']}}-static", "ip2": "{{trigger.k2}} static"}
     result = transformer(mapping)
     self.assertEqual(result, {"ip1": "dont-care-static", "ip2": "v2 static"})
Exemplo n.º 22
0
 def test_payload_transform_bool_type(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {'bool': True}
     result = transformer(mapping)
     self.assertEqual(result, {'bool': True})
Exemplo n.º 23
0
 def __init__(self, trigger_instance, rule):
     self.trigger_instance = trigger_instance
     self.rule = rule
     self.data_transformer = get_transformer(trigger_instance.payload)
Exemplo n.º 24
0
 def test_payload_transofrm_int_type(self):
     transformer = datatransform.get_transformer(PAYLOAD)
     mapping = {'int': 666}
     result = transformer(mapping)
     self.assertEqual(result, {'int': 666})