Beispiel #1
0
    def record_metering_data(self, context, data):
        # We may have receive only one counter on the wire
        if not isinstance(data, list):
            data = [data]

        for meter in data:
            LOG.debug('metering data %s for %s @ %s: %s',
                      meter['counter_name'],
                      meter['resource_id'],
                      meter.get('timestamp', 'NO TIMESTAMP'),
                      meter['counter_volume'])
            if publisher_rpc.verify_signature(
                    meter,
                    self.conf.publisher_rpc.metering_secret):
                try:
                    # Convert the timestamp to a datetime instance.
                    # Storage engines are responsible for converting
                    # that value to something they can store.
                    if meter.get('timestamp'):
                        ts = timeutils.parse_isotime(meter['timestamp'])
                        meter['timestamp'] = timeutils.normalize_time(ts)
                    self.storage_conn.record_metering_data(meter)
                except Exception as err:
                    LOG.exception('Failed to record metering data: %s', err)
            else:
                LOG.warning(
                    'message signature invalid, discarding message: %r',
                    meter)
Beispiel #2
0
    def record_metering_data(self, context, data):
        # We may have receive only one counter on the wire
        if not isinstance(data, list):
            data = [data]

        for meter in data:
            LOG.debug('metering data %s for %s @ %s: %s',
                      meter['counter_name'], meter['resource_id'],
                      meter.get('timestamp',
                                'NO TIMESTAMP'), meter['counter_volume'])
            if publisher_rpc.verify_signature(
                    meter, self.conf.publisher_rpc.metering_secret):
                try:
                    # Convert the timestamp to a datetime instance.
                    # Storage engines are responsible for converting
                    # that value to something they can store.
                    if meter.get('timestamp'):
                        ts = timeutils.parse_isotime(meter['timestamp'])
                        meter['timestamp'] = timeutils.normalize_time(ts)
                    self.storage_conn.record_metering_data(meter)
                except Exception as err:
                    LOG.error('Failed to record metering data: %s', err)
                    LOG.exception(err)
            else:
                LOG.warning(
                    'message signature invalid, discarding message: %r', meter)
Beispiel #3
0
    def record_metering_data(self, context, data):
        """This method is triggered when metering data is
        cast from an agent.
        """
        # We may have receive only one counter on the wire
        if not isinstance(data, list):
            data = [data]

        for meter in data:
            LOG.info(
                "metering data %s for %s @ %s: %s",
                meter["counter_name"],
                meter["resource_id"],
                meter.get("timestamp", "NO TIMESTAMP"),
                meter["counter_volume"],
            )
            if publisher_rpc.verify_signature(meter, cfg.CONF.publisher_rpc.metering_secret):
                try:
                    # Convert the timestamp to a datetime instance.
                    # Storage engines are responsible for converting
                    # that value to something they can store.
                    if meter.get("timestamp"):
                        ts = timeutils.parse_isotime(meter["timestamp"])
                        meter["timestamp"] = timeutils.normalize_time(ts)
                    self.storage_conn.record_metering_data(meter)
                except Exception as err:
                    LOG.error("Failed to record metering data: %s", err)
                    LOG.exception(err)
            else:
                LOG.warning("message signature invalid, discarding message: %r", meter)
 def test_verify_signature_nested(self):
     data = {'a': 'A',
             'b': 'B',
             'nested': {'a': 'A',
                        'b': 'B',
                        },
             }
     data['message_signature'] = rpc.compute_signature(
         data,
         'not-so-secret')
     self.assertTrue(rpc.verify_signature(data, 'not-so-secret'))
def test_verify_signature_nested():
    data = {
        'a': 'A',
        'b': 'B',
        'nested': {
            'a': 'A',
            'b': 'B',
        },
    }
    data['message_signature'] = rpc.compute_signature(data, 'not-so-secret')
    assert rpc.verify_signature(data, 'not-so-secret')
 def test_verify_signature_nested_list_of_dict(self):
     small = 1
     big = 1 << 64
     nested = {small: 99, big: 42}
     data = {'a': 'A',
             'b': 'B',
             'nested': {'list': [nested]}}
     data['message_signature'] = rpc.compute_signature(
         data,
         'not-so-secret')
     # the keys 1 and 1<<64 cause a hash collision on 64bit platforms
     data['nested']['list'] = [{big: 42, small: 99}]
     self.assertTrue(rpc.verify_signature(data, 'not-so-secret'))
 def test_verify_signature_nested_json(self):
     data = {'a': 'A',
             'b': 'B',
             'nested': {'a': 'A',
                        'b': 'B',
                        'c': ('c',),
                        'd': ['d']
                        },
             }
     data['message_signature'] = rpc.compute_signature(
         data,
         'not-so-secret')
     jsondata = jsonutils.loads(jsonutils.dumps(data))
     self.assertTrue(rpc.verify_signature(jsondata, 'not-so-secret'))
def test_verify_signature_nested_json():
    data = {
        'a': 'A',
        'b': 'B',
        'nested': {
            'a': 'A',
            'b': 'B',
            'c': ('c', ),
            'd': ['d']
        },
    }
    data['message_signature'] = rpc.compute_signature(data, 'not-so-secret')
    jsondata = jsonutils.loads(jsonutils.dumps(data))
    assert rpc.verify_signature(jsondata, 'not-so-secret')
 def test_verify_signature_incorrect(self):
     data = {'a': 'A', 'b': 'B',
             'message_signature': 'Not the same'}
     self.assertFalse(rpc.verify_signature(data, 'not-so-secret'))
 def test_verify_signature_unsigned(self):
     data = {'a': 'A', 'b': 'B'}
     self.assertFalse(rpc.verify_signature(data, 'not-so-secret'))
 def test_verify_signature_signed(self):
     data = {'a': 'A', 'b': 'B'}
     sig1 = rpc.compute_signature(data, 'not-so-secret')
     data['message_signature'] = sig1
     self.assertTrue(rpc.verify_signature(data, 'not-so-secret'))
def test_verify_signature_incorrect():
    data = {'a': 'A', 'b': 'B',
            'message_signature': 'Not the same'}
    assert not rpc.verify_signature(data, 'not-so-secret')
def test_verify_signature_unsigned():
    data = {'a': 'A', 'b': 'B'}
    assert not rpc.verify_signature(data, 'not-so-secret')
def test_verify_signature_unsigned():
    data = {'a': 'A', 'b': 'B'}
    assert not rpc.verify_signature(data, 'not-so-secret')
 def test_verify_signature_nested_json(self):
     data = {"a": "A", "b": "B", "nested": {"a": "A", "b": "B", "c": ("c",), "d": ["d"]}}
     data["message_signature"] = rpc.compute_signature(data, "not-so-secret")
     jsondata = jsonutils.loads(jsonutils.dumps(data))
     self.assertTrue(rpc.verify_signature(jsondata, "not-so-secret"))
 def test_verify_signature_nested(self):
     data = {"a": "A", "b": "B", "nested": {"a": "A", "b": "B"}}
     data["message_signature"] = rpc.compute_signature(data, "not-so-secret")
     self.assertTrue(rpc.verify_signature(data, "not-so-secret"))
 def test_verify_signature_unsigned(self):
     data = {'a': 'A', 'b': 'B'}
     self.assertFalse(rpc.verify_signature(data, 'not-so-secret'))
 def test_verify_signature_unsigned(self):
     data = {"a": "A", "b": "B"}
     self.assertFalse(rpc.verify_signature(data, "not-so-secret"))
 def test_verify_signature_signed(self):
     data = {"a": "A", "b": "B"}
     sig1 = rpc.compute_signature(data, "not-so-secret")
     data["message_signature"] = sig1
     self.assertTrue(rpc.verify_signature(data, "not-so-secret"))
 def test_verify_signature_incorrect(self):
     data = {'a': 'A', 'b': 'B', 'message_signature': 'Not the same'}
     self.assertFalse(rpc.verify_signature(data, 'not-so-secret'))
def test_verify_signature_signed():
    data = {'a': 'A', 'b': 'B'}
    sig1 = rpc.compute_signature(data, 'not-so-secret')
    data['message_signature'] = sig1
    assert rpc.verify_signature(data, 'not-so-secret')
 def test_verify_signature_incorrect(self):
     data = {"a": "A", "b": "B", "message_signature": "Not the same"}
     self.assertFalse(rpc.verify_signature(data, "not-so-secret"))
def test_verify_signature_incorrect():
    data = {'a': 'A', 'b': 'B', 'message_signature': 'Not the same'}
    assert not rpc.verify_signature(data, 'not-so-secret')