~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/cmd/juju/action/action.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2014, 2015 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package action
 
5
 
 
6
import (
 
7
        "io"
 
8
 
 
9
        "github.com/juju/errors"
 
10
 
 
11
        "github.com/juju/juju/api/action"
 
12
        "github.com/juju/juju/apiserver/params"
 
13
        "github.com/juju/juju/cmd/modelcmd"
 
14
)
 
15
 
 
16
// type APIClient represents the action API functionality.
 
17
type APIClient interface {
 
18
        io.Closer
 
19
 
 
20
        // Enqueue takes a list of Actions and queues them up to be executed by
 
21
        // the designated ActionReceiver, returning the params.Action for each
 
22
        // queued Action, or an error if there was a problem queueing up the
 
23
        // Action.
 
24
        Enqueue(params.Actions) (params.ActionResults, error)
 
25
 
 
26
        // ListAll takes a list of Tags representing ActionReceivers and returns
 
27
        // all of the Actions that have been queued or run by each of those
 
28
        // Entities.
 
29
        ListAll(params.Entities) (params.ActionsByReceivers, error)
 
30
 
 
31
        // ListPending takes a list of Tags representing ActionReceivers
 
32
        // and returns all of the Actions that are queued for each of those
 
33
        // Entities.
 
34
        ListPending(params.Entities) (params.ActionsByReceivers, error)
 
35
 
 
36
        // ListCompleted takes a list of Tags representing ActionReceivers
 
37
        // and returns all of the Actions that have been run on each of those
 
38
        // Entities.
 
39
        ListCompleted(params.Entities) (params.ActionsByReceivers, error)
 
40
 
 
41
        // Cancel attempts to cancel a queued up Action from running.
 
42
        Cancel(params.Actions) (params.ActionResults, error)
 
43
 
 
44
        // ApplicationCharmActions is a single query which uses ApplicationsCharmsActions to
 
45
        // get the charm.Actions for a single Service by tag.
 
46
        ApplicationCharmActions(params.Entity) (map[string]params.ActionSpec, error)
 
47
 
 
48
        // Actions fetches actions by tag.  These Actions can be used to get
 
49
        // the ActionReceiver if necessary.
 
50
        Actions(params.Entities) (params.ActionResults, error)
 
51
 
 
52
        // FindActionTagsByPrefix takes a list of string prefixes and finds
 
53
        // corresponding ActionTags that match that prefix.
 
54
        FindActionTagsByPrefix(params.FindTags) (params.FindTagsResults, error)
 
55
 
 
56
        // FindActionsByNames takes a list of names and finds a corresponding list of
 
57
        // Actions for every name.
 
58
        FindActionsByNames(params.FindActionsByNames) (params.ActionsByNames, error)
 
59
}
 
60
 
 
61
// ActionCommandBase is the base type for action sub-commands.
 
62
type ActionCommandBase struct {
 
63
        modelcmd.ModelCommandBase
 
64
}
 
65
 
 
66
// NewActionAPIClient returns a client for the action api endpoint.
 
67
func (c *ActionCommandBase) NewActionAPIClient() (APIClient, error) {
 
68
        return newAPIClient(c)
 
69
}
 
70
 
 
71
var newAPIClient = func(c *ActionCommandBase) (APIClient, error) {
 
72
        root, err := c.NewAPIRoot()
 
73
        if err != nil {
 
74
                return nil, errors.Trace(err)
 
75
        }
 
76
        return action.NewClient(root), nil
 
77
}