code: func (tsdbSink *openTSDBSink) metricToPoint(name string, value core.MetricValue, timestamp time.Time, labels map[string]string) opentsdbclient.DataPoint {
  	seriesName := strings.Replace(toValidOpenTsdbName(name), "/", "_", -1)
  
  	if value.MetricType.String() != "" {
  		seriesName = fmt.Sprintf("%s_%s", seriesName, value.MetricType.String())
  	}
  
  	datapoint := opentsdbclient.DataPoint{
  		Metric:    seriesName,
  		Tags:      make(map[string]string, len(labels)),
  		Timestamp: timestamp.Unix(),
  	}
  	if value.ValueType == core.ValueInt64 {
  		datapoint.Value = value.IntValue
  	} else {
  		datapoint.Value = value.FloatValue
  	}
  
  	for key, value := range labels {
  		key = toValidOpenTsdbName(key)
  		value = toValidOpenTsdbName(value)
  
  		if value != "" {
  			datapoint.Tags[key] = value
  		}
  	}
  
  	tsdbSink.putDefaultTags(&datapoint)
  	return datapoint
  }
docs: // timeSeriesToPoint transfers the contents holding in the given pointer of sink_api.Timeseries
  // into the instance of opentsdbclient.DataPoint