def record_metering_data(self, context, data): """This method is triggered when metering data is cast from an agent. """ #LOG.info('metering data: %r', data) LOG.info('metering data %s for %s @ %s: %s', data['counter_name'], data['resource_id'], data.get('timestamp', 'NO TIMESTAMP'), data['counter_volume']) if not meter.verify_signature(data, cfg.CONF.metering_secret): LOG.warning('message signature invalid, discarding message: %r', data) else: try: # Convert the timestamp to a datetime instance. # Storage engines are responsible for converting # that value to something they can store. if data.get('timestamp'): data['timestamp'] = timeutils.parse_isotime( data['timestamp'], ) self.storage_conn.record_metering_data(data) except Exception as err: LOG.error('Failed to record metering data: %s', err) LOG.exception(err)
def test_verify_signature_nested(): data = {'a': 'A', 'b': 'B', 'nested': {'a': 'A', 'b': 'B', }, } data['message_signature'] = meter.compute_signature(data) assert meter.verify_signature(data)
def test_verify_signature_nested(): data = { 'a': 'A', 'b': 'B', 'nested': { 'a': 'A', 'b': 'B', }, } data['message_signature'] = meter.compute_signature(data) assert meter.verify_signature(data)
def record_metering_data(self, context, data): """This method is triggered when metering data is cast from an agent. """ #LOG.info('metering data: %r', data) LOG.info('metering data %s for %s: %s', data['counter_name'], data['resource_id'], data['counter_volume']) if not meter.verify_signature(data): LOG.warning('message signature invalid, discarding message: %r', data) else: try: self.storage_conn.record_metering_data(data) except Exception as err: LOG.error('Failed to record metering data: %s', err) LOG.exception(err)
def record_metering_data(self, context, data): """This method is triggered when metering data is cast from an agent. """ #LOG.info('metering data: %r', data) LOG.info('metering data %s for %s @ %s: %s', data['counter_name'], data['resource_id'], data.get('timestamp', 'NO TIMESTAMP'), data['counter_volume']) if not meter.verify_signature(data): LOG.warning('message signature invalid, discarding message: %r', data) else: try: # Convert the timestamp to a datetime instance. # Storage engines are responsible for converting # that value to something they can store. if data.get('timestamp'): data['timestamp'] = timeutils.parse_isotime( data['timestamp'], ) self.storage_conn.record_metering_data(data) except Exception as err: LOG.error('Failed to record metering data: %s', err) LOG.exception(err)
def test_verify_signature_nested(): data = {"a": "A", "b": "B", "nested": {"a": "A", "b": "B"}} data["message_signature"] = meter.compute_signature(data) assert meter.verify_signature(data)
def test_verify_signature_incorrect(): data = {"a": "A", "b": "B", "message_signature": "Not the same"} assert not meter.verify_signature(data)
def test_verify_signature_unsigned(): data = {"a": "A", "b": "B"} assert not meter.verify_signature(data)
def test_verify_signature_signed(): data = {"a": "A", "b": "B"} sig1 = meter.compute_signature(data) data["message_signature"] = sig1 assert meter.verify_signature(data)
def test_verify_signature_incorrect(): data = {'a': 'A', 'b': 'B', 'message_signature': 'Not the same'} assert not meter.verify_signature(data)
def test_verify_signature_unsigned(): data = {'a': 'A', 'b': 'B'} assert not meter.verify_signature(data)
def test_verify_signature_signed(): data = {'a': 'A', 'b': 'B'} sig1 = meter.compute_signature(data) data['message_signature'] = sig1 assert meter.verify_signature(data)