请解释:错误:要求失败:'version'字段只能与'id'字段组合

时间:2016-01-19 12:25:40

标签: marathon

我正在尝试通过Python中的app = marathon_client.get_app(CONF.application) # won't work without deleting "version" # del app["version"] app["container"]["docker"]["image"] = CONF.docker_image deployment_id = marathon_client.update_app(CONF.application, app) 调用来更新马拉松应用程序(我只想更改docker图像),但除非我从Traceback (most recent call last): File "./update.py", line 122, in <module> main() File "./update.py", line 104, in main deployment_id = marathon_client.update_app(CONF.application, app) File "/usr/local/lib/python2.7/dist-packages/dcos/marathon.py", line 343, in update_app return self._update(app_id, payload, force) File "/usr/local/lib/python2.7/dist-packages/dcos/marathon.py", line 326, in _update timeout=self._timeout) File "/usr/local/lib/python2.7/dist-packages/dcos/marathon.py", line 121, in _http_req raise _to_exception(e.response) dcos.errors.DCOSException: Error: requirement failed: The 'version' field may only be combined with the 'id' field. 返回的字典中删除NSObject字段我收到了主题中提到的错误。 请解释应如何更新应用更新以及如何更新版本&amp; id与此相关。 我读过https://mesosphere.github.io/marathon/docs/rest-api.html但我现在还不清楚。

谢谢!

-marek

以下是我的一些代码:

Automatic Reference Counting

这是一个错误:

release

1 个答案:

答案 0 :(得分:1)

要更新应用,您可以提供新配置。

示例:

{
"id": "myapp",
"cmd": "sleep 999",
"cpus": 0.3,
"instances": 1,
"mem": 9
}

或者您可以使用该版本提供应用ID。

示例:

{
"id": "myapp",
"version": "2016-01-21T14:37:29.892Z"
}

如果您想要回滚应用程序,这非常有用。

但您无法提供新配置和版本。我同意,错误信息并不是很清楚。 GitHub上有一张票:https://github.com/mesosphere/marathon/issues/3060

注意:如果您从/v2/apps/{app_id}获得输出(看起来像{"app": {"id":...,...},...})并根据此输出更新应用程序,即使有应用程序ID和应用程序版本,它也能正常工作。