github.com/noxiouz/docker@v0.7.3-0.20160629055221-3d231c78e8c5/daemon/cluster/convert/task.go (about) 1 package convert 2 3 import ( 4 "strings" 5 6 types "github.com/docker/engine-api/types/swarm" 7 swarmapi "github.com/docker/swarmkit/api" 8 "github.com/docker/swarmkit/protobuf/ptypes" 9 ) 10 11 // TaskFromGRPC converts a grpc Task to a Task. 12 func TaskFromGRPC(t swarmapi.Task) types.Task { 13 containerConfig := t.Spec.Runtime.(*swarmapi.TaskSpec_Container).Container 14 containerStatus := t.Status.GetContainer() 15 task := types.Task{ 16 ID: t.ID, 17 ServiceID: t.ServiceID, 18 Slot: int(t.Slot), 19 NodeID: t.NodeID, 20 Spec: types.TaskSpec{ 21 ContainerSpec: containerSpecFromGRPC(containerConfig), 22 Resources: resourcesFromGRPC(t.Spec.Resources), 23 RestartPolicy: restartPolicyFromGRPC(t.Spec.Restart), 24 Placement: placementFromGRPC(t.Spec.Placement), 25 }, 26 Status: types.TaskStatus{ 27 State: types.TaskState(strings.ToLower(t.Status.State.String())), 28 Message: t.Status.Message, 29 Err: t.Status.Err, 30 }, 31 DesiredState: types.TaskState(strings.ToLower(t.DesiredState.String())), 32 } 33 34 // Meta 35 task.Version.Index = t.Meta.Version.Index 36 task.CreatedAt, _ = ptypes.Timestamp(t.Meta.CreatedAt) 37 task.UpdatedAt, _ = ptypes.Timestamp(t.Meta.UpdatedAt) 38 39 task.Status.Timestamp, _ = ptypes.Timestamp(t.Status.Timestamp) 40 41 if containerStatus != nil { 42 task.Status.ContainerStatus.ContainerID = containerStatus.ContainerID 43 task.Status.ContainerStatus.PID = int(containerStatus.PID) 44 task.Status.ContainerStatus.ExitCode = int(containerStatus.ExitCode) 45 } 46 47 // NetworksAttachments 48 for _, na := range t.Networks { 49 task.NetworksAttachments = append(task.NetworksAttachments, networkAttachementFromGRPC(na)) 50 } 51 52 return task 53 }