This fix tries to fix the crash caused by `docker service inspect --pretty`,
by performing necessary nil pointer check.
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
(cherry picked from commit b6857e91c1625695abbf5897e13f688028880c33)
Signed-off-by: Victor Vieux <victorvieux@gmail.com>
| ... | ... |
@@ -263,6 +263,9 @@ func (ctx *serviceInspectContext) HasResources() bool {
|
| 263 | 263 |
} |
| 264 | 264 |
|
| 265 | 265 |
func (ctx *serviceInspectContext) HasResourceReservations() bool {
|
| 266 |
+ if ctx.Service.Spec.TaskTemplate.Resources == nil || ctx.Service.Spec.TaskTemplate.Resources.Reservations == nil {
|
|
| 267 |
+ return false |
|
| 268 |
+ } |
|
| 266 | 269 |
return ctx.Service.Spec.TaskTemplate.Resources.Reservations.NanoCPUs > 0 || ctx.Service.Spec.TaskTemplate.Resources.Reservations.MemoryBytes > 0 |
| 267 | 270 |
} |
| 268 | 271 |
|
| ... | ... |
@@ -281,6 +284,9 @@ func (ctx *serviceInspectContext) ResourceReservationMemory() string {
|
| 281 | 281 |
} |
| 282 | 282 |
|
| 283 | 283 |
func (ctx *serviceInspectContext) HasResourceLimits() bool {
|
| 284 |
+ if ctx.Service.Spec.TaskTemplate.Resources == nil || ctx.Service.Spec.TaskTemplate.Resources.Limits == nil {
|
|
| 285 |
+ return false |
|
| 286 |
+ } |
|
| 284 | 287 |
return ctx.Service.Spec.TaskTemplate.Resources.Limits.NanoCPUs > 0 || ctx.Service.Spec.TaskTemplate.Resources.Limits.MemoryBytes > 0 |
| 285 | 288 |
} |
| 286 | 289 |
|
| ... | ... |
@@ -1072,3 +1072,19 @@ func (s *DockerSwarmSuite) TestSwarmManagerAddress(c *check.C) {
|
| 1072 | 1072 |
c.Assert(err, checker.IsNil) |
| 1073 | 1073 |
c.Assert(out, checker.Contains, expectedOutput) |
| 1074 | 1074 |
} |
| 1075 |
+ |
|
| 1076 |
+func (s *DockerSwarmSuite) TestSwarmServiceInspectPretty(c *check.C) {
|
|
| 1077 |
+ d := s.AddDaemon(c, true, true) |
|
| 1078 |
+ |
|
| 1079 |
+ name := "top" |
|
| 1080 |
+ out, err := d.Cmd("service", "create", "--name", name, "--limit-cpu=0.5", "busybox", "top")
|
|
| 1081 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 1082 |
+ |
|
| 1083 |
+ expectedOutput := ` |
|
| 1084 |
+Resources: |
|
| 1085 |
+ Limits: |
|
| 1086 |
+ CPU: 0.5` |
|
| 1087 |
+ out, err = d.Cmd("service", "inspect", "--pretty", name)
|
|
| 1088 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 1089 |
+ c.Assert(out, checker.Contains, expectedOutput, check.Commentf(out)) |
|
| 1090 |
+} |