Signed-off-by: Brian Goff <cpuguy83@gmail.com>
| ... | ... |
@@ -249,7 +249,7 @@ func updatePlacement(flags *pflag.FlagSet, placement *swarm.Placement) {
|
| 249 | 249 |
|
| 250 | 250 |
func updateLabels(flags *pflag.FlagSet, field *map[string]string) {
|
| 251 | 251 |
if flags.Changed(flagLabelAdd) {
|
| 252 |
- if field == nil {
|
|
| 252 |
+ if *field == nil {
|
|
| 253 | 253 |
*field = map[string]string{}
|
| 254 | 254 |
} |
| 255 | 255 |
|
| ... | ... |
@@ -259,7 +259,7 @@ func updateLabels(flags *pflag.FlagSet, field *map[string]string) {
|
| 259 | 259 |
} |
| 260 | 260 |
} |
| 261 | 261 |
|
| 262 |
- if field != nil && flags.Changed(flagLabelRemove) {
|
|
| 262 |
+ if *field != nil && flags.Changed(flagLabelRemove) {
|
|
| 263 | 263 |
toRemove := flags.Lookup(flagLabelRemove).Value.(*opts.ListOpts).GetAll() |
| 264 | 264 |
for _, label := range toRemove {
|
| 265 | 265 |
delete(*field, label) |
| ... | ... |
@@ -120,7 +120,6 @@ func (d *SwarmDaemon) getService(c *check.C, id string) *swarm.Service {
|
| 120 | 120 |
c.Assert(status, checker.Equals, http.StatusOK, check.Commentf("output: %q", string(out)))
|
| 121 | 121 |
c.Assert(err, checker.IsNil) |
| 122 | 122 |
c.Assert(json.Unmarshal(out, &service), checker.IsNil) |
| 123 |
- c.Assert(service.ID, checker.Equals, id) |
|
| 124 | 123 |
return &service |
| 125 | 124 |
} |
| 126 | 125 |
|
| ... | ... |
@@ -43,3 +43,44 @@ func (s *DockerSwarmSuite) TestServiceUpdatePort(c *check.C) {
|
| 43 | 43 |
} |
| 44 | 44 |
c.Assert(portConfig, checker.DeepEquals, expected) |
| 45 | 45 |
} |
| 46 |
+ |
|
| 47 |
+func (s *DockerSwarmSuite) TestServiceUpdateLabel(c *check.C) {
|
|
| 48 |
+ d := s.AddDaemon(c, true, true) |
|
| 49 |
+ out, err := d.Cmd("service", "create", "--name=test", "busybox", "top")
|
|
| 50 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 51 |
+ service := d.getService(c, "test") |
|
| 52 |
+ c.Assert(service.Spec.Labels, checker.HasLen, 0) |
|
| 53 |
+ |
|
| 54 |
+ // add label to empty set |
|
| 55 |
+ out, err = d.Cmd("service", "update", "test", "--label-add", "foo=bar")
|
|
| 56 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 57 |
+ service = d.getService(c, "test") |
|
| 58 |
+ c.Assert(service.Spec.Labels, checker.HasLen, 1) |
|
| 59 |
+ c.Assert(service.Spec.Labels["foo"], checker.Equals, "bar") |
|
| 60 |
+ |
|
| 61 |
+ // add label to non-empty set |
|
| 62 |
+ out, err = d.Cmd("service", "update", "test", "--label-add", "foo2=bar")
|
|
| 63 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 64 |
+ service = d.getService(c, "test") |
|
| 65 |
+ c.Assert(service.Spec.Labels, checker.HasLen, 2) |
|
| 66 |
+ c.Assert(service.Spec.Labels["foo2"], checker.Equals, "bar") |
|
| 67 |
+ |
|
| 68 |
+ out, err = d.Cmd("service", "update", "test", "--label-rm", "foo2")
|
|
| 69 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 70 |
+ service = d.getService(c, "test") |
|
| 71 |
+ c.Assert(service.Spec.Labels, checker.HasLen, 1) |
|
| 72 |
+ c.Assert(service.Spec.Labels["foo2"], checker.Equals, "") |
|
| 73 |
+ |
|
| 74 |
+ out, err = d.Cmd("service", "update", "test", "--label-rm", "foo")
|
|
| 75 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 76 |
+ service = d.getService(c, "test") |
|
| 77 |
+ c.Assert(service.Spec.Labels, checker.HasLen, 0) |
|
| 78 |
+ c.Assert(service.Spec.Labels["foo"], checker.Equals, "") |
|
| 79 |
+ |
|
| 80 |
+ // now make sure we can add again |
|
| 81 |
+ out, err = d.Cmd("service", "update", "test", "--label-add", "foo=bar")
|
|
| 82 |
+ c.Assert(err, checker.IsNil, check.Commentf(out)) |
|
| 83 |
+ service = d.getService(c, "test") |
|
| 84 |
+ c.Assert(service.Spec.Labels, checker.HasLen, 1) |
|
| 85 |
+ c.Assert(service.Spec.Labels["foo"], checker.Equals, "bar") |
|
| 86 |
+} |