SCE API用例转换为等效的SoftLayer RESTful API实现

完成本文中的步骤的先决条件:

一个 IBM SmartCloud Enterprise (SCE) 帐户

一个 SoftLayer 帐户

设置环境

此示例假设您能够访问一个 Red Hat Enterprise Linux® 实例。导出以下环境变量:

$
export SL_API_USER={your.SoftLayer.user.id}$ export SL_API_KEY={your.SoftLayer.API.key}$ export SL_API_BASE_URL=api.softlayer.com/rest/v3$ export SL_API_PUBLIC_ENDPOINT="https://$SL_API_USER:$SL_API_KEY@$SL_API_BASE_URL"

从 http://curl.haxx.se/download.html 或从您的 Linux 发行版存储库下载并安装 curl 实用程序(例如 yum install curl)。Curl 是一个使用 URL 语法传输数据的命令行工具。

从 http://lloyd.github.com/yajl 下载并安装 yajl(另一个 JSON 库)或使用 sudo yum install yajl。您需要将这个软件用于 json_reformat 工具,用它来打印 SoftLayer RESTfull API 在被查询时返回的 JSON 输出。

执行简单的 SoftLayer REST API 请求

如 http://sldn.softlayer.com/article/REST 中所述,REST 请求的端点包含一个基础主机名称和文件夹名称,后跟您想要调用的 API 服务的名称。

如上所述,通过 json_reformat 传输 SoftLayer 输出,会采用某种人类容易理解的格式显示它。

要获取帐户的关联的虚拟来宾对象,可使用:

curl -s $SL_API_PUBLIC_ENDPOINT/SoftLayer_Account/getVirtualGuests | json_reformat

执行更复杂的请求

在订购一个计算实例时,有许多选项可供使用。使用 getCreateOBjectOptions 方法确定有哪些选项:

$ curl -s $SL_API_PUBLIC_ENDPOINT/SoftLayer_Virtual_Guest/getCreateObjectOptions | json_reformat

选项列表非常大;幸运的是只有 7 个是强制性的。详细列表可从 SoftLayer 参考文档 中获取。

要使用命令行工具 curl 创建一个 SoftLayer Cloud Computing Instance (CCI),可执行以下步骤:

使用此代码创建一个 JSON 格式的文件,并将它命名为 cci.json:

{ "parameters": [ { "operatingSystemReferenceCode": "REDHAT_6_32", "localDiskFlag": true, "hourlyBillingFlag": true, "maxMemory": 2048, "startCpus": 2, "domain": "softlayer.com", "hostname": "testing" } ]}

在命令行上,运行以下命令:

$ curl -X POST -d @cci.json $SL_API_PUBLIC_ENDPOINT/SoftLayer_Virtual_Guest | json_reformat

-d 参数从使用 @ 参数指定的文件发送纯 ASCII 格式的数据。上述命令等效于:$ curl -X POST -d '{ "parameters": [ { "operatingSystemReferenceCode": "REDHAT_6_32", "localDiskFlag": true, "hourlyBillingFlag": true, "maxMemory": 2048, "startCpus": 2, "domain": "softlayer.com", "hostname": "testing" } ]} $SL_API_PUBLIC_ENDPOINT/SoftLayer_Virtual_Guest | json_reformat

从输出导出 id 值。以下这个请求会需要它:

$ export CCI_ID=id_value

要删除刚创建的实例,可将 deleteObject 方法传递给 SoftLayer Virtual_Guest 服务:

$ curl -s $SL_API_PUBLIC_ENDPOINT/SoftLayer_Virtual_Guest/$CCI_ID/deleteObject | json_reformat

如果操作成功结束,SoftLayer RESTful API 将会显示消息 true。

从实例中捕获私有镜像。

要从一个实例创建一个镜像:

识别链接到这个特定实例的块设备。块设备将磁盘镜像链接到计算实例。

$ export CCI_ID={instance_id_to_be_saved} $ curl -s $SL_API_PUBLIC_ENDPOINT/SoftLayer_Virtual_Guest/$CCI_ID/getBlockDevices | json_reformat [ { "bootableFlag": 1, "createDate": "2013-10-11T14:00:08+03:00", "
device": "0", "diskImageId": 1813617, "guestId": 2784118, "hotPlugFlag": 0, "id": 3453468, "modifyDate": null, "mountMode": "RW", "mountType": "Disk", "statusId": 1, "uuid": "d7388678-79e9-f72b-44
3a-a8625a724fcd" }, { "bootableFlag": 0, "createDate": "2013-10-11T13:59:01+03:00", "device": "1", "diskImageId": 1813618, "guestId": 2784118, "hotPlugFlag": 0, "id": 3453467, "modifyDate": null, "mountMode": "RW", "mountType": "Disk", "statusId": 1, "uuid": "1c34a98c-1ad2-04a7-01f1-f7689e9938d0" } ]

记下来自第一个条目的 ID (3453468)。

现在您已准备好创建一个归档该实例的块设备的事务请求。该请求有 3 个参数,其中两个是字符串,第三个具有复杂的 SoftLayer_Virtual_Guest_Block_Device 类型。只需在镜像模板中提供前面记下的块设备的 ID (3453468)。

创建一个名为 block.json 的文件并添加以下代码:

{ "parameters":[ "testing-block-devices", [ { "id": 3453468 } ], "This is a block-device-x-y-z" ] }

将该 json 文件 POST 到服务 SoftLayer_Virtual_Guest::createArchiveTransaction:

$ curl -X POST -d @block.json -s $SL_API_PUBLIC_ENDPOINT/SoftLayer_Virtual_Guest/$CCI_ID/createArchiveTransaction | json_reformat { "createDate": "2013-10-28T12:50:24+03:00", "elapsedSeconds": 0, "guestId": 2784118, "hardwareId": null, "id": 4946901, "modifyDate": "2013-10-28T12:50:24+03:00", "statusChangeDate": "2013-10-28T12:50:24+03:00", "account": { "accountStatusId": null, "allowedPptpVpnQuantity": null, "brandId": null, "claimedTaxExemptTxFlag": null, "createDate": null, "id": null, "isReseller": null, "lateFeeProtectionFlag": null, "modifyDate": null, "statusDate": null }, "transactionGroup": { "averageTimeToComplete": "17.37", "name": "Create Cloud Disk
Template" }, "transactionStatus": { "averageDuration": ".78", "friendlyName": "Create Cloud Disk Template", "name": "CREATE_CLOUD_DISK_TEMPLATE" } }

列出针对您帐户的私有块设备分组,识别事务中使用的块设备。

$ curl -s $SL_API_PUBLIC_ENDPOINT/SoftLayer_Account/getPrivateBlockDeviceTemplateGroups | json_reformat

记下您的块设备的 globarIdentifier 字段。它应该类似于:

"globalIdentifier": "c1baca02-abdf-42e5-9326-4b34d4b84fec"

要从保存的镜像创建一个新计算实例,只需在请求中提及 globalIdentifier。创建另一个名为 child-instance.json 的 json 文件并添加以下代码:

{ "parameters": [ { "blockDeviceTemplateGroup": { "globalIdentifier": "c1baca02-abdf-42e5-9326-4b34d4b84fec" }, "localDiskFlag": true, "hourlyBillingFlag": true, "maxMemory": 2048, "startCpus": 2, "domain": "softlayer.com", "hostname": "child-instance-from-template" } ] }

然后 POST 它:

$ curl -X POST -d @child-instance.json -s $SL_API_PUBLIC_ENDPOINT/SoftLayer_Virtual_Guest/createObject | json_reformat { "accountId": 278190, "createDate": "2013-10-28T14:12:31+03:00", "dedicatedAccountHostOnlyFlag": false, "domain": "softlayer.com", "fullyQualifiedDomainName": "child-instance-from-template.softlayer.com", "hostname": "child-instance-from-template", "id": 2842042, "lastPowerStateId": null, "lastVerifiedDate": null, "maxCpu": 2, "maxCpuUnits": "CORE", "maxMemory": 2048, "metricPollDate": null, "modifyDate": null, "startCpus": 2, "statusId": 1001, "globalIdentifier": "d4f8eb3d-f783-4401-b50d-141991c95b54" }

新实例的置备几乎可立即完成。请注意,凭据与用于访问父实例的凭据相同。

时间: 2024-09-20 00:09:17

SCE API用例转换为等效的SoftLayer RESTful API实现的相关文章

遗留应用现代化场景:如何正确使用RESTful API

企业正在使用RESTful API来现代化其基础架构的关键方面,但是该方案怎么才能工作呢?我们为此专门采访了OpenLegacy的Zeev Avidan. 对于不堪遗留基础架构重负,并寻找出路的企业而言,应用程序接口成为越来越有吸引力的方案. Zeev Avidan,OpenLegacy的产品副总裁,探讨了使用API来现代化遗留基础架构的典型方案,讨论了在这些方案中为什么RESTful API如此重要,以及很多企业的"遗留"基础架构实际上都比他们意识到的更有价值的原因. 使用API现代

RESTful API设计给开发人员带来怎样的未来?

业界正在逐渐承认RESTful API优于面向服务架构.但是这对于架构师和开发人员而言到底意味着什么?Tom Nolle分享了他的想法. 在模块化应用世界里,最为持久的争论莫过于面向服务架构和表述性状态转移之争了.本文探讨这样的争论带来了什么及其背后的原因. SOA已经被定性为连接组件和工作流的严格的且重量级的方案,REST则赢得了更多的赞誉.两者的特征都是简化,但是要学习RESTful API设计,架构师和开发人员必须理解SOA和REST之间的差异,学习REST和云以及微服务一起的演进,并且了

Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化

原文:Asp.Net Web API 2第十三课--ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web API中的JSON和XML格式化器. 在ASP.NET Web API中,媒体类型格式化器(Media-type Formatter)是一种能够做以下工作的对象: 从HTTP消息体读取

【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化

原文:[ASP.NET Web API教程]6.2 ASP.NET Web API中的JSON和XML序列化 谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予"推荐".但前几天有人询问为何很久没有更新,这让我感觉把这文章翻译出来还是有价值的.为此,本人打算将此工作继续下去.这些关于Web API的技术文章均由微软专业人员撰写,虽然文章作为博客帖子而写得比较简单

用 Flask 来写个轻博客 (35) — 使用 Flask-RESTful 来构建 RESTful API 之四

目录 目录 前文列表 POST 请求 身份认证 测试 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 Flask 来写个轻博客 (3) - (M)VC_连接 MySQL 和 SQLAlchemy 用 Flask 来写个轻博客 (4) - (M)VC_创建数据模型和表 用 Flask 来写个轻博客 (5) - (M)VC_SQLAlchemy 的 CRUD 详解 用 Flask 来写个轻博客 (6) - (M)V

Restful API 就看这些文章 - 收藏集 - 掘金

一套设计良好的 RESTful API 如何成为前后端的桥梁? - 后端 - 掘金 移动互联网时代,RESTful API成为越来越重要的移动端和服务器端交互的形式.尤其是在很多互联网公司或者传统行业拥抱移动互联网的时候,一套设计良好的Restful API能够帮助互联网产品支持单服务端+多客户端的场景.RESTful架构本身是一个风格而不是... RESTful API 利器 Swagger - 后端 - 掘金 目前公司的项目对外交互都是采用 http resful的协议进行通信,数据格式采用

云计算中的RESTful API入门

许多人认为 API 是组织访问云计算供应商提供的服务的最佳方法.云使用者使用 API 作为软件接口,以各种方式连接和使用资源,但最优或现代的途径是使用基于 http://www.aliyun.com/zixun/aggregation/14172.html">RESTful 协议的 API.请继续阅读,理解 API 的概念,以及它们在 REST API 和云计算服务中如何使用.本文提供了多个用例来演示如何在真实世界中使用此技术. API 入门 API 是一些软件接口,它们针对数据处理而优化

【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie

原文:[ASP.NET Web API教程]5.5 ASP.NET Web API中的HTTP Cookie 5.5 HTTP Cookies in ASP.NET Web API 5.5 ASP.NET Web API中的HTTP Cookie 本文引自:http://www.asp.net/web-api/overview/working-with-http/http-cookies By Mike Wasson|September 17, 2012 作者:Mike Wasson | 日期:

微服务架构实战:Swagger规范RESTful API

REST的引入 本文讲的是微服务架构实战:Swagger规范RESTful API,随着微服务架构的广泛流行,REST风格受到越来越多的关注.我们先来看一下REST在WIKI的定义及五大关键点: 什么是统一接口? REST要求,必须通过统一的接口来对资源执行各种操作.对于每个资源只能执行一组有限的操作.以HTTP/1.1协议为例,此协议定义了一个操作资源的统一接口,主要包括以下内容: 7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS HTTP头信息(