// startService creates a new data value for tracking details of the // service and starts watching the service for exposure changes. func (fw *Firewaller) startService(service *state.Service) error { serviced := &serviceData{ fw: fw, service: service, exposed: service.IsExposed(), unitds: make(map[string]*unitData), } fw.serviceds[service.Name()] = serviced go serviced.watchLoop(serviced.exposed) return nil }
func (context *statusContext) processService(service *state.Service) (status serviceStatus) { url, _ := service.CharmURL() status.Charm = url.String() status.Exposed = service.IsExposed() status.Life = processLife(service) var err error status.Relations, status.SubordinateTo, err = context.processRelations(service) if err != nil { status.Err = err return } if service.IsPrincipal() { status.Units = context.processUnits(context.units[service.Name()]) } return status }
func processService(service *state.Service) (map[string]interface{}, error) { r := m() ch, _, err := service.Charm() if err != nil { return nil, err } r["charm"] = ch.String() r["exposed"] = service.IsExposed() // TODO(dfc) service.IsSubordinate() ? units, err := service.AllUnits() if err != nil { return nil, err } u := checkError(processUnits(units)) if len(u) > 0 { r["units"] = u } // TODO(dfc) process relations return r, nil }