def _build_metadata(self): data = { "service": self.get_service_info(), "process": self.get_process_info(), "system": self.get_system_info(), } if self.config.global_labels: data["labels"] = enforce_label_format(self.config.global_labels) return data
def build_metadata(self): data = { "service": self.get_service_info(), "process": self.get_process_info(), "system": self.get_system_info(), "cloud": self.get_cloud_info(), } if not data["cloud"]: data.pop("cloud") if self.config.global_labels: data["labels"] = enforce_label_format(self.config.global_labels) return data
def test_enforce_label_format(): class MyObj(object): def __str__(self): return "OK" def __unicode__(self): return u"OK" labels = enforce_label_format( {'a.b*c"d': MyObj(), "x": "x" * 1025, "int": 1, "float": 1.1, "decimal": decimal.Decimal("1")} ) assert labels == {"a_b_c_d": "OK", "x": "x" * 1023 + u"…", "int": 1, "float": 1.1, "decimal": decimal.Decimal("1")}
def label(self, **labels): """ Label this span with one or multiple key/value labels. Keys should be strings, values can be strings, booleans, or numerical values (int, float, Decimal) span_obj.label(key1="value1", key2=True, key3=42) Note that keys will be dedotted, replacing dot (.), star (*) and double quote (") with an underscore (_) :param labels: key/value pairs of labels :return: None """ labels = encoding.enforce_label_format(labels) self.labels.update(labels)