func updateControllerDetailsFromLogin( store jujuclient.ControllerStore, controllerName string, controllerDetails *jujuclient.ControllerDetails, params UpdateControllerParams, ) error { // Get the new endpoint addresses. addrs, unresolvedAddrs, addrsChanged := PrepareEndpointsForCaching(*controllerDetails, params.CurrentHostPorts, params.AddrConnectedTo...) agentChanged := params.AgentVersion != controllerDetails.AgentVersion if !addrsChanged && !agentChanged && params.ModelCount == nil && params.MachineCount == nil && params.ControllerMachineCount == nil { return nil } // Write the new controller data. if addrsChanged { controllerDetails.APIEndpoints = addrs controllerDetails.UnresolvedAPIEndpoints = unresolvedAddrs } if agentChanged { controllerDetails.AgentVersion = params.AgentVersion } if params.ModelCount != nil { controllerDetails.ModelCount = params.ModelCount } if params.MachineCount != nil { controllerDetails.MachineCount = params.MachineCount } if params.ControllerMachineCount != nil { controllerDetails.ControllerMachineCount = *params.ControllerMachineCount } err := store.UpdateController(controllerName, *controllerDetails) return errors.Trace(err) }