func (context *statusContext) processService(service *state.Service) (status params.ServiceStatus) { serviceCharmURL, _ := service.CharmURL() status.Charm = serviceCharmURL.String() status.Exposed = service.IsExposed() status.Life = processLife(service) latestCharm, ok := context.latestCharms[*serviceCharmURL.WithRevision(-1)] if ok && latestCharm != serviceCharmURL.String() { status.CanUpgradeTo = latestCharm } var err error status.Relations, status.SubordinateTo, err = context.processServiceRelations(service) if err != nil { status.Err = err return } networks, err := service.Networks() if err != nil { status.Err = err return } var cons constraints.Value if service.IsPrincipal() { // Only principals can have constraints. cons, err = service.Constraints() if err != nil { status.Err = err return } } // 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. status.Networks = params.NetworksSpecification{ Enabled: networks, Disabled: append(cons.IncludeNetworks(), cons.ExcludeNetworks()...), } } if service.IsPrincipal() { status.Units = context.processUnits(context.units[service.Name()], serviceCharmURL.String()) serviceStatus, err := service.Status() if err != nil { status.Err = err return } status.Status.Status = params.Status(serviceStatus.Status) status.Status.Info = serviceStatus.Message status.Status.Data = serviceStatus.Data status.Status.Since = serviceStatus.Since status.MeterStatuses = context.processUnitMeterStatuses(context.units[service.Name()]) } return status }
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 (s *DeployLocalSuite) assertCharm(c *gc.C, service *state.Service, expect *charm.URL) { curl, force := service.CharmURL() c.Assert(curl, gc.DeepEquals, expect) c.Assert(force, gc.Equals, false) }