def full_dict(self, detailed: bool = False) -> FullResponse: result = cast(FullResponse, self.to_dict()) if detailed and "transaction.status" in self.event: result.update({ "transaction.status": SPAN_STATUS_CODE_TO_NAME.get(self.event["transaction.status"], "unknown"), }) if self.nodestore_event: result["timestamp"] = self.nodestore_event.data.get("timestamp") result["start_timestamp"] = self.nodestore_event.data.get( "start_timestamp") if detailed: if "measurements" in self.nodestore_event.data: result["measurements"] = self.nodestore_event.data.get( "measurements") result["_meta"] = {} result["tags"], result["_meta"]["tags"] = get_tags_with_meta( self.nodestore_event) # Only add children that have nodestore events, which may be missing if we're pruning for trace navigator result["children"] = [ child.full_dict(detailed) for child in self.children if child.nodestore_event ] return result
def update_nodestore_extra(self, event, nodestore_event, detailed=False): """ Add extra data that we get from Nodestore """ event.update( {event_key: nodestore_event.data.get(event_key) for event_key in NODESTORE_KEYS} ) if detailed: if "measurements" in nodestore_event.data: event["measurements"] = nodestore_event.data.get("measurements") event["_meta"] = {} event["tags"], event["_meta"]["tags"] = get_tags_with_meta(nodestore_event)