From 56d92bfdff47bc356528372427798f4460db0e7c Mon Sep 17 00:00:00 2001 From: Aaron Lehmann Date: Mon, 26 Sep 2016 10:12:24 +0100 Subject: [PATCH] cli: Add more nil checking to service pretty-printer Currently, if the service mode is not "global", this code assumes that Replicated is non-nil. This assumption may not be true in the future. Instead of making the assumption, explicitly check that Replicated is non-nil before using it. Similarly, for limits and reservations, enclose methods that read from Limits and Reservations within checks that those fields are non-nil. Signed-off-by: Aaron Lehmann --- command/formatter/service.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/command/formatter/service.go b/command/formatter/service.go index 2ce18aba5c001..a1872e91b9ed9 100644 --- a/command/formatter/service.go +++ b/command/formatter/service.go @@ -21,7 +21,7 @@ Labels: {{- end }}{{ end }} Mode: {{- if .IsModeGlobal }} Global -{{- else }} Replicated +{{- else if .IsModeReplicated }} Replicated {{- if .ModeReplicatedReplicas }} Replicas: {{ .ModeReplicatedReplicas }} {{- end }}{{ end }} @@ -73,22 +73,20 @@ Mounts: Resources: {{- if .HasResourceReservations }} Reservations: -{{- end }} {{- if gt .ResourceReservationNanoCPUs 0.0 }} CPU: {{ .ResourceReservationNanoCPUs }} {{- end }} {{- if .ResourceReservationMemory }} Memory: {{ .ResourceReservationMemory }} -{{- end }} +{{- end }}{{ end }} {{- if .HasResourceLimits }} Limits: -{{- end }} {{- if gt .ResourceLimitsNanoCPUs 0.0 }} CPU: {{ .ResourceLimitsNanoCPUs }} {{- end }} {{- if .ResourceLimitMemory }} Memory: {{ .ResourceLimitMemory }} -{{- end }}{{ end }} +{{- end }}{{ end }}{{ end }} {{- if .Networks }} Networks: {{- range $network := .Networks }} {{ $network }}{{ end }} {{ end }} @@ -156,6 +154,10 @@ func (ctx *serviceInspectContext) IsModeGlobal() bool { return ctx.Service.Spec.Mode.Global != nil } +func (ctx *serviceInspectContext) IsModeReplicated() bool { + return ctx.Service.Spec.Mode.Replicated != nil +} + func (ctx *serviceInspectContext) ModeReplicatedReplicas() *uint64 { return ctx.Service.Spec.Mode.Replicated.Replicas }