// GetNodes returns a list of all nodes known to a cluster. func (c *Cluster) GetNodes(options apitypes.NodeListOptions) ([]types.Node, error) { c.RLock() defer c.RUnlock() if !c.isActiveManager() { return nil, ErrNoManager } filters, err := newListNodesFilters(options.Filter) if err != nil { return nil, err } r, err := c.client.ListNodes( c.getRequestContext(), &swarmapi.ListNodesRequest{Filters: filters}) if err != nil { return nil, err } nodes := []types.Node{} for _, node := range r.Nodes { nodes = append(nodes, convert.NodeFromGRPC(*node)) } return nodes, nil }
// GetNodes returns a list of all nodes known to a cluster. func (c *Cluster) GetNodes(options apitypes.NodeListOptions) ([]types.Node, error) { c.mu.RLock() defer c.mu.RUnlock() state := c.currentNodeState() if !state.IsActiveManager() { return nil, c.errNoManager(state) } filters, err := newListNodesFilters(options.Filters) if err != nil { return nil, err } ctx, cancel := c.getRequestContext() defer cancel() r, err := state.controlClient.ListNodes( ctx, &swarmapi.ListNodesRequest{Filters: filters}) if err != nil { return nil, err } nodes := []types.Node{} for _, node := range r.Nodes { nodes = append(nodes, convert.NodeFromGRPC(*node)) } return nodes, nil }
// GetNode returns a node based on a ID or name. func (c *Cluster) GetNode(input string) (types.Node, error) { c.RLock() defer c.RUnlock() if !c.isActiveManager() { return types.Node{}, ErrNoManager } node, err := getNode(c.getRequestContext(), c.client, input) if err != nil { return types.Node{}, err } return convert.NodeFromGRPC(*node), nil }
// GetNode returns a node based on an ID. func (c *Cluster) GetNode(input string) (types.Node, error) { c.mu.RLock() defer c.mu.RUnlock() state := c.currentNodeState() if !state.IsActiveManager() { return types.Node{}, c.errNoManager(state) } ctx, cancel := c.getRequestContext() defer cancel() node, err := getNode(ctx, state.controlClient, input) if err != nil { return types.Node{}, err } return convert.NodeFromGRPC(*node), nil }