如何使用API​​将配置值/环境变量添加到cloudControl部署

时间:2014-12-04 14:27:06

标签: cloudcontrol

我想在我的cloudControl部署中添加一个环境变量,在此上下文中也称为config。但是,我不能使用提供的命令行工具cctrlapp,但必须使用REST API。他们的API可以在https://api.cloudcontrol.com访问,并记录在https://api.cloudcontrol.com/doc/

我现在的问题是引用环境变量的文档部分是空的!

这是我到目前为止所做的:

  1. 创建类型nodejs的应用
  2. 已创建默认部署
  3. 试图添加环境。变量
  4. 我发现我必须向https://api.cloudcontrol.com/app/{APP_NAME}/deployment/{DEPLOYMENT_NAME}/addon发送POST请求。根据{{​​1}}的实现(请参阅app.pycclib.py),我推断需要以下JSON数据:

    cctrlapp

    现在我被卡住了。 在这种情况下,请求返回:

    {"addon":"config.free","options":{"key":"value"}}
    

    如果我使用稍微修改过的对象

    Bad Request {"parameters": "Invalid parameters given."}
    

    我收到此消息:

    {"addon":"config.free","settings":{"key":"value"}}
    

    有人知道如何仅使用API​​来应用这样的键值对吗?

1 个答案:

答案 0 :(得分:1)

通过查看https://github.com/cloudControl/pycclib/blob/master/pycclib/cclib.py#L422,我认为您确实需要使用"options"options的值应该是json编码的字典(https://github.com/cloudControl/cctrl/blob/master/cctrl/addonoptionhelpers.py#L82)。

然而,其余部分不是json编码的,而只是普通的POST参数(https://github.com/cloudControl/pycclib/blob/master/pycclib/cclib.py#L931)。一个工作请求参考(相当于config.add x = 1):

POST /app/myappname/deployment/default/addon/ HTTP/1.1
content-length: 50
accept-encoding: compress, gzip
user-agent: pycclib/1.5.5
host: api.cloudcontrolled.com
content-type: application/x-www-form-urlencoded
authorization: cc_auth_token="thetoken"

options=%7B%22x%22%3A+%221%22%7D&addon=config.free