func Once()

in kubelet-to-gcm/monitor/poll.go [46:74]


func Once(src MetricsSource, gcm *v3.Service) {
	scrapeTimestamp := time.Now()
	req, err := src.GetTimeSeriesReq()
	if err != nil {
		observeFailedScrape(src.Name())
		log.Warningf("Failed to create time series request: %v", err)
		return
	}
	observeSuccessfullScrape(src.Name())

	for _, subReq := range subRequests(req) {
		// Push that data to GCM's v3 API.
		createCall := gcm.Projects.TimeSeries.Create(src.ProjectPath(), subReq)
		if empty, err := createCall.Do(); err != nil {
			log.Warningf("Failed to write time series data, empty: %v, err: %v", empty, err)
			observeFailedRequest(len(subReq.TimeSeries))
			jsonReq, err := subReq.MarshalJSON()
			if err != nil {
				log.Warningf("Failed to marshal time series as JSON")
				return
			}
			log.Warningf("JSON GCM: %s", string(jsonReq[:]))
			return
		}
		log.V(4).Infof("Successfully wrote TimeSeries data for %s to GCM v3 API.", src.Name())
		observeSuccessfullRequest(len(subReq.TimeSeries))
		observeIngestionLatency(len(subReq.TimeSeries), time.Now().Sub(scrapeTimestamp).Seconds())
	}
}