func (f *Facade) UpdateService(ctx datastore.Context, svc service.Service) error { glog.V(2).Infof("Facade.UpdateService: %+v", svc) //cannot update service without validating it. if svc.DesiredState != int(service.SVCStop) { if err := f.validateServicesForStarting(ctx, &svc); err != nil { glog.Warningf("Could not validate service %s (%s) for starting: %s", svc.Name, svc.ID, err) svc.DesiredState = int(service.SVCStop) } for _, ep := range svc.GetServiceVHosts() { for _, vh := range ep.VHosts { //check that vhosts aren't already started elsewhere if err := zkAPI(f).CheckRunningVHost(vh, svc.ID); err != nil { return err } } } } return f.updateService(ctx, &svc) }