// Watch returns a watcher for observing changes to a service. func (s *Service) Watch() (watcher.NotifyWatcher, error) { var results params.NotifyWatchResults args := params.Entities{ Entities: []params.Entity{{Tag: s.tag}}, } err := s.st.call("Watch", args, &results) if err != nil { return nil, err } if len(results.Results) != 1 { return nil, fmt.Errorf("expected 1 result, got %d", len(results.Results)) } result := results.Results[0] if result.Error != nil { return nil, result.Error } w := watcher.NewNotifyWatcher(s.st.caller, result) return w, nil }
// WatchConfigSettings returns a watcher for observing changes to the // unit's service configuration settings. The unit must have a charm URL // set before this method is called, and the returned watcher will be // valid only while the unit's charm URL is not changed. func (u *Unit) WatchConfigSettings() (watcher.NotifyWatcher, error) { var results params.NotifyWatchResults args := params.Entities{ Entities: []params.Entity{{Tag: u.tag}}, } err := u.st.call("WatchConfigSettings", args, &results) if err != nil { return nil, err } if len(results.Results) != 1 { return nil, fmt.Errorf("expected 1 result, got %d", len(results.Results)) } result := results.Results[0] if result.Error != nil { return nil, result.Error } w := watcher.NewNotifyWatcher(u.st.caller, result) return w, nil }
// WatchAuthorisedKeys returns a notify watcher that looks for changes in the // authorised ssh keys for the machine specified by machineTag. func (st *State) WatchAuthorisedKeys(machineTag string) (watcher.NotifyWatcher, error) { var results params.NotifyWatchResults args := params.Entities{ Entities: []params.Entity{{Tag: machineTag}}, } err := st.call("WatchAuthorisedKeys", args, &results) if err != nil { // TODO: Not directly tested return nil, err } if len(results.Results) != 1 { // TODO: Not directly tested return nil, fmt.Errorf("expected 1 result, got %d", len(results.Results)) } result := results.Results[0] if result.Error != nil { // TODO: Not directly tested return nil, result.Error } w := watcher.NewNotifyWatcher(st.caller, result) return w, nil }
// WatchForRsyslogChanges returns a new NotifyWatcher. func (st *State) WatchForRsyslogChanges(agentTag string) (watcher.NotifyWatcher, error) { var results params.NotifyWatchResults args := params.Entities{ Entities: []params.Entity{{Tag: agentTag}}, } err := st.caller.Call(rsyslogAPI, "", "WatchForRsyslogChanges", args, &results) if err != nil { // TODO: Not directly tested return nil, err } if len(results.Results) != 1 { // TODO: Not directly tested return nil, fmt.Errorf("expected 1 result, got %d", len(results.Results)) } result := results.Results[0] if result.Error != nil { // TODO: Not directly tested return nil, result.Error } w := watcher.NewNotifyWatcher(st.caller, result) return w, nil }