openSUSE:SUSE Studio API
RESTful API
SUSE Studio 提供了一个基于 HTTP 的 RESTful API,可用于克隆设备、上传文件、触发和监控构建等等。有关更多详细信息,请参阅 SUSE Studio API 文档。
身份验证
为了使用 API,您需要创建一个 API 密钥,该密钥将用作 HTTP Basic Authentication 的密码。您可以在 SUSE Studio 中的用户页面上完成此操作。
库和客户端
有许多库和客户端使用 SUSE Studio API
- 命令行客户端
- SUSE Gallery 桌面小部件
- 图形 SUSE Studio 客户端
- SUSE Gallery 桌面客户端
- Android 客户端
- Dister - 类似于 Heroku 的 Studio 解决方案
- Java 库(不完整,欢迎补丁)
使用 curl 调用 API
所有 API 函数都可以使用 curl 调用。以下示例应该让您了解如何使用它。
获取模板集列表
模板按模板集分组。以下命令从 Studio 获取模板集列表
curl -u <user>:<api_key> "http://susestudio.com/api/v1/user/template_sets" (example)
通常,您会从“default”模板集中选择一个模板,该模板列出了默认的 SUSE 模板,并从中克隆一个设备。
列出您的设备
所有设备
curl -u <user>:<api_key> "http://susestudio.com/api/v1/user/appliances" (example)
特定设备
curl -u <user>:<api_key> "http://susestudio.com/api/v1/user/appliances/<id>" (example)
克隆设备
要创建新设备,请从模板集中选择一个模板,并使用其 ID 以及以下命令(名称和架构是可选参数)
curl -u <user>:<api_key> -XPOST "http://susestudio.com/api/v1/user/appliances?clone_from=14774&name=My%20Server&arch=x86_64"
管理叠加文件
列出设备的的文件
curl -u <user>:<api_key> "http://susestudio.com/api/v1/user/files?appliance_id=<id>" (example)
上传文件
curl -u <user>:<api_key> -XPOST -F "file=@/path/to/your/file" "http://susestudio.com/api/v1/user/files?appliance_id=<id>" (example)
可选地,您可以在此处指定文件名、路径、所有者、组或权限。
构建您的设备
触发设备的构建
curl -u <user>:<api_key> -XPOST "http://susestudio.com/api/v1/user/running_builds?appliance_id=<id>"
监控构建进度
curl -u <user>:<api_key> "http://susestudio.com/api/v1/user/running_builds?appliance_id=<id>" (example)
RESTful API
SUSE Studio 提供了一个基于 HTTP 的 RESTful API,可用于克隆设备、上传文件、触发和监控构建等等。有关更多详细信息,请参阅 SUSE Studio API 文档。
URL 编码
并非所有字符都允许进入 URL (http://tools.ietf.org/html/rfc1738)。例如,如果您尝试将 gcc-c++ 包添加到您的设备中,因为“+”是不允许的,则会出现问题。因此,以下内容将不起作用
curl -u user:secret -XPOST http://susestudio.com/api/v1/user/appliances/263276/cmd/add_package?name=gcc-c++
但是,可以对某些字符进行编码。请参阅 https://w3schools.org.cn/tags/ref_urlencode.asp。
因此,在我们的示例中,您应该
curl -u user:secret -XPOST http://susestudio.com/api/v1/user/appliances/263276/cmd/add_package?name=gcc-c%2B%2B