func (context *statusContext) processService(service *state.Service) params.ServiceStatus { serviceCharmURL, _ := service.CharmURL() var processedStatus = params.ServiceStatus{ Charm: serviceCharmURL.String(), Exposed: service.IsExposed(), Life: processLife(service), } if latestCharm, ok := context.latestCharms[*serviceCharmURL.WithRevision(-1)]; ok && latestCharm != nil { if latestCharm.Revision() > serviceCharmURL.Revision { processedStatus.CanUpgradeTo = latestCharm.String() } } var err error processedStatus.Relations, processedStatus.SubordinateTo, err = context.processServiceRelations(service) if err != nil { processedStatus.Err = err return processedStatus } if service.IsPrincipal() { processedStatus.Units = context.processUnits(context.units[service.Name()], serviceCharmURL.String()) serviceStatus, err := service.Status() if err != nil { processedStatus.Err = err return processedStatus } processedStatus.Status.Status = serviceStatus.Status processedStatus.Status.Info = serviceStatus.Message processedStatus.Status.Data = serviceStatus.Data processedStatus.Status.Since = serviceStatus.Since processedStatus.MeterStatuses = context.processUnitMeterStatuses(context.units[service.Name()]) } return processedStatus }
func (context *statusContext) processService(service *state.Service) params.ServiceStatus { serviceCharmURL, _ := service.CharmURL() var processedStatus = params.ServiceStatus{ Charm: serviceCharmURL.String(), Exposed: service.IsExposed(), Life: processLife(service), } if latestCharm, ok := context.latestCharms[*serviceCharmURL.WithRevision(-1)]; ok && latestCharm != nil { if latestCharm.Revision() > serviceCharmURL.Revision { processedStatus.CanUpgradeTo = latestCharm.String() } } var err error processedStatus.Relations, processedStatus.SubordinateTo, err = context.processServiceRelations(service) if err != nil { processedStatus.Err = err return processedStatus } networks, err := service.Networks() if err != nil { processedStatus.Err = err return processedStatus } var cons constraints.Value if service.IsPrincipal() { // Only principals can have constraints. cons, err = service.Constraints() if err != nil { processedStatus.Err = err return processedStatus } } // TODO(dimitern): Drop support for this in a follow-up. if len(networks) > 0 || cons.HaveNetworks() { // Only the explicitly requested networks (using "juju deploy // <svc> --networks=...") will be enabled, and altough when // specified, networks constraints will be used for instance // selection, they won't be actually enabled. processedStatus.Networks = params.NetworksSpecification{ Enabled: networks, Disabled: append(cons.IncludeNetworks(), cons.ExcludeNetworks()...), } } if service.IsPrincipal() { processedStatus.Units = context.processUnits(context.units[service.Name()], serviceCharmURL.String()) serviceStatus, err := service.Status() if err != nil { processedStatus.Err = err return processedStatus } processedStatus.Status.Status = serviceStatus.Status processedStatus.Status.Info = serviceStatus.Message processedStatus.Status.Data = serviceStatus.Data processedStatus.Status.Since = serviceStatus.Since processedStatus.MeterStatuses = context.processUnitMeterStatuses(context.units[service.Name()]) } return processedStatus }