mirror of https://github.com/docker/docs.git
cli: service inspect - Null check for UpdateConfig
Fixes #25453 Signed-off-by: Dave Tucker <dt@docker.com> (cherry picked from commit 0e1fe4516fc7af03259753f6d264e91d11fe4d1a) Signed-off-by: Tibor Vass <tibor@docker.com>
This commit is contained in:
parent
8ef01f724b
commit
aaadc511d8
|
@ -117,12 +117,15 @@ func printService(out io.Writer, service swarm.Service) {
|
||||||
if service.Spec.TaskTemplate.Placement != nil && len(service.Spec.TaskTemplate.Placement.Constraints) > 0 {
|
if service.Spec.TaskTemplate.Placement != nil && len(service.Spec.TaskTemplate.Placement.Constraints) > 0 {
|
||||||
ioutils.FprintfIfNotEmpty(out, " Constraints\t: %s\n", strings.Join(service.Spec.TaskTemplate.Placement.Constraints, ", "))
|
ioutils.FprintfIfNotEmpty(out, " Constraints\t: %s\n", strings.Join(service.Spec.TaskTemplate.Placement.Constraints, ", "))
|
||||||
}
|
}
|
||||||
fmt.Fprintf(out, "UpdateConfig:\n")
|
if service.Spec.UpdateConfig != nil {
|
||||||
fmt.Fprintf(out, " Parallelism:\t%d\n", service.Spec.UpdateConfig.Parallelism)
|
fmt.Fprintf(out, "UpdateConfig:\n")
|
||||||
if service.Spec.UpdateConfig.Delay.Nanoseconds() > 0 {
|
fmt.Fprintf(out, " Parallelism:\t%d\n", service.Spec.UpdateConfig.Parallelism)
|
||||||
fmt.Fprintf(out, " Delay:\t\t%s\n", service.Spec.UpdateConfig.Delay)
|
if service.Spec.UpdateConfig.Delay.Nanoseconds() > 0 {
|
||||||
|
fmt.Fprintf(out, " Delay:\t\t%s\n", service.Spec.UpdateConfig.Delay)
|
||||||
|
}
|
||||||
|
fmt.Fprintf(out, " On failure:\t%s\n", service.Spec.UpdateConfig.FailureAction)
|
||||||
}
|
}
|
||||||
fmt.Fprintf(out, " On failure:\t%s\n", service.Spec.UpdateConfig.FailureAction)
|
|
||||||
fmt.Fprintf(out, "ContainerSpec:\n")
|
fmt.Fprintf(out, "ContainerSpec:\n")
|
||||||
printContainerSpec(out, service.Spec.TaskTemplate.ContainerSpec)
|
printContainerSpec(out, service.Spec.TaskTemplate.ContainerSpec)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/docker/engine-api/types/swarm"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPrettyPrintWithNoUpdateConfig(t *testing.T) {
|
||||||
|
b := new(bytes.Buffer)
|
||||||
|
|
||||||
|
endpointSpec := &swarm.EndpointSpec{
|
||||||
|
Mode: "vip",
|
||||||
|
Ports: []swarm.PortConfig{
|
||||||
|
{
|
||||||
|
Protocol: swarm.PortConfigProtocolTCP,
|
||||||
|
TargetPort: 5000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
two := uint64(2)
|
||||||
|
|
||||||
|
s := swarm.Service{
|
||||||
|
ID: "de179gar9d0o7ltdybungplod",
|
||||||
|
Meta: swarm.Meta{
|
||||||
|
Version: swarm.Version{Index: 315},
|
||||||
|
CreatedAt: time.Now(),
|
||||||
|
UpdatedAt: time.Now(),
|
||||||
|
},
|
||||||
|
Spec: swarm.ServiceSpec{
|
||||||
|
Annotations: swarm.Annotations{
|
||||||
|
Name: "my_service",
|
||||||
|
Labels: map[string]string{"com.label": "foo"},
|
||||||
|
},
|
||||||
|
TaskTemplate: swarm.TaskSpec{
|
||||||
|
ContainerSpec: swarm.ContainerSpec{
|
||||||
|
Image: "foo/bar@sha256:this_is_a_test",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Mode: swarm.ServiceMode{
|
||||||
|
Replicated: &swarm.ReplicatedService{
|
||||||
|
Replicas: &two,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
UpdateConfig: nil,
|
||||||
|
Networks: []swarm.NetworkAttachmentConfig{
|
||||||
|
{
|
||||||
|
Target: "5vpyomhb6ievnk0i0o60gcnei",
|
||||||
|
Aliases: []string{"web"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
EndpointSpec: endpointSpec,
|
||||||
|
},
|
||||||
|
Endpoint: swarm.Endpoint{
|
||||||
|
Spec: *endpointSpec,
|
||||||
|
Ports: []swarm.PortConfig{
|
||||||
|
{
|
||||||
|
Protocol: swarm.PortConfigProtocolTCP,
|
||||||
|
TargetPort: 5000,
|
||||||
|
PublishedPort: 30000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
VirtualIPs: []swarm.EndpointVirtualIP{
|
||||||
|
{
|
||||||
|
NetworkID: "6o4107cj2jx9tihgb0jyts6pj",
|
||||||
|
Addr: "10.255.0.4/16",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
UpdateStatus: swarm.UpdateStatus{
|
||||||
|
StartedAt: time.Now(),
|
||||||
|
CompletedAt: time.Now(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
printService(b, s)
|
||||||
|
if strings.Contains(b.String(), "UpdateStatus") {
|
||||||
|
t.Fatal("Pretty print failed before parsing UpdateStatus")
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue