DockerCLI/cli/command/service
Sebastiaan van Stijn 95037299cb
Service cap-add/cap-drop: handle updates as "tri-state"
Adding/removing capabilities when updating a service is considered a tri-state;

- if the capability was previously "dropped", then remove it from "CapabilityDrop",
  but do NOT add it to "CapabilityAdd". However, if the capability was not yet in
  the service's "CapabilityDrop", then simply add it to the service's "CapabilityAdd"
- likewise, if the capability was previously "added", then remove it from
  "CapabilityAdd", but do NOT add it to "CapabilityDrop". If the capability was
  not yet in the service's "CapabilityAdd", then simply add it to the service's
  "CapabilityDrop".

In other words, given a service with the following:

| CapDrop        | CapAdd        |
| -------------- | ------------- |
| CAP_SOME_CAP   |               |

When updating the service, and applying `--cap-add CAP_SOME_CAP`, the previously
dropped capability is removed:

| CapDrop        | CapAdd        |
| -------------- | ------------- |
|                |               |

When updating the service a second time, applying `--cap-add CAP_SOME_CAP`,
capability is now added:

| CapDrop        | CapAdd        |
| -------------- | ------------- |
|                | CAP_SOME_CAP  |

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-09-08 14:42:39 +02:00
..
progress Add jobs support to CLI 2020-04-24 11:22:10 -05:00
testdata Add support for --limit-pids on service create / update (swarm) 2020-06-18 21:25:02 +02:00
client_test.go service: remove unused opts from newService() (unparam) 2019-10-31 19:22:43 +01:00
cmd.go Error out on orchestrator command that don't support k8s yet 2017-12-26 11:46:59 +01:00
create.go Add jobs support to CLI 2020-04-24 11:22:10 -05:00
create_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-23 00:28:55 +01:00
formatter.go service: Add --cap-add & --cap-drop to service cmds 2020-09-08 14:24:55 +02:00
formatter_test.go formatter: reduce minimum width for columns in table-view 2020-08-31 16:31:15 +02:00
generic_resource_opts.go Added support for generic resource update 2017-11-28 18:03:10 +01:00
generic_resource_opts_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-23 00:28:55 +01:00
helpers.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
inspect.go formatter package heavy refactoring 2018-10-23 17:05:44 +02:00
inspect_test.go Add support for --limit-pids on service create / update (swarm) 2020-06-18 21:25:02 +02:00
list.go Add jobs support to CLI 2020-04-24 11:22:10 -05:00
list_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-23 00:28:55 +01:00
logs.go fix docs, completion and docker service 2020-08-06 17:37:08 +03:00
opts.go Service cap-add/cap-drop: improve handling of combinations and special "ALL" value 2020-09-08 14:38:35 +02:00
opts_test.go Add support for --limit-pids on service create / update (swarm) 2020-06-18 21:25:02 +02:00
parse.go Add CredentialSpec tests 2019-04-12 11:17:34 -05:00
ps.go Migrate to non-deprecated functions of `api/types/filters` 2018-07-27 15:37:43 +02:00
ps_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-23 00:28:55 +01:00
remove.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
rollback.go Update code for upstream cobra 2017-10-25 14:49:26 -04:00
rollback_test.go Replace deprecated Cobra command.SetOutput() with command.SetOut() 2020-05-07 14:25:59 +02:00
scale.go Add jobs support to CLI 2020-04-24 11:22:10 -05:00
trust.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
update.go Service cap-add/cap-drop: handle updates as "tri-state" 2020-09-08 14:42:39 +02:00
update_test.go Service cap-add/cap-drop: handle updates as "tri-state" 2020-09-08 14:42:39 +02:00