mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
dd752ec87a
While working on some other code, noticed a bug in the jobs code. We're adding job version after we're checking if there are port configs. Before, if there were no port configs, the job version would be missing, because we would return before trying to convert. This moves the jobs version conversion above that code, so we don't accidentally return before it. Signed-off-by: Drew Erny <derny@mirantis.com>
75 lines
2.2 KiB
Go
75 lines
2.2 KiB
Go
package convert // import "github.com/docker/docker/daemon/cluster/convert"
|
|
|
|
import (
|
|
"strings"
|
|
|
|
types "github.com/docker/docker/api/types/swarm"
|
|
swarmapi "github.com/docker/swarmkit/api"
|
|
gogotypes "github.com/gogo/protobuf/types"
|
|
)
|
|
|
|
// TaskFromGRPC converts a grpc Task to a Task.
|
|
func TaskFromGRPC(t swarmapi.Task) (types.Task, error) {
|
|
containerStatus := t.Status.GetContainer()
|
|
taskSpec, err := taskSpecFromGRPC(t.Spec)
|
|
if err != nil {
|
|
return types.Task{}, err
|
|
}
|
|
task := types.Task{
|
|
ID: t.ID,
|
|
Annotations: annotationsFromGRPC(t.Annotations),
|
|
ServiceID: t.ServiceID,
|
|
Slot: int(t.Slot),
|
|
NodeID: t.NodeID,
|
|
Spec: taskSpec,
|
|
Status: types.TaskStatus{
|
|
State: types.TaskState(strings.ToLower(t.Status.State.String())),
|
|
Message: t.Status.Message,
|
|
Err: t.Status.Err,
|
|
},
|
|
DesiredState: types.TaskState(strings.ToLower(t.DesiredState.String())),
|
|
GenericResources: GenericResourcesFromGRPC(t.AssignedGenericResources),
|
|
}
|
|
|
|
// Meta
|
|
task.Version.Index = t.Meta.Version.Index
|
|
task.CreatedAt, _ = gogotypes.TimestampFromProto(t.Meta.CreatedAt)
|
|
task.UpdatedAt, _ = gogotypes.TimestampFromProto(t.Meta.UpdatedAt)
|
|
|
|
task.Status.Timestamp, _ = gogotypes.TimestampFromProto(t.Status.Timestamp)
|
|
|
|
if containerStatus != nil {
|
|
task.Status.ContainerStatus = &types.ContainerStatus{
|
|
ContainerID: containerStatus.ContainerID,
|
|
PID: int(containerStatus.PID),
|
|
ExitCode: int(containerStatus.ExitCode),
|
|
}
|
|
}
|
|
|
|
// NetworksAttachments
|
|
for _, na := range t.Networks {
|
|
task.NetworksAttachments = append(task.NetworksAttachments, networkAttachmentFromGRPC(na))
|
|
}
|
|
|
|
if t.JobIteration != nil {
|
|
task.JobIteration = &types.Version{
|
|
Index: t.JobIteration.Index,
|
|
}
|
|
}
|
|
|
|
if t.Status.PortStatus == nil {
|
|
return task, nil
|
|
}
|
|
|
|
for _, p := range t.Status.PortStatus.Ports {
|
|
task.Status.PortStatus.Ports = append(task.Status.PortStatus.Ports, types.PortConfig{
|
|
Name: p.Name,
|
|
Protocol: types.PortConfigProtocol(strings.ToLower(swarmapi.PortConfig_Protocol_name[int32(p.Protocol)])),
|
|
PublishMode: types.PortConfigPublishMode(strings.ToLower(swarmapi.PortConfig_PublishMode_name[int32(p.PublishMode)])),
|
|
TargetPort: p.TargetPort,
|
|
PublishedPort: p.PublishedPort,
|
|
})
|
|
}
|
|
|
|
return task, nil
|
|
}
|