【问题标题】:Why can I install this Jelastic manifest through the dashboard import function but not throuhg the Jelastic API?为什么我可以通过仪表板导入功能而不是通过 Jelastic API 安装此 Jelastic 清单?
【发布时间】:2021-09-09 15:49:34
【问题描述】:

我有以下非常简单的清单:

type: install
name: very simple manifest

onInstall:
  - log: installing manifest

我可以从 Jelastic Dashboard 安装它。主菜单中有一个导入功能,我可以在其中复制/粘贴该清单内容并安装它。在 Jelastic 控制台中,我可以看到

[15:36:38 manifest.settings]: BEGIN INSTALLATION: very simple manifest
[15:36:39 manifest.settings]: BEGIN HANDLE EVENT: {"topic":"application/install","envAppid":""}
[15:36:39 manifest.settings:1]:> installing manifest
[15:36:39 manifest.settings]: END HANDLE EVENT: application/install
[15:36:39 manifest.settings]: END INSTALLATION: very simple manifest

Jelastic 仪表板确认安装。

现在,当我通过 Jelastic REST API 执行相同操作时,即使用端点

http://my-jelastic-provide.com/1.0/marketplace/jps/REST/install

使用相关数据,然后,它不会安装。相反,我收到了奇怪的错误消息

Can\'t find environment by domain [jelasticclient-master-0954606]

其中jelasticclient-master-0954606 是我设置的envName

但是,如果我将清单更改为例如

type: install
name: very simple manifest

nodes:
  count: 1
  cloudlets: 4
  nodeGroup: cp
  image: alpine:latest
skipNodeEmails: true

onInstall:
  - log: installing manifest

然后它会完美安装。我错过了什么?

我正在使用 Jelastic v6.0.2。

【问题讨论】:

    标签: manifest jelastic


    【解决方案1】:

    您的“非常简单的清单”不假设要传递任何环境名称。 这就是为什么当您传递它时会收到错误“无法通过域 [域名] 找到环境”(示例 1)。

    如果您没有在清单中包含“nodes”参数(如第二个示例所示),则不应传递任何环境名称(示例 2)或应传递现有环境名称(响应在 Example3 中)。

    示例 1:

    curl -X POST 'https://jca.host-domain/1.0/marketplace/jps/rest/install' \
    -d 'envName=jelasticclient-master-0954606' \
    -d session=*** \    
    -d skipNodeEmails=1 \
    -d ownerUid=UID \
    --data-urlencode 'jps={ "type": "install", "name": "very simple manifest", "onInstall": [ { "log": "installing manifest" } ] }'
    

    回复是:

    {"result":11,"response":{"result":11,"source":"JEL","error":"domain [jelasticclient-master-0954606] doesn't exist"},"source":"JEL","error":"domain [jelasticclient-master-0954606] doesn't exist"}
    

    环境名不通过时(例2),

    curl -X POST 'https://jca.host-domain/1.0/marketplace/jps/rest/install' \
    -d session=*** \    
    -d skipNodeEmails=1 \
    -d ownerUid=UID \
    --data-urlencode 'jps={ "type": "install", "name": "very simple manifest", "onInstall": [ { "log": "installing manifest" } ] }'
    

    回应是

    {"result":0,"uniqueName":"3c819586-2ef7-4691-9faa-d3059459d20e","response":{"result":0,"uniqueName":"3c819586-2ef7-4691-9faa-d3059459d20e","successText":"","appid":""},"appid":"","successText":""}
    

    当envName=jelasticclient-master-0954606的环境已经存在时,来自Example1的相同请求的响应是这样的(Example3)

    {"result":0,"uniqueName":"b52a8db9-8850-4b66-958a-3dee3345b923","response":{"result":0,"uniqueName":"b52a8db9-8850-4b66-958a-3dee3345b923","successText":"","appid":"7b0c465f6c9573b8d8ce3ed59591781b"},"appid":"7b0c465f6c9573b8d8ce3ed59591781b","successText":""}
    

    换句话说,如果你在部署这个“非常简单的清单”时传递环境名称,这个清单就像一个插件一样安装,因为它没有“节点”参数,但没有现有的环境“jelasticclient-master” -0954606”来安装这个“插件”。

    【讨论】:

    • 感谢您的澄清,我没有怀疑我的清单安装中有这个问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2015-11-23
    • 2019-11-14
    相关资源
    最近更新 更多