func handleResponse(mm *state.MetricsManager, st ModelBackend, response wireformat.Response) int { var acknowledgedBatches int for _, envResp := range response.EnvResponses { acknowledgedBatches += len(envResp.AcknowledgedBatches) err := st.SetMetricBatchesSent(envResp.AcknowledgedBatches) if err != nil { logger.Errorf("failed to set sent on metrics %v", err) } for unitName, status := range envResp.UnitStatuses { unit, err := st.Unit(unitName) if err != nil { logger.Errorf("failed to retrieve unit %q: %v", unitName, err) continue } err = unit.SetMeterStatus(status.Status, status.Info) if err != nil { logger.Errorf("failed to set unit %q meter status to %v: %v", unitName, status, err) } } } if response.NewGracePeriod > 0 { err := mm.SetGracePeriod(response.NewGracePeriod) if err != nil { logger.Errorf("failed to set new grace period %v", err) } } return acknowledgedBatches }