Jump to: navigation, search

Sahara/ApiProposal

< Sahara
Revision as of 13:06, 16 April 2013 by David Dobbins (talk | contribs) (Created page with "== Proposal Only == Please recognize that this is only a proposed DSL to be considered for development. This specification is NOT YET IMPLEMENTED. == List of API Calls == {...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Proposal Only

Please recognize that this is only a proposed DSL to be considered for development. This specification is NOT YET IMPLEMENTED.

List of API Calls

Verb URI Description Representations
POST /clusters Create a cluster JSON, XML
DELETE /clusters/{clusterId} Delete a cluster JSON, XML
GET /clusters List all the clusters for the user JSON, XML
GET /clusters/{clusterId} Get details about a cluster JSON, XML
POST /clusters/{clusterId}/action Perform actions on a cluster (e.g. resize) JSON, XML
GET /clusters/{clusterId}/nodes List all nodes in a cluster JSON, XML
GET /clusters/{clusterId}/nodes/{nodeId} Get details about a node in a cluster JSON, XML
GET /profile Get information about the current user profile JSON, XML
POST /profile Update an existing profile JSON, XML
GET /limits List all the resource limits for the user JSON, XML
GET /flavors List all available flavors JSON, XML
GET /flavors/{flavorId} Get details about a flavor JSON, XML
GET /flavors/{flavorid}/types List the supported cluster types for a flavor JSON, XML
GET /types List all available cluster types JSON, XML
GET /types/{typeId} Get details about a cluster type JSON, XML
GET /types/{typeid}/flavors List the supported flavors for a cluster type JSON, XML

Common Error Responses

Response Code Element Message
401 unauthorized Not authorized.
403 forbidden Access is denied to this resource.
404 itemNotFound The resource could not be found.
500 fault (Not implemented yet) An unknown exception occurred.

API Call Details

Clusters

Verb URI Description Representations
POST /clusters Create a cluster JSON, XML

Request

{ {"cluster":

   { "name": "slice",
     "clusterType": "hadoop",
     "flavorId": "2",
     "nodeCount": 5
   } 

} }

Response

{ {"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"
         }
      ], 
   } 

} }

Response Code Message
200 Success
400 Invalid Response Body
400 User profile needs to be created
400 Invalid Node Count
400 Not valid flavor
400 Malformed Data
413 Over Limits (Quota Exceeded)


Verb URI Description Representations DELETE /clusters/{clusterid} Delete a cluster JSON, XML

Request

N/A

Response

{ {"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"
  }
 ] 
} 

} }

Response Code Message 202 Accepted 400 Cannot delete 404 Resource not found 409 Invalid state

Verb URI Description Representations GET /clusters List all the clusters for the user JSON, XML

Request

N/A

Response

{ {"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"
         }
      ],  
   },
 ]

} }

Response Code Message 200 Success Verb URI Description Representations GET /clusters/{clusterId} Get details about a cluster JSON, XML

Request

N/A

Response

{ {"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"
         }
      ],  
   }

} }

Response Code Message 200 Success 404 Resource not found Verb URI Description Representations POST /clusters/{clusterId}/action Perform actions on a cluster (e.g. resize) JSON, XML

Request

{ {"resize":

   { "nodeCount": 10
   }

} }

Response

{ {"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"
         }
      ],  
   }

} }

Response Code Message 200 Success 400 Unacceptable parameters 400 Malformed data 404 The resource cannot be found 409 Invalid state


Nodes

Verb URI Description Representations GET /clusters/{clusterId}/nodes List all nodes in a cluster JSON, XML

Request

N/A

Response

{ {"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"
        }
     ],  
   } 
 ] 

} }

Response Code Message 200 Success 404 The resource cannot be found

Verb URI Description Representations GET /clusters/{clusterId}/nodes/{nodeId} Get details about a node in a cluster JSON, XML


Request

N/A

Response

{ {"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"
      }
    ],  
 } 

} }

Response Code Message 200 Success 404 The resource cannot be found

Profile

Verb URI Description Representations GET /profile Get information about the current user profile JSON, XML

Request

N/A

Response

{ {"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"
        }
     ],  
   }

} }

Response Code Message 200 Success Verb URI Description Representations POST /profile Update an existing profile JSON, XML

Request

{ { "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"
   }

} }

Response

{ {"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"
     }
   ], 
}

} }

Response Code Message 200 Success 400 Malformed data 400 Unacceptable parameters

Flavors

Verb URI Description Representations GET /flavors List all available flavors JSON, XML

Request

N/A

Response

{ {"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"
        }
      ], 
   }  
 ] 

} }

Response Code Message 200 Success

Verb URI Description Representations GET /flavors/{flavorId} Get details about a flavor JSON, XML

Request

N/A

Response

{ {"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"
        }
      ], 
   } 

} }

Response Code Message 200 Success 404 The resource cannot be found

Types

Verb URI Description Representations GET /types List all available cluster types JSON, XML

Request

N/A

Response

{ {"types":

 [ 
   { "id": "HADOOP_HDP1_1
     "name": "Hadoop (HDP 1.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"
        }
      ], 
   },
 ] 

} }

Response Code Message 200 Success

Verb URI Description Representations GET /types/{typeId} Get details about a cluster type JSON, XML

Request

N/A

Response

{ {"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"
        }
     ], 
   },

} }

Response Code Message 200 Success 404 The resource cannot be found

Verb URI Description Representations GET /types/{typeId}/flavors List all the supported flavors for a cluster type JSON, XML

Request

N/A

Response

{ {"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"
      }
   ],
 } 
]  

} }

Response Code Message 200 Success 404 The resource cannot be found

Verb URI Description Representations GET /flavors/{flavorId}/types List all the supported cluster types for a flavor JSON, XML

Request

N/A

Response

{ {"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"
        }
      ], 
   },

} }

Response Code Message 200 Success 404 The resource cannot be found

Limits

Verb URI Description Representations GET /limits List all the resource limits for the user JSON, XML

Request

N/A

Response

{ {"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"
     }
   ], 
 } 

} } Response Code Message 200 Success