github.com/vieux/docker@v0.6.3-0.20161004191708-e097c2a938c7/daemon/cluster/convert/task.go (about) 1 package convert 2 3 import ( 4 "strings" 5 6 types "github.com/docker/docker/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 if t.Spec.GetAttachment() != nil { 14 return types.Task{} 15 } 16 containerConfig := t.Spec.Runtime.(*swarmapi.TaskSpec_Container).Container 17 containerStatus := t.Status.GetContainer() 18 networks := make([]types.NetworkAttachmentConfig, 0, len(t.Spec.Networks)) 19 for _, n := range t.Spec.Networks { 20 networks = append(networks, types.NetworkAttachmentConfig{Target: n.Target, Aliases: n.Aliases}) 21 } 22 23 task := types.Task{ 24 ID: t.ID, 25 Annotations: types.Annotations{ 26 Name: t.Annotations.Name, 27 Labels: t.Annotations.Labels, 28 }, 29 ServiceID: t.ServiceID, 30 Slot: int(t.Slot), 31 NodeID: t.NodeID, 32 Spec: types.TaskSpec{ 33 ContainerSpec: containerSpecFromGRPC(containerConfig), 34 Resources: resourcesFromGRPC(t.Spec.Resources), 35 RestartPolicy: restartPolicyFromGRPC(t.Spec.Restart), 36 Placement: placementFromGRPC(t.Spec.Placement), 37 LogDriver: driverFromGRPC(t.Spec.LogDriver), 38 Networks: networks, 39 }, 40 Status: types.TaskStatus{ 41 State: types.TaskState(strings.ToLower(t.Status.State.String())), 42 Message: t.Status.Message, 43 Err: t.Status.Err, 44 }, 45 DesiredState: types.TaskState(strings.ToLower(t.DesiredState.String())), 46 } 47 48 // Meta 49 task.Version.Index = t.Meta.Version.Index 50 task.CreatedAt, _ = ptypes.Timestamp(t.Meta.CreatedAt) 51 task.UpdatedAt, _ = ptypes.Timestamp(t.Meta.UpdatedAt) 52 53 task.Status.Timestamp, _ = ptypes.Timestamp(t.Status.Timestamp) 54 55 if containerStatus != nil { 56 task.Status.ContainerStatus.ContainerID = containerStatus.ContainerID 57 task.Status.ContainerStatus.PID = int(containerStatus.PID) 58 task.Status.ContainerStatus.ExitCode = int(containerStatus.ExitCode) 59 } 60 61 // NetworksAttachments 62 for _, na := range t.Networks { 63 task.NetworksAttachments = append(task.NetworksAttachments, networkAttachementFromGRPC(na)) 64 } 65 66 return task 67 }