仅提案
请注意,这只是一个建议的 DSL,供开发考虑。此规范尚未实现。
参见:Launchpad 蓝图,用于可插拔集群配置机制
API 调用列表
| 动词 |
URI |
描述 |
表示形式 |
| POST |
/clusters |
创建集群 |
JSON, XML |
| DELETE |
/clusters/{clusterId} |
删除集群 |
JSON, XML |
| GET |
/clusters |
列出用户的所有集群 |
JSON, XML |
| GET |
/clusters/{clusterId} |
获取集群详情 |
JSON, XML |
| POST |
/clusters/{clusterId}/action |
对集群执行操作(例如,调整大小) |
JSON, XML |
| GET |
/clusters/{clusterId}/nodes |
列出集群中的所有节点 |
JSON, XML |
| GET |
/clusters/{clusterId}/nodes/{nodeId} |
获取集群中节点的详情 |
JSON, XML |
| GET |
/profile |
获取当前用户配置信息 |
JSON, XML |
| POST |
/profile |
更新现有配置 |
JSON, XML |
| GET |
/limits |
列出用户的所有资源限制 |
JSON, XML |
| GET |
/flavors |
列出所有可用规格 |
JSON, XML |
| GET |
/flavors/{flavorId} |
获取规格详情 |
JSON, XML |
| GET |
/flavors/{flavorid}/types |
列出规格支持的集群类型 |
JSON, XML |
| GET |
/types |
列出所有可用集群类型 |
JSON, XML |
| GET |
/types/{typeId} |
获取集群类型详情 |
JSON, XML |
| GET |
/types/{typeid}/flavors |
列出集群类型支持的规格 |
JSON, XML |
常见错误响应
| 响应代码 |
元素 |
消息 |
| 401 |
unauthorized |
未授权。 |
| 403 |
forbidden |
拒绝访问此资源。 |
| 404 |
itemNotFound |
找不到资源。 |
| 500 |
fault (尚未实现) |
发生未知异常。 |
API 调用详情
集群
创建集群
| 动词 |
URI |
描述 |
表示形式 |
| POST |
/clusters |
创建集群 |
JSON, XML |
请求
{
"cluster": {
"name": "slice",
"clusterType": "hadoop",
"flavorId": "2",
"nodeCount": 5
}
}
响应
{
"cluster": {
"id": "db478fc1-2d86-4597-8010-cbe787bbbc41",
"created": "2012-12-27T10:10:10Z",
"updated": "",
"name": "slice",
"clusterType": "hadoop",
"flavorId": "2",
"nodeCount": 5,
"status": "BUILD",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
}
]
}
}
| 响应代码 |
消息 |
| 200 |
成功 |
| 400 |
无效响应体 |
| 400 |
需要创建用户配置 |
| 400 |
无效节点数量 |
| 400 |
规格无效 |
| 400 |
数据格式错误 |
| 413 |
超出限制(配额已满) |
删除集群
| 动词 |
URI |
描述 |
表示形式 |
| DELETE |
/clusters/{clusterid} |
删除集群 |
JSON, XML |
请求
不适用
响应
{
"cluster": {
"id": "db478fc1-2d86-4597-8010-cbe787bbbc41",
"created": "2012-12-27T10:10:10Z",
"updated": "",
"name": "slice",
"clusterType": "hadoop",
"flavorId": "2",
"nodeCount": 5,
"status": "DELETING",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
}
]
}
}
| 响应代码 |
消息 |
| 202 |
Accepted |
| 400 |
无法删除 |
| 404 |
资源未找到 |
| 409 |
状态无效 |
列出集群
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/clusters |
列出用户的所有集群 |
JSON, XML |
请求
不适用
响应
{
"clusters": [
{
"id": "db478fc1-2d86-4597-8010-cbe787bbbc41",
"name": "slice",
"created": "2012-12-27T10:10:10Z",
"updated": "2012-12-27T10:15:10Z",
"clusterType": "hadoop",
"flavorId": "2",
"nodeCount": 5,
"status": "ACTIVE",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
}
]
},
{
"id": "ac111111-2d86-4597-8010-cbe787bbbc41",
"name": "real",
"created": "2012-12-27T10:10:10Z",
"updated": "2012-12-27T10:15:10Z",
"clusterType": "hbase",
"flavorId": "4",
"nodeCount": 20,
"status": "ACTIVE",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/ac111111-2d86-4597-8010-cbe787bbbc41"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/ac111111-2d86-4597-8010-cbe787bbbc41"
}
]
}
]
}
获取集群详情
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/clusters/{clusterId} |
获取集群详情 |
JSON, XML |
请求
不适用
响应
{
"cluster": {
"id": "db478fc1-2d86-4597-8010-cbe787bbbc41",
"created": "2012-12-27T10:10:10Z",
"updated": "2012-12-27T10:20:10Z",
"name": "slice",
"clusterType": "hadoop",
"flavorId": "2",
"nodeCount": 5,
"status": "ACTIVE",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
}
]
}
}
对集群执行操作
| 动词 |
URI |
描述 |
表示形式 |
| POST |
/clusters/{clusterId}/action |
对集群执行操作(例如,调整大小) |
JSON, XML |
请求
{
"resize": {
"nodeCount": 10
}
}
响应
{
"cluster": {
"id": "db478fc1-2d86-4597-8010-cbe787bbbc41",
"created": "2012-12-27T10:10:10Z",
"updated": "2012-12-27T16:20:10Z",
"name": "slice",
"clusterType": "hadoop",
"flavorId": "2",
"nodeCount": 10,
"status": "RESIZING",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41"
}
]
}
}
| 响应代码 |
消息 |
| 200 |
成功 |
| 400 |
参数不可接受 |
| 400 |
数据格式错误 |
| 404 |
找不到资源 |
| 409 |
状态无效 |
节点
列出集群中的节点
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/clusters/{clusterId}/nodes |
列出集群中的所有节点 |
JSON, XML |
请求
不适用
响应
{
"nodes": [
{
"id": "000",
"created": "2012-12-27T10:10:10Z",
"role": "NAMENODE",
"name": "NAMENODE-1",
"status": "ACTIVE",
"addresses": {
"public": [
{
"addr": "168.x.x.3",
"version": 4
}
],
"private": [
{
"addr": "10.x.x.3",
"version": 4
}
]
},
"services": {
"namenode": {},
"jobtracker": {},
"ssh": {
"uri": "ssh://user@168.x.x.3"
}
},
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/000"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/000"
}
]
},
{
"id": "aaa",
"role": "GATEWAY",
"name": "GATEWAY-1",
"status": "ACTIVE",
"addresses": {
"public": [
{
"addr": "168.x.x.4",
"version": 4
}
],
"private": [
{
"addr": "10.x.x.4",
"version": 4
}
]
},
"services": {
"pig": {},
"hive": {},
"ssh": {
"uri": "ssh://user@168.x.x.4"
},
"status": {
"uri": "http://10.x.x.4"
},
"hdfs-scp": {
"uri": "scp://user@168.x.x.4:9022"
}
},
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/aaa"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/aaa"
}
]
},
{
"id": "bbb",
"role": "DATANODE",
"name": "DATANODE-1",
"status": "ACTIVE",
"addresses": {
"public": [
{
"addr": "168.x.x.5",
"version": 4
}
],
"private": [
{
"addr": "10.x.x.5",
"version": 4
}
]
},
"services": {
"datanode": {},
"tasktracker": {},
"ssh": {
"uri": "ssh://user@168.x.x.5"
}
},
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/bbb"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/bbb"
}
]
},
{
"id": "ccc",
"role": "DATANODE",
"name": "DATANODE-2",
"status": "ACTIVE",
"addresses": {
"public": [
{
"addr": "168.x.x.6",
"version": 4
}
],
"private": [
{
"addr": "10.x.x.6",
"version": 4
}
]
},
"services": {
"datanode": {},
"tasktracker": {},
"ssh": {
"uri": "ssh://user@168.x.x.6"
}
},
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/ccc"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/ccc"
}
]
}
]
}
获取节点详情
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/clusters/{clusterId}/nodes/{nodeId} |
获取集群中节点的详情 |
JSON, XML |
请求
不适用
响应
{
"node": {
"id": "000",
"created": "2012-12-27T10:10:10Z",
"role": "NAMENODE",
"name": "NAMENODE-1",
"status": "ACTIVE",
"addresses": {
"public": [
{
"addr": "168.x.x.3",
"version": 4
}
],
"private": [
{
"addr": "10.x.x.3",
"version": 4
}
]
},
"services": {
"namenode": {},
"jobtracker": {},
"ssh": {
"uri": "ssh://user@168.x.x.3"
}
},
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/000"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/clusters/db478fc1-2d86-4597-8010-cbe787bbbc41/nodes/000"
}
]
}
}
个人资料
获取当前用户配置信息
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/profile |
获取当前用户配置信息 |
JSON, XML |
请求
不适用
响应
{
"profile": {
"username": "john.doe",
"user_id": "12346",
"tenant_id": "123456",
"sshkeys": [
{
"name": "t@test"
}
],
"cloudCredentials": {},
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/123456/profile"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/123456/profile"
}
]
}
}
更新现有配置
| 动词 |
URI |
描述 |
表示形式 |
| POST |
/profile |
更新现有配置 |
JSON, XML |
请求
{
"profile": {
"username": "john.doe",
"password": "j0Hnd03",
"sshkeys": [
{
"name": "t@test",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtUFnkFrqDDCgEqW1akQkpMOX Owwvg73PLn5Z5QgvxjvJhRCg9ZTR/OWXpWcYqFVNagH4Zs8NOb9921TyQ+ydMnatOM haxMh1ZwTgaUcvndOF8fY+kcERiw1l0iT95w42F8IdUH42Z+8KihZM8gVsbMS6qYTi OM29WHX7y37wuJIzqf3N2TiVXrqfjwugvY/bZ+47EUn78uk6aPZYJGXdDgaFqnIXUV N+hRFYXgKnU0Ui0aQkuYwnAW8KmanLoNU2xodrb6/XqWnSAAmwl7aoGKFunQsT6xDW yQk+ncUHUcdofDUqgd3lXmHGrTmQW97vqexDEnhsJ+AwbLGD5dukr t@test"
}
],
"cloudCredentials": {
"username": "jdoe",
"apikey": "df23gkh34h52gkdgfakgf"
}
}
}
响应
{
"profile": {
"username": "john.doe",
"userId": "12346",
"tenantId": "123456",
"sshkeys": [
{
"name": "t@test",
"publicKey": "ssh-rsa ....."
}
],
"cloudCredentials": {
"username": "jdoe"
},
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/123456/profile"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/123456/profile"
}
]
}
}
| 响应代码 |
消息 |
| 200 |
成功 |
| 400 |
数据格式错误 |
| 400 |
参数不可接受 |
规格
列出所有可用规格
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/flavors |
列出所有可用规格 |
JSON, XML |
请求
不适用
响应
{
"flavors": [
{
"id": "1",
"name": "hadoop.small",
"ram": "5120MB",
"vcpus": 1,
"disk": "375GB",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/flavors/1"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/flavors/1"
}
]
},
{
"id": "2",
"name": "hadoop.medium",
"ram": "10240MB",
"vcpus": 2,
"disk": "750GB",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/flavors/2"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/flavors/2"
}
]
},
{
"id": "3",
"name": "hadoop.large",
"ram": "20480MB",
"vcpus": 4,
"disk": "1500GB",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/flavors/3"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/flavors/3"
}
]
}
]
}
获取规格详情
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/flavors/{flavorId} |
获取规格详情 |
JSON, XML |
请求
不适用
响应
{
"flavor": {
"id": "1",
"name": "hadoop.small",
"ram": "5120MB",
"vcpus": 1,
"disk": "375GB",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/flavors/1"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/flavors/1"
}
]
}
}
类型
列出所有可用集群类型
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/types |
列出所有可用集群类型 |
JSON, XML |
请求
不适用
响应
{
"types": [
{
"id": "HADOOP_HDP1_1",
"name": "Hadoop(HDP1.1)",
"version": 1.1,
"links": [
{
"rel": "self",
"href": "https: //bigdata.api.rackspacecloud.com/v1.0/1234/types/HADOOP_HDP1_1"
},
{
"rel": "bookmark",
"href": "https: //bigdata.api.rackspacecloud.com/1234/types/HADOOP_HDP1_1"
}
]
}
]
}
获取集群类型详情
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/types/{typeId} |
获取集群类型详情 |
JSON, XML |
请求
不适用
响应
{
"type": {
"name": "HADOOP_HDP1_1",
"version": 1.1,
"services": [
{
"name": "mapreduce",
"version": "1.0.3"
},
{
"name": "hdfs",
"version": "1.0.3"
},
{
"name": "pig",
"version": "0.9.2"
},
{
"name": "hive",
"version": "0.9.0"
}
],
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/types/HADOOP_HDP1_1"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/types/HADOOP_HDP1_1"
}
]
}
}
列出集群类型支持的所有规格
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/types/{typeId}/flavors |
列出集群类型支持的所有规格 |
JSON, XML |
请求
不适用
响应
{
"flavors": [
{
"id": "1",
"name": "hadoop.small",
"ram": "5120MB",
"vcpus": 1,
"disk": "375GB",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/flavors/1"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/flavors/1"
}
]
},
{
"id": "2",
"name": "hadoop.medium",
"ram": "10240MB",
"vcpus": 2,
"disk": "750GB",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/flavors/2"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/flavors/2"
}
]
},
{
"id": "3",
"name": "hadoop.large",
"ram": "20480MB",
"vcpus": 4,
"disk": "1500GB",
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/flavors/3"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/flavors/3"
}
]
}
]
}
列出规格支持的所有集群类型
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/flavors/{flavorId}/types |
列出规格支持的所有集群类型 |
JSON, XML |
请求
不适用
响应
{
"type": {
"name": "HADOOP_HDP1_1",
"version": 1.1,
"services": [
{
"name": "mapreduce",
"version": "1.0.3"
},
{
"name": "hdfs",
"version": "1.0.3"
},
{
"name": "pig",
"version": "0.9.2"
},
{
"name": "hive",
"version": "0.9.0"
}
],
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/types/HADOOP_HDP1_1"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/types/HADOOP_HDP1_1"
}
]
}
}
限制
列出用户的所有资源限制
| 动词 |
URI |
描述 |
表示形式 |
| GET |
/limits |
列出用户的所有资源限制 |
JSON, XML |
请求
不适用
响应
{
"limits": {
"absolute": {
"nodeCount": {
"value": 100,
"remaining": 50
},
"ram": {
"value": 50000,
"remaining": 34567
},
"disk": {
"value": 100000,
"remaining": 28882
},
"vcpus": {
"value": 50,
"remaining": 25
}
},
"links": [
{
"rel": "self",
"href": "https://bigdata.api.rackspacecloud.com/v1.0/1234/limits"
},
{
"rel": "bookmark",
"href": "https://bigdata.api.rackspacecloud.com/1234/limits"
}
]
}
}