func (context *statusContext) processService(service *state.Service) (status api.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.processRelations(service) if err != nil { status.Err = err return } includeNetworks, excludeNetworks, err := service.Networks() if err == nil { status.Networks = api.NetworksSpecification{ Enabled: includeNetworks, Disabled: excludeNetworks, } } if service.IsPrincipal() { status.Units = context.processUnits(context.units[service.Name()], serviceCharmURL.String()) } return status }
// GetExposed returns the exposed flag value for each given service. func (f *FirewallerAPI) GetExposed(args params.Entities) (params.BoolResults, error) { result := params.BoolResults{ Results: make([]params.BoolResult, len(args.Entities)), } canAccess, err := f.accessService() if err != nil { return params.BoolResults{}, err } for i, entity := range args.Entities { var service *state.Service service, err = f.getService(canAccess, entity.Tag) if err == nil { result.Results[i].Result = service.IsExposed() } result.Results[i].Error = common.ServerError(err) } return result, nil }