跳转到: 导航, 搜索

Sahara/ApiProposal

仅提案

请注意,这只是一个建议的 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"
                   }
               ]
           }
       ]
   }


响应代码 消息
200 成功


获取集群详情

动词 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"
               }
           ]
       }
   }
响应代码 消息
200 成功
404 资源未找到

对集群执行操作

动词 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"
                   }
               ]
           }
       ]
   }
响应代码 消息
200 成功
404 找不到资源

获取节点详情

动词 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"
               }
           ]
       }
   }
响应代码 消息
200 成功
404 找不到资源

个人资料

获取当前用户配置信息

动词 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"
               }
           ]
       }
   }
响应代码 消息
200 成功

更新现有配置

动词 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"
                   }
               ]
           }
       ]
   }
响应代码 消息
200 成功

获取规格详情

动词 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"
               }
           ]
       }
   }
响应代码 消息
200 成功
404 找不到资源

类型

列出所有可用集群类型

动词 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"
                   }
               ]
           }
       ]
   }
响应代码 消息
200 成功

获取集群类型详情

动词 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"
               }
           ]
       }
   }
响应代码 消息
200 成功
404 找不到资源

列出集群类型支持的所有规格

动词 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"
                   }
               ]
           }
       ]
   }

响应代码 消息
200 成功
404 找不到资源

列出规格支持的所有集群类型

动词 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"
               }
           ]
       }
   }
响应代码 消息
200 成功
404 找不到资源

限制

列出用户的所有资源限制

动词 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"
               }
           ]
       }
   }
响应代码 消息
200 成功