Browse code

create a new file task.go and move task part codes from cluster.go into tasks.go

Signed-off-by: allencloud <allen.sun@daocloud.io>

allencloud authored on 2017/02/12 03:45:00
Showing 2 changed files
... ...
@@ -784,87 +784,6 @@ func (c *Cluster) errNoManager(st nodeState) error {
784 784
 	return errors.New("This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager.")
785 785
 }
786 786
 
787
-// GetTasks returns a list of tasks matching the filter options.
788
-func (c *Cluster) GetTasks(options apitypes.TaskListOptions) ([]types.Task, error) {
789
-	c.mu.RLock()
790
-	defer c.mu.RUnlock()
791
-
792
-	state := c.currentNodeState()
793
-	if !state.IsActiveManager() {
794
-		return nil, c.errNoManager(state)
795
-	}
796
-
797
-	byName := func(filter filters.Args) error {
798
-		if filter.Include("service") {
799
-			serviceFilters := filter.Get("service")
800
-			for _, serviceFilter := range serviceFilters {
801
-				service, err := c.GetService(serviceFilter)
802
-				if err != nil {
803
-					return err
804
-				}
805
-				filter.Del("service", serviceFilter)
806
-				filter.Add("service", service.ID)
807
-			}
808
-		}
809
-		if filter.Include("node") {
810
-			nodeFilters := filter.Get("node")
811
-			for _, nodeFilter := range nodeFilters {
812
-				node, err := c.GetNode(nodeFilter)
813
-				if err != nil {
814
-					return err
815
-				}
816
-				filter.Del("node", nodeFilter)
817
-				filter.Add("node", node.ID)
818
-			}
819
-		}
820
-		return nil
821
-	}
822
-
823
-	filters, err := newListTasksFilters(options.Filters, byName)
824
-	if err != nil {
825
-		return nil, err
826
-	}
827
-
828
-	ctx, cancel := c.getRequestContext()
829
-	defer cancel()
830
-
831
-	r, err := state.controlClient.ListTasks(
832
-		ctx,
833
-		&swarmapi.ListTasksRequest{Filters: filters})
834
-	if err != nil {
835
-		return nil, err
836
-	}
837
-
838
-	tasks := []types.Task{}
839
-
840
-	for _, task := range r.Tasks {
841
-		if task.Spec.GetContainer() != nil {
842
-			tasks = append(tasks, convert.TaskFromGRPC(*task))
843
-		}
844
-	}
845
-	return tasks, nil
846
-}
847
-
848
-// GetTask returns a task by an ID.
849
-func (c *Cluster) GetTask(input string) (types.Task, error) {
850
-	c.mu.RLock()
851
-	defer c.mu.RUnlock()
852
-
853
-	state := c.currentNodeState()
854
-	if !state.IsActiveManager() {
855
-		return types.Task{}, c.errNoManager(state)
856
-	}
857
-
858
-	ctx, cancel := c.getRequestContext()
859
-	defer cancel()
860
-
861
-	task, err := getTask(ctx, state.controlClient, input)
862
-	if err != nil {
863
-		return types.Task{}, err
864
-	}
865
-	return convert.TaskFromGRPC(*task), nil
866
-}
867
-
868 787
 // GetNetwork returns a cluster network by an ID.
869 788
 func (c *Cluster) GetNetwork(input string) (apitypes.NetworkResource, error) {
870 789
 	c.mu.RLock()
871 790
new file mode 100644
... ...
@@ -0,0 +1,90 @@
0
+package cluster
1
+
2
+import (
3
+	apitypes "github.com/docker/docker/api/types"
4
+	"github.com/docker/docker/api/types/filters"
5
+	types "github.com/docker/docker/api/types/swarm"
6
+	"github.com/docker/docker/daemon/cluster/convert"
7
+	swarmapi "github.com/docker/swarmkit/api"
8
+)
9
+
10
+// GetTasks returns a list of tasks matching the filter options.
11
+func (c *Cluster) GetTasks(options apitypes.TaskListOptions) ([]types.Task, error) {
12
+	c.mu.RLock()
13
+	defer c.mu.RUnlock()
14
+
15
+	state := c.currentNodeState()
16
+	if !state.IsActiveManager() {
17
+		return nil, c.errNoManager(state)
18
+	}
19
+
20
+	byName := func(filter filters.Args) error {
21
+		if filter.Include("service") {
22
+			serviceFilters := filter.Get("service")
23
+			for _, serviceFilter := range serviceFilters {
24
+				service, err := c.GetService(serviceFilter)
25
+				if err != nil {
26
+					return err
27
+				}
28
+				filter.Del("service", serviceFilter)
29
+				filter.Add("service", service.ID)
30
+			}
31
+		}
32
+		if filter.Include("node") {
33
+			nodeFilters := filter.Get("node")
34
+			for _, nodeFilter := range nodeFilters {
35
+				node, err := c.GetNode(nodeFilter)
36
+				if err != nil {
37
+					return err
38
+				}
39
+				filter.Del("node", nodeFilter)
40
+				filter.Add("node", node.ID)
41
+			}
42
+		}
43
+		return nil
44
+	}
45
+
46
+	filters, err := newListTasksFilters(options.Filters, byName)
47
+	if err != nil {
48
+		return nil, err
49
+	}
50
+
51
+	ctx, cancel := c.getRequestContext()
52
+	defer cancel()
53
+
54
+	r, err := state.controlClient.ListTasks(
55
+		ctx,
56
+		&swarmapi.ListTasksRequest{Filters: filters})
57
+	if err != nil {
58
+		return nil, err
59
+	}
60
+
61
+	tasks := []types.Task{}
62
+
63
+	for _, task := range r.Tasks {
64
+		if task.Spec.GetContainer() != nil {
65
+			tasks = append(tasks, convert.TaskFromGRPC(*task))
66
+		}
67
+	}
68
+	return tasks, nil
69
+}
70
+
71
+// GetTask returns a task by an ID.
72
+func (c *Cluster) GetTask(input string) (types.Task, error) {
73
+	c.mu.RLock()
74
+	defer c.mu.RUnlock()
75
+
76
+	state := c.currentNodeState()
77
+	if !state.IsActiveManager() {
78
+		return types.Task{}, c.errNoManager(state)
79
+	}
80
+
81
+	ctx, cancel := c.getRequestContext()
82
+	defer cancel()
83
+
84
+	task, err := getTask(ctx, state.controlClient, input)
85
+	if err != nil {
86
+		return types.Task{}, err
87
+	}
88
+	return convert.TaskFromGRPC(*task), nil
89
+}