func (a *HostAgent) GetService(serviceID string, response *service.Service) (err error) { *response = service.Service{} controlClient, err := NewControlClient(a.master) if err != nil { glog.Errorf("Could not start ControlPlane client %v", err) return nil } defer controlClient.Close() err = controlClient.GetService(serviceID, response) if response == nil { *response = service.Service{} } if err != nil { return err } getSvc := func(svcID string) (service.Service, error) { svc := service.Service{} err := controlClient.GetService(svcID, &svc) return svc, err } findChild := func(svcID, childName string) (service.Service, error) { svc := service.Service{} err := controlClient.FindChildService(dao.FindChildRequest{svcID, childName}, &svc) return svc, err } return response.Evaluate(getSvc, findChild, 0) }
// Use the Context field of the given template to fill in all the templates in // the Command fields of the template's ServiceDefinitions func injectContext(s *service.Service, svcState *servicestate.ServiceState, cp dao.ControlPlane) error { getSvc := func(svcID string) (service.Service, error) { svc := service.Service{} err := cp.GetService(svcID, &svc) return svc, err } findChild := func(svcID, childName string) (service.Service, error) { svc := service.Service{} err := cp.FindChildService(dao.FindChildRequest{svcID, childName}, &svc) return svc, err } return s.Evaluate(getSvc, findChild, svcState.InstanceID) }