我正在尝试通过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
答案 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和应用程序版本,它也能正常工作。