// WatchAPIHostPorts watches the host/port addresses of the API servers. func (a *APIAddresser) WatchAPIHostPorts() (watcher.NotifyWatcher, error) { var result params.NotifyWatchResult err := a.caller.Call(a.facadeName, "", "WatchAPIHostPorts", nil, &result) if err != nil { return nil, err } return watcher.NewNotifyWatcher(a.caller, result), nil }
// WatchForEnvironConfigChanges return a NotifyWatcher waiting for the // environment configuration to change. func (e *EnvironWatcher) WatchForEnvironConfigChanges() (watcher.NotifyWatcher, error) { var result params.NotifyWatchResult err := e.caller.Call(e.facadeName, "", "WatchForEnvironConfigChanges", nil, &result) if err != nil { return nil, err } return watcher.NewNotifyWatcher(e.caller, result), nil }
func (st *State) WatchMachineErrorRetry() (watcher.NotifyWatcher, error) { var result params.NotifyWatchResult err := st.call("WatchMachineErrorRetry", nil, &result) if err != nil { return nil, err } if err := result.Error; err != nil { return nil, result.Error } w := watcher.NewNotifyWatcher(st.caller, result) return w, nil }
func (s *watcherSuite) TestWatchMachine(c *gc.C) { var results params.NotifyWatchResults args := params.Entities{Entities: []params.Entity{{Tag: s.rawMachine.Tag().String()}}} err := s.stateAPI.Call("Machiner", "", "Watch", args, &results) c.Assert(err, gc.IsNil) c.Assert(results.Results, gc.HasLen, 1) result := results.Results[0] c.Assert(result.Error, gc.IsNil) // params.NotifyWatcher conforms to the state.NotifyWatcher interface w := watcher.NewNotifyWatcher(s.stateAPI, result) wc := statetesting.NewNotifyWatcherC(c, s.State, w) wc.AssertOneChange() statetesting.AssertStop(c, w) wc.AssertClosed() }
func (s *watcherSuite) TestNotifyWatcherStopsWithPendingSend(c *gc.C) { var results params.NotifyWatchResults args := params.Entities{Entities: []params.Entity{{Tag: s.rawMachine.Tag().String()}}} err := s.stateAPI.Call("Machiner", "", "Watch", args, &results) c.Assert(err, gc.IsNil) c.Assert(results.Results, gc.HasLen, 1) result := results.Results[0] c.Assert(result.Error, gc.IsNil) // params.NotifyWatcher conforms to the state.NotifyWatcher interface w := watcher.NewNotifyWatcher(s.stateAPI, result) wc := statetesting.NewNotifyWatcherC(c, s.State, w) // Now, without reading any changes try stopping the watcher. statetesting.AssertCanStopWhenSending(c, w) wc.AssertClosed() }
// Watch starts a NotifyWatcher for the entity with the specified tag. func Watch(caller base.Caller, facadeName string, tag names.Tag) (watcher.NotifyWatcher, error) { var results params.NotifyWatchResults args := params.Entities{ Entities: []params.Entity{{Tag: tag.String()}}, } err := caller.Call(facadeName, "", "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 } return watcher.NewNotifyWatcher(caller, result), nil }
// WatchAddresses returns a watcher for observing changes to the // unit's addresses. The unit must be assigned to a machine before // this method is called, and the returned watcher will be valid only // while the unit's assigned machine is not changed. func (u *Unit) WatchAddresses() (watcher.NotifyWatcher, error) { var results params.NotifyWatchResults args := params.Entities{ Entities: []params.Entity{{Tag: u.tag.String()}}, } err := u.st.call("WatchUnitAddresses", 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 }
// 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 }
// WatchInterfaces returns a NotifyWatcher that notifies of changes to network // interfaces on the machine. func (st *State) WatchInterfaces(machineTag string) (watcher.NotifyWatcher, error) { args := params.Entities{ Entities: []params.Entity{{Tag: machineTag}}, } var results params.NotifyWatchResults err := st.call("WatchInterfaces", args, &results) if err != nil { // TODO: Not directly tested return nil, err } if len(results.Results) != 1 { // TODO: Not directly tested err = fmt.Errorf("expected one result, got %d", len(results.Results)) return nil, err } result := results.Results[0] if result.Error != nil { return nil, result.Error } w := watcher.NewNotifyWatcher(st.caller, result) return w, nil }
func (st *State) WatchAPIVersion(agentTag string) (watcher.NotifyWatcher, error) { var results params.NotifyWatchResults args := params.Entities{ Entities: []params.Entity{{Tag: agentTag}}, } err := st.call("WatchAPIVersion", 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 }