Beispiel #1
0
    def __init__(self, sd_id, sd_params):
        """
        **arguments**
            *sd_id*
                SD-IDs are case-sensitive and uniquely identify the type and purpose
                of the SD-ELEMENT.

            *sd_params*
                Key/value pairs attached to this SD-ELEMENT. This can be any iterable
                that yields tuples, a dict or a :class:`~loggerglue.utils.multidict.OrderedMultiDict`
                (An SD-PARAM key may be repeated multiple times inside an SD-ELEMENT)

        **attributes**
            *id*
                SD-ID for this structured data element.

            *sd_params*
                Key/value pairs attached to this SD-ELEMENT, represented as
                a OrderedMultiDict.

            *params*
                Key/value pairs attached to this SD-ELEMENT, represented as
                a class instance (for convenience, so that parameters can
                be addressed with `elmt.params.origin`). If there are multiple
                values for a key, the *last* element is returned.

        """
        self.id = sd_id
        self.sd_params = OrderedMultiDict(sd_params)
        self.params = Params(self.sd_params)
Beispiel #2
0
 def test_init_with_dict(self):
     e = SDElement('exampleSDID@32473', {'param1': 1, 'param2': 2})
     self.assertEqual('exampleSDID@32473', e.id)
     self.assertEqual(OrderedMultiDict({
         'param1': 1,
         'param2': 2
     }), e.sd_params)
Beispiel #3
0
 def parse(cls, parsed):
     sd = getattr(parsed, 'STRUCTURED_DATA', None)
     if sd is None or sd == '-':
         return None
     sd_id = parsed.STRUCTURED_DATA.SD_ID
     params = OrderedMultiDict()
     for i in parsed.STRUCTURED_DATA.SD_PARAMS:
         params[i.SD_PARAM.SD_PARAM_NAME] = \
                 i.SD_PARAM.SD_PARAM_VALUE.decode('utf-8')
     return StructuredData(sd_id, params)
Beispiel #4
0
 def parse(cls, parsed):
     sd = getattr(parsed, 'STRUCTURED_DATA', None)
     if sd is None or sd == '-':
         return None
     elements = []
     for se in parsed.SD_ELEMENTS:
         sd_id = se.SD_ID
         params = OrderedMultiDict()
         for i in se.SD_PARAMS:
             params[i.SD_PARAM.SD_PARAM_NAME] = \
                     i.SD_PARAM.SD_PARAM_VALUE.decode('utf-8')
         elements.append(SDElement(sd_id, params))
     return StructuredData(elements)
Beispiel #5
0
    def parse(cls, parsed):
        sd = getattr(parsed, 'STRUCTURED_DATA', None)
        if sd is None or sd == '-':
            return None

        # Don't know what is changed in py3 version, but according to unittest
        # it returns non-string value.
        if list(sd) == ['-']:
            return None

        sd_id = parsed.STRUCTURED_DATA.SD_ID
        params = OrderedMultiDict()
        for i in parsed.STRUCTURED_DATA.SD_PARAMS:
            value = i.SD_PARAM.SD_PARAM_VALUE
            if isinstance(value, bytes):
                value = value.decode('utf-8')
            params[i.SD_PARAM.SD_PARAM_NAME] = value
        return StructuredData(sd_id, params)
Beispiel #6
0
 def test_init_with_tuples(self):
     e = SDElement('exampleSDID@32473', [('param1', 1), ('param2', 2)])
     self.assertEqual('exampleSDID@32473', e.id)
     self.assertEqual(OrderedMultiDict([('param1', 1), ('param2', 2)]),
                      e.sd_params)
     self.assertEqual('[exampleSDID@32473 param1="1" param2="2"]', str(e))