1.) PUT on /v2/apps has a PATCH semantic. (#5157)
See 8df2a5d8b43e8a1c8609f88bc056245bbeef7523
- document that, by default, PUT on /v2/apps has a PATCH semantic: only the fields specified in the app update are applied to the existing app definition.
- add a query parameter, partialUpdate, that allows for proper PUT semantics for an app. false means "completely replace the existing app with the new one that I'm fully specifying here"
2.) Add support for PATCH updates to apps in 1.4 (#5183)
See 1ba8ea7352045119b9d4803010f03b88ee79e861
- added support to PATCH apps
also-by: unterstein
3.) Fixes #5211 by defining the jersey annotated methods explicitly. (#5217)
See e1b79523741bf1c266b953eba1bcf8783f819c3a
- With the newly introduced PATCH semantic, we introduced a misleading method declaration which is not resolvable for jersey. Therefore this logic was restructured and methods are defined explicitly.
I figure this is actually not really correct. If we apply a patch {instances: 2} to a seq of apps that currently have {instances: 1}, Marathon will not replace any instances but only start additional ones. In general, the needsRestart logic will be applied. This is probably not well documented anywhere and has know edges like when instances are restarted although only the upgradeStrategy was changed.
Maybe change this to something that doesn't lie like
_Instances will be started or restarted with according to the usual logic._?