github.com/dpiddy/docker@v1.12.2-rc1/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 LogDriver: driverFromGRPC(t.Spec.LogDriver), 26 }, 27 Status: types.TaskStatus{ 28 State: types.TaskState(strings.ToLower(t.Status.State.String())), 29 Message: t.Status.Message, 30 Err: t.Status.Err, 31 }, 32 DesiredState: types.TaskState(strings.ToLower(t.DesiredState.String())), 33 } 34 35 // Meta 36 task.Version.Index = t.Meta.Version.Index 37 task.CreatedAt, _ = ptypes.Timestamp(t.Meta.CreatedAt) 38 task.UpdatedAt, _ = ptypes.Timestamp(t.Meta.UpdatedAt) 39 40 task.Status.Timestamp, _ = ptypes.Timestamp(t.Status.Timestamp) 41 42 if containerStatus != nil { 43 task.Status.ContainerStatus.ContainerID = containerStatus.ContainerID 44 task.Status.ContainerStatus.PID = int(containerStatus.PID) 45 task.Status.ContainerStatus.ExitCode = int(containerStatus.ExitCode) 46 } 47 48 // NetworksAttachments 49 for _, na := range t.Networks { 50 task.NetworksAttachments = append(task.NetworksAttachments, networkAttachementFromGRPC(na)) 51 } 52 53 return task 54 }