func handleResponse(mm *state.MetricsManager, st *state.State, response wireformat.Response) { for _, envResp := range response.EnvResponses { 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) } } }